diff --git a/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb b/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb index 4b22d84b093aaeb25c778a6babe8da414a45167b..e98cab0f6027c59c489c1c06ec44264018e9020a 100644 --- a/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb +++ b/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb @@ -181,27 +181,9 @@ "metadata": {}, "outputs": [], "source": [ - "# Get timestamp of first train\n", - "train_time_stamp = run_dir.train_timestamps()[0].astype(datetime)/1e9\n", - "train_time_stamp = datetime.fromtimestamp(train_time_stamp)\n", - "\n", - "# Acessing receiver slow data through new device configuration\n", - "if train_time_stamp > datetime(2023,5,19): # date of device upgrade\n", - " rcvr_src = f\"{karabo_id}/DET/RECEIVER\"\n", - "# Acessing receiver slow data through old device configuration\n", - "else:\n", - " rcvr_src = f\"{karabo_id}/DET/RECEIVER:daqOutput\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ctrl_data = epix100lib.epix100Ctrl(\n", + " ctrl_data = epix100lib.epix100Ctrl(\n", " run_dc=run_dir,\n", - " rcvr_src=rcvr_src,\n", + " instrument_src=instrument_src,\n", " ctrl_src=f\"{karabo_id}/DET/CONTROL\",\n", " )\n", "# Read integration time\n", diff --git a/notebooks/ePix100/Correction_ePix100_NBC.ipynb b/notebooks/ePix100/Correction_ePix100_NBC.ipynb index ae2579f91a4fa1d6995eabc924709e311d0ca3ec..b11c5e40777d3cecef457be8584d2987f775dccd 100644 --- a/notebooks/ePix100/Correction_ePix100_NBC.ipynb +++ b/notebooks/ePix100/Correction_ePix100_NBC.ipynb @@ -190,27 +190,6 @@ "step_timer = StepTimer()" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get timestamp of first train\n", - "train_time_stamp = run_dc.train_timestamps()[0].astype(datetime)/1e9\n", - "train_time_stamp = datetime.fromtimestamp(train_time_stamp)\n", - "\n", - "# Acessing receiver slow data through new device configuration\n", - "if train_time_stamp > datetime(2023,5,19): # date of device upgrade\n", - " rcvr_src = f\"{karabo_id}/DET/RECEIVER\"\n", - " key_prefix = 'slowdata'\n", - "# Acessing receiver slow data through old device configuration\n", - "else:\n", - " rcvr_src = f\"{karabo_id}/DET/RECEIVER:daqOutput\"\n", - " key_prefix = 'data'\n", - " " - ] - }, { "cell_type": "code", "execution_count": null, @@ -229,7 +208,7 @@ "# Read control data.\n", "ctrl_data = epix100lib.epix100Ctrl(\n", " run_dc=run_dc,\n", - " rcvr_src=rcvr_src,\n", + " instrument_src=instrument_src,\n", " ctrl_src=f\"{karabo_id}/DET/CONTROL\",\n", " )\n", "\n", @@ -665,7 +644,7 @@ " step_timer.start() # Correct data. \n", "\n", " # Overwrite seq_dc after eliminating empty trains or/and applying limited images.\n", - " slow_data_dc = seq_dc.select(rcvr_src,require_all=True).select_trains(np.s_[:corr_ntrains])\n", + " slow_data_dc = seq_dc.select(instrument_src,require_all=True).select_trains(np.s_[:corr_ntrains])\n", " seq_dc = seq_dc.select(\n", " instrument_src, \"*\", require_all=True).select_trains(np.s_[:corr_ntrains])\n", "\n", @@ -697,19 +676,6 @@ " # Create count/first datasets at INDEX source.\n", " outp_source.create_index(data=image_counts)\n", "\n", - " # Store uncorrected RAW image datasets for the corrected trains.\n", - "\n", - " data_raw_fields = [ # /data/\n", - " \"ambTemp\", \"analogCurr\", \"analogInputVolt\", \"backTemp\",\n", - " \"digitalInputVolt\", \"guardCurr\", \"relHumidity\", \"digitalCurr\"\n", - " ]\n", - " for field in data_raw_fields:\n", - " field_arr = slow_data_dc[rcvr_src, f\"{key_prefix}.{field}\"].ndarray()\n", - "\n", - " outp_source.create_key(\n", - " f\"data.{field}\", data=field_arr,\n", - " chunks=(chunk_size_idim, *field_arr.shape[1:]))\n", - "\n", " image_raw_fields = [ # /data/image/\n", " \"binning\", \"bitsPerPixel\", \"dimTypes\", \"dims\",\n", " \"encoding\", \"flipX\", \"flipY\", \"roiOffsets\", \"rotation\",\n", @@ -726,6 +692,9 @@ " \"data.image.pixels\", data=data, chunks=dataset_chunk)\n", " outp_source.create_key(\n", " \"data.trainId\", data=seq_dc.train_ids, chunks=min(50, len(seq_dc.train_ids)))\n", + " outp_source.create_key(\n", + " \"data.pulsenId\", data=list(seq_dc[instrument_src]['data.pulseId'].ndarray().squeeze()), chunks=min(50, len(seq_dc.train_ids)))\n", + " \n", " if pattern_classification:\n", " # Add main corrected `data.image.pixels` dataset and store corrected data.\n", " outp_source.create_key(\n", diff --git a/src/cal_tools/epix100/epix100lib.py b/src/cal_tools/epix100/epix100lib.py index c54002a44f9a30f9705ea14f2d0f1f482c25bdbb..b2a3a73ac1f419680d6d09e016265ae72812e0df 100644 --- a/src/cal_tools/epix100/epix100lib.py +++ b/src/cal_tools/epix100/epix100lib.py @@ -6,16 +6,16 @@ class epix100Ctrl(): self, run_dc: extra_data.DataCollection, ctrl_src: str, - rcvr_src: str, + instrument_src: str, ): """Read epix100 parameters to use later while quering CALCAT. :param run_dir: EXtra-data RunDirectory DataCollection object. - :param ctrl_src: CONTROL/*/DET/CONTROL source for accessing slow data from controler. - :param rcvr_src: CONTROL/*/DET/RECEIVER source for accessing slow data from receiver. + :param ctrl_src: CONTROL source for accessing slow data. + :param instrument_src: INSTRUMENT source for accessing fast data. """ self.run_dc = run_dc self.ctrl_src = ctrl_src - self.rcvr_src = rcvr_src + self.instrument_src = instrument_src def get_integration_time(self): return self.run_dc[ @@ -23,20 +23,25 @@ class epix100Ctrl(): def get_temprature(self): """Get temperature value from CONTROL. - Temprature is stored in Celsius atol is degree variation tolerance. """ + # old receiver device configuration + # temperature was stored in: + # source: 'MID_EXP_EPIX-1/DET/RECEIVER:daqOutput' + # key: 'data.backTemp' + if 'data.backTemp' in self.run_dc[self.instrument_src]: + # using `item()` because data.backTemp shape evolved from (n_trains,) to (n_trains, 1) + # atol = 100 because temperature was in C/100 + return self.run_dc[ + self.instrument_src, 'data.backTemp'].as_single_value( + reduce_by='mean', atol=100).item() / 100 - # older device configuration - if self.rcvr_src.find('daqOutput') > 0: - atol = 100 # temperature was in C/100 - data_key = 'data.backTemp' - # new device configuration - else: - atol = 1 - data_key = 'slowdata.backTemp' - - # data.backTemp shape evolved from (n_trains,) to (n_trains, 1) - return self.run_dc[ - self.rcvr_src, data_key].as_single_value( - reduce_by='mean', atol=atol).item() / atol \ No newline at end of file + # new (2023) receiver device configuration + # temperature is stored in: + # source: 'MID_EXP_EPIX-1/DET/RECEIVER' + # key: 'slowdata.backTemp.value' + else: + return self.run_dc[ + self.instrument_src.split(':daqOutput')[0], 'slowdata.backTemp.value'].as_single_value( + reduce_by='mean', atol=1) + \ No newline at end of file