diff --git a/core/processes/merger.py b/core/processes/merger.py index 259d752fb1130ee52eaf1e20c106dfb0ccd79594..6132e72544660314ff5b188a3731aa0ec7c887bb 100644 --- a/core/processes/merger.py +++ b/core/processes/merger.py @@ -2,7 +2,7 @@ from postprocessor.core.processes.base import ParametersABC, ProcessABC from postprocessor.core.functions.tracks import clean_tracks, merge_tracks, join_tracks -class MergerParameters(ParametersABC): +class mergerParameters(ParametersABC): """ :param tol: float or int threshold of average (prediction error/std) necessary to consider two tracks the same. If float is fraction of first track, @@ -43,7 +43,7 @@ class MergerParameters(ParametersABC): ) -class Merger(ProcessABC): +class merger(ProcessABC): """ TODO Integrate functions/tracks.py inside this class? """ diff --git a/core/processes/picker.py b/core/processes/picker.py index 9ddd72813147f10dca026872af5871493324aefb..8be722eb609c598f6d21f425fb8a6c798dcb53f2 100644 --- a/core/processes/picker.py +++ b/core/processes/picker.py @@ -10,7 +10,7 @@ from postprocessor.core.processes.base import ParametersABC, ProcessABC from postprocessor.core.functions.tracks import max_ntps, max_nonstop_ntps -class PickerParameters(ParametersABC): +class pickerParameters(ParametersABC): def __init__( self, condition: Tuple[str, Union[float, int]] = None, @@ -32,7 +32,7 @@ class PickerParameters(ParametersABC): ) -class Picker(ProcessABC): +class picker(ProcessABC): """ :cells: Cell object passed to the constructor :condition: Tuple with condition and associated parameter(s), conditions can be @@ -43,7 +43,7 @@ class Picker(ProcessABC): def __init__( self, - parameters: PickerParameters, + parameters: pickerParameters, cells: CellsHDF, ): super().__init__(parameters=parameters) diff --git a/core/processes/savgol.py b/core/processes/savgol.py index b006c42202139221db68dd4f77df3b67a51612d0..cd4da13809109a8b79c9d09520181a865cca23c9 100644 --- a/core/processes/savgol.py +++ b/core/processes/savgol.py @@ -1,7 +1,8 @@ +import pandas as pd from postprocessor.core.processes.base import ParametersABC, ProcessABC -class SavgolParameters(ParametersABC): +class savgolParameters(ParametersABC): """ Parameters @@ -21,13 +22,13 @@ class SavgolParameters(ParametersABC): return cls.from_dict({"window": 3, "polynom": 3}) -class Savgol(ProcessABC): +class savgol(ProcessABC): """ Apply Savitzky-Golay filter (works with NaNs, but it might return NaN regions). """ - def __init__(self, parameters: SavgolParameters): + def __init__(self, parameters: savgolParameters): super().__init__(parameters) def run(self, signal: pd.DataFrame): diff --git a/core/processor.py b/core/processor.py index 87bc475fc5ebd73dd46c5e35263c31aa481eaaf1..6673d60cb447ee09f6d1e49a53125584661489a9 100644 --- a/core/processor.py +++ b/core/processor.py @@ -1,9 +1,10 @@ +from pydoc import locate from typing import List, Dict, Union import pandas as pd from postprocessor.core.processes.base import ParametersABC -from postprocessor.core.processes.merger import MergerParameters, Merger -from postprocessor.core.processes.picker import PickerParameters, Picker +from postprocessor.core.processes.merger import mergerParameters, merger +from postprocessor.core.processes.picker import pickerParameters, picker from core.io.writer import Writer from core.io.signal import Signal @@ -23,11 +24,9 @@ class PostProcessorParameters(ParametersABC): """ def __init__(self, merger=None, picker=None, processes=[]): - self.merger: MergerParameters = merger - self.picker: PickerParameters = picker - self.processes: List = processes - - self.datasets: Dict = datasets + self.merger: mergerParameters = merger + self.picker: pickerParameters = picker + self.processes: Dict = processes def __getitem__(self, item): return getattr(self, item) @@ -36,9 +35,9 @@ class PostProcessorParameters(ParametersABC): def default(cls, kind=None): if kind == "defaults" or kind == None: return cls( - merger=MergerParameters.default(), - picker=PickerParameters.default(), - datasets={ + merger=mergerParameters.default(), + picker=pickerParameters.default(), + processes={ "merger": "/extraction/general/None/area", "picker": "/extraction/general/None/area", "processes": {"dSignal": ["/general/None/area"]}, @@ -56,21 +55,29 @@ class PostProcessor: self._writer = Writer(filename) # self.outpaths = parameters["outpaths"] - self.merger = Merger(parameters["merger"]) - self.picker = Picker( + self.merger = merger(parameters["merger"]) + self.picker = picker( parameters=parameters["picker"], cells=Cells.from_source(filename) ) - self.processes = [ - self.get_process(process) for process in parameters["processes"] - ] + self.process_dict = { + process: locate(process) for process in parameters["processes"].keys() + } + self.processes = parameters["processes"] + + @staticmethod + def get_process(process): + """ + Get process from folder ./processes + """ + print(__file__) + return locate("postprocessor.core.processes." + process + "." + process) def run(self): - new_ids = self.merger.run(self._signal[self.datasets["merger"]]) + new_ids = self.merger.run(self._signal[self.processes["merger"]]) for name, ids in new_ids.items(): self._writer.write(ids, "/postprocessing/cell_info/" + name) - picks = self.picker.run(self._signal[self.datasets["picker"]]) + picks = self.picker.run(self._signal[self.processes["picker"][0]]) return picks - # print(merge, picks) # for process, dataset, outpath in zip( # self.processes, self.datasets["processes"], self.outpaths # ):