From 5ed9ecf12ba8fd7fa6af59d52a7437b1af913c84 Mon Sep 17 00:00:00 2001
From: ahmedk <karim.ahmed@xfel.eu>
Date: Mon, 7 Nov 2022 16:12:00 +0100
Subject: [PATCH] retest epix100 and add warning

---
 notebooks/LPD/LPD_Correct_Fast.ipynb          |  2 ++
 ...LPD_retrieve_constants_precorrection.ipynb | 33 -------------------
 .../ePix100/Correction_ePix100_NBC.ipynb      | 15 +++++----
 ...100_retrieve_constants_precorrection.ipynb | 24 ++++++++++----
 4 files changed, 28 insertions(+), 46 deletions(-)

diff --git a/notebooks/LPD/LPD_Correct_Fast.ipynb b/notebooks/LPD/LPD_Correct_Fast.ipynb
index 397d144a4..be56e6b66 100644
--- a/notebooks/LPD/LPD_Correct_Fast.ipynb
+++ b/notebooks/LPD/LPD_Correct_Fast.ipynb
@@ -135,6 +135,8 @@
     "cal_db_root = Path(cal_db_root)\n",
     "\n",
     "metadata = CalibrationMetadata(metadata_folder or out_folder)\n",
+    "# Constant paths & timestamps are saved under retrieved-constants in calibration_metadata.yml\n",
+    "retrieved_constants = metadata.setdefault(\"retrieved-constants\", {})\n",
     "\n",
     "creation_time = calcat_creation_time(in_folder, run, creation_time)\n",
     "print(f'Using {creation_time.isoformat()} as creation time')\n",
diff --git a/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb b/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
index 9d6088af1..5362f87e3 100644
--- a/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
+++ b/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
@@ -90,39 +90,6 @@
     "step_timer = StepTimer()"
    ]
   },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "dark_calibrations = {\n",
