added shift function to ROI

This commit is contained in:
2025-07-12 23:11:19 +02:00
parent fbb2cac698
commit 81e8c2b7c5

View File

@@ -103,12 +103,12 @@ def collect_runs_metadata(pgroup_data_dir: str | os.PathLike):
return df
def scan_info(run_number, base_path=None, small_data=True):
def scan_info(run_number, base_path=None, small_data=True, pgroup=None):
"""Returns SFScanInfo object for a given run number.
If there is are small data channels, they will be added (small_data=False to suppress their loading).
"""
if base_path == None:
base_path = heuristic_extract_base_path()
base_path = heuristic_extract_base_path(pgroup)
scan = SFScanInfo(f"{base_path}run{run_number:04}/meta/scan.json")
@@ -275,6 +275,11 @@ def process_run(
det_pids[only_shots],
data[detector][only_shots, bottom:top, left:right].std(axis=(1, 2)),
)
if "max" in calculate:
sd[roi.name + "_max"] = (
det_pids[only_shots],
data[detector][only_shots, bottom:top, left:right].max(axis=(1, 2)),
)
if "img" in calculate:
sd[f"{roi.name}_img"] = (
det_pids[only_shots],
@@ -447,6 +452,25 @@ class ROI:
@property
def height(self):
return self.top - self.bottom
def shift(self, x: float, y: float, inplace=False):
""" Returns a new ROI that is shifted
by x to the left and by y pixels up.
If `inplace=True` shifts the existing ROI instead.
"""
if not inplace:
return ROI(left=self.left+x,
right=self.right+x,
bottom = self.bottom+y,
top=self.top+y,
name=self.name)
else:
self.left = self.left + x
self.right = self.right + x
self.bottom = self.bottom + y
self.top = self.top + y
def __repr__(self):
if hasattr(self, "name"):
@@ -539,9 +563,10 @@ def heuristic_extract_pgroup(path=None):
raise KeyError("Automatic p-group extraction from the current working directory didn't work.")
def heuristic_extract_base_path():
def heuristic_extract_base_path(p_number=None):
"""The function tries to guess the full path where the raw data is saved."""
p_number = heuristic_extract_pgroup()
if p_number is None:
p_number = heuristic_extract_pgroup()
base_path = f"/sf/cristallina/data/p{p_number}/raw/"
return base_path