diff --git a/.gitignore b/.gitignore index 0a4262b7..50a2aeb0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,7 @@ # Ignore cache files __pycache__/ *.py[cod] -output_npz_for_testing -!experiments/original_inputs/output_npz_for_testing src/vesuvio_analysis/core_functions/bootstrap_ws/ -running_times.txt figures/ -mvesuvio/tests/analysis/system/data/input/sample_input +tests/analysis/data/inputs/sample_test/output_files/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index eb898661..95d392de 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,15 +8,15 @@ repos: hooks: - id: trailing-whitespace args: [--markdown-linebreak-ext=md] - exclude: 'mvesuvio/vesuvio_analysis/scribles|mvesuvio/experiments/original_inputs|mvesuvio/original_inputs.py|unpackaged' + exclude: 'unpackaged|legacy' types: ['python'] - id: check-added-large-files args: ['--maxkb=4096'] - exclude: 'mvesuvio/experiments/original_inputs|unpackaged' + exclude: 'unpackaged|legacy' - repo: https://github.com/PyCQA/flake8.git rev: 6.1.0 hooks: - id: flake8 args: ['--config', 'config.flake8'] - exclude: 'mvesuvio/vesuvio_analysis/scribles|mvesuvio/experiments/original_inputs|mvesuvio/original_inputs.py|unpackaged' + exclude: 'unpackaged|legacy' diff --git a/environment.yml b/environment.yml index 803de10b..1a14c970 100644 --- a/environment.yml +++ b/environment.yml @@ -10,9 +10,10 @@ dependencies: - conda-wrappers - pre-commit==2.15 #review this - coverage - - mantid==6.8 + - mantid - matplotlib - iminuit - h5py - mock + - pytest - jacobi==0.4.2 #pinned until newer versions functionality confirmed diff --git a/pyproject.toml b/pyproject.toml index 954e776d..61096068 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ tests_require = [ "Bug Tracker" = "https://github.com/mantidproject/vesuvio/issues" [project.entry-points] -console_scripts = { mvesuvio = "mvesuvio.scripts:main" } +console_scripts = { mvesuvio = "mvesuvio.main:main" } [tool.setuptools.packages.find] where = ["src"] @@ -51,19 +51,23 @@ namespaces = false "mvesuvio.config" = ["*.properties"] [tool.pytest.ini_options] -pythonpath = ["."] -testpaths = ["tests/system_tests"] +pythonpath = [ + ".", + "./src" +] +testpaths = ["tests"] filterwarnings = ["error"] [tool.coverage.report] include = [ "*/src/mvesuvio/*", + "*/tools/calibration_scripts/*" ] omit = [ "*tests*", "*unpackaged*", - "*legacy" + "*legacy*" ] fail_under = 0 diff --git a/src/mvesuvio/__init__.py b/src/mvesuvio/__init__.py index e93fa026..a7af0ba3 100644 --- a/src/mvesuvio/__init__.py +++ b/src/mvesuvio/__init__.py @@ -9,7 +9,7 @@ from mvesuvio._version import __version__ __project_url__ = "https://github.com/mantidproject/vesuvio" -from mvesuvio.scripts import main +from mvesuvio.main import main class ArgInputs: def __init__(self, command): diff --git a/src/mvesuvio/fit_in_yspace.py b/src/mvesuvio/analysis_fitting.py similarity index 100% rename from src/mvesuvio/fit_in_yspace.py rename to src/mvesuvio/analysis_fitting.py diff --git a/src/mvesuvio/analysis_functions.py b/src/mvesuvio/analysis_reduction.py similarity index 99% rename from src/mvesuvio/analysis_functions.py rename to src/mvesuvio/analysis_reduction.py index b56c5000..aec5ce7a 100644 --- a/src/mvesuvio/analysis_functions.py +++ b/src/mvesuvio/analysis_reduction.py @@ -3,7 +3,7 @@ from mantid.simpleapi import * from scipy import optimize -from .fit_in_yspace import passDataIntoWS, replaceZerosWithNCP +from .analysis_fitting import passDataIntoWS, replaceZerosWithNCP # Format print output of arrays np.set_printoptions(suppress=True, precision=4, linewidth=100, threshold=sys.maxsize) diff --git a/src/mvesuvio/procedures.py b/src/mvesuvio/analysis_routines.py similarity index 99% rename from src/mvesuvio/procedures.py rename to src/mvesuvio/analysis_routines.py index e50e412e..aa9283f8 100644 --- a/src/mvesuvio/procedures.py +++ b/src/mvesuvio/analysis_routines.py @@ -1,4 +1,4 @@ -from .analysis_functions import iterativeFitForDataReduction +from .analysis_reduction import iterativeFitForDataReduction from mantid.api import AnalysisDataService from mantid.simpleapi import CreateEmptyTableWorkspace import numpy as np diff --git a/src/mvesuvio/scripts/__init__.py b/src/mvesuvio/main/__init__.py similarity index 96% rename from src/mvesuvio/scripts/__init__.py rename to src/mvesuvio/main/__init__.py index 723ac21d..7a53562b 100644 --- a/src/mvesuvio/scripts/__init__.py +++ b/src/mvesuvio/main/__init__.py @@ -2,7 +2,7 @@ """ import argparse from os import environ, path -from mvesuvio.scripts import handle_config +from mvesuvio.util import handle_config def main(manual_args=None): @@ -87,7 +87,7 @@ def __run_analysis(yes_to_all): environ["MANTIDPROPERTIES"] = path.join( handle_config.VESUVIO_CONFIG_PATH, "Mantid.user.properties" ) - from mvesuvio import analysis_runner + from mvesuvio.main import analysis_runner analysis_runner.run(yes_to_all) diff --git a/src/mvesuvio/analysis_runner.py b/src/mvesuvio/main/analysis_runner.py similarity index 91% rename from src/mvesuvio/analysis_runner.py rename to src/mvesuvio/main/analysis_runner.py index 309068c4..44997ad6 100644 --- a/src/mvesuvio/analysis_runner.py +++ b/src/mvesuvio/main/analysis_runner.py @@ -2,8 +2,8 @@ from pathlib import Path import importlib import sys -from mvesuvio.run_script import runScript -from mvesuvio.scripts import handle_config +from mvesuvio.run_routine import runRoutine +from mvesuvio.util import handle_config def run(yes_to_all=False): @@ -21,7 +21,7 @@ def run(yes_to_all=False): yFitIC = ai.YSpaceFitInitialConditions userCtr = ai.UserScriptControls - runScript( + runRoutine( userCtr, wsBackIC, wsFrontIC, diff --git a/src/mvesuvio/run_script.py b/src/mvesuvio/run_routine.py similarity index 95% rename from src/mvesuvio/run_script.py rename to src/mvesuvio/run_routine.py index 7af71e0a..65a84282 100644 --- a/src/mvesuvio/run_script.py +++ b/src/mvesuvio/run_routine.py @@ -1,10 +1,10 @@ -from mvesuvio.ICHelpers import ( +from mvesuvio.util.process_inputs import ( buildFinalWSName, completeICFromInputs, completeYFitIC, ) -from mvesuvio.fit_in_yspace import fitInYSpaceProcedure -from mvesuvio.procedures import ( +from mvesuvio.analysis_fitting import fitInYSpaceProcedure +from mvesuvio.analysis_routines import ( runIndependentIterativeProcedure, runJointBackAndForwardProcedure, runPreProcToEstHRatio, @@ -13,7 +13,7 @@ ) from mantid.api import mtd -def runScript( +def runRoutine( userCtr, wsBackIC, wsFrontIC, diff --git a/tests/analysis/data/outputs/__init__.py b/src/mvesuvio/util/__init__.py similarity index 100% rename from tests/analysis/data/outputs/__init__.py rename to src/mvesuvio/util/__init__.py diff --git a/src/mvesuvio/scripts/handle_config.py b/src/mvesuvio/util/handle_config.py similarity index 100% rename from src/mvesuvio/scripts/handle_config.py rename to src/mvesuvio/util/handle_config.py diff --git a/src/mvesuvio/ICHelpers.py b/src/mvesuvio/util/process_inputs.py similarity index 99% rename from src/mvesuvio/ICHelpers.py rename to src/mvesuvio/util/process_inputs.py index 3be984bb..0a6d7411 100644 --- a/src/mvesuvio/ICHelpers.py +++ b/src/mvesuvio/util/process_inputs.py @@ -1,6 +1,6 @@ from mantid.simpleapi import Load, LoadVesuvio, SaveNexus, DeleteWorkspace from pathlib import Path -from mvesuvio.scripts import handle_config +from mvesuvio.util import handle_config from mantid.kernel import logger import ntpath diff --git a/tests/analysis/data/benchmark/__init__.py b/tests/analysis/data/benchmark/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/analysis/data/outputs/stored_spec_144-182_iter_3_GC_MS.npz b/tests/analysis/data/benchmark/stored_spec_144-182_iter_3_GC_MS.npz similarity index 100% rename from tests/analysis/data/outputs/stored_spec_144-182_iter_3_GC_MS.npz rename to tests/analysis/data/benchmark/stored_spec_144-182_iter_3_GC_MS.npz diff --git a/tests/analysis/data/outputs/stored_yspace_fit.npz b/tests/analysis/data/benchmark/stored_yspace_fit.npz similarity index 100% rename from tests/analysis/data/outputs/stored_yspace_fit.npz rename to tests/analysis/data/benchmark/stored_yspace_fit.npz diff --git a/tests/analysis/data/outputs/stored_yspace_fit_GC.npz b/tests/analysis/data/benchmark/stored_yspace_fit_GC.npz similarity index 100% rename from tests/analysis/data/outputs/stored_yspace_fit_GC.npz rename to tests/analysis/data/benchmark/stored_yspace_fit_GC.npz diff --git a/tests/analysis/data/inputs/sample_test/output_files/spec_144-182_iter_3_GC_MS.npz b/tests/analysis/data/inputs/sample_test/output_files/spec_144-182_iter_3_GC_MS.npz deleted file mode 100644 index feadfcb0..00000000 Binary files a/tests/analysis/data/inputs/sample_test/output_files/spec_144-182_iter_3_GC_MS.npz and /dev/null differ diff --git a/tests/analysis/system/test_analysis.py b/tests/analysis/system/test_analysis.py index 8c29826e..185599af 100644 --- a/tests/analysis/system/test_analysis.py +++ b/tests/analysis/system/test_analysis.py @@ -2,8 +2,8 @@ import numpy as np import numpy.testing as nptest from pathlib import Path -from mvesuvio.run_script import runScript -from mvesuvio.scripts import handle_config +from mvesuvio.run_routine import runRoutine +from mvesuvio.util import handle_config from tests.analysis.data.inputs.sample_test import ( LoadVesuvioBackParameters, LoadVesuvioFrontParameters, @@ -13,10 +13,9 @@ UserScriptControls, ) import mvesuvio -sample_test_dir = Path(__file__).absolute().parent.parent / "data" / "inputs" / "sample_test.py" mvesuvio.set_config( ip_folder=str(Path(handle_config.VESUVIO_PACKAGE_PATH).joinpath("config", "ip_files")), - inputs_file=str(sample_test_dir) + inputs_file=str(Path(__file__).absolute().parent.parent / "data" / "inputs" / "sample_test.py") ) ipFilesPath = Path(handle_config.read_config_var("caching.ipfolder")) @@ -40,7 +39,7 @@ def get_current_result(cls): @classmethod def _run(cls): - scattRes, yfitRes = runScript( + scattRes, yfitRes = runRoutine( UserScriptControls(), LoadVesuvioBackParameters(ipFilesPath), LoadVesuvioFrontParameters(ipFilesPath), @@ -60,9 +59,9 @@ def _run(cls): @classmethod def _load_benchmark_results(cls): - testPath = Path(__file__).absolute().parent.parent / "data" / "outputs" + benchmarkPath = Path(__file__).absolute().parent.parent / "data" / "benchmark" benchmarkResults = np.load( - str(testPath / "stored_spec_144-182_iter_3_GC_MS.npz") + str(benchmarkPath / "stored_spec_144-182_iter_3_GC_MS.npz") ) AnalysisRunner._benchmarkResults = benchmarkResults diff --git a/tests/analysis/system/test_yspace_fit.py b/tests/analysis/system/test_yspace_fit.py index 4d714dba..fea1ad79 100644 --- a/tests/analysis/system/test_yspace_fit.py +++ b/tests/analysis/system/test_yspace_fit.py @@ -1,11 +1,11 @@ -from mvesuvio.run_script import runScript +from mvesuvio.run_routine import runRoutine from mantid.simpleapi import Load from mantid.api import AnalysisDataService from pathlib import Path import numpy as np import unittest import numpy.testing as nptest -from mvesuvio.scripts import handle_config +from mvesuvio.util import handle_config from tests.analysis.data.inputs.sample_test import ( LoadVesuvioBackParameters, LoadVesuvioFrontParameters, @@ -14,10 +14,9 @@ YSpaceFitInitialConditions, ) import mvesuvio -sample_test_dir = Path(__file__).absolute().parent.parent / "data" / "inputs" / "sample_test.py" mvesuvio.set_config( ip_folder=str(Path(handle_config.VESUVIO_PACKAGE_PATH).joinpath("config", "ip_files")), - inputs_file=str(sample_test_dir) + inputs_file=str(Path(__file__).absolute().parent.parent / "data" / "inputs" / "sample_test.py") ) np.set_printoptions(suppress=True, precision=8, linewidth=150) @@ -47,7 +46,7 @@ class AnalysisRunner: _benchmarkResults = None _currentResults = None _input_data_path = Path(__file__).absolute().parent.parent / "data" / "inputs" - _output_data_path = Path(__file__).absolute().parent.parent / "data" / "outputs" + _benchmark_path = Path(__file__).absolute().parent.parent / "data" / "benchmark" _workspaces_loaded = False @classmethod @@ -86,14 +85,14 @@ def _load_workspaces(cls): def _run(cls): cls.load_workspaces() # Load data to skip run of routine - scattRes, yfitRes = runScript( + scattRes, yfitRes = runRoutine( userCtr, wsBackIC, wsFrontIC, bckwdIC, fwdIC, yFitIC, True ) cls._currentResults = yfitRes @classmethod def _load_benchmark_results(cls): - cls._benchmarkResults = np.load(str(cls._output_data_path / "stored_yspace_fit.npz")) + cls._benchmarkResults = np.load(str(cls._benchmark_path / "stored_yspace_fit.npz")) class TestSymSumYSpace(unittest.TestCase): diff --git a/tests/analysis/system/test_yspace_fit_GC.py b/tests/analysis/system/test_yspace_fit_GC.py index 10bf805b..06520725 100644 --- a/tests/analysis/system/test_yspace_fit_GC.py +++ b/tests/analysis/system/test_yspace_fit_GC.py @@ -1,11 +1,11 @@ -from mvesuvio.run_script import runScript +from mvesuvio.run_routine import runRoutine from mantid.simpleapi import Load from mantid.api import AnalysisDataService from pathlib import Path import numpy as np import unittest import numpy.testing as nptest -from mvesuvio.scripts import handle_config +from mvesuvio.util import handle_config from tests.analysis.data.inputs.sample_test import ( LoadVesuvioBackParameters, LoadVesuvioFrontParameters, @@ -14,10 +14,9 @@ YSpaceFitInitialConditions, ) import mvesuvio -sample_test_dir = Path(__file__).absolute().parent.parent / "data" / "inputs" / "sample_test.py" mvesuvio.set_config( ip_folder=str(Path(handle_config.VESUVIO_PACKAGE_PATH).joinpath("config", "ip_files")), - inputs_file=str(sample_test_dir) + inputs_file=str(Path(__file__).absolute().parent.parent / "data" / "inputs" / "sample_test.py") ) np.set_printoptions(suppress=True, precision=8, linewidth=150) @@ -48,7 +47,7 @@ class AnalysisRunner: _benchmarkResults = None _currentResults = None _input_data_path = Path(__file__).absolute().parent.parent / "data" / "inputs" - _output_data_path = Path(__file__).absolute().parent.parent / "data" / "outputs" + _benchmark_path = Path(__file__).absolute().parent.parent / "data" / "benchmark" _workspaces_loaded = False @classmethod @@ -87,7 +86,7 @@ def _load_workspaces(cls): def _run(cls): cls.load_workspaces() - scattRes, yfitRes = runScript( + scattRes, yfitRes = runRoutine( userCtr, wsBackIC, wsFrontIC, bckwdIC, fwdIC, yFitIC, True ) cls._currentResults = yfitRes @@ -95,7 +94,7 @@ def _run(cls): @classmethod def _load_benchmark_results(cls): cls._benchmarkResults = np.load( - str(cls._output_data_path / "stored_yspace_fit_GC.npz") + str(cls._benchmark_path / "stored_yspace_fit_GC.npz") ) diff --git a/tests/analysis/unit/test_analysis_functions.py b/tests/analysis/unit/test_analysis_functions.py index bf898b58..08283e8b 100644 --- a/tests/analysis/unit/test_analysis_functions.py +++ b/tests/analysis/unit/test_analysis_functions.py @@ -1,6 +1,6 @@ import unittest from mock import MagicMock -from mvesuvio.analysis_functions import extractWS +from mvesuvio.analysis_reduction import extractWS class TestAnalysisFunctions(unittest.TestCase): diff --git a/tests/analysis/system/tests_IC.py b/unpackaged/test_bootstrap/tests_IC.py similarity index 100% rename from tests/analysis/system/tests_IC.py rename to unpackaged/test_bootstrap/tests_IC.py