From fc6501239f9a0756acad23c2894fde703626cfd8 Mon Sep 17 00:00:00 2001 From: Elliot Oram <elliot.oram@stfc.ac.uk> Date: Thu, 7 Mar 2019 08:56:15 +0000 Subject: [PATCH] WIP automatically determine Chopper mode on POLARIS Refs #24150 --- .../polaris_advanced_config.py | 7 ++----- .../polaris_routines/polaris_algs.py | 20 +++++++++++++++++++ .../polaris_routines/polaris_param_mapping.py | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_advanced_config.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_advanced_config.py index c8fb286fe01..3a5d0c56329 100644 --- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_advanced_config.py +++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_advanced_config.py @@ -100,10 +100,7 @@ variables = { def get_mode_specific_dict(mode): if mode is None: - raise RuntimeError("The parameter with name: 'mode' is required but " - "was not set or passed.\n" - "Acceptable values for this parameter are: PDF, Rietveld.") - + return {"focused_cropping_values": 'auto'} mode = mode.lower() if mode == "pdf": return {"focused_cropping_values": pdf_focused_cropping_values} @@ -112,7 +109,7 @@ def get_mode_specific_dict(mode): raise ValueError("Invalid chopper mode: \"{}\"".format(mode)) -def get_all_adv_variables(mode="PDF"): +def get_all_adv_variables(mode=None): advanced_config_dict = {} advanced_config_dict.update(variables) advanced_config_dict.update(get_mode_specific_dict(mode)) diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py index 144d0e441ea..c55182a29dc 100644 --- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py +++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py @@ -34,6 +34,12 @@ def _get_run_numbers_for_key(current_mode_run_numbers, key): def _get_current_mode_dictionary(run_number_string, inst_settings): mapping_dict = get_cal_mapping_dict(run_number_string, inst_settings.cal_mapping_path) + if inst_settings.mode is None: + ws = mantid.Load('POLARIS'+run_number_string+'.nxs') + mode, cropping_vals = _determine_chopper_mode(ws) + inst_settings.mode = mode + inst_settings.focused_cropping_values = cropping_vals + mantid.DeleteWorkspace(ws) # Get the current mode "Rietveld" or "PDF" run numbers return common.cal_map_dictionary_key_helper(mapping_dict, inst_settings.mode) @@ -161,3 +167,17 @@ def _read_masking_file(masking_file_path): if bank_masking_list: all_banks_masking_list.append(bank_masking_list) return all_banks_masking_list + + +def _determine_chopper_mode(ws): + if ws.getRun().hasProperty('Frequency'): + frequency = ws.getRun()['Frequency'].lastValue() + print("No chopper mode provided") + if frequency == 50: + print("automatically chose Rietveld") + return 'Rietveld', polaris_advanced_config.rietveld_focused_cropping_values + if frequency == 0: + print("automatically chose PDF") + return 'PDF', polaris_advanced_config.pdf_focused_cropping_values + else: + raise ValueError("Chopper frequency not in log data. Please specify a chopper mode") diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py index 30423875773..0f9b0bb316a 100644 --- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py +++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py @@ -25,7 +25,7 @@ attr_mapping = \ ParamMapEntry(ext_name="grouping_file_name", int_name="grouping_file_name"), ParamMapEntry(ext_name="input_mode", int_name="input_mode", enum_class=INPUT_BATCHING), ParamMapEntry(ext_name="merge_banks", int_name="merge_banks"), - ParamMapEntry(ext_name="mode", int_name="mode", enum_class=POLARIS_CHOPPER_MODES), + ParamMapEntry(ext_name="mode", int_name="mode", enum_class=POLARIS_CHOPPER_MODES, optional=True), ParamMapEntry(ext_name="multiple_scattering", int_name="multiple_scattering", optional=True), ParamMapEntry(ext_name="raw_data_cropping_values", int_name="raw_data_crop_values"), ParamMapEntry(ext_name="run_number", int_name="run_number"), -- GitLab