diff --git a/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb b/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb index 3d2da0b11e8dfbcd569c1a9385612fbdba185452..cfaf022060c1028f47fccfaa3c13931751f6aa77 100644 --- a/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb +++ b/notebooks/ePix100/Characterize_Darks_ePix100_NBC.ipynb @@ -27,14 +27,14 @@ "metadata": {}, "outputs": [], "source": [ - "in_folder = '/gpfs/exfel/exp/HED/202330/p900338/raw' # input folder, required\n", + "in_folder = '/gpfs/exfel/exp/MID/202330/p900329/raw' # input folder, required\n", "out_folder = '' # output folder, required\n", "metadata_folder = '' # Directory containing calibration_metadata.yml when run by xfel-calibrate\n", "sequence = 0 # sequence file to use\n", - "run = 176 # which run to read data from, required\n", + "run = 106 # which run to read data from, required\n", "\n", "# Parameters for accessing the raw data.\n", - "karabo_id = \"HED_IA1_EPX100-1\" # karabo karabo_id\n", + "karabo_id = \"MID_EXP_EPIX-1\" # karabo karabo_id\n", "karabo_da = [\"EPIX01\"] # data aggregators\n", "receiver_template = \"RECEIVER\" # detector receiver template for accessing raw data files\n", "path_template = 'RAW-R{:04d}-{}-S{{:05d}}.h5' # the template to use to access data\n", diff --git a/notebooks/ePix100/Correction_ePix100_NBC.ipynb b/notebooks/ePix100/Correction_ePix100_NBC.ipynb index 9585d4eb66c9f7ff5d876bef40992ec95d9e3120..89fa139226537207b3b447893c3a26c57333ccb5 100644 --- a/notebooks/ePix100/Correction_ePix100_NBC.ipynb +++ b/notebooks/ePix100/Correction_ePix100_NBC.ipynb @@ -24,15 +24,15 @@ "metadata": {}, "outputs": [], "source": [ - "in_folder = \"/gpfs/exfel/exp/MID/202301/p003346/raw\" # input folder, required\n", + "in_folder = \"/gpfs/exfel/exp/HED/202102/p002739/raw\" # input folder, required\n", "out_folder = \"\" # output folder, required\n", "metadata_folder = \"\" # Directory containing calibration_metadata.yml when run by xfel-calibrate\n", "sequences = [-1] # sequences to correct, set to -1 for all, range allowed\n", "sequences_per_node = 1 # number of sequence files per cluster node if run as slurm job, set to 0 to not run SLURM parallel\n", - "run = 55 # which run to read data from, required\n", + "run = 38 # which run to read data from, required\n", "\n", "# Parameters for accessing the raw data.\n", - "karabo_id = \"MID_EXP_EPIX-1\" # karabo karabo_id\n", + "karabo_id = \"HED_IA1_EPX100-1\" # karabo karabo_id\n", "karabo_da = \"EPIX01\" # data aggregators\n", "db_module = \"\" # module id in the database\n", "receiver_template = \"RECEIVER\" # detector receiver template for accessing raw data files\n", @@ -612,19 +612,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 = seq_dc[instrument_src, f\"data.{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", @@ -641,6 +628,11 @@ " \"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", + " \n", + " if np.isin('data.pulseId', list(seq_dc[instrument_src].keys())): # some runs are missing 'data.pulseId'\n", + " outp_source.create_key(\n", + " \"data.pulseId\", 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 9cea56634612b1cc3ab38e9a49ba6210ae05cb64..d2c71e1b912b5fe5137131f21b4ad38f3298edff 100644 --- a/src/cal_tools/epix100/epix100lib.py +++ b/src/cal_tools/epix100/epix100lib.py @@ -23,12 +23,24 @@ class epix100Ctrl(): def get_temprature(self): """Get temperature value from CONTROL. - Temprature is stored in Celsius/100 units. - Therefore, we are dividing by 100 and - there is an absolute tolerance of 100. - atol=100 is a 1 degree variation tolerance. + atol is degree variation tolerance. """ - # data.backTemp shape evolved from (n_trains,) to (n_trains, 1) - return self.run_dc[ - self.instrument_src, 'data.backTemp'].as_single_value( - reduce_by='mean', atol=100).item() / 100 + # 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 + + # 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