diff --git a/src/sed/core/config_model.py b/src/sed/core/config_model.py index 41ab9caa..bca9f959 100644 --- a/src/sed/core/config_model.py +++ b/src/sed/core/config_model.py @@ -33,6 +33,7 @@ class CopyToolModel(BaseModel): source: DirectoryPath dest: DirectoryPath + use: Optional[bool] = None safety_margin: Optional[float] = None gid: Optional[int] = None scheduler: Optional[str] = None diff --git a/src/sed/core/processor.py b/src/sed/core/processor.py index c97be64b..b968364e 100644 --- a/src/sed/core/processor.py +++ b/src/sed/core/processor.py @@ -162,7 +162,9 @@ def __init__( verbose=self._verbose, ) - self.use_copy_tool = "copy_tool" in self._config["core"] + self.use_copy_tool = "copy_tool" in self._config["core"] and self._config["core"][ + "copy_tool" + ].pop("use", True) if self.use_copy_tool: try: self.ct = CopyTool( diff --git a/src/sed/loader/mpes/loader.py b/src/sed/loader/mpes/loader.py index 9a7cb402..b3c60638 100644 --- a/src/sed/loader/mpes/loader.py +++ b/src/sed/loader/mpes/loader.py @@ -792,6 +792,14 @@ def get_files_from_run_id( recursive=True, ), ) + # Compatibility for old scan format + if not run_files: + run_files = natsorted( + glob.glob( + folder + "/**/Scan" + str(run_id).zfill(3) + "_*." + extension, + recursive=True, + ), + ) files.extend(run_files) # Check if any files are found diff --git a/src/sed/loader/mpes/metadata.py b/src/sed/loader/mpes/metadata.py index 712fdcbd..9093c99f 100644 --- a/src/sed/loader/mpes/metadata.py +++ b/src/sed/loader/mpes/metadata.py @@ -340,6 +340,13 @@ def fetch_elab_metadata(self, runs: list[str], metadata: dict) -> dict: metadata["elabFTW"]["scan"]["pump_polarization"] = 90 elif metadata["elabFTW"]["scan"]["pump_polarization"] == "p": metadata["elabFTW"]["scan"]["pump_polarization"] = 0 + else: + try: + metadata["elabFTW"]["scan"]["pump_polarization"] = float( + metadata["elabFTW"]["scan"]["pump_polarization"], + ) + except ValueError: + pass if ( "scan" in metadata["elabFTW"] @@ -350,14 +357,58 @@ def fetch_elab_metadata(self, runs: list[str], metadata: dict) -> dict: metadata["elabFTW"]["scan"]["probe_polarization"] = 90 elif metadata["elabFTW"]["scan"]["probe_polarization"] == "p": metadata["elabFTW"]["scan"]["probe_polarization"] = 0 + else: + try: + metadata["elabFTW"]["scan"]["probe_polarization"] = float( + metadata["elabFTW"]["scan"]["probe_polarization"], + ) + except ValueError: + pass + + if ( + "scan" in metadata["elabFTW"] + and "pump2_polarization" in metadata["elabFTW"]["scan"] + and isinstance(metadata["elabFTW"]["scan"]["pump2_polarization"], str) + ): + if metadata["elabFTW"]["scan"]["pump2_polarization"] == "s": + metadata["elabFTW"]["scan"]["pump2_polarization"] = 90 + elif metadata["elabFTW"]["scan"]["pump2_polarization"] == "p": + metadata["elabFTW"]["scan"]["pump2_polarization"] = 0 + else: + try: + metadata["elabFTW"]["scan"]["pump2_polarization"] = float( + metadata["elabFTW"]["scan"]["pump2_polarization"], + ) + except ValueError: + pass + + # fix pump status + if "scan" in metadata["elabFTW"] and "pump_status" in metadata["elabFTW"]["scan"]: + try: + metadata["elabFTW"]["scan"]["pump_status"] = ( + "open" if int(metadata["elabFTW"]["scan"]["pump_status"]) else "closed" + ) + except ValueError: + pass + if "scan" in metadata["elabFTW"] and "pump2_status" in metadata["elabFTW"]["scan"]: + try: + metadata["elabFTW"]["scan"]["pump2_status"] = ( + "open" if int(metadata["elabFTW"]["scan"]["pump2_status"]) else "closed" + ) + except ValueError: + pass # remove pump information if pump not applied: - if not metadata["elabFTW"]["scan"].get("pump_status", 0): + if metadata["elabFTW"]["scan"].get("pump_status", "closed") == "closed": if "pump_photon_energy" in metadata["elabFTW"].get("laser_status", {}): del metadata["elabFTW"]["laser_status"]["pump_photon_energy"] if "pump_repetition_rate" in metadata["elabFTW"].get("laser_status", {}): del metadata["elabFTW"]["laser_status"]["pump_repetition_rate"] + if metadata["elabFTW"]["scan"].get("pump2_status", "closed") == "closed": + if "pump2_photon_energy" in metadata["elabFTW"].get("laser_status", {}): + del metadata["elabFTW"]["laser_status"]["pump2_photon_energy"] + return metadata