From e936fff58f56abbfe7786ea570607ed2a4c9e06c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Le=20Guyader?= <loic.le.guyader@xfel.eu>
Date: Tue, 11 Apr 2023 11:41:39 +0200
Subject: [PATCH] Add drop intra darks option in BOZ parameters object

---
 src/toolbox_scs/routines/boz.py | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/toolbox_scs/routines/boz.py b/src/toolbox_scs/routines/boz.py
index 856751e..a7707e9 100644
--- a/src/toolbox_scs/routines/boz.py
+++ b/src/toolbox_scs/routines/boz.py
@@ -76,14 +76,17 @@ class parameters():
     run: int, run number for the data run
     module: int, DSSC module number
     gain: float, number of ph per bin
+    drop_intra_darks: drop every second DSSC frame
     """
-    def __init__(self, proposal, darkrun, run, module, gain):
+    def __init__(self, proposal, darkrun, run, module, gain,
+        drop_intra_darks=True):
         self.proposal = proposal
         self.darkrun = darkrun
         self.run = run
         self.module = module
         self.pixel_pos = _get_pixel_pos(self.module)
         self.gain = gain
+        self.drop_intra_darks = drop_intra_darks
 
         self.mask = None
         self.mask_idx = None
@@ -116,9 +119,10 @@ class parameters():
     def dask_load_persistently(self):
         """Load dask data array in memory."""
         self.arr_dark, self.tid_dark = load_dssc_module(self.proposal,
-            self.darkrun, self.module, drop_intra_darks=True, persist=True)
+            self.darkrun, self.module, drop_intra_darks=self.drop_intra_darks,
+            persist=True)
         self.arr, self.tid = load_dssc_module(self.proposal, self.run,
-            self.module, drop_intra_darks=True, persist=True)
+            self.module, drop_intra_darks=self.drop_intra_darks, persist=True)
 
         # make sure to rechunk the arrays
         self.arr = self.arr.rechunk(('auto', -1, -1, -1))
@@ -249,6 +253,7 @@ class parameters():
         v['run'] = self.run
         v['module'] = self.module
         v['gain'] = self.gain
+        v['drop_intra_darks'] = self.drop_intra_darks
 
         v['mask'] = self.mask_idx
         v['mean_th'] = self.mean_th
@@ -287,7 +292,8 @@ class parameters():
         """
         with open(fname, 'r') as f:
             v = json.load(f)
-        c = cls(v['proposal'], v['darkrun'], v['run'], v['module'], v['gain'])
+        c = cls(v['proposal'], v['darkrun'], v['run'], v['module'], v['gain'],
+                v['drop_intra_darks'])
 
         c.mean_th = v['mean_th']
         c.std_th = v['std_th']
@@ -313,6 +319,7 @@ class parameters():
     def __str__(self):
         f = f'proposal:{self.proposal} darkrun:{self.darkrun} run:{self.run}'
         f += f' module:{self.module} gain:{self.gain} ph/bin\n'
+        f += f'drop intra darks:{self.drop_intra_darks}\n'
 
         if self.mask_idx is not None:
             f += f'mean threshold:{self.mean_th} std threshold:{self.std_th}\n'
-- 
GitLab