From b074c2ea9a375e51b84a1eb3bf27d59dd747a431 Mon Sep 17 00:00:00 2001 From: Egor Sobolev <egor.sobolev@xfel.eu> Date: Thu, 28 Mar 2024 20:24:22 +0100 Subject: [PATCH] Fix dark data for flat-field part, add checks of data --- .../Characterize_DynamicFF_NBC.ipynb | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb b/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb index 54c4412b7..ef9a5e27f 100644 --- a/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb +++ b/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb @@ -46,6 +46,7 @@ "import datetime\n", "import os\n", "import warnings\n", + "from logging import warning\n", "\n", "warnings.filterwarnings('ignore')\n", "\n", @@ -87,7 +88,7 @@ " {\"detector_identifier\": karabo_id})\n", "\n", "if not pdus[\"success\"]:\n", - " print(\"exception\")\n", + " raise ValueException(\"Failed to retrieve PDUs\")\n", "\n", "detector_info = pdus['data'][0]['detector']\n", "detector = ShimadzuHPVX2(detector_info[\"source_name_pattern\"])\n", @@ -145,9 +146,15 @@ " file_da, _, _ = da.partition('/')\n", " dark_dc = RunDirectory(f\"{in_folder}/r{dark_run:04d}\",\n", " include=f\"RAW-R{dark_run:04d}-{file_da}-S*.h5\")\n", + "\n", + " if source_name not in dark_dc.all_sources:\n", + " print(f\"Source {source_name} for module {da} is missed\")\n", + " continue\n", + "\n", " dark_dc = dark_dc.select([(source_name, image_key)])\n", - " key_data = dark_dc[source_name, image_key]\n", + " conditions = detector.conditions(dark_dc, meta[\"module\"])\n", "\n", + " key_data = dark_dc[source_name, image_key]\n", " images_dark = key_data.ndarray()\n", " ntrain, npulse, ny, nx = images_dark.shape\n", "\n", @@ -160,7 +167,6 @@ " dark = dffc.process_dark(images_dark)\n", "\n", " # put results in the dict\n", - " conditions = detector.conditions(dark_dc, meta[\"module\"])\n", " module_constants = constants.setdefault(meta[\"db_module\"], {})\n", " module_constants[\"Offset\"] = dict(\n", " conditions=conditions, data=dark, pdu_no=meta[\"pdu_no\"],\n", @@ -206,9 +212,22 @@ " file_da, _, _ = da.partition('/')\n", " flat_dc = RunDirectory(f\"{in_folder}/r{flat_run:04d}\",\n", " include=f\"RAW-R{flat_run:04d}-{file_da}-S*.h5\")\n", + "\n", + " if source_name not in flat_dc.all_sources:\n", + " print(f\"Source {source_name} for module {da} is missed\")\n", + " continue\n", + "\n", " flat_dc = flat_dc.select([(source_name, image_key)])\n", - " key_data = flat_dc[source_name][image_key]\n", + " conditions = detector.conditions(flat_dc, meta[\"module\"])\n", "\n", + " dark = constants[meta[\"db_module\"]][\"Offset\"][\"data\"]\n", + " dark_conditions = constants[meta[\"db_module\"]][\"Offset\"][\"conditions\"]\n", + "\n", + " if conditions != dark_conditions:\n", + " ValueError(\"The conditions for flat-field run does not match \"\n", + " \"the dark run conditions. Skip flat-field characterization.\")\n", + "\n", + " key_data = flat_dc[source_name][image_key]\n", " images_flat = key_data.ndarray()\n", " ntrain, npulse, ny, nx = images_flat.shape\n", "\n", @@ -284,7 +303,7 @@ " conditions = constant[\"conditions\"]\n", " conditions_dict = conditions.make_dict(\n", " conditions.calibration_types[constant_name])\n", - " \n", + "\n", " data_to_store = {db_module: {constant_name: {'0': {\n", " 'conditions': conditions_dict,\n", " 'data': constant[\"data\"],\n", -- GitLab