From 6950fc596d364f8602b552d43ad7bee8981901f6 Mon Sep 17 00:00:00 2001
From: ahmedk <karim.ahmed@xfel.eu>
Date: Mon, 19 Jun 2023 10:30:43 +0200
Subject: [PATCH] Skipp correction modules with no offset constant and error if
 missing for all modules

---
 notebooks/LPD/LPD_Correct_Fast.ipynb          | 28 +++++++++++--------
 ...LPD_retrieve_constants_precorrection.ipynb | 16 ++++++-----
 2 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/notebooks/LPD/LPD_Correct_Fast.ipynb b/notebooks/LPD/LPD_Correct_Fast.ipynb
index e16d3dc2f..55bfa940d 100644
--- a/notebooks/LPD/LPD_Correct_Fast.ipynb
+++ b/notebooks/LPD/LPD_Correct_Fast.ipynb
@@ -311,20 +311,26 @@
    "outputs": [],
    "source": [
     "# Validate the constants availability and raise/warn accordingly.\n",
-    "missing_dark_modules = set()\n",
     "for mod, calibrations in const_data.items():\n",
-    "    missing_dark_constants = {\"Offset\", \"BadPixelsDark\"} - set(calibrations)\n",
-    "    missing_gain_constants = {\n",
-    "        \"BadPixelsFF\", \"GainAmpMap\", \"FFMap\", \"RelativeGain\"}  - set(calibrations)\n",
-    "    if missing_dark_constants:\n",
-    "        warning(f\"Dark constants {missing_dark_constants} are not available to correct {mod}.\")  # noqa\n",
-    "        missing_dark_modules.update(mod)\n",
-    "    if missing_gain_constants:\n",
+    "    missing_offset = {\"Offset\"} - set(calibrations)\n",
+    "    warn_missing_constants = {\n",
+    "        \"BadPixelsDark\", \"BadPixelsFF\", \"GainAmpMap\", \"FFMap\", \"RelativeGain\"} - set(calibrations)\n",
+    "    if missing_offset:\n",
+    "        warning(f\"Offset constant is not available to correct {mod}\")  # noqa\n",
+    "        karabo_da.remove(mod)\n",
+    "    if warn_missing_constants:\n",
     "        warning(f\"Gain constants {missing_gain_constants} were not retrieved for {mod}\")\n",
-    "    if calibrations[\"BadPixelsDark\"].dtype != np.uint32:  # Old LPD constants are stored as float32.\n",
+    "    if (\n",
+    "        calibrations.get(\"BadPixelsDark\") and\n",
+    "        calibrations[\"BadPixelsDark\"].dtype != np.uint32\n",
+    "    ):  # Old LPD constants are stored as float32.\n",
     "        calibrations[\"BadPixelsDark\"] = calibrations[\"BadPixelsDark\"].astype(np.uint32, copy=False)\n",
-    "if missing_dark_modules == set(karabo_da):\n",
-    "    raise ValueError(f\"Dark constants are missing for all modules {karabo_da}\")\n",
+    "if not karabo_da:  # Offsets are missing for all modules.\n",
+    "    raise Exception(\"Could not find offset constants for all modules, will not correct data.\")\n",
+    "\n",
+    "# Remove skipped correction modules from data_to_process\n",
+    "data_to_process = [(mod, in_f, out_f) for mod, in_f, out_f in data_to_process if mod in [karabo_da]]\n",
+    "\n",
     "total_time = perf_counter() - start\n",
     "print(f'{total_time:.1f}s')"
    ]
diff --git a/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb b/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
index cc1df118b..d0a8bbcae 100644
--- a/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
+++ b/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
@@ -144,14 +144,16 @@
     "\n",
     "# Validate the constants availability and raise/warn correspondingly. \n",
     "for mod, ccv_dict in lpd_cal_metadata.items():\n",
-    "    \n",
-    "    missing_dark_constants = {\"Offset\", \"BadPixelsDark\"} - set(ccv_dict)\n",
-    "    missing_gain_constants = {\n",
-    "        \"BadPixelsFF\", \"GainAmpMap\", \"FFMap\", \"RelativeGain\"} - set(ccv_dict)\n",
-    "    if missing_dark_constants:\n",
-    "        warning(f\"Dark constants {missing_dark_constants} are not available to correct {mod}\")  # noqa\n",
-    "    if missing_gain_constants:\n",
+    "    missing_offset = {\"Offset\"} - set(ccv_dict)\n",
+    "    warn_missing_constants = {\n",
+    "        \"BadPixelsDark\", \"BadPixelsFF\", \"GainAmpMap\", \"FFMap\", \"RelativeGain\"} - set(ccv_dict)\n",
+    "    if missing_offset:\n",
+    "        warning(f\"Offset constant is not available to correct {mod}\")  # noqa\n",
+    "        karabo_da.remove(mod)\n",
+    "    if warn_missing_constants:\n",
     "        warning(f\"Gain constants {missing_gain_constants} were not retrieved for {mod}\")\n",
+    "if not karabo_da:  # Offsets are missing for all modules.\n",
+    "    raise Exception(\"Could not find offset constants for all modules, will not correct data.\")\n",
     "\n",
     "for mod, ccv_dict in lpd_cal_metadata.items():\n",
     "    mdata_dict = {\"constants\": dict()}\n",
-- 
GitLab