From 6bf0e7d1113b8a58f3c9f4de20a826e6417b39ae Mon Sep 17 00:00:00 2001
From: Thomas Kluyver <thomas.kluyver@xfel.eu>
Date: Thu, 15 Dec 2022 09:24:00 +0100
Subject: [PATCH] Integrate using memory cell order condition in pre notebook

---
 notebooks/LPD/LPD_Correct_Fast.ipynb          |  2 ++
 ...LPD_retrieve_constants_precorrection.ipynb | 28 +++++++++++++++++--
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/notebooks/LPD/LPD_Correct_Fast.ipynb b/notebooks/LPD/LPD_Correct_Fast.ipynb
index e28a84d32..0d3c8b613 100644
--- a/notebooks/LPD/LPD_Correct_Fast.ipynb
+++ b/notebooks/LPD/LPD_Correct_Fast.ipynb
@@ -253,6 +253,8 @@
     "    for da, ccvs in const_yaml.items():\n",
     "\n",
     "        for calibration_name, ccv in ccvs['constants'].items():\n",
+    "            if ccv['file-path'] is None:\n",
+    "                continue\n",
     "\n",
     "            dtype = np.uint32 if calibration_name.startswith('BadPixels') else np.float32\n",
     "\n",
diff --git a/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb b/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
index 21ffbfb4d..be2d1ee03 100644
--- a/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
+++ b/notebooks/LPD/LPD_retrieve_constants_precorrection.ipynb
@@ -27,6 +27,7 @@
     "\n",
     "# Source parameters\n",
     "karabo_id = 'FXE_DET_LPD1M-1'  # Karabo domain for detector.\n",
+    "input_source = '{karabo_id}/DET/{module_index}CH0:xtdf'  # Input fast data source.\n",
     "\n",
     "# CalCat parameters\n",
     "creation_time = \"\"  # The timestamp to use with Calibration DB. Required Format: \"YYYY-MM-DD hh:mm:ss\" e.g. 2019-07-04 11:02:41\n",
@@ -48,8 +49,11 @@
     "from pathlib import Path\n",
     "from time import perf_counter\n",
     "\n",
+    "import numpy as np\n",
+    "\n",
     "from calibration_client import CalibrationClient\n",
     "from calibration_client.modules import CalibrationConstantVersion\n",
+    "import extra_data as xd\n",
     "\n",
     "from cal_tools.tools import (\n",
     "    CalibrationMetadata,\n",
@@ -83,6 +87,22 @@
     "    karabo_da = [f'LPD{i:02d}' for i in modules]   "
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Read the order of memory cells used\n",
+    "raw_data = xd.RunDirectory(Path(in_folder, f'r{run:04d}'))\n",
+    "\n",
+    "src = input_source.format(karabo_id=karabo_id, module_index=int(karabo_da[0][-2:]))\n",
+    "cell_ids = raw_data[src, 'image.cellId'].drop_empty_trains()\n",
+    "cell_ids_pattern = np.squeeze(cell_ids[0].ndarray())\n",
+    "cell_ids_pattern_s = \",\".join([str(c) for c in cell_ids_pattern]) + \",\"\n",
+    "print(\"Memory cells order:\", cell_ids_pattern_s)"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -114,13 +134,16 @@
     "    14: 'BadPixelsDark',\n",
     "}\n",
     "\n",
-    "dark_condition = [\n",
+    "base_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",
+    "dark_condition = base_condition + [\n",
+    "    dict(parameter_id=142, value=cell_ids_pattern_s),  # Memory cell order\n",
+    "]\n",
     "\n",
     "illuminated_calibrations = {\n",
     "    20: 'BadPixelsFF',\n",
@@ -129,8 +152,7 @@
     "    44: 'RelativeGain',\n",
     "}\n",
     "\n",
-    "illuminated_condition = dark_condition.copy()\n",
-    "illuminated_condition += [\n",
+    "illuminated_condition = base_condition + [\n",
     "    dict(parameter_id=3, value=photon_energy),  # Source energy\n",
     "    dict(parameter_id=25, value=category)  # category\n",
     "]"
-- 
GitLab