-    "    1: 'Offset',\n",
-    "    14: 'BadPixelsDark',\n",
-    "}\n",
-    "\n",
-    "dark_condition = [\n",
-    "    dict(parameter_id=1, value=bias_voltage),  # Sensor bias voltage\n",
-    "    dict(parameter_id=7, value=mem_cells),  # Memory cells\n",
-    "    dict(parameter_id=15, value=capacitor),  # Feedback capacitor\n",
-    "    dict(parameter_id=13, value=256),  # Pixels X\n",
-    "    dict(parameter_id=14, value=256),  # Pixels Y\n",
-    "]\n",
-    "\n",
-    "illuminated_calibrations = {\n",
-    "    20: 'BadPixelsFF',\n",
-    "    42: 'GainAmpMap',\n",
-    "    43: 'FFMap',\n",
-    "    44: 'RelativeGain',\n",
-    "}\n",
-    "\n",
-    "illuminated_condition = dark_condition.copy()\n",
-    "illuminated_condition += [\n",
-    "    dict(parameter_id=3, value=photon_energy),  # Source energy\n",
-    "    dict(parameter_id=25, value=category)  # category\n",
-    "]"
-   ]
-  },
   {
    "cell_type": "code",
    "execution_count": null,
diff --git a/notebooks/ePix100/Correction_ePix100_NBC.ipynb b/notebooks/ePix100/Correction_ePix100_NBC.ipynb
index 9a38ee093..ca19f1bdb 100644
--- a/notebooks/ePix100/Correction_ePix100_NBC.ipynb
+++ b/notebooks/ePix100/Correction_ePix100_NBC.ipynb
@@ -85,6 +85,7 @@
    "source": [
     "import tabulate\n",
     "import warnings\n",
+    "from logging import warning\n",
     "\n",
     "import h5py\n",
     "import pasha as psh\n",
@@ -292,12 +293,14 @@
     "        try:\n",
     "            const_data[cname] = epix_cal.ndarray(module=1, calibration=cname)  # TODO: what is this module number?\n",
     "        except CalCatError as e:\n",
-    "            if cname == \"RelativeGainEPix100\":\n",
-    "                print(\"RelativeGainEPix100 is not found. No gain correction will be applied.\")\n",
-    "                relative_gain = False\n",
-    "                absolute_gain = False\n",
-    "            else:\n",
-    "                raise CalCatError(f\"{cname}: {e}\")"
+    "            if cname != \"RelativeGainEPix100\":\n",
+    "                raise\n",
+    "\n",
+    "# Set gain bools to False if constant is not available.\n",
+    "if relative_gain and \"RelativeGainEPix100\" not in const_data.values():\n",
+    "    warning(\"RelativeGainEPix100 is not found in CALCAT. Gain correction wont be applied.\")\n",
+    "    relative_gain = False\n",
+    "    absolute_gain = False"
    ]
   },
   {
diff --git a/notebooks/ePix100/ePix100_retrieve_constants_precorrection.ipynb b/notebooks/ePix100/ePix100_retrieve_constants_precorrection.ipynb
index a8a56f47d..4c118dc56 100644
--- a/notebooks/ePix100/ePix100_retrieve_constants_precorrection.ipynb
+++ b/notebooks/ePix100/ePix100_retrieve_constants_precorrection.ipynb
@@ -51,11 +51,13 @@
    "metadata": {},
    "outputs": [],
    "source": [
+    "from logging import warning\n",
+    "\n",
     "import numpy as np\n",
     "from extra_data import RunDirectory\n",
     "from pathlib import Path\n",
     "\n",
-    "from cal_tools.calcat_interface import EPIX100_CalibrationData\n",
+    "from cal_tools.calcat_interface import CalCatError, EPIX100_CalibrationData\n",
     "from cal_tools.epix100 import epix100lib\n",
     "from cal_tools.tools import (\n",
     "    calcat_creation_time,\n",
@@ -162,12 +164,20 @@
     "\n",
     "for cname in constant_names:\n",
     "    # Retrieve metadata for all epix100 constants.\n",
-    "    for cname, ccv_metadata in list(epix_cal.metadata([cname]).values())[0].items():\n",
-    "        mdata_dict[\"constants\"][cname] = dict()\n",
-    "        mdata_dict[\"constants\"][cname][\"path\"] = str(epix_cal.caldb_root / ccv_metadata[\"path\"])\n",
-    "        mdata_dict[\"constants\"][cname][\"dataset\"] = ccv_metadata[\"dataset\"]\n",
-    "        mdata_dict[\"constants\"][cname][\"creation-time\"] = ccv_metadata[\"begin_validity_at\"]\n",
-    "        print(f\"Retrieved {cname} with creation-time: {ccv_metadata['begin_validity_at']}\")\n",
+    "    try:\n",
+    "        epix_metadata = epix_cal.metadata([cname])\n",
+    "        for cname, ccv_metadata in list(epix_metadata.values())[0].items():\n",
+    "            mdata_dict[\"constants\"][cname] = {\n",
+    "                \"path\": str(epix_cal.caldb_root / ccv_metadata[\"path\"]),\n",
+    "                \"dataset\": ccv_metadata[\"dataset\"],\n",
+    "                \"creation-time\": ccv_metadata[\"begin_validity_at\"],\n",
+    "            }\n",
+    "            print(f\"Retrieved {cname} with creation-time: {ccv_metadata['begin_validity_at']}\")\n",
+    "    except CalCatError:\n",
+    "        if cname == \"RelativeGainEPix100\":\n",
+    "            warning(\"RelativeGainEPix100 is not found in CALCAT.\")\n",
+    "        else:\n",
+    "            raise\n",
     "mdata_dict[\"physical-detector-unit\"] = ccv_metadata[\"physical_name\"]\n",
     "retrieved_constants[karabo_da] = mdata_dict\n",
     "metadata.save()\n",
-- 
GitLab