From ca1a3cf6dae16ec362702bc5b8aa8e4d667b8acb Mon Sep 17 00:00:00 2001
From: Harriet Brown <harriet.brown@stfc.ac.uk>
Date: Thu, 21 Nov 2019 10:09:09 +0000
Subject: [PATCH] Move code for reading qlims into its own function

This commit moves the code for reading the supplies q limits into its own function.
This also fixes a bug that cause an error when trying to read a lim file path that is in
a unicode format.

Re #27444
---
 .../polaris_routines/polaris_algs.py          | 43 +++++++++++--------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
index 182fb33fee8..feb94991883 100644
--- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
+++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
@@ -156,25 +156,7 @@ def _merge_workspace_with_limits(focused_ws, q_lims):
                                  InputWorkspace2=focused_ws[1])
     focused_ws_conjoined = focused_ws[0]
 
-    if type(q_lims) == str:
-        q_min = []
-        q_max = []
-        try:
-            with open(q_lims, 'r') as f:
-                line_list = [line.rstrip('\n') for line in f]
-                for line in line_list[1:]:
-                    value_list = line.split()
-                    q_min.append(float(value_list[2]))
-                    q_max.append(float(value_list[3]))
-            q_min = np.array(q_min)
-            q_max = np.array(q_max)
-        except IOError:
-            raise RuntimeError("q_lims directory is not valid")
-    elif type(q_lims) == list or type(q_lims) == np.ndarray:
-        q_min = q_lims[0, :]
-        q_max = q_lims[1, :]
-    else:
-        raise RuntimeError("q_lims type is not valid")
+    q_min, q_max = _load_qlims(q_lims)
     bin_width = np.inf
     for i in range(q_min.size):
         pdf_x_array = focused_ws_conjoined.readX(i)
@@ -195,6 +177,29 @@ def _merge_workspace_with_limits(focused_ws, q_lims):
     return focused_data_combined
 
 
+def _load_qlims(q_lims):
+    if type(q_lims) == str or type(q_lims) == unicode:
+        q_min = []
+        q_max = []
+        try:
+            with open(q_lims, 'r') as f:
+                line_list = [line.rstrip('\n') for line in f]
+                for line in line_list[1:]:
+                    value_list = line.split()
+                    q_min.append(float(value_list[2]))
+                    q_max.append(float(value_list[3]))
+            q_min = np.array(q_min)
+            q_max = np.array(q_max)
+        except IOError:
+            raise RuntimeError("q_lims directory is not valid")
+    elif type(q_lims) == list or type(q_lims) == np.ndarray:
+        q_min = q_lims[0, :]
+        q_max = q_lims[1, :]
+    else:
+        raise RuntimeError("q_lims type is not valid")
+    return q_min, q_max
+
+
 def _calculate_self_scattering_correction(run_number, cal_file_name, sample_details):
     raw_ws = mantid.Load(Filename='POLARIS'+str(run_number)+'.nxs')
     mantid.SetSample(InputWorkspace=raw_ws,
-- 
GitLab