From 0a027bad1e1bbbf3e0a9b25f3ef6ca3686fed73a Mon Sep 17 00:00:00 2001
From: Laurent Mercadier <laurent.mercadier@xfel.eu>
Date: Fri, 9 Dec 2022 16:16:41 +0100
Subject: [PATCH] Add get_sase_pId() and load bpt only if number of pulses
 changes in load()

---
 src/toolbox_scs/load.py | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py
index be22e18..a5bec21 100644
--- a/src/toolbox_scs/load.py
+++ b/src/toolbox_scs/load.py
@@ -152,12 +152,16 @@ def load(proposalNB=None, runNB=None,
 
     data_arrays = []
     run_mnemonics = mnemonics_for_run(run)
-    # load pulse pattern info
-    bpt = load_bpt(run, run_mnemonics=run_mnemonics)
-    if bpt is None:
-        log.warning('Bunch pattern table not found in run. Skipping!')
-    else:
-        data_arrays.append(bpt)
+    # load pulse pattern info only if number of sase 3 pulses changed
+    sase3, sase3_changed = get_sase_pId(run)
+    if sase3_changed:
+        log.warning('Number of pulses changed during the run. '
+                    'Loading bunch pattern table.')
+        bpt = load_bpt(run, run_mnemonics=run_mnemonics)
+        if bpt is None:
+            log.warning('Bunch pattern table not found in run. Skipping!')
+        else:
+            data_arrays.append(bpt)
 
     for f in fields:
         if type(f) == dict:
@@ -505,3 +509,17 @@ def load_bpt(run, merge_with=None, run_mnemonics=None):
             return bpt
     log.debug('Could not find bunch pattern table.')
     return None
+
+
+def get_sase_pId(run, sase='sase3'):
+    mnemonics = mnemonics_for_run(run)
+    if sase not in mnemonics:
+        # bunch pattern not recorded
+        return [], True
+    npulse_sase = np.unique(get_array(run, 'npulses_' + sase))
+    if len(npulse_sase) == 1:
+        return np.unique(load_run_values(run)[sase])[1:], False
+    # number of pulses changed during the run
+    return np.unique(get_array(run, sase))[1:], True
+
+
-- 
GitLab