From 327fcb67256244f908305c352ecc42c5de5853fe Mon Sep 17 00:00:00 2001
From: David Hammer <dhammer@mailbox.org>
Date: Wed, 3 Mar 2021 20:22:53 +0100
Subject: [PATCH] Moving get_gain_mode to agipdlib

---
 cal_tools/cal_tools/agipdlib.py                | 12 +++++++++++-
 .../Characterize_AGIPD_Gain_Darks_NBC.ipynb    | 18 ++----------------
 2 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/cal_tools/cal_tools/agipdlib.py b/cal_tools/cal_tools/agipdlib.py
index 9b40845e0..1c14701f1 100644
--- a/cal_tools/cal_tools/agipdlib.py
+++ b/cal_tools/cal_tools/agipdlib.py
@@ -6,7 +6,7 @@ import h5py
 import numpy as np
 import sharedmem
 from cal_tools.agipdutils import *
-from cal_tools.enums import BadPixels, SnowResolution
+from cal_tools.enums import AgipdGainMode, BadPixels, SnowResolution
 from cal_tools.tools import get_constant_from_db_and_time
 from iCalibrationDB import Conditions, Constants, Detectors
 
@@ -118,6 +118,16 @@ def get_gain_setting(fname: str, h5path_ctrl: str) -> int:
         else:
             raise ValueError('Could not derive gain setting from setupr and patternTypeIndex')  # noqa
 
+def get_gain_mode(fname: str, h5path_ctrl: str) -> AgipdGainMode:
+    """Returns the gain mode (adaptive or fixed) from slow data"""
+
+    h5path_run = h5path_ctrl.replace("CONTROL/", "RUN/", 1)
+    h5path_gainmode = f'{h5path_run}/gainModeIndex/value'
+    with h5py.File(fname, 'r') as fd:
+        if h5path_gainmode in fd:
+            return AgipdGainMode(fd[h5path_gainmode][0])
+    return AgipdGainMode.ADAPTIVE_GAIN
+
 
 def get_bias_voltage(fname: str, karabo_id_control: str,
                      module: Optional[int] = 0) -> int:
diff --git a/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb b/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb
index ca2c3ba7b..0138ddf88 100644
--- a/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb
+++ b/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb
@@ -97,7 +97,7 @@
     "\n",
     "import multiprocessing\n",
     "\n",
-    "from cal_tools.agipdlib import (get_acq_rate, get_bias_voltage,\n",
+    "from cal_tools.agipdlib import (get_acq_rate, get_bias_voltage, get_gain_mode,\n",
     "                                get_gain_setting, get_num_cells)\n",
     "from cal_tools.enums import AgipdGainMode\n",
     "from cal_tools.plotting import (create_constant_overview, plot_badpix_3d,\n",
@@ -110,20 +110,6 @@
     "from iCalibrationDB import Conditions, Constants, Detectors"
    ]
   },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "def get_gain_mode(h5fn):\n",
-    "    h5path_gainmode = f'{h5path_ctrl.replace(\"/CONTROL/\", \"/RUN/\", 1)}/gainModeIndex/value'\n",
-    "    with h5py.File(h5fn, 'r') as fd:\n",
-    "        if h5path_gainmode in fd:\n",
-    "            return AgipdGainMode(fd[h5path_gainmode][0])\n",
-    "    return AgipdGainMode.ADAPTIVE_GAIN"
-   ]
-  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -168,7 +154,7 @@
     "control_names = [f'{in_folder}/r{r:04d}/RAW-R{r:04d}-{karabo_da_control}-S00000.h5'\n",
     "                 for r in (run_high, run_med, run_low)]\n",
     "\n",
-    "run_gain_modes = [get_gain_mode(fn) for fn in control_names]\n",
+    "run_gain_modes = [get_gain_mode(fn, h5path_ctrl) for fn in control_names]\n",
     "if all(gm == AgipdGainMode.ADAPTIVE_GAIN for gm in run_gain_modes):\n",
     "    fixed_gain_mode = False\n",
     "elif run_gain_modes == [AgipdGainMode.FIXED_HIGH_GAIN, AgipdGainMode.FIXED_MEDIUM_GAIN, AgipdGainMode.FIXED_LOW_GAIN]:\n",
-- 
GitLab