Skip to content
Snippets Groups Projects
Commit 8289584a authored by Conor Finn's avatar Conor Finn
Browse files

RE #27189 Save vanadium output to user directory

Vanadium output files are now saved to the user directory if an RB
number is specifies so that users can have all of the generated data
from processing.
parent 2a377482
No related branches found
No related tags found
No related merge requests found
...@@ -47,7 +47,7 @@ class CalibrationModel(object): ...@@ -47,7 +47,7 @@ class CalibrationModel(object):
:param rb_num: The RB number for file creation. :param rb_num: The RB number for file creation.
""" """
van_integration, van_curves = vanadium_corrections.fetch_correction_workspaces( van_integration, van_curves = vanadium_corrections.fetch_correction_workspaces(
vanadium_path, instrument) vanadium_path, instrument, rb_number=rb_num)
sample_workspace = self.load_sample(sample_path) sample_workspace = self.load_sample(sample_path)
output = self.run_calibration(sample_workspace, van_integration, van_curves) output = self.run_calibration(sample_workspace, van_integration, van_curves)
if plot_output: if plot_output:
......
...@@ -25,11 +25,12 @@ SAVED_FILE_CURVE_SUFFIX = "_precalculated_vanadium_run_bank_curves.nxs" ...@@ -25,11 +25,12 @@ SAVED_FILE_CURVE_SUFFIX = "_precalculated_vanadium_run_bank_curves.nxs"
SAVED_FILE_INTEG_SUFFIX = "_precalculated_vanadium_run_integration.nxs" SAVED_FILE_INTEG_SUFFIX = "_precalculated_vanadium_run_integration.nxs"
def fetch_correction_workspaces(vanadium_path, instrument): def fetch_correction_workspaces(vanadium_path, instrument, rb_number=""):
""" """
Fetch workspaces from the file system or create new ones. Fetch workspaces from the file system or create new ones.
:param vanadium_path: The path to the requested vanadium run raw data. :param vanadium_path: The path to the requested vanadium run raw data.
:param instrument: The instrument the data came from. :param instrument: The instrument the data came from.
:param rb_number:
:return: The resultant integration and curves workspaces. :return: The resultant integration and curves workspaces.
""" """
vanadium_number = path_handling.get_run_number_from_path(vanadium_path, instrument) vanadium_number = path_handling.get_run_number_from_path(vanadium_path, instrument)
...@@ -38,6 +39,12 @@ def fetch_correction_workspaces(vanadium_path, instrument): ...@@ -38,6 +39,12 @@ def fetch_correction_workspaces(vanadium_path, instrument):
try: try:
integ_workspace = Load(Filename=integ_path, OutputWorkspace=INTEGRATED_WORKSPACE_NAME) integ_workspace = Load(Filename=integ_path, OutputWorkspace=INTEGRATED_WORKSPACE_NAME)
curves_workspace = Load(Filename=curves_path, OutputWorkspace=CURVES_WORKSPACE_NAME) curves_workspace = Load(Filename=curves_path, OutputWorkspace=CURVES_WORKSPACE_NAME)
if rb_number:
user_integ, user_curves = _generate_saved_workspace_file_paths(vanadium_number,
rb_num=rb_number)
if not path.exists(user_integ) and not path.exists(user_curves):
_save_correction_files(integ_workspace, user_integ, curves_workspace,
user_curves)
return integ_workspace, curves_workspace return integ_workspace, curves_workspace
except RuntimeError as e: except RuntimeError as e:
logger.error( logger.error(
...@@ -45,6 +52,10 @@ def fetch_correction_workspaces(vanadium_path, instrument): ...@@ -45,6 +52,10 @@ def fetch_correction_workspaces(vanadium_path, instrument):
+ str(e)) + str(e))
integ_workspace, curves_workspace = _calculate_vanadium_correction(vanadium_path) integ_workspace, curves_workspace = _calculate_vanadium_correction(vanadium_path)
_save_correction_files(integ_workspace, integ_path, curves_workspace, curves_path) _save_correction_files(integ_workspace, integ_path, curves_workspace, curves_path)
if rb_number:
user_integ, user_curves = _generate_saved_workspace_file_paths(vanadium_number,
rb_num=rb_number)
_save_correction_files(integ_workspace, user_integ, curves_workspace, user_curves)
return integ_workspace, curves_workspace return integ_workspace, curves_workspace
...@@ -92,7 +103,7 @@ def _save_correction_files(integration_workspace, integration_path, curves_works ...@@ -92,7 +103,7 @@ def _save_correction_files(integration_workspace, integration_path, curves_works
return return
def _generate_saved_workspace_file_paths(vanadium_number): def _generate_saved_workspace_file_paths(vanadium_number, rb_num=""):
""" """
Generate file paths based on a vanadium run number. Generate file paths based on a vanadium run number.
:param vanadium_number: The number of the vanadium run. :param vanadium_number: The number of the vanadium run.
...@@ -100,7 +111,11 @@ def _generate_saved_workspace_file_paths(vanadium_number): ...@@ -100,7 +111,11 @@ def _generate_saved_workspace_file_paths(vanadium_number):
""" """
integrated_filename = vanadium_number + SAVED_FILE_INTEG_SUFFIX integrated_filename = vanadium_number + SAVED_FILE_INTEG_SUFFIX
curves_filename = vanadium_number + SAVED_FILE_CURVE_SUFFIX curves_filename = vanadium_number + SAVED_FILE_CURVE_SUFFIX
vanadium_dir = path.join(path_handling.OUT_FILES_ROOT_DIR, VANADIUM_DIRECTORY_NAME) if rb_num:
vanadium_dir = path.join(path_handling.OUT_FILES_ROOT_DIR, "User", rb_num,
VANADIUM_DIRECTORY_NAME)
else:
vanadium_dir = path.join(path_handling.OUT_FILES_ROOT_DIR, VANADIUM_DIRECTORY_NAME)
if not path.exists(vanadium_dir): if not path.exists(vanadium_dir):
makedirs(vanadium_dir) makedirs(vanadium_dir)
return path.join(vanadium_dir, integrated_filename), path.join(vanadium_dir, curves_filename) return path.join(vanadium_dir, integrated_filename), path.join(vanadium_dir, curves_filename)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment