diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py index be22e18ba09dfccbab4c4ccf10baa7e7897f80ea..a5bec21fac8e958504ea34bb19b2ab49719ecf12 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 + +