From 26ecb2859f642b08a85c1abb17a86ca0a3925d20 Mon Sep 17 00:00:00 2001 From: ahmedk <karim.ahmed@xfel.eu> Date: Wed, 3 May 2023 10:01:03 +0200 Subject: [PATCH] Feat: calibrations_timestamps_markdown method and usage use JF, epix100, and pnccd --- ...Jungfrau_Gain_Correct_and_Verify_NBC.ipynb | 4 ++- .../ePix100/Correction_ePix100_NBC.ipynb | 9 ++--- notebooks/pnCCD/Correct_pnCCD_NBC.ipynb | 9 ++--- src/cal_tools/calcat_interface.py | 34 +++++++++++++++++++ 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb b/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb index 8eeadf72a..ebb0d15f3 100644 --- a/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb +++ b/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb @@ -205,7 +205,9 @@ "if relative_gain:\n", " constant_names += [\"BadPixelsFF10Hz\", \"RelativeGain10Hz\"]\n", "\n", - "jf_metadata = jf_cal.metadata(calibrations=constant_names)" + "jf_metadata = jf_cal.metadata(calibrations=constant_names)\n", + "# Display retrieved calibration constants timestamps\n", + "display(Markdown(jf_cal.calibrations_timestamps_markdown(metadata=jf_metadata)))" ] }, { diff --git a/notebooks/ePix100/Correction_ePix100_NBC.ipynb b/notebooks/ePix100/Correction_ePix100_NBC.ipynb index 57c48072c..ae7f91d9e 100644 --- a/notebooks/ePix100/Correction_ePix100_NBC.ipynb +++ b/notebooks/ePix100/Correction_ePix100_NBC.ipynb @@ -281,13 +281,8 @@ ")\n", "const_metadata = epix_cal.metadata(calibrations=constant_names)\n", "\n", - "mod_to_pdu = epix_cal.mod_to_pdu\n", - "ccvs_url = \"https://in.xfel.eu/calibration/calibration_constant_versions/\"\n", - "for mod, mod_md in const_metadata.items():\n", - " display(Markdown(f\"{mod}({mod_to_pdu[mod]}):\"))\n", - " for cname, c_mdata in mod_md.items():\n", - " display(Markdown(\n", - " f\"- [{cname}]({ccvs_url}/{c_mdata['ccv_id']}): {c_mdata['begin_validity_at']}\"))\n", + "# Display retrieved calibration constants timestamps\n", + "display(Markdown(epix_cal.calibrations_timestamps_markdown(metadata=const_metadata)))\n", "\n", "# Load the constant data from files\n", "const_data = epix_cal.ndarray_map(metadata=const_metadata)[karabo_da]\n", diff --git a/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb b/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb index 557aa099e..f8faf8b71 100644 --- a/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb +++ b/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb @@ -342,13 +342,8 @@ " \"Relative gain correction is disabled.\")\n", " corr_bools['relgain'] = False\n", "\n", - "mod_to_pdu = pnccd_cal.mod_to_pdu\n", - "ccvs_url = \"https://in.xfel.eu/calibration/calibration_constant_versions/\"\n", - "for mod, mod_md in pnccd_metadata.items():\n", - " display(Markdown(f\"{mod}({mod_to_pdu[mod]}):\"))\n", - " for cname, c_mdata in mod_md.items():\n", - " display(Markdown(\n", - " f\"- [{cname}]({ccvs_url}/{c_mdata['ccv_id']}): {c_mdata['begin_validity_at']}\"))\n", + "# Display retrieved calibration constants timestamps\n", + "display(Markdown(pnccd_cal.calibrations_timestamps_markdown(metadata=pnccd_metadata)))\n", "\n", "metadata = pnccd_metadata[karabo_da]\n", "\n", diff --git a/src/cal_tools/calcat_interface.py b/src/cal_tools/calcat_interface.py index bca8e5a3f..792070f2e 100644 --- a/src/cal_tools/calcat_interface.py +++ b/src/cal_tools/calcat_interface.py @@ -692,6 +692,40 @@ class CalibrationData: return self.load_constants_from_metadata(metadata) + def calibrations_timestamps_markdown( + self, + metadata=None, + ccvs_url = "https://in.xfel.eu/calibration/calibration_constant_versions/", # noqa + ): + """Return Markdown text for all detector modules + and their retrieved constants creation time + with a reference link to the CCV CalCat urls. + + Args: + metadata (CCVMetadata): + The detector CCV metadata object with all retrieved + constants metadata. If metadata is None. Metadata for + all calibrations and latest snapshot_at and event_at are used. + ccvs_url (Str): The calibration constant version CalCat url. + Returns: + (Str): markdown text that can be displayed properly using + `from IPython.display import Markdown, display`. + """ + markdown_text = "" + mod_to_pdu = self.mod_to_pdu + if metadata is None: + metadata = self.metadata() + for mod, mod_md in metadata.items(): + # Add module name. + markdown_text += f"\n{mod}({mod_to_pdu[mod]}):\n" + # Add calibration constant name with link to CalCat + # and add creation time. + for cname, c_mdata in mod_md.items(): + markdown_text += ( + f"- [{cname}]({ccvs_url}/{c_mdata['ccv_id']}): " + f"{c_mdata['begin_validity_at']}\n") + return markdown_text + def _build_condition(self, parameters): cond = dict() -- GitLab