Newer
Older
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2019 ISIS Rutherford Appleton Laboratory UKRI,
# NScD Oak Ridge National Laboratory, European Spallation Source
# & Institut Laue - Langevin
# SPDX - License - Identifier: GPL - 3.0 +
from __future__ import (absolute_import, division, print_function)
import mantid.simpleapi as simple
def focus_whole(van_curves, van_int, run_number, focus_dir):
ws_to_focus = simple.Load(Filename="ENGINX" + run_number, OutputWorkspace="engg_focus_input")
van_integrated_ws = simple.Load(Filename=van_int)
van_curves_ws = simple.Load(Filename=van_curves)
for i in range(1, 3):
output_ws = "engg_focus_output_bank_{}".format(i)
simple.EnggFocus(InputWorkspace=ws_to_focus, OutputWorkspace=output_ws,
VanIntegrationWorkspace=van_integrated_ws, VanCurvesWorkspace=van_curves_ws,
Bank=str(i))
_save_out(output_ws, run_number, str(i), focus_dir, "ENGINX_{}_{}")
def focus_cropped(use_spectra, crop_on, van_curves, van_int, run_number, focus_dir):
ws_to_focus = simple.Load(Filename="ENGINX" + run_number, OutputWorkspace="engg_focus_input")
van_integrated_ws = simple.Load(Filename=van_int)
van_curves_ws = simple.Load(Filename=van_curves)
bank = {"North": "1",
"South": "2"}
output_ws = output_ws.format("_bank_", bank.get(crop_on))
simple.EnggFocus(InputWorkspace=ws_to_focus, OutputWorkspace=output_ws,
VanIntegrationWorkspace=van_integrated_ws, VanCurvesWorkspace=van_curves_ws,
_save_out(output_ws, run_number, crop_on, focus_dir, "ENGINX_{}_{}")
output_ws = output_ws.format("", "")
simple.EnggFocus(InputWorkspace=ws_to_focus, OutputWorkspace=output_ws,
VanIntegrationWorkspace=van_integrated_ws,
VanCurvesWorkspace=van_curves_ws, SpectrumNumbers=crop_on)
_save_out(output_ws, run_number, "cropped", focus_dir, "ENGINX_{}_bank_{}")
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
def focus_texture_mode(van_curves, van_int, run_number, focus_dir, dg_file):
van_curves_ws, van_integrated_ws, ws_to_focus = _prepare_focus(run_number, van_curves, van_int)
banks = {}
with open(dg_file) as grouping_file:
group_reader = csv.reader(_decomment_csv(grouping_file), delimiter=',')
for row in group_reader:
banks.update({row[0]: ','.join(row[1:])})
for bank in banks:
output_ws = "engg_focusing_output_ws_texture_bank_{}"
output_ws = output_ws.format(bank)
print(banks.get(bank))
simple.EnggFocus(InputWorkspace=ws_to_focus, OutputWorkspace=output_ws,
VanIntegrationWorkspace=van_integrated_ws, VanCurvesWorkspace=van_curves_ws,
SpectrumNumbers=banks.get(bank))
_save_out(output_ws, run_number, bank, focus_dir, "ENGINX_{}_texture_{}")
def _prepare_focus(run_number, van_curves, van_int):
ws_to_focus = simple.Load(Filename="ENGINX" + run_number, OutputWorkspace="engg_focus_input")
van_integrated_ws = simple.Load(Filename=van_int)
van_curves_ws = simple.Load(Filename=van_curves)
return van_curves_ws, van_integrated_ws, ws_to_focus
def _save_out(output, run_number, bank_id, output_dir, join_string):
filename = os.path.join(output_dir, join_string.format(run_number, bank_id))
hdf5_name = os.path.join(output_dir, run_number + ".hdf5")
simple.SaveFocusedXYE(InputWorkspace=output, Filename=filename + ".dat", SplitFiles=False,
StartAtBankNumber=bank_id)
simple.SaveGSS(InputWorkspace=output, Filename=filename + ".gss", SplitFiles=False, Bank=bank_id)
simple.SaveOpenGenieAscii(InputWorkspace=output, Filename=filename + ".his", OpenGenieFormat="ENGIN-X Format")
simple.SaveNexus(InputWorkspace=output, Filename=filename + ".nxs")
simple.ExportSampleLogsToHDF5(InputWorkspace=output, Filename=hdf5_name, Blacklist="bankid")
def _decomment_csv(csvfile):
for row in csvfile:
raw = row.split('#')[0].strip()
if raw:
yield raw