diff --git a/core/processes/merger.py b/core/processes/merger.py index 6132e72544660314ff5b188a3731aa0ec7c887bb..51a2e0a49aefade6c344eb0929d9fa7abedf6a18 100644 --- a/core/processes/merger.py +++ b/core/processes/merger.py @@ -1,5 +1,5 @@ from postprocessor.core.processes.base import ParametersABC, ProcessABC -from postprocessor.core.functions.tracks import clean_tracks, merge_tracks, join_tracks +from postprocessor.core.functions.tracks import get_joinable class mergerParameters(ParametersABC): @@ -52,7 +52,9 @@ class merger(ProcessABC): super().__init__(parameters) def run(self, signal): - merged, _ = merge_tracks(signal) # , min_len=self.window + 1) - indices = (*zip(*merged.index.tolist()),) - names = merged.index.names - return {name: ids for name, ids in zip(names, indices)} + joinable = get_joinable(signal) + # merged, _ = merge_tracks(signal) # , min_len=self.window + 1) + # indices = (*zip(*merged.index.tolist()),) + # names = merged.index.names + # return {name: ids for name, ids in zip(names, indices)} + return joinable diff --git a/core/processes/picker.py b/core/processes/picker.py index 8be722eb609c598f6d21f425fb8a6c798dcb53f2..ca441e4d4c6e0056af247c1ff9200262131f55af 100644 --- a/core/processes/picker.py +++ b/core/processes/picker.py @@ -93,6 +93,8 @@ class picker(ProcessABC): def run(self, signals): for alg in self.sequence: + if alg == "condition": + pass self.signals = getattr(self, "pick_by_" + alg)(signals) return self.signals diff --git a/core/processor.py b/core/processor.py index c170b53d4fbfeeaf7e2e79a774cdf8669ffcae16..c590ccd85c0a3d8093a7e7c93006d4f2ab3cd9dc 100644 --- a/core/processor.py +++ b/core/processor.py @@ -27,13 +27,13 @@ class PostProcessorParameters(ParametersABC): def __init__( self, - processes={}, - process_parameters={}, - process_outpaths={}, + targets={}, + parameters={}, + outpaths={}, ): - self.processes: Dict = processes - self.process_parameters: Dict = process_parameters - self.process_outpaths: Dict = process_outpaths + self.targets: Dict = targets + self.parameters: Dict = parameters + self.outpaths: Dict = outpaths def __getitem__(self, item): return getattr(self, item) @@ -42,7 +42,7 @@ class PostProcessorParameters(ParametersABC): def default(cls, kind=None): if kind == "defaults" or kind == None: return cls( - processes={ + targets={ "prepost": { "merger": "/extraction/general/None/area", "picker": ["/extraction/general/None/area"], @@ -51,9 +51,14 @@ class PostProcessorParameters(ParametersABC): "dsignal": ["/extraction/general/None/area"], # "savgol": ["/extraction/general/None/area"], }, - "process_parameters": {}, - "process_outpaths": {}, }, + parameters={ + "prepost": { + "merger": mergerParameters.default(), + "picker": pickerParameters.default(), + } + }, + outpaths={}, ) def to_dict(self): @@ -68,20 +73,20 @@ class PostProcessor: self._writer = Writer(filename) # self.outpaths = parameters["outpaths"] - self.merger = merger(parameters["processes"]["prepost"]["merger"]) + self.merger = merger(parameters["parameters"]["prepost"]["merger"]) self.picker = picker( - parameters=parameters["processes"]["prepost"]["picker"], + parameters=parameters["parameters"]["prepost"]["picker"], cells=Cells.from_source(filename), ) - self.process_classfun = { + self.classfun = { process: self.get_process(process) - for process in parameters["processes"]["processes"].keys() + for process in parameters["targets"]["processes"].keys() } - self.process_parameters = { + self.parameters = { process: self.get_parameters(process) - for process in parameters["processes"]["processes"] + for process in parameters["targets"]["processes"] } - self.processes = parameters["processes"] + self.targets = parameters["targets"] @staticmethod def get_process(process): @@ -103,12 +108,12 @@ class PostProcessor: def run_prepost(self): """Important processes run before normal post-processing ones""" - merge_events = self.merger.run(self._signal[self.prepost["merger"]]) + merge_events = self.merger.run(self._signal[self.targets["prepost"]["merger"]]) - with h5py.File(self.filename, "r") as f: + with h5py.File(self._filename, "r") as f: prev_idchanges = self._signal.get_id_changes() - changes_history = prev_idchanges + merge_events + picks + changes_history = prev_idchanges + [merge_events] # + [picks] self._writer.write("/id_changes", data=changes_history) self._writer.write( "/postprocessing/merge_events/", @@ -116,7 +121,7 @@ class PostProcessor: meta={"source": "/cell_info/"}, ) changes_history += picks - picks = self.picker.run(self._signal[self.processes["picker"][0]]) + picks = self.picker.run(self._signal[self.targets["prepost"]["picker"][0]]) # self._writer.write() def run(self): @@ -124,13 +129,11 @@ class PostProcessor: for process, datasets in self.processes["processes"].items(): parameters = ( - self.process_parameters[process].from_dict( - self.process_parameters[process] - ) - if process in self.parameters["processes"]["process_parameters"] - else self.process_parameters[process].default() + self.parameters[process].from_dict(self.parameters[process]) + if process in self.parameters["processes"]["parameters"] + else self.parameters[process].default() ) - loaded_process = self.process_classfun[process](parameters) + loaded_process = self.classfun[process](parameters) for dataset in datasets: if isinstance(dataset, list): # multisignal process signal = [self._signal[d] for d in dataset] @@ -141,8 +144,8 @@ class PostProcessor: result = loaded_process.run(signal) - if process in self.parameters.to_dict()["process_outpaths"]: - outpath = self.parameters.to_dict()["process_outpaths"][process] + if process in self.parameters.to_dict()["outpaths"]: + outpath = self.parameters.to_dict()["outpaths"][process] elif isinstance(dataset, list): # If no outpath defined, place the result in the minimum common # branch of all signals used