From 1d5456126ca0e15efcf4f52da7196681195a8d2d Mon Sep 17 00:00:00 2001 From: Karim Ahmed <karim.ahmed@xfel.eu> Date: Tue, 5 May 2020 16:06:21 +0200 Subject: [PATCH] gain_setting and expse creation_time --- ...aracterize_AGIPD_Gain_FlatFields_NBC.ipynb | 78 +++++++++++++++---- 1 file changed, 62 insertions(+), 16 deletions(-) diff --git a/notebooks/AGIPD/Characterize_AGIPD_Gain_FlatFields_NBC.ipynb b/notebooks/AGIPD/Characterize_AGIPD_Gain_FlatFields_NBC.ipynb index e4eebca38..89bb40836 100644 --- a/notebooks/AGIPD/Characterize_AGIPD_Gain_FlatFields_NBC.ipynb +++ b/notebooks/AGIPD/Characterize_AGIPD_Gain_FlatFields_NBC.ipynb @@ -52,7 +52,10 @@ "db_input = True # retreive data from calibration database, setting offset-store will overwrite this\n", "deviation_threshold = 0.75 # peaks with an absolute location deviation larger than the medium are are considere bad\n", "acqrate = 2.2 # acquisition rate\n", - "dont_use_dir_creation_date = False" + "use_dir_creation_date = True\n", + "creation_time = \"\" # To overwrite the measured creation_time. Required Format: YYYY-MM-DD HR:MN:SC.ms e.g. 2019-07-04 11:02:41.00\n", + "gain_setting = 0.1 # gain setting can have value 0 or 1, Default=0.1 for no (None) gain-setting\n", + "karabo_da_control = \"AGIPD1MCTRL00\" # karabo DA for control infromation" ] }, { @@ -66,13 +69,15 @@ }, "outputs": [], "source": [ - "import warnings\n", - "warnings.filterwarnings('ignore')\n", "# std library imports\n", + "from datetime import datetime\n", + "import dateutil\n", "from functools import partial\n", - "import h5py\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", "import os\n", "\n", + "import h5py\n", "# numpy and matplot lib specific\n", "import numpy as np\n", "import matplotlib\n", @@ -96,11 +101,12 @@ "profile = cluster_profile\n", "\n", "from iCalibrationDB import ConstantMetaData, Constants, Conditions, Detectors, Versions\n", - "from cal_tools.tools import gain_map_files, parse_runs, run_prop_seq_from_path, get_notebook_name, get_dir_creation_date, get_random_db_interface\n", - "from cal_tools.influx import InfluxLogger\n", + "from cal_tools.agipdlib import get_gain_setting\n", "from cal_tools.enums import BadPixels\n", + "from cal_tools.influx import InfluxLogger\n", "from cal_tools.plotting import show_overview, plot_badpix_3d\n", - "from datetime import datetime\n", + "from cal_tools.tools import gain_map_files, parse_runs, run_prop_seq_from_path, get_notebook_name, get_dir_creation_date, get_random_db_interface\n", + "\n", "\n", "# usually no need to change these lines\n", "sensor_size = [128, 512]\n", @@ -114,7 +120,21 @@ "memory_cells = mem_cells\n", "\n", "\n", - "if not dont_use_dir_creation_date:\n", + "\n", + "\n", + "# Define constant creation time.\n", + "if creation_time:\n", + " try:\n", + " creation_time = datetime.strptime(creation_time, '%Y-%m-%d %H:%M:%S.%f')\n", + " except Exception as e:\n", + " print(f\"creation_time value error: {e}.\" \n", + " \"Use same format as YYYY-MM-DD HR:MN:SC.ms e.g. 2019-07-04 11:02:41.00/n\")\n", + " creation_time = None\n", + " print(\"Given creation time wont be used.\")\n", + "else:\n", + " creation_time = None\n", + "\n", + "if not creation_time and use_dir_creation_date:\n", " ntries = 100\n", " while ntries > 0:\n", " try:\n", @@ -123,9 +143,8 @@ " except OSError:\n", " pass\n", " ntries -= 1\n", - " \n", " \n", - " print(\"Using {} as creation time\".format(creation_time))\n", + "print(\"Using {} as creation time\".format(creation_time))\n", " \n", "runs = parse_runs(runs)\n", "\n", @@ -169,6 +188,29 @@ "cal_db_interface = get_random_db_interface(cal_db_interface)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "control_fname = f'{in_folder}/{runs[0]}/RAW-{runs[0].upper()}-{karabo_da_control}-S00000.h5'\n", + "if gain_setting == 0.1:\n", + " if creation_time.replace(tzinfo=None) < dateutil.parser.parse('2020-01-31'):\n", + " print(\"Set gain-setting to None for runs taken before 2020-01-31\")\n", + " gain_setting = None\n", + " else:\n", + " try:\n", + " gain_setting = get_gain_setting(control_fname, h5path_ctrl)\n", + " except Exception as e:\n", + " print(f'Error while reading gain setting from: \\n{control_fname}')\n", + " print(e)\n", + " print(\"Gain setting is not found in the control information\")\n", + " print(\"Data will not be processed\")\n", + " sequences = []\n", + "print(f\"Gain setting: {gain_setting}\")" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -212,7 +254,8 @@ " det = getattr(Detectors, dinstance)\n", "\n", " # set the operating condition\n", - " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage, acquisition_rate=acqrate)\n", + " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage,\n", + " acquisition_rate=acqrate, gain_setting=gain_setting)\n", " metadata.detector_condition = condition\n", "\n", " # specify the a version for this constant\n", @@ -230,7 +273,8 @@ " metadata.calibration_constant = noise\n", "\n", " # set the operating condition\n", - " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage, acquisition_rate=acqrate)\n", + " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage,\n", + " acquisition_rate=acqrate, gain_setting=gain_setting)\n", " metadata.detector_condition = condition\n", "\n", " # specify the a version for this constant\n", @@ -248,7 +292,8 @@ " metadata.calibration_constant = thresholds\n", "\n", " # set the operating condition\n", - " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage, acquisition_rate=acqrate)\n", + " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage,\n", + " acquisition_rate=acqrate, gain_setting=gain_setting)\n", " metadata.detector_condition = condition\n", "\n", " # specify the a version for this constant\n", @@ -267,7 +312,8 @@ " metadata.calibration_constant = pc\n", "\n", " # set the operating condition\n", - " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage, acquisition_rate=acqrate)\n", + " condition = Conditions.Dark.AGIPD(memory_cells=max_cells, bias_voltage=bias_voltage,\n", + " acquisition_rate=acqrate, gain_setting=gain_setting)\n", " metadata.detector_condition = condition\n", "\n", " # specify the a version for this constant\n", @@ -1093,7 +1139,7 @@ " # set the operating condition\n", " condition = Conditions.Illuminated.AGIPD(memory_cells, bias_voltage, 9.2,\n", " pixels_x=512, pixels_y=128, beam_energy=None,\n", - " acquisition_rate=acqrate)\n", + " acquisition_rate=acqrate, gain_setting=gain_setting)\n", " \n", " metadata.detector_condition = condition\n", "\n", @@ -1116,7 +1162,7 @@ " # set the operating condition\n", " condition = Conditions.Illuminated.AGIPD(memory_cells, bias_voltage, 9.2,\n", " pixels_x=512, pixels_y=128, beam_energy=None,\n", - " acquisition_rate=acqrate)\n", + " acquisition_rate=acqrate, gain_setting=gain_setting)\n", " \n", " metadata.detector_condition = condition\n", "\n", -- GitLab