diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py index 37ad97818b7af8b7adcff8fc4c0663c591df2789..892f26fa6986b375125b42b6418fa5e2599f15f0 100644 --- a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py +++ b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py @@ -47,7 +47,7 @@ class CalibrationModel(object): :param rb_num: The RB number for file creation. """ 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) output = self.run_calibration(sample_workspace, van_integration, van_curves) if plot_output: diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/common/vanadium_corrections.py b/scripts/Engineering/gui/engineering_diffraction/tabs/common/vanadium_corrections.py index d0a2914e942a180c2020c3b0f96c0071e979232e..89958249ba21ef10a29278753deb98451ba840d3 100644 --- a/scripts/Engineering/gui/engineering_diffraction/tabs/common/vanadium_corrections.py +++ b/scripts/Engineering/gui/engineering_diffraction/tabs/common/vanadium_corrections.py @@ -25,11 +25,12 @@ SAVED_FILE_CURVE_SUFFIX = "_precalculated_vanadium_run_bank_curves.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. :param vanadium_path: The path to the requested vanadium run raw data. :param instrument: The instrument the data came from. + :param rb_number: :return: The resultant integration and curves workspaces. """ vanadium_number = path_handling.get_run_number_from_path(vanadium_path, instrument) @@ -38,6 +39,12 @@ def fetch_correction_workspaces(vanadium_path, instrument): try: integ_workspace = Load(Filename=integ_path, OutputWorkspace=INTEGRATED_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 except RuntimeError as e: logger.error( @@ -45,6 +52,10 @@ def fetch_correction_workspaces(vanadium_path, instrument): + str(e)) integ_workspace, curves_workspace = _calculate_vanadium_correction(vanadium_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 @@ -92,7 +103,7 @@ def _save_correction_files(integration_workspace, integration_path, curves_works 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. :param vanadium_number: The number of the vanadium run. @@ -100,7 +111,11 @@ def _generate_saved_workspace_file_paths(vanadium_number): """ integrated_filename = vanadium_number + SAVED_FILE_INTEG_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): makedirs(vanadium_dir) return path.join(vanadium_dir, integrated_filename), path.join(vanadium_dir, curves_filename)