From c6e48482362503e6dd960e5d7dd2bafdf9fc336a Mon Sep 17 00:00:00 2001 From: David Fairbrother <DavidFair@users.noreply.github.com> Date: Mon, 8 May 2017 16:27:36 +0100 Subject: [PATCH] Re #19500 Updated run details caching method and made it ext aware --- scripts/Diffraction/isis_powder/gem.py | 12 ++++++++---- scripts/Diffraction/isis_powder/pearl.py | 18 +++++++----------- scripts/Diffraction/isis_powder/polaris.py | 20 +++++++------------- 3 files changed, 22 insertions(+), 28 deletions(-) diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py index 98af04e1010..82a2e98f25c 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 1610c2a3bbb..c9736d80740 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 510898ed047..8c4287ec2a5 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 -- GitLab