From 2efc9ab52e6c25085cd386113c201e7b58a2a3ef Mon Sep 17 00:00:00 2001 From: David Fairbrother <DavidFair@users.noreply.github.com> Date: Mon, 20 Mar 2017 16:16:13 +0000 Subject: [PATCH] Re #19156 Fixed incorrect output name being used for a calibration --- .../Diffraction/isis_powder/abstract_inst.py | 7 +++-- scripts/Diffraction/isis_powder/gem.py | 9 ++---- .../isis_powder/gem_routines/gem_algs.py | 5 ++-- scripts/Diffraction/isis_powder/pearl.py | 8 ++--- .../isis_powder/pearl_routines/pearl_algs.py | 4 +-- scripts/Diffraction/isis_powder/polaris.py | 7 ++--- .../polaris_routines/polaris_algs.py | 4 +-- .../isis_powder/routines/RunDetails.py | 30 ++++++++++++------- 8 files changed, 40 insertions(+), 34 deletions(-) diff --git a/scripts/Diffraction/isis_powder/abstract_inst.py b/scripts/Diffraction/isis_powder/abstract_inst.py index fdde4b4384d..296a0b7c413 100644 --- a/scripts/Diffraction/isis_powder/abstract_inst.py +++ b/scripts/Diffraction/isis_powder/abstract_inst.py @@ -22,6 +22,7 @@ class AbstractInst(object): self._calibration_dir = calibration_dir self._inst_prefix = inst_prefix self._output_dir = output_dir + self._is_vanadium = None @property def calibration_dir(self): @@ -35,13 +36,14 @@ class AbstractInst(object): def user_name(self): return self._user_name - def _create_vanadium(self, run_details, do_absorb_corrections=True): + def _create_vanadium(self, run_number_string, do_absorb_corrections=True): """ Creates a vanadium calibration - should be called by the concrete instrument - :param run_details: The run details for the run to process :param do_absorb_corrections: Set to true if absorption corrections should be applied :return: d_spacing focused vanadium group """ + self._is_vanadium = True + run_details = self._get_run_details(run_number_string) return calibrate.create_van(instrument=self, run_details=run_details, absorb=do_absorb_corrections) @@ -52,6 +54,7 @@ class AbstractInst(object): :param do_van_normalisation: True to divide by the vanadium run, false to not. :return: """ + self._is_vanadium = False return focus.focus(run_number_string=run_number_string, perform_vanadium_norm=do_van_normalisation, instrument=self) diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py index 30b461217f7..6f43b33fd50 100644 --- a/scripts/Diffraction/isis_powder/gem.py +++ b/scripts/Diffraction/isis_powder/gem.py @@ -27,16 +27,13 @@ class Gem(AbstractInst): def create_vanadium(self, **kwargs): self._inst_settings.update_attributes(kwargs=kwargs) - # First get a run_details object to find out the vanadium number - run_details = self._get_run_details(run_number_string=self._inst_settings.run_in_range) - # Set the run and vanadium run equal - run_details.run_number = run_details.vanadium_run_numbers - return self._create_vanadium(run_details=run_details, + return self._create_vanadium(run_number_string=self._inst_settings.run_in_range, do_absorb_corrections=self._inst_settings.do_absorb_corrections) def _get_run_details(self, run_number_string): - return gem_algs.get_run_details(run_number_string=run_number_string, inst_settings=self._inst_settings) + return gem_algs.get_run_details(run_number_string=run_number_string, inst_settings=self._inst_settings, + is_vanadium_run=self._is_vanadium) def _generate_auto_vanadium_calibration(self, run_details): raise NotImplementedError() diff --git a/scripts/Diffraction/isis_powder/gem_routines/gem_algs.py b/scripts/Diffraction/isis_powder/gem_routines/gem_algs.py index b398c8df589..3605106787a 100644 --- a/scripts/Diffraction/isis_powder/gem_routines/gem_algs.py +++ b/scripts/Diffraction/isis_powder/gem_routines/gem_algs.py @@ -23,7 +23,7 @@ def gem_get_chopper_config(forwarded_value, inst_settings): return common.cal_map_dictionary_key_helper(cal_mapping, inst_settings.mode) -def get_run_details(run_number_string, inst_settings): +def get_run_details(run_number_string, inst_settings, is_vanadium_run): cal_mapping_callable = RunDetailsFuncWrapper().add_to_func_chain( WrappedFunctionsRunDetails.get_cal_mapping_dict, run_number_string=run_number_string, inst_settings=inst_settings @@ -41,4 +41,5 @@ def get_run_details(run_number_string, inst_settings): append_to_error_message=err_message) return create_run_details_object(run_number_string=run_number_string, inst_settings=inst_settings, - empty_run_call=empty_run_callable, vanadium_run_call=vanadium_run_callable) + is_vanadium_run=is_vanadium_run, empty_run_call=empty_run_callable, + vanadium_run_call=vanadium_run_callable) diff --git a/scripts/Diffraction/isis_powder/pearl.py b/scripts/Diffraction/isis_powder/pearl.py index e27a6e3600a..eff45953c8d 100644 --- a/scripts/Diffraction/isis_powder/pearl.py +++ b/scripts/Diffraction/isis_powder/pearl.py @@ -43,16 +43,16 @@ class Pearl(AbstractInst): def _run_create_vanadium(self): # Provides a minimal wrapper so if we have tt_mode 'all' we can loop round - run_details = self._get_run_details(run_number_string=self._inst_settings.run_in_range) - run_details.run_number = run_details.vanadium_run_numbers - return self._create_vanadium(run_details=run_details, + return self._create_vanadium(run_number_string=self._inst_settings.run_in_range, do_absorb_corrections=self._inst_settings.absorb_corrections) def _get_run_details(self, run_number_string): if self._cached_run_details_number == run_number_string: return self._cached_run_details - run_details = pearl_algs.get_run_details(run_number_string=run_number_string, inst_settings=self._inst_settings) + run_details = pearl_algs.get_run_details(run_number_string=run_number_string, + inst_settings=self._inst_settings, + is_vanadium_run=self._is_vanadium) self._cached_run_details_number = run_number_string self._cached_run_details = run_details diff --git a/scripts/Diffraction/isis_powder/pearl_routines/pearl_algs.py b/scripts/Diffraction/isis_powder/pearl_routines/pearl_algs.py index 7f2adb19ce5..d4161f15327 100644 --- a/scripts/Diffraction/isis_powder/pearl_routines/pearl_algs.py +++ b/scripts/Diffraction/isis_powder/pearl_routines/pearl_algs.py @@ -68,7 +68,7 @@ def generate_vanadium_absorb_corrections(van_ws): return absorb_ws -def get_run_details(run_number_string, inst_settings): +def get_run_details(run_number_string, inst_settings, is_vanadium_run): splined_name_list = ["_tt-" + inst_settings.tt_mode] if inst_settings.absorb_corrections: splined_name_list.append("_abs") @@ -79,8 +79,8 @@ def get_run_details(run_number_string, inst_settings): inst_settings=inst_settings) return create_run_details_object(run_number_string=run_number_string, inst_settings=inst_settings, + is_vanadium_run=is_vanadium_run, splined_name_list=splined_name_list, grouping_file_name_call=grouping_file_name_callable, - splined_name_list=splined_name_list, van_abs_file_name=inst_settings.van_absorb_file) diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index eede4233c75..10c1fbe8638 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -31,10 +31,7 @@ class Polaris(AbstractInst): def create_vanadium(self, **kwargs): self._inst_settings.update_attributes(kwargs=kwargs) - run_details = self._get_run_details(run_number_string=int(self._inst_settings.run_in_range)) - run_details.run_number = run_details.vanadium_run_numbers - - return self._create_vanadium(run_details=run_details, + return self._create_vanadium(run_number_string=self._inst_settings.run_in_range, do_absorb_corrections=self._inst_settings.do_absorb_corrections) # Overrides @@ -97,7 +94,7 @@ class Polaris(AbstractInst): return self._run_details_cached_obj run_details = polaris_algs.get_run_details(run_number_string=run_number_string, - inst_settings=self._inst_settings) + inst_settings=self._inst_settings, is_vanadium_run=self._is_vanadium) # Hold obj in case same run range is requested self._run_details_last_run_number = run_number_string diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py index 5d7329fd67e..57d79d14fed 100644 --- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py +++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py @@ -16,7 +16,7 @@ def calculate_absorb_corrections(ws_to_correct, multiple_scattering): return ws_to_correct -def get_run_details(run_number_string, inst_settings): +def get_run_details(run_number_string, inst_settings, is_vanadium_run): # Get the chopper mode as vanadium and empty run numbers depend on different modes chopper_config_callable = RunDetailsFuncWrapper().\ add_to_func_chain(function=WrappedFunctionsRunDetails.get_cal_mapping_dict, run_number_string=run_number_string, @@ -35,7 +35,7 @@ def get_run_details(run_number_string, inst_settings): append_to_error_message=err_message) run_details = create_run_details_object(run_number_string=run_number_string, inst_settings=inst_settings, - empty_run_call=empty_runs_callable, + empty_run_call=empty_runs_callable, is_vanadium_run=is_vanadium_run, vanadium_run_call=vanadium_runs_callable) return run_details diff --git a/scripts/Diffraction/isis_powder/routines/RunDetails.py b/scripts/Diffraction/isis_powder/routines/RunDetails.py index 56aa0bcb9d7..7a19cb8357d 100644 --- a/scripts/Diffraction/isis_powder/routines/RunDetails.py +++ b/scripts/Diffraction/isis_powder/routines/RunDetails.py @@ -4,15 +4,30 @@ from isis_powder.routines import common, yaml_parser import os -def create_run_details_object(run_number_string, inst_settings, empty_run_call=None, +def create_run_details_object(run_number_string, inst_settings, is_vanadium_run, empty_run_call=None, grouping_file_name_call=None, vanadium_run_call=None, splined_name_list=None, van_abs_file_name=None): cal_map_dict = WrappedFunctionsRunDetails.get_cal_mapping_dict( run_number_string=run_number_string, inst_settings=inst_settings) run_number = common.get_first_run_number(run_number_string=run_number_string) - calibration_dir = os.path.normpath(os.path.expanduser(inst_settings.calibration_dir)) + + # These can either be generic or custom so defer to another method + results_dict = _get_customisable_attributes( + cal_dict=cal_map_dict, inst_settings=inst_settings, empty_run_call=empty_run_call, + grouping_name_call=grouping_file_name_call, vanadium_run_call=vanadium_run_call, + splined_name_list=splined_name_list) + + vanadium_run_string = results_dict["vanadium_runs"] + + if is_vanadium_run: + # The run number should be the vanadium number in this case + run_number = vanadium_run_string + output_run_string = vanadium_run_string + else: + output_run_string = run_number_string # Get names of files we will be using + calibration_dir = os.path.normpath(os.path.expanduser(inst_settings.calibration_dir)) label = common.cal_map_dictionary_key_helper(dictionary=cal_map_dict, key="label") offset_file_name = common.cal_map_dictionary_key_helper(dictionary=cal_map_dict, key="offset_file_name") @@ -25,12 +40,6 @@ def create_run_details_object(run_number_string, inst_settings, empty_run_call=N else: splined_name_list = [offset_file_name] - # These can either be generic or custom so defer to another method - results_dict = _get_customisable_attributes( - cal_dict=cal_map_dict, inst_settings=inst_settings, empty_run_call=empty_run_call, - grouping_name_call=grouping_file_name_call, vanadium_run_call=vanadium_run_call, - splined_name_list=splined_name_list) - # Generate the paths grouping_file_path = os.path.join(calibration_dir, results_dict["grouping_file_name"]) # Offset and splined vanadium is within the correct label folder @@ -38,12 +47,10 @@ def create_run_details_object(run_number_string, inst_settings, empty_run_call=N splined_van_path = os.path.join(calibration_dir, label, results_dict["splined_van_name"]) van_absorb_path = os.path.join(calibration_dir, van_abs_file_name) if van_abs_file_name else None - output_run_string = run_number_string - return _RunDetails(empty_run_number=results_dict["empty_runs"], run_number=run_number, output_run_string=output_run_string, label=label, offset_file_path=offset_file_path, grouping_file_path=grouping_file_path, splined_vanadium_path=splined_van_path, - vanadium_run_number=results_dict["vanadium_runs"], sample_empty=sample_empty, + vanadium_run_number=vanadium_run_string, sample_empty=sample_empty, vanadium_abs_path=van_absorb_path) @@ -150,6 +157,7 @@ class _RunDetails(object): def __init__(self, empty_run_number, run_number, output_run_string, label, offset_file_path, grouping_file_path, splined_vanadium_path, vanadium_run_number, sample_empty, vanadium_abs_path): + # Essential attribute self.empty_runs = empty_run_number self.run_number = run_number -- GitLab