diff --git a/MDANSE/Src/MDANSE/Framework/Converters/DCD.py b/MDANSE/Src/MDANSE/Framework/Converters/DCD.py index ce42b8d620..ded2bddb43 100644 --- a/MDANSE/Src/MDANSE/Framework/Converters/DCD.py +++ b/MDANSE/Src/MDANSE/Framework/Converters/DCD.py @@ -360,7 +360,7 @@ def run_step(self, index): conf.fold_coordinates() # The current time. - time = (index + 1) * self.configuration["time_step"]["value"] + time = index * self.configuration["time_step"]["value"] # Store a snapshot of the current configuration in the output trajectory. self._trajectory.dump_configuration( diff --git a/MDANSE/Tests/UnitTests/Analysis/test_average_structure.py b/MDANSE/Tests/UnitTests/Analysis/test_average_structure.py index 1fd75635aa..98ea027160 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_average_structure.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_average_structure.py @@ -1,4 +1,3 @@ -import sys import tempfile import os from os import path @@ -8,11 +7,10 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) @@ -32,7 +30,7 @@ def trajectory(): @pytest.mark.parametrize("output_unit,output_format", inputs) -def test_temperature(trajectory, output_unit, output_format): +def test_avg_structure(trajectory, output_unit, output_format): temp_name = tempfile.mktemp() parameters = {} parameters["frames"] = (0, 10, 1) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py index 23923a54a5..df8dc7f3de 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py @@ -1,34 +1,37 @@ -import sys import tempfile import os from os import path + +import h5py +import numpy as np import pytest -from MDANSE.Framework.InputData.HDFTrajectoryInputData import HDFTrajectoryInputData from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) - mdmc_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "Ar_mdmc_h5md.h5", ) - com_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "com_trajectory.mdt", ) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) @pytest.mark.parametrize( @@ -55,6 +58,20 @@ def test_vacf(interp_order, normalise): vacf.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + + if normalise: + fname = f"vacf_{interp_order}_normalised.mda" + else: + fname = f"vacf_{interp_order}.mda" + + result_file = os.path.join(result_dir, fname) + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/vacf_Cu"], desired["/vacf_Cu"]) + np.testing.assert_array_almost_equal(actual["/vacf_S"], desired["/vacf_S"]) + np.testing.assert_array_almost_equal(actual["/vacf_Sb"], desired["/vacf_Sb"]) + np.testing.assert_array_almost_equal(actual["/vacf_total"], desired["/vacf_total"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") @@ -72,6 +89,19 @@ def test_pps(): pps.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + + result_file = os.path.join(result_dir, "pps.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/pacf_Cu"], desired["/pacf_Cu"]) + np.testing.assert_array_almost_equal(actual["/pacf_S"], desired["/pacf_S"]) + np.testing.assert_array_almost_equal(actual["/pacf_Sb"], desired["/pacf_Sb"]) + np.testing.assert_array_almost_equal(actual["/pacf_total"], desired["/pacf_total"]) + np.testing.assert_array_almost_equal(actual["/pps_Cu"], desired["/pps_Cu"]) + np.testing.assert_array_almost_equal(actual["/pps_S"], desired["/pps_S"]) + np.testing.assert_array_almost_equal(actual["/pps_Sb"], desired["/pps_Sb"]) + np.testing.assert_array_almost_equal(actual["/pps_total"], desired["/pps_total"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") @@ -99,7 +129,7 @@ def parameters(): }, ) parameters["q_values"] = (0.0, 10.0, 0.1) - parameters["r_values"] = (0.0, 0.5, 0.01) + parameters["r_values"] = (0.0, 0.9, 0.01) parameters["per_axis"] = False parameters["reference_direction"] = (0, 0, 1) parameters["instrument_resolution"] = ("Gaussian", {"sigma": 1.0, "mu": 0.0}) @@ -113,37 +143,44 @@ def parameters(): total_list = [] -for tp in [short_traj, mdmc_traj, com_traj]: +for tp in [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)]: for jt in [ # "AngularCorrelation", # "GeneralAutoCorrelationFunction", - "CurrentCorrelationFunction", - "DensityOfStates", - "MeanSquareDisplacement", - "VelocityAutoCorrelationFunction", - "VanHoveFunctionDistinct", - "VanHoveFunctionSelf", + ("DensityOfStates", ["dos", "vacf"]), + ("MeanSquareDisplacement", ["msd"]), + ("VelocityAutoCorrelationFunction", ["vacf"]), + ("VanHoveFunctionDistinct", ["g(r,t)"]), + ("VanHoveFunctionSelf", ["g(r,t)"]), # "OrderParameter", - "PositionAutoCorrelationFunction", + ("PositionAutoCorrelationFunction", ["pacf"]), + ("PositionPowerSpectrum", ["pacf", "pps"]), ]: for rm in [("single-core", 1), ("multicore", -4)]: for of in ["MDAFormat", "TextFormat"]: total_list.append((tp, jt, rm, of)) -@pytest.mark.parametrize("traj_path,job_type,running_mode,output_format", total_list) +@pytest.mark.parametrize("traj_info,job_info,running_mode,output_format", total_list) def test_dynamics_analysis( - parameters, traj_path, job_type, running_mode, output_format + parameters, traj_info, job_info, running_mode, output_format ): temp_name = tempfile.mktemp() - parameters["trajectory"] = traj_path + parameters["trajectory"] = traj_info[1] parameters["running_mode"] = running_mode parameters["output_files"] = (temp_name, (output_format,), "INFO") - job = IJob.create(job_type) + job = IJob.create(job_info[0]) job.run(parameters, status=True) if output_format == "MDAFormat": assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join(result_dir, f"dynamics_analysis_{traj_info[0]}_{job_info[0]}.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + keys = [i for i in desired.keys() if any([j in i for j in job_info[1]])] + for key in keys: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + os.remove(temp_name + ".mda") elif output_format == "TextFormat": assert path.exists(temp_name + "_text.tar") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_infrared.py b/MDANSE/Tests/UnitTests/Analysis/test_infrared.py index 9e74f36a4d..15d1797caa 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_infrared.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_infrared.py @@ -1,19 +1,24 @@ -import sys import tempfile import os from os import path -from MDANSE.Framework.Jobs.IJob import IJob +import h5py +import numpy as np +from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "named_molecules.mdt", ) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) def test_dacf_analysis(): @@ -23,13 +28,32 @@ def test_dacf_analysis(): parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO") parameters["running_mode"] = ("single-core", 1) parameters["trajectory"] = short_traj - parameters["atom_charges"] = "{}" + parameters["atom_charges"] = ( + '{"0": 0.72, "1": -0.36, "2": -0.36, "3": 0.72, "4": -0.36, ' + '"5": -0.36, "6": 0.72, "7": -0.36, "8": -0.36, "9": 0.72, ' + '"10": -0.36, "11": -0.36, "12": 0.72, "13": -0.36, "14": -0.36, ' + '"15": 0.72, "16": -0.36, "17": -0.36, "18": 0.72, "19": -0.36, ' + '"20": -0.36, "21": 0.72, "22": -0.36, "23": -0.36, "24": 0.72, ' + '"25": -0.36, "26": -0.36, "27": 0.72, "28": -0.36, "29": -0.36, ' + '"30": 0.72, "31": -0.36, "32": -0.36, "33": 0.72, "34": -0.36, ' + '"35": -0.36, "36": 0.72, "37": -0.36, "38": -0.36, "39": 0.72, ' + '"40": -0.36, "41": -0.36, "42": 0.72, "43": -0.36, "44": -0.36, ' + '"45": 0.72, "46": -0.36, "47": -0.36, "48": 0.72, "49": -0.36, ' + '"50": -0.36, "51": 0.72, "52": -0.36, "53": -0.36, "54": 0.72, ' + '"55": -0.36, "56": -0.36, "57": 0.72, "58": -0.36, "59": -0.36}' + ) parameters["molecule_name"] = "C1_O2" job = IJob.create("DipoleAutoCorrelationFunction") job.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join(result_dir, "dacf_analysis.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/dacf"], desired["/dacf"]) + os.remove(temp_name + ".mda") + assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") os.remove(temp_name + ".log") @@ -44,13 +68,33 @@ def test_ir_analysis(): parameters["derivative_order"] = 3 parameters["running_mode"] = ("single-core", 1) parameters["trajectory"] = short_traj - parameters["atom_charges"] = "{}" + parameters["atom_charges"] = ( + '{"0": 0.72, "1": -0.36, "2": -0.36, "3": 0.72, "4": -0.36, ' + '"5": -0.36, "6": 0.72, "7": -0.36, "8": -0.36, "9": 0.72, ' + '"10": -0.36, "11": -0.36, "12": 0.72, "13": -0.36, "14": -0.36, ' + '"15": 0.72, "16": -0.36, "17": -0.36, "18": 0.72, "19": -0.36, ' + '"20": -0.36, "21": 0.72, "22": -0.36, "23": -0.36, "24": 0.72, ' + '"25": -0.36, "26": -0.36, "27": 0.72, "28": -0.36, "29": -0.36, ' + '"30": 0.72, "31": -0.36, "32": -0.36, "33": 0.72, "34": -0.36, ' + '"35": -0.36, "36": 0.72, "37": -0.36, "38": -0.36, "39": 0.72, ' + '"40": -0.36, "41": -0.36, "42": 0.72, "43": -0.36, "44": -0.36, ' + '"45": 0.72, "46": -0.36, "47": -0.36, "48": 0.72, "49": -0.36, ' + '"50": -0.36, "51": 0.72, "52": -0.36, "53": -0.36, "54": 0.72, ' + '"55": -0.36, "56": -0.36, "57": 0.72, "58": -0.36, "59": -0.36}' + ) parameters["molecule_name"] = "C1_O2" job = IJob.create("Infrared") job.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join(result_dir, "ir_analysis.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/ddacf"], desired["/ddacf"]) + np.testing.assert_array_almost_equal(actual["/ir"], desired["/ir"]) + os.remove(temp_name + ".mda") + assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") os.remove(temp_name + ".log") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py b/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py index fb22480dea..08e32c1e07 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py @@ -1,4 +1,3 @@ -import sys import tempfile import os from os import path @@ -7,12 +6,10 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) - short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_mdmc_h5md.py b/MDANSE/Tests/UnitTests/Analysis/test_mdmc_h5md.py index f7cf4eabb8..f17969d808 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_mdmc_h5md.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_mdmc_h5md.py @@ -1,4 +1,3 @@ -import sys import tempfile import os import pytest @@ -9,13 +8,17 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "Ar_mdmc_h5md.h5", ) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) @pytest.fixture(scope="module") @@ -25,22 +28,27 @@ def trajectory(): @pytest.mark.parametrize("interp_order", [1, 3]) -def test_temperature_nonzero(trajectory, interp_order): +def test_h5md_temperature(trajectory, interp_order): pos = trajectory._data.coordinates(0) print(f"Coordinates span: {pos.min()}, {pos.max()}") print(f"Trajectory length: {len(trajectory.trajectory)}") print(f"Positions array shape: {trajectory.trajectory.variable('position').shape}") temp_name = tempfile.mktemp() parameters = {} - parameters["frames"] = (0, 10, 1) + parameters["frames"] = (0, 39, 1) parameters["interpolation_order"] = interp_order parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO") parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj temp = IJob.create("Temperature") temp.run(parameters, status=True) - with h5py.File(temp_name + ".mda") as results: - print(results.keys()) - temperature = np.array(results["/temperature"]) + result_file = os.path.join( + result_dir, f"h5md_temperature_{interp_order}.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/kinetic_energy"], desired["/kinetic_energy"]) + np.testing.assert_array_almost_equal(actual["/temperature"], desired["/temperature"]) + np.testing.assert_array_almost_equal(actual["/avg_kinetic_energy"], desired["/avg_kinetic_energy"]) + np.testing.assert_array_almost_equal(actual["/avg_temperature"], desired["/avg_temperature"]) + os.remove(temp_name + ".mda") - assert np.all(temperature > 0.0) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py b/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py index 016dc94367..a672d04e2a 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py @@ -1,4 +1,3 @@ -import sys import tempfile import os from os import path @@ -8,14 +7,17 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) - +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) # Mean Square Displacements can accept many parameters, most of them optional # settings['trajectory']=('hdf_trajectory',{}) @@ -40,6 +42,14 @@ def test_basic_meansquare(): msd.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join(result_dir, "basic_meansquare.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/msd_Cu"], desired["/msd_Cu"]) + np.testing.assert_array_almost_equal(actual["/msd_S"], desired["/msd_S"]) + np.testing.assert_array_almost_equal(actual["/msd_Sb"], desired["/msd_Sb"]) + np.testing.assert_array_almost_equal(actual["/msd_total"], desired["/msd_total"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") @@ -69,25 +79,8 @@ def test_parallel_meansquare(): ): for kk in single.keys(): if not "metadata" in kk: - assert np.allclose( - np.array(single[kk]), np.array(parallel[kk]), 1e-5, 1e-4 + np.testing.assert_array_almost_equal( + np.array(single[kk]), np.array(parallel[kk]) ) os.remove(temp_name + ".mda") os.remove(temp_name2 + ".mda") - - -def test_atom_selection(): - temp_name = tempfile.mktemp() - parameters = {} - parameters["frames"] = (0, 10, 1, 5) - parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO") - parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = short_traj - msd = IJob.create("MeanSquareDisplacement") - msd.run(parameters, status=True) - assert path.exists(temp_name + ".mda") - assert path.isfile(temp_name + ".mda") - os.remove(temp_name + ".mda") - assert path.exists(temp_name + ".log") - assert path.isfile(temp_name + ".log") - os.remove(temp_name + ".log") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_mock_dynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_mock_dynamics.py index 7924d569e8..81b1569880 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_mock_dynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_mock_dynamics.py @@ -1,26 +1,22 @@ -import sys import tempfile import os from os import path +import h5py +import numpy as np import pytest from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) - -short_traj = os.path.join( +file_wd = os.path.dirname(os.path.realpath(__file__)) +mock_json = os.path.join(file_wd, "..", "Data", "mock.json") +result_dir = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", - "short_trajectory_after_changes.mdt", + "Results", ) -file_wd = os.path.dirname(os.path.realpath(__file__)) - -mock_json = os.path.join(file_wd, "..", "Data", "mock.json") - @pytest.mark.parametrize( "interp_order, normalise", @@ -46,6 +42,20 @@ def test_vacf(interp_order, normalise): vacf.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + + if normalise: + fname = f"mock_traj_vacf_{interp_order}_normalised.mda" + else: + fname = f"mock_traj_vacf_{interp_order}.mda" + + result_file = os.path.join(result_dir, fname) + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/vacf_H"], desired["/vacf_H"]) + np.testing.assert_array_almost_equal(actual["/vacf_O"], desired["/vacf_O"]) + np.testing.assert_array_almost_equal(actual["/vacf_Si"], desired["/vacf_Si"]) + np.testing.assert_array_almost_equal(actual["/vacf_total"], desired["/vacf_total"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py b/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py index 3db2e6f5aa..849f006d7e 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py @@ -1,19 +1,25 @@ -import sys import tempfile import os from os import path + import pytest +import numpy as np +import h5py from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "named_molecules.mdt", ) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) ################################################################ @@ -52,19 +58,25 @@ def parameters(): @pytest.mark.parametrize( - "job_type", + "job_info", [ - "AreaPerMolecule", - "AngularCorrelation", + ("AreaPerMolecule", ["area_per_molecule"]), + ("AngularCorrelation", ["ac"]), ], ) -def test_structure_analysis(parameters, job_type): +def test_structure_analysis(parameters, job_info): temp_name = tempfile.mktemp() parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO") - job = IJob.create(job_type) + job = IJob.create(job_info[0]) job.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join(result_dir, f"structure_analysis_{job_info[0]}.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + for key in job_info[1]: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_qvectors.py b/MDANSE/Tests/UnitTests/Analysis/test_qvectors.py index 4f3ed99aa2..7c7f75117f 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_qvectors.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_qvectors.py @@ -1,4 +1,3 @@ -import sys import tempfile import os from os import path @@ -9,11 +8,10 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py b/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py index 692dc6c51a..265a736261 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py @@ -1,7 +1,9 @@ -import sys import tempfile import os from os import path + +import h5py +import numpy as np import pytest from MDANSE.Framework.InputData.HDFTrajectoryInputData import HDFTrajectoryInputData @@ -11,13 +13,17 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) @pytest.fixture(scope="module") @@ -66,21 +72,17 @@ def test_disf(trajectory): @pytest.mark.parametrize("resolution_generator", list_of_resolutions) -def test_dos_text(trajectory, resolution_generator): +def test_dos(trajectory, resolution_generator): parameters = {} parameters["atom_selection"] = None parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1, 5) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["q_vectors"] = ( - "SphericalLatticeQVectors", - {"seed": 0, "shells": (5.0, 36, 10.0), "n_vectors": 10, "width": 9.0}, - ) parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj parameters["weights"] = "b_incoherent2" temp_name = tempfile.mktemp() - parameters["output_files"] = (temp_name, ("TextFormat",), "INFO") + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat"), "INFO") instance = IInstrumentResolution.create(resolution_generator) resolution_defaults = { name: value[1]["default"] for name, value in instance.settings.items() @@ -93,6 +95,22 @@ def test_dos_text(trajectory, resolution_generator): ) disf = IJob.create("DensityOfStates") disf.run(parameters, status=True) + assert path.exists(temp_name + ".mda") + assert path.isfile(temp_name + ".mda") + result_file = os.path.join( + result_dir, f"dos_{resolution_generator}.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/dos_Cu"], desired["/dos_Cu"]) + np.testing.assert_array_almost_equal(actual["/dos_S"], desired["/dos_S"]) + np.testing.assert_array_almost_equal(actual["/dos_Sb"], desired["/dos_Sb"]) + np.testing.assert_array_almost_equal(actual["/dos_total"], desired["/dos_total"]) + np.testing.assert_array_almost_equal(actual["/vacf_Cu"], desired["/vacf_Cu"]) + np.testing.assert_array_almost_equal(actual["/vacf_S"], desired["/vacf_S"]) + np.testing.assert_array_almost_equal(actual["/vacf_Sb"], desired["/vacf_Sb"]) + np.testing.assert_array_almost_equal(actual["/vacf_total"], desired["/vacf_total"]) + + os.remove(temp_name + ".mda") assert path.exists(temp_name + "_text.tar") assert path.isfile(temp_name + "_text.tar") os.remove(temp_name + "_text.tar") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py index b26d37c00d..ac6af5bbd7 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py @@ -1,35 +1,42 @@ -import sys import tempfile import os from os import path + +import numpy as np +import h5py import pytest -from MDANSE.Framework.InputData.HDFTrajectoryInputData import HDFTrajectoryInputData from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) - +mdmc_traj = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Converted", + "Ar_mdmc_h5md.h5", +) com_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "com_trajectory.mdt", ) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) @pytest.fixture(scope="module") -def qvector_spherical_lattice(): - return ( - "SphericalLatticeQVectors", - {"seed": 0, "shells": (5.0, 36, 10.0), "n_vectors": 10, "width": 9.0}, - ) +def qvector_grid(): + return ("GridQVectors", {"hrange": [0, 3, 1], "krange": [0, 3, 1], "lrange": [0, 3, 1], "qstep": 1}) @pytest.fixture(scope="module") @@ -77,10 +84,10 @@ def disf(): @pytest.mark.parametrize( - "trajectory", - [short_traj, com_traj], + "traj_info", + [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)], ) -def test_dcsf(trajectory, qvector_spherical_lattice): +def test_dcsf(traj_info, qvector_grid): temp_name = tempfile.mktemp() parameters = {} parameters["atom_selection"] = None @@ -88,14 +95,21 @@ def test_dcsf(trajectory, qvector_spherical_lattice): parameters["frames"] = (0, 10, 1, 5) parameters["instrument_resolution"] = ("Ideal", {}) parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat"), "INFO") - parameters["q_vectors"] = qvector_spherical_lattice + parameters["q_vectors"] = qvector_grid parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = trajectory + parameters["trajectory"] = traj_info[1] parameters["weights"] = "b_coherent" dcsf = IJob.create("DynamicCoherentStructureFactor") dcsf.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + + result_file = os.path.join(result_dir, f"dcsf_{traj_info[0]}.mda") + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + keys = [i for i in desired.keys() if any([j in i for j in ["f(q,t)", "s(q,f)"]])] + for key in keys: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + "_text.tar") assert path.isfile(temp_name + "_text.tar") @@ -105,7 +119,11 @@ def test_dcsf(trajectory, qvector_spherical_lattice): os.remove(temp_name + ".log") -def test_output_axis_preview(qvector_spherical_lattice): +@pytest.mark.parametrize( + "traj_info", + [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)], +) +def test_ccf(traj_info, qvector_grid): temp_name = tempfile.mktemp() parameters = {} parameters["atom_selection"] = None @@ -113,7 +131,39 @@ def test_output_axis_preview(qvector_spherical_lattice): parameters["frames"] = (0, 10, 1, 5) parameters["instrument_resolution"] = ("Ideal", {}) parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat"), "INFO") - parameters["q_vectors"] = qvector_spherical_lattice + parameters["q_vectors"] = qvector_grid + parameters["running_mode"] = ("single-core",) + parameters["trajectory"] = traj_info[1] + parameters["weights"] = "equal" + dcsf = IJob.create("CurrentCorrelationFunction") + dcsf.run(parameters, status=True) + assert path.exists(temp_name + ".mda") + assert path.isfile(temp_name + ".mda") + + result_file = os.path.join(result_dir, f"ccf_{traj_info[0]}.mda") + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + keys = [i for i in desired.keys() if any([j in i for j in ["J(q,f)", "j(q,t)"]])] + for key in keys: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + + os.remove(temp_name + ".mda") + assert path.exists(temp_name + "_text.tar") + assert path.isfile(temp_name + "_text.tar") + os.remove(temp_name + "_text.tar") + assert path.exists(temp_name + ".log") + assert path.isfile(temp_name + ".log") + os.remove(temp_name + ".log") + + +def test_output_axis_preview(qvector_grid): + temp_name = tempfile.mktemp() + parameters = {} + parameters["atom_selection"] = None + parameters["atom_transmutation"] = None + parameters["frames"] = (0, 10, 1, 5) + parameters["instrument_resolution"] = ("Ideal", {}) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat"), "INFO") + parameters["q_vectors"] = qvector_grid parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj parameters["weights"] = "b_coherent" @@ -125,10 +175,10 @@ def test_output_axis_preview(qvector_spherical_lattice): @pytest.mark.parametrize( - "trajectory", - [short_traj, com_traj], + "traj_info", + [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)], ) -def test_disf(trajectory, qvector_spherical_lattice): +def test_disf(traj_info, qvector_grid): temp_name = tempfile.mktemp() parameters = {} parameters["atom_selection"] = None @@ -136,14 +186,21 @@ def test_disf(trajectory, qvector_spherical_lattice): parameters["frames"] = (0, 10, 1, 5) parameters["instrument_resolution"] = ("Ideal", {}) parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat"), "INFO") - parameters["q_vectors"] = qvector_spherical_lattice + parameters["q_vectors"] = qvector_grid parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = trajectory + parameters["trajectory"] = traj_info[1] parameters["weights"] = "b_incoherent2" disf = IJob.create("DynamicIncoherentStructureFactor") disf.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + + result_file = os.path.join(result_dir, f"disf_{traj_info[0]}.mda") + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + keys = [i for i in desired.keys() if any([j in i for j in ["f(q,t)", "s(q,f)"]])] + for key in keys: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + "_text.tar") assert path.isfile(temp_name + "_text.tar") @@ -154,24 +211,31 @@ def test_disf(trajectory, qvector_spherical_lattice): @pytest.mark.parametrize( - "trajectory", - [short_traj, com_traj], + "traj_info", + [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)], ) -def test_eisf(trajectory, qvector_spherical_lattice): +def test_eisf(traj_info, qvector_grid): temp_name = tempfile.mktemp() parameters = {} parameters["atom_selection"] = None parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat"), "INFO") - parameters["q_vectors"] = qvector_spherical_lattice + parameters["q_vectors"] = qvector_grid parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = trajectory + parameters["trajectory"] = traj_info[1] parameters["weights"] = "b_incoherent" eisf = IJob.create("ElasticIncoherentStructureFactor") eisf.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + + result_file = os.path.join(result_dir, f"eisf_{traj_info[0]}.mda") + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + keys = [i for i in desired.keys() if "eisf" in i] + for key in keys: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + "_text.tar") assert path.isfile(temp_name + "_text.tar") @@ -182,10 +246,10 @@ def test_eisf(trajectory, qvector_spherical_lattice): @pytest.mark.parametrize( - "trajectory", - [short_traj, com_traj], + "traj_info", + [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)], ) -def test_gdisf(trajectory): +def test_gdisf(traj_info): temp_name = tempfile.mktemp() parameters = {} parameters["atom_selection"] = None @@ -195,12 +259,19 @@ def test_gdisf(trajectory): parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat"), "INFO") parameters["q_shells"] = (2.0, 12.2, 2.0) parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = trajectory + parameters["trajectory"] = traj_info[1] parameters["weights"] = "b_incoherent2" gdisf = IJob.create("GaussianDynamicIncoherentStructureFactor") gdisf.run(parameters, status=True) assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + + result_file = os.path.join(result_dir, f"gdisf_{traj_info[0]}.mda") + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + keys = [i for i in desired.keys() if any([j in i for j in ["f(q,t)", "s(q,f)"]])] + for key in keys: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + os.remove(temp_name + ".mda") assert path.exists(temp_name + "_text.tar") assert path.isfile(temp_name + "_text.tar") @@ -210,7 +281,7 @@ def test_gdisf(trajectory): os.remove(temp_name + ".log") -def test_ndtsf(disf, dcsf, qvector_spherical_lattice): +def test_ndtsf(disf, dcsf, qvector_grid): temp_name = tempfile.mktemp() parameters = {} parameters["atom_selection"] = None diff --git a/MDANSE/Tests/UnitTests/Analysis/test_structure.py b/MDANSE/Tests/UnitTests/Analysis/test_structure.py index 372ecc6272..58bb6c58ab 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_structure.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_structure.py @@ -1,31 +1,36 @@ -import sys import tempfile import os from os import path + +import numpy as np +import h5py import pytest from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) - mdmc_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "Ar_mdmc_h5md.h5", ) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) com_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "com_trajectory.mdt", ) @@ -51,7 +56,7 @@ def parameters(): }, ) parameters["q_values"] = (0.0, 10.0, 0.1) - parameters["r_values"] = (0.0, 10.0, 0.1) + parameters["r_values"] = (0.0, 0.9, 0.1) parameters["per_axis"] = False parameters["reference_direction"] = (0, 0, 1) parameters["instrument_resolution"] = ("Gaussian", {"sigma": 1.0, "mu": 0.0}) @@ -65,42 +70,58 @@ def parameters(): total_list = [] -for tp in (short_traj, mdmc_traj, com_traj): +for tp in [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)]: for jt in [ - "RadiusOfGyration", - "DensityProfile", - "MolecularTrace", - "Eccentricity", + ("RadiusOfGyration", ["rog"]), + ("DensityProfile", ["dp"]), + ("MolecularTrace", [ + "molecular_trace", + "x_position", + "y_position", + "z_position" + ]), + ("Eccentricity", ["eccentricity"]), ]: for rm in [("single-core", 1), ("multicore", -4)]: for of in ["MDAFormat", "TextFormat"]: total_list.append((tp, jt, rm, of)) -for tp in (short_traj, mdmc_traj): +for tp in [("short_traj", short_traj), ("mdmc_traj", mdmc_traj), ("com_traj", com_traj)]: for jt in [ - "RootMeanSquareDeviation", - "RootMeanSquareFluctuation", - "SolventAccessibleSurface", - "Voronoi", + ("SolventAccessibleSurface", ["sas"]), + ("RootMeanSquareDeviation", ["rmsd"]), + ("RootMeanSquareFluctuation", ["rmsf"]), + ("Voronoi", ["mean_volume", "neighbourhood_histogram"]), + ("CoordinationNumber", ["cn"]), + ("PairDistributionFunction", ["pdf", "rdf", "tcf"]), + ("StaticStructureFactor", ["ssf"]), + ("XRayStaticStructureFactor", ["xssf"]), ]: for rm in [("single-core", 1)]: for of in ["MDAFormat"]: total_list.append((tp, jt, rm, of)) -@pytest.mark.parametrize("traj_path,job_type,running_mode,output_format", total_list) +@pytest.mark.parametrize("traj_info,job_info,running_mode,output_format", total_list) def test_structure_analysis( - parameters, traj_path, job_type, running_mode, output_format + parameters, traj_info, job_info, running_mode, output_format ): temp_name = tempfile.mktemp() - parameters["trajectory"] = traj_path + parameters["trajectory"] = traj_info[1] parameters["running_mode"] = running_mode parameters["output_files"] = (temp_name, (output_format,), "INFO") - job = IJob.create(job_type) + job = IJob.create(job_info[0]) job.run(parameters, status=True) if output_format == "MDAFormat": assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join(result_dir, f"structure_analysis_{traj_info[0]}_{job_info[0]}.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + keys = [i for i in desired.keys() if any([j in i for j in job_info[1]])] + for key in keys: + np.testing.assert_array_almost_equal(actual[f"/{key}"], desired[f"/{key}"]) + os.remove(temp_name + ".mda") elif output_format == "TextFormat": assert path.exists(temp_name + "_text.tar") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_thermodynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_thermodynamics.py index 734055a8c9..f6232b9f3d 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_thermodynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_thermodynamics.py @@ -1,4 +1,3 @@ -import sys import tempfile import os from os import path @@ -6,89 +5,107 @@ import numpy as np import h5py -from MDANSE.Framework.InputData.HDFTrajectoryInputData import HDFTrajectoryInputData + from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) com_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "com_trajectory.mdt", ) +mdmc_traj = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Converted", + "Ar_mdmc_h5md.h5", +) +result_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "..", + "Results", +) + @pytest.mark.parametrize( - "trajectory_name,interp_order", - [(short_traj, 1), (short_traj, 3), (com_traj, 1), (com_traj, 3)], + "traj_info,interp_order", + [ + (("short_traj", short_traj), 1), + (("short_traj", short_traj), 3), + (("mdmc_traj", mdmc_traj), 1), + (("mdmc_traj", mdmc_traj), 3), + (("com_traj", com_traj), 1), + (("com_traj", com_traj), 3) + ], ) -def test_temperature(trajectory_name, interp_order): +def test_temperature(traj_info, interp_order): temp_name = tempfile.mktemp() parameters = {} parameters["frames"] = (0, 10, 1) parameters["interpolation_order"] = interp_order parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO") parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = short_traj + parameters["trajectory"] = traj_info[1] temp = IJob.create("Temperature") temp.run(parameters, status=True) + assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join( + result_dir, f"temperature_{traj_info[0]}_{interp_order}.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/kinetic_energy"], desired["/kinetic_energy"]) + np.testing.assert_array_almost_equal(actual["/temperature"], desired["/temperature"]) + np.testing.assert_array_almost_equal(actual["/avg_kinetic_energy"], desired["/avg_kinetic_energy"]) + np.testing.assert_array_almost_equal(actual["/avg_temperature"], desired["/avg_temperature"]) + os.remove(temp_name + ".mda") + assert path.exists(temp_name + ".log") assert path.isfile(temp_name + ".log") os.remove(temp_name + ".log") @pytest.mark.parametrize( - "trajectory_name,interp_order", - [(short_traj, 1), (short_traj, 3), (com_traj, 1), (com_traj, 3)], -) -def test_temperature_nonzero(trajectory_name, interp_order): - temp_name = tempfile.mktemp() - parameters = {} - parameters["frames"] = (0, 10, 1) - parameters["interpolation_order"] = interp_order - parameters["output_files"] = (temp_name, ("MDAFormat",), "INFO") - parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = short_traj - temp = IJob.create("Temperature") - temp.run(parameters, status=True) - with h5py.File(temp_name + ".mda") as results: - print(results.keys()) - temperature = np.array(results["/temperature"]) - os.remove(temp_name + ".mda") - assert np.all(temperature > 0.0) - - -@pytest.mark.parametrize( - "trajectory_name,output_format", + "traj_info,output_format", [ - (short_traj, "MDAFormat"), - (com_traj, "MDAFormat"), - (short_traj, "TextFormat"), - (com_traj, "TextFormat"), + (("short_traj", short_traj), "MDAFormat"), + (("short_traj", short_traj), "TextFormat"), + (("mdmc_traj", mdmc_traj), "MDAFormat"), + (("mdmc_traj", mdmc_traj), "TextFormat"), + (("com_traj", com_traj), "MDAFormat"), + (("com_traj", com_traj), "TextFormat") ], ) -def test_density(trajectory_name, output_format): +def test_density(traj_info, output_format): temp_name = tempfile.mktemp() parameters = {} parameters["frames"] = (0, 10, 1) parameters["output_files"] = (temp_name, (output_format,), "INFO") parameters["running_mode"] = ("single-core",) - parameters["trajectory"] = short_traj + parameters["trajectory"] = traj_info[1] den = IJob.create("Density") den.run(parameters, status=True) if output_format == "MDAFormat": assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") + result_file = os.path.join(result_dir, f"density_{traj_info[0]}.mda") + + with h5py.File(temp_name + ".mda") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/atomic_density"], desired["/atomic_density"]) + np.testing.assert_array_almost_equal(actual["/mass_density"], desired["/mass_density"]) + np.testing.assert_array_almost_equal(actual["/avg_atomic_density"], desired["/avg_atomic_density"]) + np.testing.assert_array_almost_equal(actual["/avg_mass_density"], desired["/avg_mass_density"]) + os.remove(temp_name + ".mda") elif output_format == "TextFormat": assert path.exists(temp_name + "_text.tar") diff --git a/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py b/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py index b0f1e98964..ffa9f03492 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py @@ -1,4 +1,3 @@ -import sys import tempfile import os from os import path @@ -7,11 +6,10 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "short_trajectory_after_changes.mdt", ) diff --git a/MDANSE/Tests/UnitTests/AtomSelector/test_all_selector.py b/MDANSE/Tests/UnitTests/AtomSelector/test_all_selector.py index 51c798b98d..22eed92b8d 100644 --- a/MDANSE/Tests/UnitTests/AtomSelector/test_all_selector.py +++ b/MDANSE/Tests/UnitTests/AtomSelector/test_all_selector.py @@ -5,7 +5,7 @@ traj_2vb1 = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "2vb1.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "2vb1.mdt" ) diff --git a/MDANSE/Tests/UnitTests/AtomSelector/test_atom_selectors.py b/MDANSE/Tests/UnitTests/AtomSelector/test_atom_selectors.py index 0269df8528..6903bbd3a0 100644 --- a/MDANSE/Tests/UnitTests/AtomSelector/test_atom_selectors.py +++ b/MDANSE/Tests/UnitTests/AtomSelector/test_atom_selectors.py @@ -10,7 +10,7 @@ traj_2vb1 = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "2vb1.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "2vb1.mdt" ) diff --git a/MDANSE/Tests/UnitTests/AtomSelector/test_group_selectors.py b/MDANSE/Tests/UnitTests/AtomSelector/test_group_selectors.py index 9fb9e9382e..322697cc32 100644 --- a/MDANSE/Tests/UnitTests/AtomSelector/test_group_selectors.py +++ b/MDANSE/Tests/UnitTests/AtomSelector/test_group_selectors.py @@ -12,10 +12,10 @@ traj_2vb1 = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "2vb1.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "2vb1.mdt" ) traj_1gip = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "1gip.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "1gip.mdt" ) diff --git a/MDANSE/Tests/UnitTests/AtomSelector/test_molecule_selectors.py b/MDANSE/Tests/UnitTests/AtomSelector/test_molecule_selectors.py index 786c41d894..d540fa6fd0 100644 --- a/MDANSE/Tests/UnitTests/AtomSelector/test_molecule_selectors.py +++ b/MDANSE/Tests/UnitTests/AtomSelector/test_molecule_selectors.py @@ -5,7 +5,7 @@ traj_2vb1 = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "2vb1.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "2vb1.mdt" ) diff --git a/MDANSE/Tests/UnitTests/AtomSelector/test_selector.py b/MDANSE/Tests/UnitTests/AtomSelector/test_selector.py index 10b09938d8..a853a036f3 100644 --- a/MDANSE/Tests/UnitTests/AtomSelector/test_selector.py +++ b/MDANSE/Tests/UnitTests/AtomSelector/test_selector.py @@ -5,7 +5,7 @@ traj_2vb1 = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "2vb1.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "2vb1.mdt" ) diff --git a/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py b/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py index cb0ee78868..60e92cc42a 100644 --- a/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py +++ b/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py @@ -5,7 +5,7 @@ traj_2vb1 = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "2vb1.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "2vb1.mdt" ) diff --git a/MDANSE/Tests/UnitTests/Data/1gip.mdt b/MDANSE/Tests/UnitTests/Converted/1gip.mdt similarity index 100% rename from MDANSE/Tests/UnitTests/Data/1gip.mdt rename to MDANSE/Tests/UnitTests/Converted/1gip.mdt diff --git a/MDANSE/Tests/UnitTests/Data/2vb1.mdt b/MDANSE/Tests/UnitTests/Converted/2vb1.mdt similarity index 100% rename from MDANSE/Tests/UnitTests/Data/2vb1.mdt rename to MDANSE/Tests/UnitTests/Converted/2vb1.mdt diff --git a/MDANSE/Tests/UnitTests/Data/Ar_mdmc_h5md.h5 b/MDANSE/Tests/UnitTests/Converted/Ar_mdmc_h5md.h5 similarity index 100% rename from MDANSE/Tests/UnitTests/Data/Ar_mdmc_h5md.h5 rename to MDANSE/Tests/UnitTests/Converted/Ar_mdmc_h5md.h5 diff --git a/MDANSE/Tests/UnitTests/Converted/ase.mdt b/MDANSE/Tests/UnitTests/Converted/ase.mdt new file mode 100644 index 0000000000..43de7ca961 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/ase.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/ase_xyz.mdt b/MDANSE/Tests/UnitTests/Converted/ase_xyz.mdt new file mode 100644 index 0000000000..90ac8cc269 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/ase_xyz.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/castep.mdt b/MDANSE/Tests/UnitTests/Converted/castep.mdt new file mode 100644 index 0000000000..d66abf25f8 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/castep.mdt differ diff --git a/MDANSE/Tests/UnitTests/Data/co2gas_md3.mdt b/MDANSE/Tests/UnitTests/Converted/co2gas_md3.mdt similarity index 100% rename from MDANSE/Tests/UnitTests/Data/co2gas_md3.mdt rename to MDANSE/Tests/UnitTests/Converted/co2gas_md3.mdt diff --git a/MDANSE/Tests/UnitTests/Data/com_trajectory.mdt b/MDANSE/Tests/UnitTests/Converted/com_trajectory.mdt similarity index 100% rename from MDANSE/Tests/UnitTests/Data/com_trajectory.mdt rename to MDANSE/Tests/UnitTests/Converted/com_trajectory.mdt diff --git a/MDANSE/Tests/UnitTests/Converted/cp2k.mdt b/MDANSE/Tests/UnitTests/Converted/cp2k.mdt new file mode 100644 index 0000000000..2ef0b6f0d9 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/cp2k.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/cp2k_velocity.mdt b/MDANSE/Tests/UnitTests/Converted/cp2k_velocity.mdt new file mode 100644 index 0000000000..352c7ab9bd Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/cp2k_velocity.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/dftb.mdt b/MDANSE/Tests/UnitTests/Converted/dftb.mdt new file mode 100644 index 0000000000..d57c2b34ce Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/dftb.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/discover.mdt b/MDANSE/Tests/UnitTests/Converted/discover.mdt new file mode 100644 index 0000000000..bef310b150 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/discover.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/dlp_v2.mdt b/MDANSE/Tests/UnitTests/Converted/dlp_v2.mdt new file mode 100644 index 0000000000..6129870d09 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/dlp_v2.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/dlp_v4.mdt b/MDANSE/Tests/UnitTests/Converted/dlp_v4.mdt new file mode 100644 index 0000000000..df59a52682 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/dlp_v4.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/dlp_with_grad.mdt b/MDANSE/Tests/UnitTests/Converted/dlp_with_grad.mdt new file mode 100644 index 0000000000..62436bec8d Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/dlp_with_grad.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/forcite.mdt b/MDANSE/Tests/UnitTests/Converted/forcite.mdt new file mode 100644 index 0000000000..2e15315e4d Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/forcite.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/hem_cam.mdt b/MDANSE/Tests/UnitTests/Converted/hem_cam.mdt new file mode 100644 index 0000000000..91172073ca Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/hem_cam.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps.mdt b/MDANSE/Tests/UnitTests/Converted/lammps.mdt new file mode 100644 index 0000000000..cd78bf8090 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_cgs.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_cgs.mdt new file mode 100644 index 0000000000..5dc2367271 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_cgs.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_electron.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_electron.mdt new file mode 100644 index 0000000000..94a74ac9a4 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_electron.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_metal.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_metal.mdt new file mode 100644 index 0000000000..231e285c82 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_metal.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_micro.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_micro.mdt new file mode 100644 index 0000000000..70efd2732e Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_micro.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_moly_custom.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_moly_custom.mdt new file mode 100644 index 0000000000..0686f58f03 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_moly_custom.mdt differ diff --git a/MDANSE/Tests/UnitTests/Data/lammps_moly_h5md.h5 b/MDANSE/Tests/UnitTests/Converted/lammps_moly_h5md.h5 similarity index 100% rename from MDANSE/Tests/UnitTests/Data/lammps_moly_h5md.h5 rename to MDANSE/Tests/UnitTests/Converted/lammps_moly_h5md.h5 diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_moly_h5md.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_moly_h5md.mdt new file mode 100644 index 0000000000..a276afc456 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_moly_h5md.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_moly_xyz.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_moly_xyz.mdt new file mode 100644 index 0000000000..7c8935b0ee Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_moly_xyz.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_nano.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_nano.mdt new file mode 100644 index 0000000000..981606bc42 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_nano.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_real.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_real.mdt new file mode 100644 index 0000000000..88a8939b7c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_real.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/lammps_si.mdt b/MDANSE/Tests/UnitTests/Converted/lammps_si.mdt new file mode 100644 index 0000000000..837dda184f Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/lammps_si.mdt differ diff --git a/MDANSE/Tests/UnitTests/Converted/md.mdt b/MDANSE/Tests/UnitTests/Converted/md.mdt new file mode 100644 index 0000000000..d9359ce9ff Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/md.mdt differ diff --git a/MDANSE/Tests/UnitTests/Data/mdmc_h5md.h5 b/MDANSE/Tests/UnitTests/Converted/mdmc_h5md.h5 similarity index 100% rename from MDANSE/Tests/UnitTests/Data/mdmc_h5md.h5 rename to MDANSE/Tests/UnitTests/Converted/mdmc_h5md.h5 diff --git a/MDANSE/Tests/UnitTests/Converted/namd.mdt b/MDANSE/Tests/UnitTests/Converted/namd.mdt new file mode 100644 index 0000000000..c36cfe4826 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/namd.mdt differ diff --git a/MDANSE/Tests/UnitTests/Data/named_molecules.mdt b/MDANSE/Tests/UnitTests/Converted/named_molecules.mdt similarity index 100% rename from MDANSE/Tests/UnitTests/Data/named_molecules.mdt rename to MDANSE/Tests/UnitTests/Converted/named_molecules.mdt diff --git a/MDANSE/Tests/UnitTests/Data/short_trajectory_after_changes.mdt b/MDANSE/Tests/UnitTests/Converted/short_trajectory_after_changes.mdt similarity index 100% rename from MDANSE/Tests/UnitTests/Data/short_trajectory_after_changes.mdt rename to MDANSE/Tests/UnitTests/Converted/short_trajectory_after_changes.mdt diff --git a/MDANSE/Tests/UnitTests/Data/trajectory_no_unit_cell.mdt b/MDANSE/Tests/UnitTests/Converted/trajectory_no_unit_cell.mdt similarity index 100% rename from MDANSE/Tests/UnitTests/Data/trajectory_no_unit_cell.mdt rename to MDANSE/Tests/UnitTests/Converted/trajectory_no_unit_cell.mdt diff --git a/MDANSE/Tests/UnitTests/Converted/vasp.mdt b/MDANSE/Tests/UnitTests/Converted/vasp.mdt new file mode 100644 index 0000000000..d7095b8248 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Converted/vasp.mdt differ diff --git a/MDANSE/Tests/UnitTests/Results/basic_meansquare.mda b/MDANSE/Tests/UnitTests/Results/basic_meansquare.mda new file mode 100644 index 0000000000..3628c0d404 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/basic_meansquare.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/ccf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/ccf_com_traj.mda new file mode 100644 index 0000000000..58289c6444 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/ccf_com_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/ccf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/ccf_mdmc_traj.mda new file mode 100644 index 0000000000..7dd963144d Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/ccf_mdmc_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/ccf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/ccf_short_traj.mda new file mode 100644 index 0000000000..72ecd83cfb Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/ccf_short_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dacf_analysis.mda b/MDANSE/Tests/UnitTests/Results/dacf_analysis.mda new file mode 100644 index 0000000000..f9e8fcea75 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dacf_analysis.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dcsf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/dcsf_com_traj.mda new file mode 100644 index 0000000000..407bab4024 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dcsf_com_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dcsf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/dcsf_mdmc_traj.mda new file mode 100644 index 0000000000..1d2cfdbab4 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dcsf_mdmc_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dcsf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/dcsf_short_traj.mda new file mode 100644 index 0000000000..3a739ce362 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dcsf_short_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/density_com_traj.mda b/MDANSE/Tests/UnitTests/Results/density_com_traj.mda new file mode 100644 index 0000000000..1ab65b1619 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/density_com_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/density_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/density_mdmc_traj.mda new file mode 100644 index 0000000000..be5ac6244b Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/density_mdmc_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/density_short_traj.mda b/MDANSE/Tests/UnitTests/Results/density_short_traj.mda new file mode 100644 index 0000000000..1a41ef202a Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/density_short_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/disf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/disf_com_traj.mda new file mode 100644 index 0000000000..788e682c4c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/disf_com_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/disf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/disf_mdmc_traj.mda new file mode 100644 index 0000000000..aafa960f99 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/disf_mdmc_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/disf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/disf_short_traj.mda new file mode 100644 index 0000000000..19825325c4 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/disf_short_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dos_Gaussian.mda b/MDANSE/Tests/UnitTests/Results/dos_Gaussian.mda new file mode 100644 index 0000000000..94b0ff7e7d Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dos_Gaussian.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dos_Ideal.mda b/MDANSE/Tests/UnitTests/Results/dos_Ideal.mda new file mode 100644 index 0000000000..ff222ae63b Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dos_Ideal.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dos_Lorentzian.mda b/MDANSE/Tests/UnitTests/Results/dos_Lorentzian.mda new file mode 100644 index 0000000000..302f7384ca Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dos_Lorentzian.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dos_PseudoVoigt.mda b/MDANSE/Tests/UnitTests/Results/dos_PseudoVoigt.mda new file mode 100644 index 0000000000..8a8b0d98dc Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dos_PseudoVoigt.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dos_Square.mda b/MDANSE/Tests/UnitTests/Results/dos_Square.mda new file mode 100644 index 0000000000..9e96fd15e8 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dos_Square.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dos_Triangular.mda b/MDANSE/Tests/UnitTests/Results/dos_Triangular.mda new file mode 100644 index 0000000000..a5e3ab9d36 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dos_Triangular.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_DensityOfStates.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_DensityOfStates.mda new file mode 100644 index 0000000000..da682a3251 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_DensityOfStates.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_MeanSquareDisplacement.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_MeanSquareDisplacement.mda new file mode 100644 index 0000000000..1c9031ae04 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_MeanSquareDisplacement.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_PositionAutoCorrelationFunction.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_PositionAutoCorrelationFunction.mda new file mode 100644 index 0000000000..ee9c2e4859 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_PositionAutoCorrelationFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_PositionPowerSpectrum.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_PositionPowerSpectrum.mda new file mode 100644 index 0000000000..8041264639 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_PositionPowerSpectrum.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionDistinct.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionDistinct.mda new file mode 100644 index 0000000000..4d5a8024e9 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionDistinct.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionSelf.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionSelf.mda new file mode 100644 index 0000000000..bf42fa6079 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VanHoveFunctionSelf.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VelocityAutoCorrelationFunction.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VelocityAutoCorrelationFunction.mda new file mode 100644 index 0000000000..3c23b2c894 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_com_traj_VelocityAutoCorrelationFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_DensityOfStates.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_DensityOfStates.mda new file mode 100644 index 0000000000..7c62f4123e Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_DensityOfStates.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_MeanSquareDisplacement.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_MeanSquareDisplacement.mda new file mode 100644 index 0000000000..0048ef3054 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_MeanSquareDisplacement.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_PositionAutoCorrelationFunction.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_PositionAutoCorrelationFunction.mda new file mode 100644 index 0000000000..bd5e0c8c4f Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_PositionAutoCorrelationFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_PositionPowerSpectrum.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_PositionPowerSpectrum.mda new file mode 100644 index 0000000000..cf8acd62c1 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_PositionPowerSpectrum.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionDistinct.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionDistinct.mda new file mode 100644 index 0000000000..6f1e29662d Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionDistinct.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionSelf.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionSelf.mda new file mode 100644 index 0000000000..3c34813f28 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VanHoveFunctionSelf.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VelocityAutoCorrelationFunction.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VelocityAutoCorrelationFunction.mda new file mode 100644 index 0000000000..c27b23a4d5 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_mdmc_traj_VelocityAutoCorrelationFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_DensityOfStates.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_DensityOfStates.mda new file mode 100644 index 0000000000..fae9be0b61 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_DensityOfStates.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_MeanSquareDisplacement.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_MeanSquareDisplacement.mda new file mode 100644 index 0000000000..931934f7ac Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_MeanSquareDisplacement.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_PositionAutoCorrelationFunction.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_PositionAutoCorrelationFunction.mda new file mode 100644 index 0000000000..eac2936727 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_PositionAutoCorrelationFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_PositionPowerSpectrum.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_PositionPowerSpectrum.mda new file mode 100644 index 0000000000..6af1da2f90 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_PositionPowerSpectrum.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionDistinct.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionDistinct.mda new file mode 100644 index 0000000000..1aaea82d2c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionDistinct.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionSelf.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionSelf.mda new file mode 100644 index 0000000000..d90c28cfbd Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VanHoveFunctionSelf.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VelocityAutoCorrelationFunction.mda b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VelocityAutoCorrelationFunction.mda new file mode 100644 index 0000000000..c2f5b7f0fa Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/dynamics_analysis_short_traj_VelocityAutoCorrelationFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/eisf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/eisf_com_traj.mda new file mode 100644 index 0000000000..dba23e1f3f Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/eisf_com_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/eisf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/eisf_mdmc_traj.mda new file mode 100644 index 0000000000..e5714200be Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/eisf_mdmc_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/eisf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/eisf_short_traj.mda new file mode 100644 index 0000000000..c0fd8207d0 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/eisf_short_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/gdisf_com_traj.mda b/MDANSE/Tests/UnitTests/Results/gdisf_com_traj.mda new file mode 100644 index 0000000000..65d07e85b9 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/gdisf_com_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/gdisf_mdmc_traj.mda b/MDANSE/Tests/UnitTests/Results/gdisf_mdmc_traj.mda new file mode 100644 index 0000000000..fddd2241c5 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/gdisf_mdmc_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/gdisf_short_traj.mda b/MDANSE/Tests/UnitTests/Results/gdisf_short_traj.mda new file mode 100644 index 0000000000..8a1f66cfd7 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/gdisf_short_traj.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/h5md_temperature_1.mda b/MDANSE/Tests/UnitTests/Results/h5md_temperature_1.mda new file mode 100644 index 0000000000..f0152548da Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/h5md_temperature_1.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/h5md_temperature_3.mda b/MDANSE/Tests/UnitTests/Results/h5md_temperature_3.mda new file mode 100644 index 0000000000..1921d14f0d Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/h5md_temperature_3.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/ir_analysis.mda b/MDANSE/Tests/UnitTests/Results/ir_analysis.mda new file mode 100644 index 0000000000..5b084994b5 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/ir_analysis.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_1.mda b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_1.mda new file mode 100644 index 0000000000..efd06ea2db Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_1.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_1_normalised.mda b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_1_normalised.mda new file mode 100644 index 0000000000..3cd162d96f Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_1_normalised.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_2.mda b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_2.mda new file mode 100644 index 0000000000..7fe6f3245a Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_2.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_2_normalised.mda b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_2_normalised.mda new file mode 100644 index 0000000000..61fa1f635d Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_2_normalised.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_3.mda b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_3.mda new file mode 100644 index 0000000000..30f1a53b56 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_3.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_3_normalised.mda b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_3_normalised.mda new file mode 100644 index 0000000000..3304b286fe Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/mock_traj_vacf_3_normalised.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/pps.mda b/MDANSE/Tests/UnitTests/Results/pps.mda new file mode 100644 index 0000000000..4ad2af25c8 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/pps.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_AngularCorrelation.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_AngularCorrelation.mda new file mode 100644 index 0000000000..f3b2c28466 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_AngularCorrelation.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_AreaPerMolecule.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_AreaPerMolecule.mda new file mode 100644 index 0000000000..3158baf476 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_AreaPerMolecule.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_CoordinationNumber.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_CoordinationNumber.mda new file mode 100644 index 0000000000..988bfcfde4 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_CoordinationNumber.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_DensityProfile.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_DensityProfile.mda new file mode 100644 index 0000000000..135f5b0f76 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_DensityProfile.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_Eccentricity.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_Eccentricity.mda new file mode 100644 index 0000000000..0818d20936 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_Eccentricity.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_MolecularTrace.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_MolecularTrace.mda new file mode 100644 index 0000000000..68b7b5744c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_MolecularTrace.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_PairDistributionFunction.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_PairDistributionFunction.mda new file mode 100644 index 0000000000..73c6003f04 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_PairDistributionFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RadiusOfGyration.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RadiusOfGyration.mda new file mode 100644 index 0000000000..45364cc815 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RadiusOfGyration.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RootMeanSquareDeviation.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RootMeanSquareDeviation.mda new file mode 100644 index 0000000000..7eae2e718f Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RootMeanSquareDeviation.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RootMeanSquareFluctuation.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RootMeanSquareFluctuation.mda new file mode 100644 index 0000000000..692cfc86d8 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_RootMeanSquareFluctuation.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_SolventAccessibleSurface.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_SolventAccessibleSurface.mda new file mode 100644 index 0000000000..d83b99e0b9 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_SolventAccessibleSurface.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_StaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_StaticStructureFactor.mda new file mode 100644 index 0000000000..59cf3c523c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_StaticStructureFactor.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_Voronoi.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_Voronoi.mda new file mode 100644 index 0000000000..984fae5ec3 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_Voronoi.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_XRayStaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_XRayStaticStructureFactor.mda new file mode 100644 index 0000000000..3d6063248c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_com_traj_XRayStaticStructureFactor.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_CoordinationNumber.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_CoordinationNumber.mda new file mode 100644 index 0000000000..31bf20c341 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_CoordinationNumber.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_DensityProfile.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_DensityProfile.mda new file mode 100644 index 0000000000..adfdd8705e Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_DensityProfile.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_Eccentricity.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_Eccentricity.mda new file mode 100644 index 0000000000..0971fccd4c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_Eccentricity.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_MolecularTrace.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_MolecularTrace.mda new file mode 100644 index 0000000000..424bfc1130 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_MolecularTrace.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_PairDistributionFunction.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_PairDistributionFunction.mda new file mode 100644 index 0000000000..8408fff5e3 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_PairDistributionFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RadiusOfGyration.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RadiusOfGyration.mda new file mode 100644 index 0000000000..599e9fff2b Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RadiusOfGyration.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RootMeanSquareDeviation.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RootMeanSquareDeviation.mda new file mode 100644 index 0000000000..9d211d730f Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RootMeanSquareDeviation.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RootMeanSquareFluctuation.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RootMeanSquareFluctuation.mda new file mode 100644 index 0000000000..8d28d577b1 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_RootMeanSquareFluctuation.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_SolventAccessibleSurface.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_SolventAccessibleSurface.mda new file mode 100644 index 0000000000..d466e5de0f Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_SolventAccessibleSurface.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_StaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_StaticStructureFactor.mda new file mode 100644 index 0000000000..e0bac78dc5 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_StaticStructureFactor.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_Voronoi.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_Voronoi.mda new file mode 100644 index 0000000000..77f8ada8cf Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_Voronoi.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_XRayStaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_XRayStaticStructureFactor.mda new file mode 100644 index 0000000000..2219290cfd Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_mdmc_traj_XRayStaticStructureFactor.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_CoordinationNumber.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_CoordinationNumber.mda new file mode 100644 index 0000000000..65ef8cbe54 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_CoordinationNumber.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_DensityProfile.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_DensityProfile.mda new file mode 100644 index 0000000000..fab5f4c9d0 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_DensityProfile.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_Eccentricity.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_Eccentricity.mda new file mode 100644 index 0000000000..e0a6d8de8b Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_Eccentricity.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_MolecularTrace.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_MolecularTrace.mda new file mode 100644 index 0000000000..77bbcb40f6 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_MolecularTrace.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_PairDistributionFunction.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_PairDistributionFunction.mda new file mode 100644 index 0000000000..2c69a2dae2 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_PairDistributionFunction.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RadiusOfGyration.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RadiusOfGyration.mda new file mode 100644 index 0000000000..76f0c9c590 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RadiusOfGyration.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RootMeanSquareDeviation.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RootMeanSquareDeviation.mda new file mode 100644 index 0000000000..35e29bc041 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RootMeanSquareDeviation.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RootMeanSquareFluctuation.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RootMeanSquareFluctuation.mda new file mode 100644 index 0000000000..b3979de86c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_RootMeanSquareFluctuation.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_SolventAccessibleSurface.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_SolventAccessibleSurface.mda new file mode 100644 index 0000000000..16fab80eb1 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_SolventAccessibleSurface.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_StaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_StaticStructureFactor.mda new file mode 100644 index 0000000000..1f817246b9 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_StaticStructureFactor.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_Voronoi.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_Voronoi.mda new file mode 100644 index 0000000000..930fdcb4fa Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_Voronoi.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_XRayStaticStructureFactor.mda b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_XRayStaticStructureFactor.mda new file mode 100644 index 0000000000..bfa0d22aa6 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/structure_analysis_short_traj_XRayStaticStructureFactor.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/temperature_com_traj_1.mda b/MDANSE/Tests/UnitTests/Results/temperature_com_traj_1.mda new file mode 100644 index 0000000000..d56b330744 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/temperature_com_traj_1.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/temperature_com_traj_3.mda b/MDANSE/Tests/UnitTests/Results/temperature_com_traj_3.mda new file mode 100644 index 0000000000..c8c8d8cdb2 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/temperature_com_traj_3.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/temperature_mdmc_traj_1.mda b/MDANSE/Tests/UnitTests/Results/temperature_mdmc_traj_1.mda new file mode 100644 index 0000000000..804f000551 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/temperature_mdmc_traj_1.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/temperature_mdmc_traj_3.mda b/MDANSE/Tests/UnitTests/Results/temperature_mdmc_traj_3.mda new file mode 100644 index 0000000000..48c1e09af4 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/temperature_mdmc_traj_3.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/temperature_short_traj_1.mda b/MDANSE/Tests/UnitTests/Results/temperature_short_traj_1.mda new file mode 100644 index 0000000000..294a336a1c Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/temperature_short_traj_1.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/temperature_short_traj_3.mda b/MDANSE/Tests/UnitTests/Results/temperature_short_traj_3.mda new file mode 100644 index 0000000000..4decef3ff3 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/temperature_short_traj_3.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/vacf_1.mda b/MDANSE/Tests/UnitTests/Results/vacf_1.mda new file mode 100644 index 0000000000..8717acfbd8 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/vacf_1.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/vacf_1_normalised.mda b/MDANSE/Tests/UnitTests/Results/vacf_1_normalised.mda new file mode 100644 index 0000000000..cf608c9a1e Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/vacf_1_normalised.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/vacf_2.mda b/MDANSE/Tests/UnitTests/Results/vacf_2.mda new file mode 100644 index 0000000000..03f7d53d52 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/vacf_2.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/vacf_2_normalised.mda b/MDANSE/Tests/UnitTests/Results/vacf_2_normalised.mda new file mode 100644 index 0000000000..73418666ac Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/vacf_2_normalised.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/vacf_3.mda b/MDANSE/Tests/UnitTests/Results/vacf_3.mda new file mode 100644 index 0000000000..438f0c63b3 Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/vacf_3.mda differ diff --git a/MDANSE/Tests/UnitTests/Results/vacf_3_normalised.mda b/MDANSE/Tests/UnitTests/Results/vacf_3_normalised.mda new file mode 100644 index 0000000000..af336e9d7a Binary files /dev/null and b/MDANSE/Tests/UnitTests/Results/vacf_3_normalised.mda differ diff --git a/MDANSE/Tests/UnitTests/TrajectoryEditor/test_editor.py b/MDANSE/Tests/UnitTests/TrajectoryEditor/test_editor.py index 4d17a48b18..dfa27ed056 100644 --- a/MDANSE/Tests/UnitTests/TrajectoryEditor/test_editor.py +++ b/MDANSE/Tests/UnitTests/TrajectoryEditor/test_editor.py @@ -1,21 +1,19 @@ -import sys import tempfile import os from os import path -import pytest import numpy as np import h5py + from MDANSE.MolecularDynamics.Configuration import remove_jumps from MDANSE.Framework.InputData.HDFTrajectoryInputData import HDFTrajectoryInputData from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", - "Data", + "Converted", "trajectory_no_unit_cell.mdt", ) @@ -67,6 +65,11 @@ def test_editor_null(): ) original.close() changed.close() + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(short_traj) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + os.remove(temp_name + ".mdt") os.remove(temp_name + ".log") @@ -94,6 +97,11 @@ def test_editor_frames(): ) original.close() changed.close() + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(short_traj) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"][0:501:10]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"][0:501:10]) + os.remove(temp_name + ".mdt") os.remove(temp_name + ".log") @@ -122,6 +130,11 @@ def test_editor_atoms(): assert changed.trajectory.chemical_system.number_of_atoms > 0 original.close() changed.close() + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(short_traj) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"][:,6:20,:]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + os.remove(temp_name + ".mdt") os.remove(temp_name + ".log") @@ -152,6 +165,11 @@ def test_editor_unit_cell(): ) original.close() changed.close() + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(short_traj) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + os.remove(temp_name + ".mdt") os.remove(temp_name + ".log") @@ -186,6 +204,11 @@ def test_editor_transmute(): assert "B" in new_symbols original.close() changed.close() + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(short_traj) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + os.remove(temp_name + ".mdt") os.remove(temp_name + ".log") @@ -213,6 +236,11 @@ def test_editor_set_charges(): assert abs(np.sum(changed.trajectory.charges(0)) - 0.2) < 1e-5 original.close() changed.close() + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(short_traj) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + os.remove(temp_name + ".mdt") os.remove(temp_name + ".log") @@ -237,5 +265,10 @@ def test_editor_find_molecules(): assert len(changed.trajectory.chemical_system.unique_molecules()) > 0 original.close() changed.close() + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(short_traj) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + os.remove(temp_name + ".mdt") os.remove(temp_name + ".log") diff --git a/MDANSE/Tests/UnitTests/molecules/test_chemistry.py b/MDANSE/Tests/UnitTests/molecules/test_chemistry.py index c9938c971f..a3df2918a8 100644 --- a/MDANSE/Tests/UnitTests/molecules/test_chemistry.py +++ b/MDANSE/Tests/UnitTests/molecules/test_chemistry.py @@ -4,7 +4,7 @@ short_traj = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "co2gas_md3.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "co2gas_md3.mdt" ) diff --git a/MDANSE/Tests/UnitTests/molecules/test_connectivity.py b/MDANSE/Tests/UnitTests/molecules/test_connectivity.py index 72e78fb88d..2497c6a8a5 100644 --- a/MDANSE/Tests/UnitTests/molecules/test_connectivity.py +++ b/MDANSE/Tests/UnitTests/molecules/test_connectivity.py @@ -6,7 +6,7 @@ short_traj = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "..", "Data", "co2gas_md3.mdt" + os.path.dirname(os.path.realpath(__file__)), "..", "Converted", "co2gas_md3.mdt" ) diff --git a/MDANSE/Tests/UnitTests/test_converter.py b/MDANSE/Tests/UnitTests/test_converter.py index 06fc085b26..d12b386aba 100644 --- a/MDANSE/Tests/UnitTests/test_converter.py +++ b/MDANSE/Tests/UnitTests/test_converter.py @@ -1,6 +1,10 @@ import os import tempfile + import pytest +import numpy as np +import h5py + from MDANSE.Framework.Converters.Converter import Converter from MDANSE.Framework.Jobs.IJob import JobError from MDANSE.Framework.Configurators.HDFTrajectoryConfigurator import ( @@ -9,13 +13,17 @@ file_wd = os.path.dirname(os.path.realpath(__file__)) +conv_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "Converted", +) lammps_config = os.path.join(file_wd, "Data", "lammps_test.config") lammps_lammps = os.path.join(file_wd, "Data", "lammps_test.lammps") lammps_moly = os.path.join(file_wd, "Data", "structure_moly.lammps") lammps_custom = os.path.join(file_wd, "Data", "lammps_moly_custom.txt") lammps_xyz = os.path.join(file_wd, "Data", "lammps_moly_xyz.txt") -lammps_h5md = os.path.join(file_wd, "Data", "lammps_moly_h5md.h5") +lammps_h5md = os.path.join(file_wd, "Converted", "lammps_moly_h5md.h5") vasp_xdatcar = os.path.join(file_wd, "Data", "XDATCAR_version5") discover_his = os.path.join(file_wd, "Data", "sushi.his") discover_xtd = os.path.join(file_wd, "Data", "sushi.xtd") @@ -62,6 +70,13 @@ def test_lammps_mdt_conversion_file_exists_and_loads_up_successfully(compression traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "lammps.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + np.testing.assert_array_almost_equal(actual["/charge"], desired["/charge"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -94,6 +109,13 @@ def test_lammps_mdt_conversion_unit_system(unit_system): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, f"lammps_{unit_system}.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + np.testing.assert_array_almost_equal(actual["/charge"], desired["/charge"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -128,6 +150,12 @@ def test_lammps_mdt_conversion_trajectory_format(trajectory_file, trajectory_for traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, f"lammps_moly_{trajectory_format}.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -171,6 +199,12 @@ def test_vasp_mdt_conversion_file_exists_and_loads_up_successfully(compression): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "vasp.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -198,6 +232,14 @@ def test_discover_mdt_conversion_file_exists_and_loads_up_successfully(compressi traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "discover.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + np.testing.assert_array_almost_equal(actual["/charge"], desired["/charge"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -225,6 +267,18 @@ def test_cp2k_mdt_conversion_file_exists_and_loads_up_successfully(velocity): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + if velocity: + result_file = os.path.join(conv_dir, "cp2k_velocity.mdt") + else: + result_file = os.path.join(conv_dir, "cp2k.mdt") + + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + if velocity: + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -253,6 +307,12 @@ def test_charmm_mdt_conversion_file_exists_and_loads_up_successfully(compression traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "hem_cam.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -282,6 +342,12 @@ def test_ase_mdt_conversion_file_exists_and_loads_up_successfully(compression): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "ase.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -370,6 +436,13 @@ def test_xyz_mdt_conversion_file_exists_and_loads_up_successfully(compression): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "ase_xyz.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -399,6 +472,13 @@ def test_dlp_mdt_conversion_file_exists_and_loads_up_successfully_with_dlp_versi traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "dlp_v2.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + np.testing.assert_array_almost_equal(actual["/charge"], desired["/charge"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -428,6 +508,12 @@ def test_dlp_mdt_conversion_file_exists_and_loads_up_successfully_with_dlp_versi traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "dlp_v4.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -452,12 +538,19 @@ def test_dlp_mdt_conversion_file_exists_and_loads_up_successfully_with_dlp_with_ dl_poly = Converter.create("DL_POLY") dl_poly.run(parameters, status=True) - # check trajectory has velocity and gradient data - traj = HDFTrajectoryConfigurator("trajectory") - traj.configure(temp_name + ".mdt") - assert traj["instance"].has_variable("velocities") - assert traj["instance"].has_variable("gradients") - traj["instance"].close() + traj_conf = HDFTrajectoryConfigurator("trajectory") + traj_conf.configure(temp_name + ".mdt") + traj_conf.get_information() + traj_conf["hdf_trajectory"].close() + + result_file = os.path.join(conv_dir, "dlp_with_grad.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/configuration/gradients"], desired["/configuration/gradients"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + np.testing.assert_array_almost_equal(actual["/charge"], desired["/charge"]) assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") @@ -488,8 +581,14 @@ def test_namd_mdt_conversion_file_exists_and_loads_up_successfully_and_chemical_ hdftradj = HDFTrajectoryConfigurator("trajectory") hdftradj.configure(temp_name + ".mdt") assert hdftradj["instance"].chemical_system.number_of_atoms == 12397 - hdftradj["instance"].close() + + result_file = os.path.join(conv_dir, "namd.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + os.remove(temp_name + ".mdt") @@ -512,6 +611,14 @@ def test_castep_md_conversion_file_exists_and_loads_up_successfully(compression) traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "castep.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/configuration/gradients"], desired["/configuration/gradients"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -540,6 +647,14 @@ def test_dftb_conversion_file_exists_and_loads_up_successfully(compression): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "dftb.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + np.testing.assert_array_almost_equal(actual["/charge"], desired["/charge"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -568,6 +683,14 @@ def test_forcite_conversion_file_exists_and_loads_up_successfully(compression): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "forcite.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/configuration/velocities"], desired["/configuration/velocities"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + np.testing.assert_array_almost_equal(actual["/charge"], desired["/charge"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -595,6 +718,12 @@ def test_gromacs_conversion_file_exists_and_loads_up_successfully(compression): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "md.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -625,6 +754,12 @@ def test_mdanalysis_conversion_file_exists_and_loads_up_successfully(compression os.remove(os.path.join(file_wd, "Data", ".md.xtc_offsets.lock")) os.remove(os.path.join(file_wd, "Data", ".md.xtc_offsets.npz")) + result_file = os.path.join(conv_dir, "md.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") @@ -641,6 +776,7 @@ def test_mdtraj_conversion_file_exists_and_loads_up_successfully(compression): "topology_file": hem_cam_pdb, "coordinate_files": [hem_cam_dcd], "output_files": (temp_name, 64, 128, compression, "INFO"), + "time_step": 1.0, } mdanalysis = Converter.create("MDTraj") @@ -651,6 +787,12 @@ def test_mdtraj_conversion_file_exists_and_loads_up_successfully(compression): traj_conf.get_information() traj_conf["hdf_trajectory"].close() + result_file = os.path.join(conv_dir, "hem_cam.mdt") + with h5py.File(temp_name + ".mdt") as actual, h5py.File(result_file) as desired: + np.testing.assert_array_almost_equal(actual["/configuration/coordinates"], desired["/configuration/coordinates"]) + np.testing.assert_array_almost_equal(actual["/unit_cell"], desired["/unit_cell"]) + np.testing.assert_array_almost_equal(actual["/time"], desired["/time"]) + assert os.path.exists(temp_name + ".mdt") assert os.path.isfile(temp_name + ".mdt") os.remove(temp_name + ".mdt") diff --git a/MDANSE/Tests/UnitTests/test_text_output.py b/MDANSE/Tests/UnitTests/test_text_output.py index 2736481f5f..2da1366981 100644 --- a/MDANSE/Tests/UnitTests/test_text_output.py +++ b/MDANSE/Tests/UnitTests/test_text_output.py @@ -1,4 +1,3 @@ -import sys import tempfile import os from os import path @@ -8,10 +7,9 @@ from MDANSE.Framework.Jobs.IJob import IJob -sys.setrecursionlimit(100000) short_traj = os.path.join( os.path.dirname(os.path.realpath(__file__)), - "Data", + "Converted", "short_trajectory_after_changes.mdt", )