Skip to content

Commit b2961f0

Browse files
peterfpetersonKvieta1990y8z
authored
Handle HB2A run merge exceptions - ornl-next (#39166)
Handle HB2A run merge exceptions (#39112) * fixing format * fix format * add in unit test data * add in test --------- Co-authored-by: Yuanpeng Zhang <zyroc1990@gmail.com> Co-authored-by: y8z <zhangy3@ornl.gov>
1 parent 128c2d5 commit b2961f0

File tree

7 files changed

+36
-1
lines changed

7 files changed

+36
-1
lines changed

Framework/PythonInterface/plugins/algorithms/HB2AReduce.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from mantid.simpleapi import SaveGSSCW, SaveFocusedXYE, AnalysisDataService, RenameWorkspace, mtd
1919
from mantid import logger
2020
import numpy as np
21+
import numpy.lib.recfunctions as rfn
2122
import datetime
2223
import os
2324
import os.path
@@ -246,7 +247,20 @@ def PyExec(self):
246247
raise RuntimeError("Could not read {}, file likely malformed".format(filename))
247248

248249
# Accumulate data
249-
data = d if data is None else np.append(data, d)
250+
if data is None:
251+
data = d
252+
else:
253+
# Ensure both data and d have the same columns
254+
all_cols = sorted(list(set(data.dtype.names) | set(d.dtype.names)))
255+
for col in all_cols:
256+
if col not in data.dtype.names:
257+
data = rfn.append_fields(data, col, np.zeros(len(data), dtype=float), usemask=False)
258+
if col not in d.dtype.names:
259+
d = rfn.append_fields(d, col, np.zeros(len(d), dtype=float), usemask=False)
260+
261+
data = data[all_cols]
262+
d = d[all_cols]
263+
data = np.append(data, d)
250264

251265
# Get any masked detectors
252266
detector_mask = self.get_detector_mask(exp, indir)

Framework/PythonInterface/test/python/plugins/algorithms/HB2AReduceTest.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,22 @@ def test_IndividualDetectors(self):
3131
HB2AReduce_ws.delete()
3232
norm_time_wsk.delete()
3333

34+
def test_mergeRuns(self):
35+
HB2AReduce_ws = HB2AReduce("HB2A_exp0954_scan0017.dat,HB2A_exp0954_scan0018.dat,HB2A_exp0954_scan0022.dat", SaveData=False)
36+
self.assertTrue(HB2AReduce_ws)
37+
self.assertEqual(HB2AReduce_ws.getNumberHistograms(), 1)
38+
self.assertEqual(HB2AReduce_ws.blocksize(), 2439)
39+
self.assertEqual(np.argmax(HB2AReduce_ws.extractY()), 724)
40+
self.assertAlmostEqual(np.max(HB2AReduce_ws.extractY()), 2.316557925)
41+
norm_time_wsk = mtd[HB2AReduce_ws.name() + "_norm_time"]
42+
self.assertTrue(norm_time_wsk)
43+
self.assertEqual(norm_time_wsk.getNumberHistograms(), 1)
44+
self.assertEqual(norm_time_wsk.blocksize(), 2439)
45+
self.assertEqual(np.argmax(norm_time_wsk.extractY()), 724)
46+
self.assertAlmostEqual(np.max(norm_time_wsk.extractY()), 29.890032119)
47+
HB2AReduce_ws.delete()
48+
norm_time_wsk.delete()
49+
3450
def test_NotBinned(self):
3551
HB2AReduce_ws = HB2AReduce("HB2A_exp0666_scan0024.dat", BinData=False, SaveData=False)
3652
self.assertTrue(HB2AReduce_ws)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fc2bf0b3b285ed6f3f3d51884ec3f360
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ddcbe5bc61697d3d528f977470157505
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4b83f09f2c3e6e62e2be7fb3fbd40a20
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a33f7423d207a2e809b8db5d23c7670c
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Handle the special case where runs to merge do not share common columns in :ref:`HB2AReduce <algm-HB2AReduce>`.

0 commit comments

Comments
 (0)