diff --git a/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb b/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb index 27ad6a9c9bb7a440b78d5dcc800d77457354c589..ce74db5740d4f893f828022dde3d543876b84c55 100644 --- a/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb +++ b/notebooks/AGIPD/AGIPD_Correct_and_Verify.ipynb @@ -165,7 +165,6 @@ ")\n", "from cal_tools.ana_tools import get_range\n", "from cal_tools.enums import AgipdGainMode, BadPixels\n", - "from cal_tools.restful_config import restful_config\n", "from cal_tools.step_timing import StepTimer\n", "from cal_tools.tools import (\n", " CalibrationMetadata,\n", diff --git a/notebooks/AGIPD/AGIPD_Retrieve_Constants_Precorrection.ipynb b/notebooks/AGIPD/AGIPD_Retrieve_Constants_Precorrection.ipynb index 91f180d8477edba7fa0dae09d945c8e36ffda948..fe2255505e51c94e37847490273b1a93072bc35b 100644 --- a/notebooks/AGIPD/AGIPD_Retrieve_Constants_Precorrection.ipynb +++ b/notebooks/AGIPD/AGIPD_Retrieve_Constants_Precorrection.ipynb @@ -93,7 +93,6 @@ "from calibration_client import CalibrationClient\n", "from cal_tools.agipdlib import AgipdCtrl, SnowResolution\n", "from cal_tools.calcat_interface import AGIPD_CalibrationData, CalCatError\n", - "from cal_tools.restful_config import restful_config\n", "from cal_tools.step_timing import StepTimer\n", "from cal_tools.tools import CalibrationMetadata, calcat_creation_time, module_index_to_qm\n", "from cal_tools.enums import AgipdGainMode" @@ -311,10 +310,12 @@ "for cname in constants:\n", " if cname in gain_constants:\n", " agipd_cal.gain_mode = None\n", + " else:\n", + " agipd_cal.gain_mode = gain_mode\n", " try:\n", " a = agipd_cal.metadata([cname])\n", " for mod, ccv_entry in a.items():\n", - " agipd_metadata[mod].update(a[mod])\n", + " agipd_metadata[mod].update(ccv_entry)\n", " except CalCatError as e:\n", " pass # a validation of missing constants is done later.\n", "\n", diff --git a/src/cal_tools/agipdlib.py b/src/cal_tools/agipdlib.py index 5d5aa54a244b47b162aac535f33d95e90470a538..6e1c64977311d03140aaf75b62fa5a1038474e76 100644 --- a/src/cal_tools/agipdlib.py +++ b/src/cal_tools/agipdlib.py @@ -1427,7 +1427,10 @@ class AgipdCorrections: * Constants.AGIPD.SlopesFF * Constants.AGIPD.BadPixelsFF """ - from cal_tools.calcat_interface import AGIPD_CalibrationData + from cal_tools.calcat_interface import ( + AGIPD_CalibrationData, + CalCatError, + ) when = {} cons_data = {} @@ -1463,24 +1466,33 @@ class AgipdCorrections: gain_constants += ["SlopesPC", "BadPixelsPC"] if self.corr_bools.get("xray_corr"): gain_constants += ["SlopesFF", "BadPixelsFF"] - + metadata = {karabo_da: {}} constants = dark_constants constants += gain_constants - metadata = agipd_cal.metadata(constants) + for cname in constants: + if cname in gain_constants: + agipd_cal.gain_mode = None + else: + agipd_cal.gain_mode = gain_mode + try: + metadata[karabo_da].update( + agipd_cal.metadata([cname])[karabo_da]) + except CalCatError as e: + pass # a validation of missing constants is done later. + # Validate the constants availability and raise/warn correspondingly. - for mod, ccv_dict in metadata.items(): - missing_dark_constants = set( - c for c in dark_constants if c not in ccv_dict.keys()) - missing_gain_constants = set( - c for c in gain_constants if c not in ccv_dict.keys()) - if missing_dark_constants: - raise KeyError( - f"Dark constants {missing_dark_constants} are not available" - f" for correction. Module: {mod}") - if missing_gain_constants: - warning( - f"Gain constants {missing_gain_constants} were" - f" not retrieved. Module: {mod}") + missing_dark_constants = set( + c for c in dark_constants if c not in metadata[karabo_da].keys()) + missing_gain_constants = set( + c for c in gain_constants if c not in metadata[karabo_da].keys()) + if missing_dark_constants: + warning( + f"Dark constants {missing_dark_constants} are not available" + f" for correction. Module: {karabo_da}") + if missing_gain_constants: + warning( + f"Gain constants {missing_gain_constants} were" + f" not retrieved. Module: {karabo_da}") for cname in constants: if metadata[karabo_da].get(cname): diff --git a/src/cal_tools/calcat_interface.py b/src/cal_tools/calcat_interface.py index 22db045d07ae866ce0c8405b32f8ef6b7dbb5baa..00c1a52ea59962bf3f6be2c23eb071001c924235 100644 --- a/src/cal_tools/calcat_interface.py +++ b/src/cal_tools/calcat_interface.py @@ -178,6 +178,7 @@ class CalCatApi(metaclass=ClientWrapper): else: raise ValueError(f"{module_naming} is unknown!") + @lru_cache() def calibration_id(self, calibration_name): """ID for a calibration in CalCat.""" @@ -762,10 +763,8 @@ class CalibrationData: for db_name in parameters: value = getattr(self, self._simplify_parameter_name(db_name), None) - if value is not None: cond[db_name] = value - return cond @classmethod @@ -1042,7 +1041,7 @@ class AGIPD_CalibrationData(SplitConditionCalibrationData): elif gain_mode is not None: cond["Gain mode"] = 1 - if int(cond.get("Integration time", -1)) == 12: + if int(cond.get("Integration time", None)) == 12: del cond["Integration time"] return cond