Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
156 changes: 94 additions & 62 deletions VESUVIO/reduce.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import requests


import re
import os


from mantid.simpleapi import (
LoadVesuvio,
CropWorkspace,
Expand All @@ -14,8 +16,10 @@
ConvertToHistogram
)
from mantid import config


from mantid.api import AnalysisDataService
from VesuvioTransmission import VesuvioTransmission


# Define Utility functions
def get_file_from_request(url: str, path: str) -> None:
"""
Expand Down Expand Up @@ -59,29 +63,53 @@ def run_alg(algorithm_class, args):
for key, value in args.items():
alg.setProperty(key, value)
alg.execute()



# Get VesuvioTransmission
get_file_from_request(
"https://raw.githubusercontent.com/fiaisis/autoreduction-scripts/2427463c9a0247b7d76e57493bb94b28b8a7f54b/VESUVIO/VesuvioTransmission.py",
"VesuvioTransmission.py",
)
from VesuvioTransmission import VesuvioTransmission




# Setup by rundetection
ip = "IP0005.par"
diff_ip = "IP0005.par"
empty_runs = "50309-50341"
runno = "52695"
file_name = (
requests.get(
f"http://data.isis.rl.ac.uk/where.py/unixdir?name=VESUVIO{runno}"
).text.strip("\n")
+ f"/VESUVIO000{runno}.raw"
)
empty_runs = "50309,50310,50311"
runno = "50312,50313,50314"
sum_runs = False
output_workspace_prefix = "vesuvio"

if "," in runno or "-" in runno:
sum_runs = True

# Resolve file names and paths
file_name = runno
empty_runs = empty_runs
diffraction_input = runno

if sum_runs:
if "," in runno:
input_runs = runno.split(",")
elif "-" in runno:
input_runs = runno.split("-")



print(f"Starting with input: {file_name}")

if len(input_runs) > 6:
output_workspace_prefix += str(input_runs[0]) + ","
output_workspace_prefix += str(input_runs[1]) + ","
output_workspace_prefix += str(input_runs[2])
output_workspace_prefix += "..."
output_workspace_prefix += str(input_runs[-3]) + ","
output_workspace_prefix += str(input_runs[-2]) + ","
output_workspace_prefix += str(input_runs[-1]) + ","
else:
for input_run in input_runs:
output_workspace_prefix += str(input_run) + ","
output_workspace_prefix = output_workspace_prefix[:-1] + f"_Reduced" # Slice out the excess "," and finalize prefix

print(f"Starting with file: {file_name}")

# Default constants
filepath_ip = f"/extras/vesuvio/{ip}"
Expand All @@ -97,7 +125,6 @@ def run_alg(algorithm_class, args):
# Other configuration options
config["defaultsave.directory"] = "/output"
output = []

# Convert back scattering spectra to a value acceptable in ISISIndirectDiffractionReduction i.e. [3, 134] instead of "3-134":
back_scattering_spectra_range = []
back_scattering_spectra_range.extend(back_scattering_spectra.split("-"))
Expand Down Expand Up @@ -143,75 +170,77 @@ def run_alg(algorithm_class, args):
Mode="SingleDifference",
InstrumentParFile=filepath_ip,
SumSpectra=True,
OutputWorkspace=runno + "_front",
OutputWorkspace=output_workspace_prefix + "_front",
)
LoadVesuvio(
Filename=file_name,
SpectrumList=back_scattering_spectra,
Mode="SingleDifference",
InstrumentParFile=filepath_ip,
SumSpectra=True,
OutputWorkspace=runno + "_back_sd",
OutputWorkspace=output_workspace_prefix + "_back_sd",
)
ConvertToHistogram("empty_back_sd", OutputWorkspace="empty_back_sd")
ConvertToHistogram(runno+"_back_sd", OutputWorkspace=runno+"_back_sd")
RebinToWorkspace("empty_back_sd", runno + "_back_sd", OutputWorkspace="empty_back_sd")
ConvertToHistogram(output_workspace_prefix + "_back_sd", OutputWorkspace=output_workspace_prefix + "_back_sd")
RebinToWorkspace("empty_back_sd", output_workspace_prefix + "_back_sd", OutputWorkspace="empty_back_sd")
Minus(
LHSWorkspace=runno + "_back_sd",
LHSWorkspace=output_workspace_prefix + "_back_sd",
RHSWorkspace="empty_back_sd",
OutputWorkspace=runno + "_back_sd",
OutputWorkspace=output_workspace_prefix + "_back_sd",
)
LoadVesuvio(
Filename=file_name,
SpectrumList=back_scattering_spectra,
Mode="DoubleDifference",
InstrumentParFile=filepath_ip,
SumSpectra=True,
OutputWorkspace=runno + "_back_dd",
OutputWorkspace=output_workspace_prefix + "_back_dd",
)
ConvertToHistogram("empty_back_dd", OutputWorkspace="empty_back_dd")
ConvertToHistogram(runno+"_back_dd", OutputWorkspace=runno+"_back_dd")
RebinToWorkspace("empty_back_dd", runno + "_back_dd", OutputWorkspace="empty_back_dd")
ConvertToHistogram(output_workspace_prefix + "_back_dd", OutputWorkspace=output_workspace_prefix + "_back_dd")
RebinToWorkspace("empty_back_dd", output_workspace_prefix + "_back_dd", OutputWorkspace="empty_back_dd")
Minus(
LHSWorkspace=runno + "_back_dd",
LHSWorkspace=output_workspace_prefix + "_back_dd",
RHSWorkspace="empty_back_dd",
OutputWorkspace=runno + "_back_dd",
OutputWorkspace=output_workspace_prefix + "_back_dd",
)
Rebin(
InputWorkspace=runno + "_back_sd",
OutputWorkspace=runno + "_back_sd",
InputWorkspace=output_workspace_prefix + "_back_sd",
OutputWorkspace=output_workspace_prefix + "_back_sd",
Params=rebin_vesuvio_run_parameters,
)
Rebin(
InputWorkspace=runno + "_back_dd",
OutputWorkspace=runno + "_back_dd",
InputWorkspace=output_workspace_prefix + "_back_dd",
OutputWorkspace=output_workspace_prefix + "_back_dd",
Params=rebin_vesuvio_run_parameters,
)
Rebin(
InputWorkspace=runno + "_front",
OutputWorkspace=runno + "_front",
InputWorkspace=output_workspace_prefix + "_front",
OutputWorkspace=output_workspace_prefix + "_front",
Params=rebin_vesuvio_run_parameters,
)

# Save out LoadVesuvio results
SaveNexusProcessed(InputWorkspace=f"{runno}_back_dd", Filename=f"{runno}_back_dd.nxs")
output.append(f"{runno}_back_dd.nxs")
SaveNexusProcessed(InputWorkspace=f"{runno}_back_sd", Filename=f"{runno}_back_sd.nxs")
output.append(f"{runno}_back_sd.nxs")
SaveNexusProcessed(InputWorkspace=f"{runno}_front", Filename=f"{runno}_front.nxs")
output.append(f"{runno}_front.nxs")

SaveNexusProcessed(InputWorkspace=f"{output_workspace_prefix}_back_dd", Filename=f"{output_workspace_prefix}_back_dd.nxs")
output.append(f"{output_workspace_prefix}_back_dd.nxs")
SaveNexusProcessed(InputWorkspace=f"{output_workspace_prefix}_back_sd", Filename=f"{output_workspace_prefix}_back_sd.nxs")
output.append(f"{output_workspace_prefix}_back_sd.nxs")
SaveNexusProcessed(InputWorkspace=f"{output_workspace_prefix}_front", Filename=f"{output_workspace_prefix}_front.nxs")
output.append(f"{output_workspace_prefix}_front.nxs")
# Run diffraction
ISISIndirectDiffractionReduction(
InputFiles=file_name,
actual_diffraction_workspace = ISISIndirectDiffractionReduction(
InputFiles=diffraction_input,
OutputWorkspace=runno + "_diffraction",
Instrument="VESUVIO",
Mode="diffspec",
SpectraRange=back_scattering_spectra_range,
SumFiles=sum_runs,
InstrumentParFile=diff_filepath_ip,
)

diffraction_output = "vesuvio" + runno + "_diffspec_red"
# Get the actual workspace name created since it differs from OutputWorkspace
diffraction_output = actual_diffraction_workspace.name()

SaveNexusProcessed(
InputWorkspace=diffraction_output, Filename=f"{diffraction_output}.nxs"
)
Expand All @@ -220,7 +249,7 @@ def run_alg(algorithm_class, args):
# Run VesuvioTransmission
vesuvio_transmission_args = {
"OutputWorkspace": runno,
"Runs": runno,
"Runs": file_name,
"EmptyRuns": empty_runs,
"Grouping": "SumOfAllRuns",
"Target": "Energy",
Expand All @@ -230,6 +259,8 @@ def run_alg(algorithm_class, args):
}
run_alg(VesuvioTransmission, vesuvio_transmission_args)
transmission_output = runno + "_transmission"


SaveNexusProcessed(
InputWorkspace=transmission_output, Filename=f"{transmission_output}.nxs"
)
Expand All @@ -246,33 +277,34 @@ def run_alg(algorithm_class, args):
Mode="FoilInOut",
InstrumentParFile=filepath_ip,
SumSpectra=True,
OutputWorkspace=runno + "_gamma",
OutputWorkspace=output_workspace_prefix + "_gamma",
)
CropWorkspace(
InputWorkspace=runno + "_gamma",
InputWorkspace=output_workspace_prefix + "_gamma",
XMin=crop_min,
XMax=crop_max,
OutputWorkspace=runno + "_gamma",
OutputWorkspace=output_workspace_prefix + "_gamma",
)
ConvertToHistogram("empty_gamma", OutputWorkspace="empty_gamma")
ConvertToHistogram(runno+"_gamma", OutputWorkspace=runno+"_gamma")
RebinToWorkspace("empty_gamma", runno + "_gamma", OutputWorkspace="empty_gamma")
ConvertToHistogram(output_workspace_prefix + "_gamma", OutputWorkspace=output_workspace_prefix + "_gamma")
RebinToWorkspace("empty_gamma", output_workspace_prefix + "_gamma", OutputWorkspace="empty_gamma")
Minus(
LHSWorkspace=runno + "_gamma",
LHSWorkspace=output_workspace_prefix + "_gamma",
RHSWorkspace="empty_gamma",
OutputWorkspace=runno + "_gamma",
OutputWorkspace=output_workspace_prefix + "_gamma",
)
SaveNexusProcessed(InputWorkspace=f"{runno}_gamma", Filename=f"{runno}_gamma.nxs")
output.append(f"{runno}_gamma.nxs")

SaveNexusProcessed(InputWorkspace=f"{output_workspace_prefix}_gamma", Filename=f"{output_workspace_prefix}_gamma.nxs")
output.append(f"{output_workspace_prefix}_gamma.nxs")
EditInstrumentGeometry(
Workspace=runno + "_gamma",
Workspace=output_workspace_prefix + "_gamma",
L2="0.0001",
Polar="0",
InstrumentName="VESUVIO_RESONANCE",
)
ConvertUnits(
InputWorkspace=runno + "_gamma", OutputWorkspace=runno + "_gamma_E", Target="Energy"
InputWorkspace=output_workspace_prefix + "_gamma", OutputWorkspace=output_workspace_prefix + "_gamma_E", Target="Energy"
)
SaveNexusProcessed(InputWorkspace=f"{runno}_gamma_E", Filename=f"{runno}_gamma_E.nxs")
output.append(f"{runno}_gamma_E.nxs")
SaveNexusProcessed(InputWorkspace=f"{output_workspace_prefix}_gamma_E", Filename=f"{output_workspace_prefix}_gamma_E.nxs")
output.append(f"{output_workspace_prefix}_gamma_E.nxs")