Skip to content
Snippets Groups Projects

[AGIPD][DARK] Sort dark runs

Merged Karim Ahmed requested to merge feat/sort_dark_runs_agipd2 into master
All threads resolved!
Files
2
+ 12
13
@@ -343,19 +343,18 @@ class AgipdCtrlRuns:
assert len(self.runs) == 3, f"AGIPD dark runs are expected to be 3. {len(self.runs)} runs are given." # noqa
# Expected patterns:
# XRay: 0, DarkHG: 1, DarkMG: 2, DarkLG: 3, PC: 4 and CS: 5.
sort_by = {}
if self.gain_modes == self.adaptive_gain_modes: # Adaptive gain
sort_by = None
sort_values = []
if self.gain_modes == self.adaptive_gain_modes: # Adaptive gain # sort by patterns
# Patterns -> DarkHG: 1, DarkMG: 2, DarkLG: 3
if "AGIPD1M" in self.ctrl_src:
pattern_dataset = "patternTypeIndex"
sort_by = "patternTypeIndex"
elif "AGIPD500K" in self.ctrl_src:
pattern_dataset = "expTypeIndex"
sort_by = "expTypeIndex"
sort_by[pattern_dataset] = [] # sort by patterns
for c in self.run_ctrls:
sort_by[pattern_dataset].append(c.run_dc[
self.ctrl_src, pattern_dataset].as_single_value())
sort_values.append(
c.run_dc[self.ctrl_src, sort_by].as_single_value())
# Check if a mix of adaptive and fixed gain runs.
elif any(gm == AgipdGainMode.ADAPTIVE_GAIN for gm in self.gain_modes):
@@ -363,18 +362,18 @@ class AgipdCtrlRuns:
f"Given runs {self.runs} have a mix of ADAPTIVE and "
f"FIXED gain modes: {self.gain_modes}.")
else: # Fixed gain: Patterns is X-Ray: 0 for all runs.
sort_by["gainModeIndex"] = [int(gm) for gm in self.gain_modes]
sort_by = "gainModeIndex"
sort_values = [int(gm) for gm in self.gain_modes]
zipped_lists = zip(
list(sort_by.values())[0], self.runs, self.run_ctrls)
zipped_lists = zip(sort_values, self.runs, self.run_ctrls)
# Sort the lists based on the patterns
sorted_zipped_lists = sorted(zipped_lists, key=lambda item: item[0])
_, sorted_runs, sorted_run_ctrls = zip(*sorted_zipped_lists)
if sorted_runs != self.runs:
Warning("Given dark runs are unsorted. Runs will be sorted from"
f" {self.runs} with {list(sort_by.keys())[0]}"
f" {list(sort_by.values())} to {sorted_runs}.")
f" {self.runs} with {sort_by}:"
f" {sort_values} to {sorted_runs}.")
# Update run_ctrls and runs order
self.runs = list(sorted_runs)
self.run_ctrls = list(sorted_run_ctrls)
Loading