diff --git a/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb b/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb index ee4a1ec27f067ee10d64be65b29a2fa8598ef45c..0bbba6c5e5f7d695f4ee09d7249aa20729e8c859 100644 --- a/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb +++ b/notebooks/AGIPD/Characterize_AGIPD_Gain_Darks_NBC.ipynb @@ -269,6 +269,7 @@ " ctrl_src=ctrl_src,\n", ")\n", "agipd_ctrl_dark.sort_dark_runs()\n", + "agipd_ctrl_dark.validate_gain_modes()\n", "if mem_cells == 0:\n", " mem_cells = agipd_ctrl_dark.get_memory_cells()\n", "\n", diff --git a/src/cal_tools/agipdlib.py b/src/cal_tools/agipdlib.py index 61a8fac915b312002b65fc258cfc6fa93dc683cf..fdb8df0dd13052b9385d6304b786e0bf5d30d350 100644 --- a/src/cal_tools/agipdlib.py +++ b/src/cal_tools/agipdlib.py @@ -333,15 +333,20 @@ class AgipdCtrlRuns: f"{name} is not the same for all runs {self.runs}" f" with values of {values}, respectively.") - def sort_dark_runs(self): + def sort_dark_runs(self, fixed_gain_mode): """Order dark runs based on PatternTypeIndex.""" assert len(self.run_ctrls) == 3, f"AGIPD dark runs are expected to be 3. {len(self.run_ctrls)} runs are given." # Expected patterns: XRay: 0, DarkHG: 1, DarkMG: 2, DarkLG: 3, # SlopesPC: 4 # Gain runs??. Any more expected PatternTypeIndexs? - patterns = [] - for c in self.run_ctrls: - patterns.append(c.run_dc[ - self.ctrl_src, "patternTypeIndex"].as_single_value()) + if fixed_gain_mode: + # used gain mode + pass + else: # Adaptive mode. patterns -> DarkHG: 1, DarkMG: 2, DarkLG: 3 + patterns = [] + for c in self.run_ctrls: + patterns.append(c.run_dc[ + self.ctrl_src, "patternTypeIndex"].as_single_value()) + zipped_lists = zip(patterns, self.runs, self.run_ctrls) # Sort the lists based on the patterns @@ -349,9 +354,9 @@ class AgipdCtrlRuns: _, sorted_runs, sorted_run_ctrls = zip(*sorted_zipped_lists) if sorted_runs != self.runs: - Warning("Given dark runs are unsorted. Run will be sorted from" + Warning("Given dark runs are unsorted. Runs will be sorted from" f" {self.runs} with patternTypeIndexs {patterns} to " - f" {list(self.runs_dict.keys())}.") + f" {sorted_runs}.") # Update run_ctrls and runs order self.runs = sorted_runs self.run_ctrls = sorted_run_ctrls diff --git a/tests/test_agipdlib.py b/tests/test_agipdlib.py index 17f29f655170df2a4a26ccfcdf5952c006c63370..e312c377a13309a02351214243a95a7324e199bc 100644 --- a/tests/test_agipdlib.py +++ b/tests/test_agipdlib.py @@ -306,9 +306,20 @@ def test_raise_validate_gain_modes(): unsorted_fixed_gain_ctrls = AgipdCtrlRuns( raw_folder=TEST_RAW_FOLDER, - runs=[9013, 9011, 9012], + runs=[9013, 9011, 9012], # unsorted fixed gain runs image_src=SPB_AGIPD_INST_SRC, ctrl_src=CTRL_SRC, ) with pytest.raises(ValueError): unsorted_fixed_gain_ctrls.validate_gain_modes() + +@pytest.mark.requires_gpfs +def test_sort_dark_runs(): + unsorted_runs_ctrls = AgipdCtrlRuns( + raw_folder=TEST_RAW_FOLDER, + runs=[9013, 9011, 9012], # unsorted runs + image_src=SPB_AGIPD_INST_SRC, + ctrl_src=CTRL_SRC, + ) + unsorted_runs_ctrls.sort_dark_runs() + assert unsorted_runs_ctrls.runs == [9011, 9012, 9013] \ No newline at end of file