diff --git a/Testing/SystemTests/tests/analysis/reference/POLARIS_PowderFocus79514.nxs.md5 b/Testing/SystemTests/tests/analysis/reference/POLARIS_PowderFocus79514.nxs.md5 new file mode 100644 index 0000000000000000000000000000000000000000..02d58c5e136f2887dc407a98a695860a0a094f76 --- /dev/null +++ b/Testing/SystemTests/tests/analysis/reference/POLARIS_PowderFocus79514.nxs.md5 @@ -0,0 +1 @@ +a21f83421257de6da7fb7c2dd66d3eef diff --git a/scripts/Diffraction/isis_powder/abstract_inst.py b/scripts/Diffraction/isis_powder/abstract_inst.py index 022571dc4f385a4f6ae9564a47957c8c4124635d..759fda4b9a13345010b2f12e7a472f093d8bc6d4 100644 --- a/scripts/Diffraction/isis_powder/abstract_inst.py +++ b/scripts/Diffraction/isis_powder/abstract_inst.py @@ -24,7 +24,7 @@ class AbstractInst(object): self._calibration_dir = calibration_dir self._raw_data_dir = raw_data_dir self._output_dir = output_dir - self._default_input_ext = _append_dot_to_ext(default_input_ext) + self._default_input_ext = _prefix_dot_to_ext(default_input_ext) self._focus_mode = None @property @@ -45,7 +45,7 @@ class AbstractInst(object): @default_input_ext.setter def default_input_ext(self, new_ext): - self._default_input_ext = _append_dot_to_ext(new_ext) + self._default_input_ext = _prefix_dot_to_ext(new_ext) @property def focus_mode(self): @@ -162,13 +162,7 @@ class AbstractInst(object): # Instrument specific methods @abstractmethod - def _get_calibration_full_paths(self, cycle): - """ - Gets the current calibration file names for this cycle - @param cycle: The cycle string to lookup for this run - @return: A dictionary the containing the full paths as values for the following keys: - "calibration", "grouping", "vanadium_absorption", "vanadium" - """ + def _get_calibration_full_paths(self, run_number): pass @staticmethod @@ -179,7 +173,7 @@ class AbstractInst(object): @param run_number: The run number to turn into a filename @return: The filename of the file - Without the path or extension """ - pass + @staticmethod @abstractmethod @@ -293,7 +287,7 @@ class AbstractInst(object): # These should only be called by the abstract instrument class -def _append_dot_to_ext(ext): +def _prefix_dot_to_ext(ext): if not ext.startswith('.'): return '.' + ext else: diff --git a/scripts/Diffraction/isis_powder/calibrate.py b/scripts/Diffraction/isis_powder/calibrate.py index 4bd6a41a1198023aaf4b62b408b64ec33efae7ef..01f5482f145b2366b88f4033529fdea2239c8f55 100644 --- a/scripts/Diffraction/isis_powder/calibrate.py +++ b/scripts/Diffraction/isis_powder/calibrate.py @@ -7,8 +7,6 @@ import isis_powder.common as common def create_van(instrument, van, empty, output_van_file_name, num_of_splines, absorb, gen_absorb): - cycle_information = instrument._get_cycle_information(van) - input_van_ws = common._load_current_normalised_ws(number=van, instrument=instrument) input_empty_ws = common._load_current_normalised_ws(number=empty, instrument=instrument) @@ -17,7 +15,7 @@ def create_van(instrument, van, empty, output_van_file_name, num_of_splines, abs common.remove_intermediate_workspace(input_empty_ws) common.remove_intermediate_workspace(input_van_ws) - calibration_full_paths = instrument._get_calibration_full_paths(cycle=cycle_information["cycle"]) + calibration_full_paths = instrument._get_calibration_full_paths(run_number=van) # Absorb was here @@ -43,6 +41,7 @@ def create_van(instrument, van, empty, output_van_file_name, num_of_splines, abs common.remove_intermediate_workspace(corrected_van_ws) + cycle_information = instrument._get_cycle_information(run_number=van) splined_ws_list = instrument._spline_background(focused_van_file, num_of_splines, cycle_information["instrument_version"]) diff --git a/scripts/Diffraction/isis_powder/focus.py b/scripts/Diffraction/isis_powder/focus.py index 86e4ad2b97f553690dcfb3ddfd61d88969a3e0fa..a22598b898a13b322b938a6efb37837ee4605714 100644 --- a/scripts/Diffraction/isis_powder/focus.py +++ b/scripts/Diffraction/isis_powder/focus.py @@ -14,8 +14,7 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor read_ws = common._load_current_normalised_ws(number=run_number, instrument=instrument) input_workspace = instrument._do_tof_rebinning_focus(read_ws) # Rebins for PEARL - cycle_information = instrument._get_cycle_information(run_number=run_number) - calibration_file_paths = instrument._get_calibration_full_paths(cycle=cycle_information["cycle"]) + calibration_file_paths = instrument._get_calibration_full_paths(run_number=run_number) # Compensate for empty sample if specified input_workspace = instrument._subtract_sample_empty(input_workspace) @@ -57,9 +56,9 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor def _divide_sample_by_vanadium(instrument, run_number, input_workspace, perform_vanadium_norm): processed_spectra = [] - cycle_information = instrument._get_cycle_information(run_number=run_number) - input_file_paths = instrument._get_calibration_full_paths(cycle=cycle_information["cycle"]) + input_file_paths = instrument._get_calibration_full_paths(run_number=run_number) + cycle_information = instrument._get_cycle_information(run_number=run_number) alg_range, save_range = instrument._get_instrument_alg_save_ranges(cycle_information["instrument_version"]) for index in range(0, alg_range): diff --git a/scripts/Diffraction/isis_powder/mock_instrument.py b/scripts/Diffraction/isis_powder/mock_instrument.py index 0e62d7b59cc2fbae0f28466732ec33979014086b..b7deba6bb45b7b0e125cd409b6397c411f2d6967 100644 --- a/scripts/Diffraction/isis_powder/mock_instrument.py +++ b/scripts/Diffraction/isis_powder/mock_instrument.py @@ -21,7 +21,7 @@ class MockInstrument(AbstractInst): def _get_default_group_names(self): return None - def _get_calibration_full_paths(self, cycle): + def _get_calibration_full_paths(self, run_number): # This is here to help remind people of the dict that is expected calibration_details = {"calibration": "cal", "grouping": "group", diff --git a/scripts/Diffraction/isis_powder/pearl.py b/scripts/Diffraction/isis_powder/pearl.py index e09e8d0a47575ff17b30991dfb947acd751b11c2..567264f93a491bb26015650a9563d8c9393cbd98 100644 --- a/scripts/Diffraction/isis_powder/pearl.py +++ b/scripts/Diffraction/isis_powder/pearl.py @@ -63,10 +63,11 @@ class Pearl(AbstractInst): # Methods # - def _get_calibration_full_paths(self, cycle): + def _get_calibration_full_paths(self, run_number): + cycle_dict = self._get_cycle_information(run_number=run_number) calibration_file, grouping_file, van_absorb, van_file =\ - pearl_calib_factory.get_calibration_filename(cycle=cycle, tt_mode=self._tt_mode) + pearl_calib_factory.get_calibration_filename(cycle=cycle_dict["cycle"], tt_mode=self._tt_mode) calibration_dir = self.calibration_dir @@ -86,7 +87,18 @@ class Pearl(AbstractInst): @staticmethod def _get_cycle_information(run_number): - cycle, instrument_version = pearl_cycle_factory.get_cycle_dir(run_number) + run_input = "" + if not run_number.isdigit(): + # Only take first valid number as it is probably of the form 12345_12350 + for character in run_number: + if character.isdigit(): + run_input += character + else: + break + else: + run_input = run_number + + cycle, instrument_version = pearl_cycle_factory.get_cycle_dir(run_input) cycle_information = {'cycle': cycle, 'instrument_version': instrument_version} diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index 3c9a570b2b2a7eed1ee608e85b9cd81ff2268849..1d450e47c2854e0d8ef33b3f7bebd2ac1588dee0 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -14,7 +14,7 @@ import isis_powder.common as common class Polaris(AbstractInst): _lower_lambda_range = 0.25 - _upper_lambda_range = 2.50 # TODO populate this + _upper_lambda_range = 2.50 _focus_crop_start = 2 # These are used when calculating binning range _focus_crop_end = 0.95 @@ -43,10 +43,10 @@ class Polaris(AbstractInst): def _get_default_group_names(self): return self._calibration_grouping_names - def _get_calibration_full_paths(self, cycle): + def _get_calibration_full_paths(self, run_number): # offset_file_name, grouping_file_name, vanadium_file_name = polaris_calib_factory.get_calibration_file(cycle) - - configuration = polaris_calib_parser.get_calibration_dict(cycle) + cycle_dict = self._get_cycle_information(run_number=run_number) + configuration = polaris_calib_parser.get_calibration_dict(cycle_dict["cycle"]) calibration_dir = self.calibration_dir # Assume the raw vanadium is with other raw files @@ -112,7 +112,6 @@ class Polaris(AbstractInst): return corrections_ws def _subtract_sample_empty(self, input_sample): - # TODO move this to be generated by calibration factory so we don't have to use the full fname if self._sample_empty is not None: empty_sample_path = os.path.join(self.calibration_dir, self._sample_empty) empty_sample = mantid.Load(Filename=empty_sample_path) @@ -350,4 +349,3 @@ def _create_d_spacing_tof_output(processed_spectra): tof_group = mantid.GroupWorkspaces(InputWorkspaces=tof_output, OutputWorkspace=tof_group_name) return d_spacing_group, tof_group -