diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py index 98af04e1010698009bb782baff964c1100f067ff..82a2e98f25c61803a0bbf6033796296cab8fe926 100644 --- a/scripts/Diffraction/isis_powder/gem.py +++ b/scripts/Diffraction/isis_powder/gem.py @@ -17,8 +17,7 @@ class Gem(AbstractInst): calibration_dir=self._inst_settings.calibration_dir, output_dir=self._inst_settings.output_dir, inst_prefix="GEM") - self._cached_run_details = None - self._cached_run_number = None + self._cached_run_details = {} def focus(self, **kwargs): self._inst_settings.update_attributes(kwargs=kwargs) @@ -32,8 +31,13 @@ class Gem(AbstractInst): 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, - is_vanadium_run=self._is_vanadium) + run_number_string_key = run_number_string + str(self._inst_settings.file_extension) + if run_number_string_key in self._cached_run_details: + return self._cached_run_details[run_number_string_key] + + self._cached_run_details[run_number_string_key] = gem_algs.get_run_details( + run_number_string=run_number_string, inst_settings=self._inst_settings, is_vanadium_run=self._is_vanadium) + return self._cached_run_details[run_number_string_key] def _generate_auto_vanadium_calibration(self, run_details): raise NotImplementedError() diff --git a/scripts/Diffraction/isis_powder/pearl.py b/scripts/Diffraction/isis_powder/pearl.py index 1610c2a3bbb2116eb272867f58c7c38ab74c485d..c9736d80740ad434da10047216a833653846decc 100644 --- a/scripts/Diffraction/isis_powder/pearl.py +++ b/scripts/Diffraction/isis_powder/pearl.py @@ -20,8 +20,7 @@ class Pearl(AbstractInst): calibration_dir=self._inst_settings.calibration_dir, output_dir=self._inst_settings.output_dir, inst_prefix="PEARL") - self._cached_run_details = None - self._cached_run_details_number = None + self._cached_run_details = {} def focus(self, **kwargs): self._switch_long_mode_inst_settings(kwargs.get("long_mode")) @@ -47,16 +46,13 @@ class Pearl(AbstractInst): 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_number_string_key = run_number_string + str(self._inst_settings.file_extension) + if run_number_string_key in self._cached_run_details: + return self._cached_run_details[run_number_string_key] - 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 - return run_details + self._cached_run_details[run_number_string_key] = pearl_algs.get_run_details( + run_number_string=run_number_string, inst_settings=self._inst_settings, is_vanadium_run=self._is_vanadium) + return self._cached_run_details[run_number_string_key] # Params # diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index 510898ed047896ba58d0b9fbf52872d4ec79b040..8c4287ec2a52b63a88324f8f3ad2356f1ca23be8 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -19,10 +19,7 @@ class Polaris(AbstractInst): output_dir=self._inst_settings.output_dir, inst_prefix="POL") # Hold the last dictionary later to avoid us having to keep parsing the YAML - self._run_details_last_run_number = None - self._run_details_cached_obj = None - - self._ads_workaround = 0 + self._run_details_cached_obj = {} def focus(self, **kwargs): self._inst_settings.update_attributes(kwargs=kwargs) @@ -90,17 +87,14 @@ class Polaris(AbstractInst): return self._inst_settings.input_mode def _get_run_details(self, run_number_string): - if self._run_details_last_run_number == run_number_string: - return self._run_details_cached_obj - - run_details = polaris_algs.get_run_details(run_number_string=run_number_string, - inst_settings=self._inst_settings, is_vanadium_run=self._is_vanadium) + run_number_string_key = run_number_string + str(self._inst_settings.file_extension) + if run_number_string_key in self._run_details_cached_obj: + return self._run_details_cached_obj[run_number_string_key] - # Hold obj in case same run range is requested - self._run_details_last_run_number = run_number_string - self._run_details_cached_obj = run_details + self._run_details_cached_obj[run_number_string_key] = polaris_algs.get_run_details( + run_number_string=run_number_string, inst_settings=self._inst_settings, is_vanadium_run=self._is_vanadium) - return run_details + return self._run_details_cached_obj[run_number_string_key] def _spline_vanadium_ws(self, focused_vanadium_spectra, instrument_version=''): masking_file_name = self._inst_settings.masking_file_name