From 771ef27134b33352993d9de0edbc3c7445050548 Mon Sep 17 00:00:00 2001 From: David Fairbrother <DavidFair@users.noreply.github.com> Date: Fri, 11 Nov 2016 11:35:13 +0000 Subject: [PATCH] Re #17949 Added POLARIS focus system test --- ...anCalTest.py => ISIS_PowderPolarisTest.py} | 69 +++++++++++++++---- scripts/Diffraction/isis_powder/focus.py | 11 +-- scripts/Diffraction/isis_powder/polaris.py | 31 ++++++++- 3 files changed, 90 insertions(+), 21 deletions(-) rename Testing/SystemTests/tests/analysis/{isis_powderPearlVanCalTest.py => ISIS_PowderPolarisTest.py} (57%) diff --git a/Testing/SystemTests/tests/analysis/isis_powderPearlVanCalTest.py b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py similarity index 57% rename from Testing/SystemTests/tests/analysis/isis_powderPearlVanCalTest.py rename to Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py index bc21a60955e..51de3c335c1 100644 --- a/Testing/SystemTests/tests/analysis/isis_powderPearlVanCalTest.py +++ b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py @@ -1,6 +1,6 @@ from __future__ import (absolute_import, division, print_function) -import os.path +import os import stresstesting import mantid.simpleapi as mantid @@ -13,32 +13,53 @@ DIRS = config['datasearch.directories'].split(';') class isis_powder_PolarisVanadiumCalTest(stresstesting.MantidStressTest): - results = None + calibration_results = None def requiredFiles(self): return _gen_required_files() def runTest(self): - self.results = _run_vanadium_calibration() + self.calibration_results = _run_vanadium_calibration() def validate(self): - return _validation(self, self.results) + return _calibration_validation(self, self.calibration_results) def cleanup(self): + # TODO clean up reference files properly _clean_up() +class isis_powder_PolarisFocusTest(stresstesting.MantidStressTest): + + focus_results = None + + def requiredFiles(self): + return _gen_required_files() + + def runTest(self): + # Gen vanadium calibration first + _run_vanadium_calibration() + self.focus_results = _run_focus() + + def validation(self): + return _calibration_validation(self, self.focus_results) + + def cleanup(self): + pass + # TODO + + def _gen_required_files(): input_files = ["POLARIS/POL78338.raw", - "POLARIS/POL78339.raw"] - + "POLARIS/POL78339.raw", + "POLARIS/POL79514.raw"] return input_files def _run_vanadium_calibration(): vanadium_run = 78338 empty_run = 78339 - output_file_name = _get_output_name() + output_file_name = _get_calibration_output_name() gen_absorb = True polaris_obj = setup_polaris_instrument() @@ -47,11 +68,15 @@ def _run_vanadium_calibration(): output_file_name=output_file_name, gen_absorb_correction=gen_absorb) -def _validation(cls, results): - cls.disableChecking.append('Instrument') - cls.disableChecking.append('Sample') - cls.disableChecking.append('SpectraMap') - output_full_path = _get_calibration_dir() + _get_output_name() +def _run_focus(): + run_number = 79514 + polaris_obj = setup_polaris_instrument() + return polaris_obj.focus(run_number=run_number, focus_mode="") + + +def _calibration_validation(cls, results): + _validation_setup(cls) + output_full_path = os.path.join(_get_calibration_dir(), _get_calibration_output_name()) ws_to_validate_output_name = "pearl_van_cal_output" mantid.LoadNexus(Filename=output_full_path, OutputWorkspace=ws_to_validate_output_name) @@ -59,8 +84,24 @@ def _validation(cls, results): return ws_to_validate_output_name, reference_file_name +def _focus_validation(cls, results): + _validation_setup(cls) + + reference_file_name = "POLARIS_PowderFocus79514.nxs" + focus_output_name = "Focus_results" + mantid.GroupWorkspaces(InputWorkspaces=results, OutputWorkspace=focus_output_name) + + return focus_output_name, reference_file_name + + +def _validation_setup(cls): + cls.disableChecking.append('Instrument') + cls.disableChecking.append('Sample') + cls.disableChecking.append('SpectraMap') + + def _clean_up(): - output_file_path = _get_calibration_dir() + _get_output_name() + output_file_path = _get_calibration_dir() + _get_calibration_output_name() try: os.remove(output_file_path) except OSError: @@ -79,7 +120,7 @@ def setup_polaris_instrument(): return polaris_obj -def _get_output_name(): +def _get_calibration_output_name(): return "system_test_polaris_van_cal.nxs" diff --git a/scripts/Diffraction/isis_powder/focus.py b/scripts/Diffraction/isis_powder/focus.py index db462d70bbb..86e4ad2b97f 100644 --- a/scripts/Diffraction/isis_powder/focus.py +++ b/scripts/Diffraction/isis_powder/focus.py @@ -28,14 +28,14 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor input_workspace = instrument._apply_solid_angle_efficiency_corr(ws_to_correct=input_workspace, vanadium_path=calibration_file_paths["vanadium"]) - input_workspace = mantid.DiffractionFocussing(InputWorkspace=input_workspace, - GroupingFileName=calibration_file_paths["grouping"]) + focused_ws = mantid.DiffractionFocussing(InputWorkspace=input_workspace, + GroupingFileName=calibration_file_paths["grouping"]) # Process - rebinning_params = instrument.calculate_focus_binning_params(sample=input_workspace) + rebinning_params = instrument.calculate_focus_binning_params(sample=focused_ws) calibrated_spectra = _divide_sample_by_vanadium(instrument=instrument, run_number=run_number, - input_workspace=input_workspace, + input_workspace=focused_ws, perform_vanadium_norm=perform_vanadium_norm) _apply_binning_to_spectra(spectra_list=calibrated_spectra, binning_list=rebinning_params) @@ -46,8 +46,9 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor # Tidy common.remove_intermediate_workspace(read_ws) common.remove_intermediate_workspace(input_workspace) + common.remove_intermediate_workspace(focused_ws) for ws in calibrated_spectra: - # common.remove_intermediate_workspace(ws) + common.remove_intermediate_workspace(ws) pass return processed_nexus_files diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py index 50ea014b4c7..105693373c9 100644 --- a/scripts/Diffraction/isis_powder/polaris.py +++ b/scripts/Diffraction/isis_powder/polaris.py @@ -130,11 +130,12 @@ class Polaris(AbstractInst): else: solid_angle_vanadium_ws = mantid.Load(Filename=vanadium_path) - solid_angle_vanadium_ws = self._normalise_ws(solid_angle_vanadium_ws) - corrections = self._calculate_solid_angle_efficiency_corrections(solid_angle_vanadium_ws) + normalised_vanadium_ws = self._normalise_ws(solid_angle_vanadium_ws) + corrections = self._calculate_solid_angle_efficiency_corrections(normalised_vanadium_ws) corrected_ws = mantid.Divide(LHSWorkspace=ws_to_correct, RHSWorkspace=corrections) common.remove_intermediate_workspace(solid_angle_vanadium_ws) + common.remove_intermediate_workspace(normalised_vanadium_ws) common.remove_intermediate_workspace(corrections) common.remove_intermediate_workspace(ws_to_correct) ws_to_correct = corrected_ws @@ -216,6 +217,10 @@ class Polaris(AbstractInst): return calculated_binning_params + def _process_focus_output(self, processed_spectra, run_number, attenuate=False): + return _create_d_spacing_tof_output(processed_spectra) + # TODO saving out to GSS/XYE/..etc. + def _read_masking_file(self): all_banks_masking_list = [] bank_masking_list = [] @@ -306,3 +311,25 @@ def _calculate_focus_bin_width(bin_data): rebin_width = math.exp(avg_delta) - 1 rebin_width = -1 * math.fabs(rebin_width) return rebin_width + + +def _create_d_spacing_tof_output(processed_spectra): + name_index = 1 + d_spacing_output = [] + tof_output = [] + for ws in processed_spectra: + d_spacing_out_name = "ResultD-" + str(name_index) + tof_out_name = "ResultTOF-" + str(name_index) + name_index += 1 + # Rename d-spacing workspaces + d_spacing_output.append(mantid.CloneWorkspace(InputWorkspace=ws, OutputWorkspace=d_spacing_out_name)) + # Convert to TOF + tof_output.append(mantid.ConvertUnits(InputWorkspace=ws, OutputWorkspace=tof_out_name, Target="TOF")) + + # Group the outputs + d_spacing_group_name = "Results-D-Grp" + d_spacing_group = mantid.GroupWorkspaces(InputWorkspaces=d_spacing_output, OutputWorkspace=d_spacing_group_name) + tof_group_name = "Results-TOF-Grp" + tof_group = mantid.GroupWorkspaces(InputWorkspaces=tof_output, OutputWorkspace=tof_group_name) + + return d_spacing_group, tof_group -- GitLab