From 2993f1e700c5da219cbdce39b3ea2b3dbc67d5dd Mon Sep 17 00:00:00 2001
From: Thomas Kluyver <thomas.kluyver@xfel.eu>
Date: Thu, 4 Aug 2022 16:28:21 +0200
Subject: [PATCH] Move ROI parameters to RUN section

---
 ...Jungfrau_Gain_Correct_and_Verify_NBC.ipynb | 27 ++++++++++++-------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb b/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb
index b73acd7ae..9bd9950e4 100644
--- a/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb
+++ b/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb
@@ -396,7 +396,8 @@
     "    \"\"\"If ROIs are defined for this karabo_da, reduce them and save to the output file\"\"\"\n",
     "    rois_defined = 0\n",
     "    module_no = int(karabo_da[-2:])\n",
-    "    rois_source = f'{karabo_id}/ROIPROC/{karabo_da}:output/data'\n",
+    "    params_source = f'{karabo_id}/ROIPROC/{karabo_da}'\n",
+    "    rois_source = f'{params_source}:output/data'\n",
     "    \n",
     "    for i in range(len(roi_definitions) // 6):\n",
     "        roi_module, a1, a2, b1, b2, mean_axis = roi_definitions[i*6 : (i+1)*6]\n",
@@ -410,14 +411,18 @@
     "                f'INSTRUMENT/{rois_source}/roi{rois_defined}/data',\n",
     "                data=roi_data\n",
     "            )\n",
-    "            region_arr = np.zeros((data_corr.shape[0], 4), dtype=np.uint16)\n",
-    "            region_arr[:] = [a1, a2, b1, b2]\n",
-    "            ofile[f'INSTRUMENT/{rois_source}/roi{rois_defined}/region'] = region_arr\n",
+    "            ofile.create_group(f'CONTROL/{params_source}')\n",
+    "            params_grp = ofile.create_group(f'RUN/{params_source}/roi{rois_defined}')\n",
+    "            params_grp['region'] = np.array([[a1, a2, b1, b2]])\n",
+    "            params_grp['reduce_axis'] = np.array([mean_axis])\n",
     "    \n",
     "    if rois_defined:\n",
     "        # Copy the index for the new source\n",
     "        ofile.copy(f'INDEX/{karabo_id}/DET/{karabo_da}:daqOutput/data',\n",
     "                   f'INDEX/{rois_source}')\n",
+    "        ntrains = ofile['INDEX/trainId'].shape[0]\n",
+    "        ofile.create_dataset(f'INDEX/{params_source}/count', shape=(ntrains,), dtype=np.uint64)\n",
+    "        ofile.create_dataset(f'INDEX/{params_source}/first', shape=(ntrains,), dtype=np.uint64)\n",
     "        \n",
     "        # Add the new source to the list in METADATA\n",
     "        if 'dataSourceId' in ofile['METADATA']:\n",
@@ -427,13 +432,15 @@
     "            # Newer file format\n",
     "            data_sources_grp = ofile['METADATA/dataSources']\n",
     "        \n",
-    "        def append(dset, value):\n",
-    "            dset.resize(dset.shape[0] + 1, axis=0)\n",
-    "            dset[-1] = value\n",
+    "        def extend(dset, values):\n",
+    "            dset.resize(dset.shape[0] + len(values), axis=0)\n",
+    "            dset[-len(values):] = values\n",
     "        \n",
-    "        append(data_sources_grp['root'], 'INSTRUMENT')\n",
-    "        append(data_sources_grp['deviceId'], rois_source)\n",
-    "        append(data_sources_grp['dataSourceId'], f'INSTRUMENT/{rois_source}')\n"
+    "        extend(data_sources_grp['root'], ['CONTROL', 'INSTRUMENT'])\n",
+    "        extend(data_sources_grp['deviceId'], [params_source, rois_source])\n",
+    "        extend(data_sources_grp['dataSourceId'], [\n",
+    "            f'CONTROL/{params_source}', f'INSTRUMENT/{rois_source}']\n",
+    "        )\n"
    ]
   },
   {
-- 
GitLab