From 01a43eb8ddc11467bf830b4822c7e1125ba90811 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Le=20Guyader?= <loic.le.guyader@xfel.eu>
Date: Tue, 3 Aug 2021 13:47:14 +0200
Subject: [PATCH] Fix flat field correction display in BOZ analysis

---
 src/toolbox_scs/routines/boz.py | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/toolbox_scs/routines/boz.py b/src/toolbox_scs/routines/boz.py
index 5e47f03..2b53ae1 100644
--- a/src/toolbox_scs/routines/boz.py
+++ b/src/toolbox_scs/routines/boz.py
@@ -112,7 +112,10 @@ class parameters():
 
     def get_flat_field(self):
         """Get the flat field plane definition."""
-        return np.array(self.flat_field)
+        if self.flat_field is None:
+            return None
+        else:
+            return np.array(self.flat_field)
 
     def set_Fnl(self, Fnl):
         """Set the non-linear correction function."""
@@ -123,7 +126,10 @@ class parameters():
 
     def get_Fnl(self):
         """Get the non-linear correction function."""
-        return np.array(self.Fnl)
+        if self.Fnl is None:
+            return None
+        else:
+            return np.array(self.Fnl)
 
     def save(self, path='./'):
         """Save the parameters as a JSON file.
@@ -822,7 +828,7 @@ def inspect_plane_fitting(avg, rois, vmin=None, vmax=None):
     d = '0'
     roi = rois[d]
     for k, r in enumerate(['n', '0', 'p']):
-        img_rois[r] = np.roll(avg, tuple(centers[r] - centers[d]))[
+        img_rois[r] = np.roll(avg, tuple(centers[d] - centers[r]))[
         roi['yl']:roi['yh'], roi['xl']:roi['xh']]
         im = axs[0, k].imshow(img_rois[r],
                               vmin=vmin,
@@ -1279,13 +1285,22 @@ def inspect_correction(params, gain=None):
         fitrois[k] = params.rois[k]
 
     # flat flat_field
-    ff = compute_flat_field_correction(params.rois, params.get_flat_field())
+    plane_ff = params.get_flat_field()
+    if plane_ff is None:
+        plane_ff = [0.0, 0.0, 1.0, -1.0]
+    ff = compute_flat_field_correction(params.rois, plane_ff)
+
+    # non linearities
+    Fnl = params.get_Fnl()
+    if Fnl is None:
+        Fnl = np.arange(2**9)
 
+    # compute all levels of correction
     data = process(np.arange(2**9), params.arr_dark, params.arr, params.tid,
         fitrois, params.get_mask(), np.ones_like(ff), params.sat_level)
     data_ff = process(np.arange(2**9), params.arr_dark, params.arr, params.tid,
         fitrois, params.get_mask(), ff, params.sat_level)
-    data_ff_nl = process(params.get_Fnl(), params.arr_dark, params.arr,
+    data_ff_nl = process(Fnl, params.arr_dark, params.arr,
         params.tid, fitrois, params.get_mask(), ff, params.sat_level)
 
     # for conversion to nb of photons
-- 
GitLab