diff --git a/aliby/experiment.py b/aliby/experiment.py index 6dcc953dc02f610366bce2d8902b5c9b97a45661..d29c62fdfc4fe479c352df6ca9d9ab31fec6c276 100644 --- a/aliby/experiment.py +++ b/aliby/experiment.py @@ -120,7 +120,7 @@ class MetaData: ) def add_fields(self, fields_values: dict): - for field, value in field_values.items(): + for field, value in fields_values.items(): self.add_field(field, value) diff --git a/aliby/pipeline.py b/aliby/pipeline.py index b6dabd6c0521c2cb562b353e1fb65f0da2a78cfd..bfe18173f390ecfd53e41cda54de629350ae7a1d 100644 --- a/aliby/pipeline.py +++ b/aliby/pipeline.py @@ -29,6 +29,7 @@ from agora.io.signal import Signal from extraction.core.extractor import Extractor, ExtractorParameters from extraction.core.functions.defaults import exparams_from_meta from postprocessor.core.processor import PostProcessor, PostProcessorParameters +from postprocessor.compiler import ExperimentCompiler, PageOrganiser logging.basicConfig( filename="aliby.log", @@ -82,7 +83,7 @@ class PipelineParameters(ParametersABC): id=expt_id, distributed=0, tps=tps, - directory=directory, + directory=str(directory), strain="", earlystop=dict( min_tp=180, @@ -130,6 +131,13 @@ class Pipeline(ProcessABC): # for other processes return cls(parameters=PipelineParameters.from_yaml(fpath)) + @classmethod + def from_existing_h5(cls, fpath): + with h5py.File(fpath, "r") as f: + pipeline_parameters = PipelineParameters.from_yaml(f.attrs["parameters"]) + + return cls(pipeline_parameters) + def run(self): # Config holds the general information, use in main # Steps holds the description of tasks with their parameters @@ -302,6 +310,7 @@ class Pipeline(ProcessABC): self.parameters.postprocessing ).to_dict() PostProcessor(filename, post_proc_params).run() + return True except Exception as e: # bug in the trap getting logging.exception( @@ -317,6 +326,15 @@ class Pipeline(ProcessABC): if session: session.close() + try: + compiler = ExperimentCompiler(None, filepath) + tmp = compiler.run() + po = PageOrganiser(tmp, grid_spec=(3, 2)) + po.plot() + po.save(fullpath / f"{directory}report.pdf") + except Exception as e: + print(e) + def check_earlystop(self, filename, es_parameters): s = Signal(filename) df = s["/extraction/general/None/area"]