diff --git a/aliby/pipeline.py b/aliby/pipeline.py index 1c35910ca3e3cb263f88427c8ad17e847151a95e..a3bdec837db3edb984bc0e45092e4fb15559733d 100644 --- a/aliby/pipeline.py +++ b/aliby/pipeline.py @@ -103,6 +103,16 @@ class PipelineParameters(ParametersABC): ), ) } + + for k, v in general.items(): # Overwrite general parameters + if k not in defaults["general"]: + defaults["general"][k] = v + elif isinstance(v, dict): + for k2, v2 in v.items(): + defaults["general"][k][k2] = v2 + else: + defaults["general"][k] = v + defaults["tiler"] = TilerParameters.default(**tiler).to_dict() defaults["baby"] = BabyParameters.default(**extraction).to_dict() defaults["extraction"] = exparams_from_meta(meta) @@ -111,7 +121,7 @@ class PipelineParameters(ParametersABC): ).to_dict() # for k in defaults.keys(): # exec("defaults[k].update(" + k + ")") - # return cls(**{k: v for k, v in defaults.items()}) + return cls(**{k: v for k, v in defaults.items()}) def load_logs(self): parsed_flattened = parse_logfiles(self.log_dir) @@ -180,6 +190,12 @@ class Pipeline(ProcessABC): pipeline_parameters.general["directory"] = dir_path.parent pipeline_parameters.general["filter"] = [fpath.stem for fpath in files] + # Fix legacy postprocessing parameters + post_process_params = pipeline_parameters.postprocessing.get("parameters", None) + if post_process_params: + pipeline_parameters.postprocessing["param_sets"] = copy(post_process_params) + del pipeline_parameters.postprocessing["parameters"] + return cls(pipeline_parameters) @classmethod @@ -196,6 +212,12 @@ class Pipeline(ProcessABC): pipeline_parameters.general["directory"] = directory pipeline_parameters.general["filter"] = Path(fpath).stem + # Fix legacy postprocessing parameters + post_process_params = pipeline_parameters.postprocessing.get("parameters", None) + if post_process_params: + pipeline_parameters.postprocessing["param_sets"] = copy(post_process_params) + del pipeline_parameters.postprocessing["parameters"] + return cls(pipeline_parameters, store=directory) def run(self): @@ -429,7 +451,7 @@ class Pipeline(ProcessABC): ) tmp = copy(config["extraction"]["multichannel_ops"]) for op, (input_ch, op_id, red_ext) in tmp.items(): - if set(input_ch).difference(av_channels_wsub): + if not set(input_ch).issubset(av_channels_wsub): del config["extraction"]["multichannel_ops"][op] exparams = ExtractorParameters.from_dict(config["extraction"])