Skip to content
Snippets Groups Projects
Commit bdae0e8a authored by Alán Muñoz's avatar Alán Muñoz
Browse files

simplify parameter names

Former-commit-id: cb152abd7b796a65237a544fe20d1f126147b97a
parent 1fd119ba
No related branches found
No related tags found
No related merge requests found
from postprocessor.core.processes.base import ParametersABC, ProcessABC 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): class mergerParameters(ParametersABC):
...@@ -52,7 +52,9 @@ class merger(ProcessABC): ...@@ -52,7 +52,9 @@ class merger(ProcessABC):
super().__init__(parameters) super().__init__(parameters)
def run(self, signal): def run(self, signal):
merged, _ = merge_tracks(signal) # , min_len=self.window + 1) joinable = get_joinable(signal)
indices = (*zip(*merged.index.tolist()),) # merged, _ = merge_tracks(signal) # , min_len=self.window + 1)
names = merged.index.names # indices = (*zip(*merged.index.tolist()),)
return {name: ids for name, ids in zip(names, indices)} # names = merged.index.names
# return {name: ids for name, ids in zip(names, indices)}
return joinable
...@@ -93,6 +93,8 @@ class picker(ProcessABC): ...@@ -93,6 +93,8 @@ class picker(ProcessABC):
def run(self, signals): def run(self, signals):
for alg in self.sequence: for alg in self.sequence:
if alg == "condition":
pass
self.signals = getattr(self, "pick_by_" + alg)(signals) self.signals = getattr(self, "pick_by_" + alg)(signals)
return self.signals return self.signals
......
...@@ -27,13 +27,13 @@ class PostProcessorParameters(ParametersABC): ...@@ -27,13 +27,13 @@ class PostProcessorParameters(ParametersABC):
def __init__( def __init__(
self, self,
processes={}, targets={},
process_parameters={}, parameters={},
process_outpaths={}, outpaths={},
): ):
self.processes: Dict = processes self.targets: Dict = targets
self.process_parameters: Dict = process_parameters self.parameters: Dict = parameters
self.process_outpaths: Dict = process_outpaths self.outpaths: Dict = outpaths
def __getitem__(self, item): def __getitem__(self, item):
return getattr(self, item) return getattr(self, item)
...@@ -42,7 +42,7 @@ class PostProcessorParameters(ParametersABC): ...@@ -42,7 +42,7 @@ class PostProcessorParameters(ParametersABC):
def default(cls, kind=None): def default(cls, kind=None):
if kind == "defaults" or kind == None: if kind == "defaults" or kind == None:
return cls( return cls(
processes={ targets={
"prepost": { "prepost": {
"merger": "/extraction/general/None/area", "merger": "/extraction/general/None/area",
"picker": ["/extraction/general/None/area"], "picker": ["/extraction/general/None/area"],
...@@ -51,9 +51,14 @@ class PostProcessorParameters(ParametersABC): ...@@ -51,9 +51,14 @@ class PostProcessorParameters(ParametersABC):
"dsignal": ["/extraction/general/None/area"], "dsignal": ["/extraction/general/None/area"],
# "savgol": ["/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): def to_dict(self):
...@@ -68,20 +73,20 @@ class PostProcessor: ...@@ -68,20 +73,20 @@ class PostProcessor:
self._writer = Writer(filename) self._writer = Writer(filename)
# self.outpaths = parameters["outpaths"] # self.outpaths = parameters["outpaths"]
self.merger = merger(parameters["processes"]["prepost"]["merger"]) self.merger = merger(parameters["parameters"]["prepost"]["merger"])
self.picker = picker( self.picker = picker(
parameters=parameters["processes"]["prepost"]["picker"], parameters=parameters["parameters"]["prepost"]["picker"],
cells=Cells.from_source(filename), cells=Cells.from_source(filename),
) )
self.process_classfun = { self.classfun = {
process: self.get_process(process) 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) 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 @staticmethod
def get_process(process): def get_process(process):
...@@ -103,12 +108,12 @@ class PostProcessor: ...@@ -103,12 +108,12 @@ class PostProcessor:
def run_prepost(self): def run_prepost(self):
"""Important processes run before normal post-processing ones""" """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() 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("/id_changes", data=changes_history)
self._writer.write( self._writer.write(
"/postprocessing/merge_events/", "/postprocessing/merge_events/",
...@@ -116,7 +121,7 @@ class PostProcessor: ...@@ -116,7 +121,7 @@ class PostProcessor:
meta={"source": "/cell_info/"}, meta={"source": "/cell_info/"},
) )
changes_history += picks 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() # self._writer.write()
def run(self): def run(self):
...@@ -124,13 +129,11 @@ class PostProcessor: ...@@ -124,13 +129,11 @@ class PostProcessor:
for process, datasets in self.processes["processes"].items(): for process, datasets in self.processes["processes"].items():
parameters = ( parameters = (
self.process_parameters[process].from_dict( self.parameters[process].from_dict(self.parameters[process])
self.process_parameters[process] if process in self.parameters["processes"]["parameters"]
) else self.parameters[process].default()
if process in self.parameters["processes"]["process_parameters"]
else self.process_parameters[process].default()
) )
loaded_process = self.process_classfun[process](parameters) loaded_process = self.classfun[process](parameters)
for dataset in datasets: for dataset in datasets:
if isinstance(dataset, list): # multisignal process if isinstance(dataset, list): # multisignal process
signal = [self._signal[d] for d in dataset] signal = [self._signal[d] for d in dataset]
...@@ -141,8 +144,8 @@ class PostProcessor: ...@@ -141,8 +144,8 @@ class PostProcessor:
result = loaded_process.run(signal) result = loaded_process.run(signal)
if process in self.parameters.to_dict()["process_outpaths"]: if process in self.parameters.to_dict()["outpaths"]:
outpath = self.parameters.to_dict()["process_outpaths"][process] outpath = self.parameters.to_dict()["outpaths"][process]
elif isinstance(dataset, list): elif isinstance(dataset, list):
# If no outpath defined, place the result in the minimum common # If no outpath defined, place the result in the minimum common
# branch of all signals used # branch of all signals used
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment