From 3f3b0dbd0323958b2e2bc53e87e71b0574c0f9fc Mon Sep 17 00:00:00 2001
From: Martyn Gigg <martyn.gigg@gmail.com>
Date: Mon, 16 Sep 2019 12:05:07 +0100
Subject: [PATCH] Fix file extension handling in isis powder

The extension requested was being ignored.
---
 scripts/Diffraction/isis_powder/abstract_inst.py     |  5 +----
 scripts/Diffraction/isis_powder/gem.py               |  4 ++--
 scripts/Diffraction/isis_powder/hrpd.py              | 12 +++++++-----
 scripts/Diffraction/isis_powder/polaris.py           |  4 ++--
 scripts/Diffraction/isis_powder/routines/common.py   |  4 ++--
 .../isis_powder/test/ISISPowderCommonTest.py         |  4 ++--
 6 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/scripts/Diffraction/isis_powder/abstract_inst.py b/scripts/Diffraction/isis_powder/abstract_inst.py
index b5d0c81cd5e..6117735019b 100644
--- a/scripts/Diffraction/isis_powder/abstract_inst.py
+++ b/scripts/Diffraction/isis_powder/abstract_inst.py
@@ -337,10 +337,7 @@ class AbstractInst(object):
             return [self._generate_inst_filename(run, file_ext) for run in run_number]
         else:
             # Individual entry
-            runfile = self._inst_prefix + str(run_number)
-            if file_ext is not None:
-                runfile += file_ext
-            return runfile
+            return self._inst_prefix + str(run_number) + file_ext
 
     def _add_formatting_options(self, format_options):
         """
diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py
index 262a7c18ad5..3eda16937c5 100644
--- a/scripts/Diffraction/isis_powder/gem.py
+++ b/scripts/Diffraction/isis_powder/gem.py
@@ -179,8 +179,8 @@ class Gem(AbstractInst):
                                 raise_warning=raise_warning)
 
     @staticmethod
-    def _generate_input_file_name(run_number):
-        return _gem_generate_inst_name(run_number=run_number)
+    def _generate_input_file_name(run_number, file_ext=""):
+        return _gem_generate_inst_name(run_number=run_number) + file_ext
 
     def _apply_absorb_corrections(self, run_details, ws_to_correct):
         if self._is_vanadium:
diff --git a/scripts/Diffraction/isis_powder/hrpd.py b/scripts/Diffraction/isis_powder/hrpd.py
index ee7dbaf0b64..f7b291af027 100644
--- a/scripts/Diffraction/isis_powder/hrpd.py
+++ b/scripts/Diffraction/isis_powder/hrpd.py
@@ -14,11 +14,11 @@ from isis_powder.hrpd_routines import hrpd_advanced_config, hrpd_algs, hrpd_para
 
 import mantid.simpleapi as mantid
 
-# Force using raw files
-# A bug in loading old NeXus files prevents using NeXus.
+# A bug on the instrument when recording historic NeXus files (< 2015) caused
+# corrupted data. Use raw files for now until sufficient time has past and old
+# data is unlikely to be reanalysed.
 RAW_DATA_EXT = '.raw'
 
-
 # Constants
 PROMPT_PULSE_INTERVAL = 20000.0
 PROMPT_PULSE_RIGHT_WIDTH = 140.0
@@ -106,14 +106,16 @@ class HRPD(AbstractInst):
             raise RuntimeError("Could not find " + os.path.join(path, name)+" please run create_vanadium with "
                                                                             "\"do_solid_angle_corrections=True\"")
 
-    def _generate_input_file_name(self, run_number, file_ext=None):
+    def _generate_input_file_name(self, run_number, file_ext=""):
         """
         Generates a name which Mantid uses within Load to find the file.
         :param run_number: The run number to convert into a valid format for Mantid
         :param file_ext: An optional file extension to add to force a particular format
         :return: A filename that will allow Mantid to find the correct run for that instrument.
         """
-        return self._generate_inst_filename(run_number=run_number, file_ext=RAW_DATA_EXT)
+        if not file_ext:
+            file_ext = RAW_DATA_EXT
+        return self._generate_inst_filename(run_number=run_number, file_ext=file_ext)
 
     def _apply_absorb_corrections(self, run_details, ws_to_correct):
         if self._is_vanadium:
diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py
index 04b15eb7105..71b9d40ab17 100644
--- a/scripts/Diffraction/isis_powder/polaris.py
+++ b/scripts/Diffraction/isis_powder/polaris.py
@@ -92,7 +92,7 @@ class Polaris(AbstractInst):
         return cropped_ws
 
     @staticmethod
-    def _generate_input_file_name(run_number):
+    def _generate_input_file_name(run_number, file_ext=""):
         polaris_old_name = "POL"
         polaris_new_name = "POLARIS"
         first_run_new_name = 96912
@@ -114,7 +114,7 @@ class Polaris(AbstractInst):
 
             prefix = polaris_new_name if use_new_name else polaris_old_name
 
-            return prefix + str(run_number)
+            return prefix + str(run_number) + file_ext
 
     def _get_input_batching_mode(self):
         return self._inst_settings.input_mode
diff --git a/scripts/Diffraction/isis_powder/routines/common.py b/scripts/Diffraction/isis_powder/routines/common.py
index 113b6cbe6d4..356ba007629 100644
--- a/scripts/Diffraction/isis_powder/routines/common.py
+++ b/scripts/Diffraction/isis_powder/routines/common.py
@@ -596,6 +596,7 @@ def _load_raw_files(run_number_string, instrument, file_ext=None):
     :return: A list of loaded workspaces
     """
     run_number_list = generate_run_numbers(run_number_string=run_number_string)
+    file_ext = "" if file_ext is None else file_ext
     load_raw_ws = _load_list_of_files(run_number_list, instrument, file_ext=file_ext)
     return load_raw_ws
 
@@ -613,8 +614,7 @@ def _load_list_of_files(run_numbers_list, instrument, file_ext=None):
     _check_load_range(list_of_runs_to_load=run_numbers_list)
 
     for run_number in run_numbers_list:
-        file_name = instrument._generate_input_file_name(run_number=run_number)
-        file_name = file_name + str(file_ext) if file_ext else file_name
+        file_name = instrument._generate_input_file_name(run_number=run_number, file_ext=file_ext)
         read_ws = mantid.Load(Filename=file_name)
         read_ws_list.append(mantid.RenameWorkspace(InputWorkspace=read_ws, OutputWorkspace=file_name))
 
diff --git a/scripts/Diffraction/isis_powder/test/ISISPowderCommonTest.py b/scripts/Diffraction/isis_powder/test/ISISPowderCommonTest.py
index 6344f40b9bf..51f714a0ade 100644
--- a/scripts/Diffraction/isis_powder/test/ISISPowderCommonTest.py
+++ b/scripts/Diffraction/isis_powder/test/ISISPowderCommonTest.py
@@ -571,9 +571,9 @@ class ISISPowderMockInst(object):
         return ISISPowderMockRunDetails(file_ext=self._file_ext)
 
     @staticmethod
-    def _generate_input_file_name(run_number):
+    def _generate_input_file_name(run_number, file_ext=""):
         # Mantid will automatically convert this into either POL or POLARIS
-        return "POL" + str(run_number)
+        return "POL" + str(run_number) + file_ext
 
     @staticmethod
     def _normalise_ws_current(ws_to_correct, **_):
-- 
GitLab