From 76e465ebe7c84717f6565eef2be8e755976d4c51 Mon Sep 17 00:00:00 2001 From: Maciej Bartkowiak Date: Fri, 19 Apr 2024 16:19:08 +0100 Subject: [PATCH 1/8] Run tests for different file formats and running modes --- .../Tests/UnitTests/Analysis/test_dynamics.py | 45 +++++++++++------- .../UnitTests/Analysis/test_structure.py | 47 ++++++++++++------- .../UnitTests/Analysis/test_thermodynamics.py | 16 +++++-- 3 files changed, 68 insertions(+), 40 deletions(-) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py index a6b12586df..0fdd01b2f6 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py @@ -84,23 +84,34 @@ def parameters(): return parameters -@pytest.mark.parametrize( - "job_type", - [ - # "AngularCorrelation", - # "GeneralAutoCorrelationFunction", - "DensityOfStates", - "MeanSquareDisplacement", - "VelocityAutoCorrelationFunction", - # "OrderParameter", - "PositionAutoCorrelationFunction", - ], -) -def test_dynamics_analysis(parameters, job_type): +total_list = [] + +for jt in [ + # "AngularCorrelation", + # "GeneralAutoCorrelationFunction", + "DensityOfStates", + "MeanSquareDisplacement", + "VelocityAutoCorrelationFunction", + # "OrderParameter", + "PositionAutoCorrelationFunction", +]: + for rm in [("single-core", 1), ("threadpool", 4), ("multicore", 4)]: + for of in ["MDAFormat", "TextFormat"]: + total_list.append((jt, rm, of)) + + +@pytest.mark.parametrize("job_type,running_mode,output_format", total_list) +def test_dynamics_analysis(parameters, job_type, running_mode, output_format): temp_name = tempfile.mktemp() - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["running_mode"] = running_mode + parameters["output_files"] = (temp_name, (output_format,)) job = IJob.create(job_type) job.run(parameters, status=True) - assert path.exists(temp_name + ".mda") - assert path.isfile(temp_name + ".mda") - os.remove(temp_name + ".mda") + if output_format == "MDAFormat": + assert path.exists(temp_name + ".mda") + assert path.isfile(temp_name + ".mda") + os.remove(temp_name + ".mda") + elif output_format == "TextFormat": + 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_structure.py b/MDANSE/Tests/UnitTests/Analysis/test_structure.py index 03d7b5d015..e3719c4c59 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_structure.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_structure.py @@ -51,24 +51,35 @@ def parameters(): return parameters -@pytest.mark.parametrize( - "job_type", - [ - "RadiusOfGyration", - "SolventAccessibleSurface", - "RootMeanSquareDeviation", - "RootMeanSquareFluctuation", - "DensityProfile", - "MolecularTrace", - "Voronoi", - "Eccentricity", - ], -) -def test_structure_analysis(parameters, job_type): +total_list = [] + +for jt in [ + "RadiusOfGyration", + "SolventAccessibleSurface", + "RootMeanSquareDeviation", + "RootMeanSquareFluctuation", + "DensityProfile", + "MolecularTrace", + "Voronoi", + "Eccentricity", +]: + for rm in [("single-core", 1), ("threadpool", 4), ("multicore", 4)]: + for of in ["MDAFormat", "TextFormat"]: + total_list.append((jt, rm, of)) + + +@pytest.mark.parametrize("job_type,running_mode,output_format", total_list) +def test_structure_analysis(parameters, job_type, running_mode, output_format): temp_name = tempfile.mktemp() - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["running_mode"] = running_mode + parameters["output_files"] = (temp_name, (output_format,)) job = IJob.create(job_type) job.run(parameters, status=True) - assert path.exists(temp_name + ".mda") - assert path.isfile(temp_name + ".mda") - os.remove(temp_name + ".mda") + if output_format == "MDAFormat": + assert path.exists(temp_name + ".mda") + assert path.isfile(temp_name + ".mda") + os.remove(temp_name + ".mda") + elif output_format == "TextFormat": + 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_thermodynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_thermodynamics.py index 4c3da4d57a..d41189cea8 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_thermodynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_thermodynamics.py @@ -60,15 +60,21 @@ def test_temperature_nonzero(trajectory, interp_order): assert np.all(temperature > 0.0) -def test_density(trajectory): +@pytest.mark.parametrize("output_format", ["MDAFormat", "TextFormat"]) +def test_density(trajectory, output_format): temp_name = tempfile.mktemp() parameters = {} parameters["frames"] = (0, 10, 1) - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, (output_format,)) parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj den = IJob.create("Density") den.run(parameters, status=True) - assert path.exists(temp_name + ".mda") - assert path.isfile(temp_name + ".mda") - os.remove(temp_name + ".mda") + if output_format == "MDAFormat": + assert path.exists(temp_name + ".mda") + assert path.isfile(temp_name + ".mda") + os.remove(temp_name + ".mda") + elif output_format == "TextFormat": + assert path.exists(temp_name + "_text.tar") + assert path.isfile(temp_name + "_text.tar") + os.remove(temp_name + "_text.tar") From a22ea56260a2a4ad45a9809d5f2e12c8b547426d Mon Sep 17 00:00:00 2001 From: Maciej Bartkowiak Date: Mon, 22 Apr 2024 12:09:03 +0100 Subject: [PATCH 2/8] Extend scattering test outputs --- .../UnitTests/Analysis/test_scattering.py | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py index db875f0007..2bc0130e72 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py @@ -83,7 +83,7 @@ def test_dcsf(trajectory, qvector_spherical_lattice): parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -93,6 +93,9 @@ def test_dcsf(trajectory, qvector_spherical_lattice): assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") 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") def test_disf(trajectory, qvector_spherical_lattice): @@ -102,7 +105,7 @@ def test_disf(trajectory, qvector_spherical_lattice): parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -112,6 +115,9 @@ def test_disf(trajectory, qvector_spherical_lattice): assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") 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") def test_eisf(trajectory, qvector_spherical_lattice): @@ -120,7 +126,7 @@ def test_eisf(trajectory, qvector_spherical_lattice): parameters["atom_selection"] = None parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -130,6 +136,9 @@ def test_eisf(trajectory, qvector_spherical_lattice): assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") 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") def test_gdisf(trajectory): @@ -139,7 +148,7 @@ def test_gdisf(trajectory): parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) parameters["q_shells"] = (2.0, 12.2, 2.0) parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -149,6 +158,9 @@ def test_gdisf(trajectory): assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") 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") def test_ndtsf(disf, dcsf, qvector_spherical_lattice): @@ -160,12 +172,15 @@ def test_ndtsf(disf, dcsf, qvector_spherical_lattice): parameters["dcsf_input_file"] = dcsf parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) ndtsf = IJob.create("NeutronDynamicTotalStructureFactor") ndtsf.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 + "_text.tar") + assert path.isfile(temp_name + "_text.tar") + os.remove(temp_name + "_text.tar") def test_ssfsf(disf): @@ -175,12 +190,16 @@ def test_ssfsf(disf): parameters["sample_inc"] = disf parameters["running_mode"] = ("single-core",) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) ndtsf = IJob.create("StructureFactorFromScatteringFunction") ndtsf.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 + "_text.tar") + assert path.isfile(temp_name + "_text.tar") + os.remove(temp_name + "_text.tar") + assert False @pytest.mark.xfail(reason="see docstring") @@ -195,7 +214,7 @@ def test_ccf(qvector_spherical_lattice): parameters["instrument_resolution"] = ("Ideal", {}) parameters["interpolation_order"] = 3 parameters["interpolation_mode"] = "automatic" - parameters["output_files"] = (temp_name, ("MDAFormat",)) + parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -205,3 +224,6 @@ def test_ccf(qvector_spherical_lattice): assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") 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") From e10a7bfff42657d15c94b22b613bbe2552119a2a Mon Sep 17 00:00:00 2001 From: Maciej Bartkowiak Date: Mon, 22 Apr 2024 12:33:06 +0100 Subject: [PATCH 3/8] Create DOS tests for all resolution functions --- .../UnitTests/Analysis/test_resolutions.py | 36 +++++++++++++++ .../UnitTests/Analysis/test_scattering.py | 14 +++--- .../AtomTransmutation/test_transmutation.py | 46 +++++++++++++------ MDANSE/Tests/UnitTests/test_HDF5Trajectory.py | 10 ++-- 4 files changed, 79 insertions(+), 27 deletions(-) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py b/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py index 344201bd94..0917422ee0 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_resolutions.py @@ -58,3 +58,39 @@ def test_disf(trajectory): assert path.exists(temp_name + ".mda") assert path.isfile(temp_name + ".mda") os.remove(temp_name + ".mda") + + +list_of_resolutions = IInstrumentResolution.subclasses() + + +@pytest.mark.parametrize("resolution_generator", list_of_resolutions) +def test_dos_text(trajectory, resolution_generator): + parameters = {} + parameters["atom_selection"] = None + parameters["atom_transmutation"] = None + parameters["frames"] = (0, 10, 1) + 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",)) + instance = IInstrumentResolution.create(resolution_generator) + resolution_defaults = { + name: value[1]["default"] for name, value in instance.settings.items() + } + print(resolution_generator) + print(resolution_defaults) + parameters["instrument_resolution"] = ( + resolution_generator, + resolution_defaults, + ) + disf = IJob.create("DensityOfStates") + disf.run(parameters, status=True) + 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 2bc0130e72..0c5cbec243 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py @@ -83,7 +83,7 @@ def test_dcsf(trajectory, qvector_spherical_lattice): parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -105,7 +105,7 @@ def test_disf(trajectory, qvector_spherical_lattice): parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -126,7 +126,7 @@ def test_eisf(trajectory, qvector_spherical_lattice): parameters["atom_selection"] = None parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) - parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -148,7 +148,7 @@ def test_gdisf(trajectory): parameters["atom_transmutation"] = None parameters["frames"] = (0, 10, 1) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat")) parameters["q_shells"] = (2.0, 12.2, 2.0) parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj @@ -172,7 +172,7 @@ def test_ndtsf(disf, dcsf, qvector_spherical_lattice): parameters["dcsf_input_file"] = dcsf parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj - parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat")) ndtsf = IJob.create("NeutronDynamicTotalStructureFactor") ndtsf.run(parameters, status=True) assert path.exists(temp_name + ".mda") @@ -190,7 +190,7 @@ def test_ssfsf(disf): parameters["sample_inc"] = disf parameters["running_mode"] = ("single-core",) parameters["instrument_resolution"] = ("Ideal", {}) - parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat")) ndtsf = IJob.create("StructureFactorFromScatteringFunction") ndtsf.run(parameters, status=True) assert path.exists(temp_name + ".mda") @@ -214,7 +214,7 @@ def test_ccf(qvector_spherical_lattice): parameters["instrument_resolution"] = ("Ideal", {}) parameters["interpolation_order"] = 3 parameters["interpolation_mode"] = "automatic" - parameters["output_files"] = (temp_name, ("MDAFormat","TextFormat")) + parameters["output_files"] = (temp_name, ("MDAFormat", "TextFormat")) parameters["q_vectors"] = qvector_spherical_lattice parameters["running_mode"] = ("single-core",) parameters["trajectory"] = short_traj diff --git a/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py b/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py index 65b7dd18fb..307a61a49b 100644 --- a/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py +++ b/MDANSE/Tests/UnitTests/AtomTransmutation/test_transmutation.py @@ -4,7 +4,6 @@ from MDANSE.Framework.AtomTransmutation.transmutation import AtomTransmuter - pbd_2vb1 = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", "Data", "2vb1.pdb" ) @@ -17,19 +16,27 @@ def protein_chemical_system(): return protein_chemical_system -def test_atom_transmutation_returns_empty_dictionary_when_no_transmutations_are_made(protein_chemical_system): +def test_atom_transmutation_returns_empty_dictionary_when_no_transmutations_are_made( + protein_chemical_system, +): atm_transmuter = AtomTransmuter(protein_chemical_system) mapping = atm_transmuter.get_setting() assert mapping == {} -def test_atom_transmutation_return_dict_with_transmutations_with_incorrect_element_raises_exception(protein_chemical_system): +def test_atom_transmutation_return_dict_with_transmutations_with_incorrect_element_raises_exception( + protein_chemical_system, +): atm_transmuter = AtomTransmuter(protein_chemical_system) with pytest.raises(ValueError): - atm_transmuter.apply_transmutation({"all": False, "element": {"S": True}}, "CCC") + atm_transmuter.apply_transmutation( + {"all": False, "element": {"S": True}}, "CCC" + ) -def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation(protein_chemical_system): +def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation( + protein_chemical_system, +): atm_transmuter = AtomTransmuter(protein_chemical_system) atm_transmuter.apply_transmutation({"all": False, "element": {"S": True}}, "C") mapping = atm_transmuter.get_setting() @@ -43,11 +50,13 @@ def test_atom_transmutation_return_dict_with_transmutations_with_s_element_trans 1404: "C", 1557: "C", 1731: "C", - 1913: "C" + 1913: "C", } -def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation_and_index_98_transmutation_0(protein_chemical_system): +def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation_and_index_98_transmutation_0( + protein_chemical_system, +): atm_transmuter = AtomTransmuter(protein_chemical_system) atm_transmuter.apply_transmutation({"all": False, "element": {"S": True}}, "C") atm_transmuter.apply_transmutation({"all": False, "index": {98: True}}, "N") @@ -62,11 +71,13 @@ def test_atom_transmutation_return_dict_with_transmutations_with_s_element_trans 1404: "C", 1557: "C", 1731: "C", - 1913: "C" + 1913: "C", } -def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation_and_index_98_transmutation_1(protein_chemical_system): +def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation_and_index_98_transmutation_1( + protein_chemical_system, +): atm_transmuter = AtomTransmuter(protein_chemical_system) atm_transmuter.apply_transmutation({"all": False, "element": {"S": True}}, "C") atm_transmuter.apply_transmutation({"all": False, "index": {98: True}}, "S") @@ -80,14 +91,18 @@ def test_atom_transmutation_return_dict_with_transmutations_with_s_element_trans 1404: "C", 1557: "C", 1731: "C", - 1913: "C" + 1913: "C", } -def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation_and_index_98_transmutation_2(protein_chemical_system): +def test_atom_transmutation_return_dict_with_transmutations_with_s_element_transmutation_and_index_98_transmutation_2( + protein_chemical_system, +): atm_transmuter = AtomTransmuter(protein_chemical_system) atm_transmuter.apply_transmutation({"all": False, "element": {"S": True}}, "C") - atm_transmuter.apply_transmutation({"all": False, "index": {98: True, 99: True}}, "S") + atm_transmuter.apply_transmutation( + {"all": False, "index": {98: True, 99: True}}, "S" + ) mapping = atm_transmuter.get_setting() assert mapping == { 99: "S", @@ -99,15 +114,16 @@ def test_atom_transmutation_return_dict_with_transmutations_with_s_element_trans 1404: "C", 1557: "C", 1731: "C", - 1913: "C" + 1913: "C", } def test_atom_transmutation_return_empty_dict_after_reset(protein_chemical_system): atm_transmuter = AtomTransmuter(protein_chemical_system) atm_transmuter.apply_transmutation({"all": False, "element": {"S": True}}, "C") - atm_transmuter.apply_transmutation({"all": False, "index": {98: True, 99: True}}, "S") + atm_transmuter.apply_transmutation( + {"all": False, "index": {98: True, 99: True}}, "S" + ) atm_transmuter.reset_setting() mapping = atm_transmuter.get_setting() assert mapping == {} - diff --git a/MDANSE/Tests/UnitTests/test_HDF5Trajectory.py b/MDANSE/Tests/UnitTests/test_HDF5Trajectory.py index 8648896092..a600256391 100644 --- a/MDANSE/Tests/UnitTests/test_HDF5Trajectory.py +++ b/MDANSE/Tests/UnitTests/test_HDF5Trajectory.py @@ -130,7 +130,8 @@ def test_identity(chemical_system): for i in range(nAtoms): temp.add_chemical_entity(Atom(symbol="H")) # assert(temp == chemical_system) - assert(chemical_system == chemical_system) + assert chemical_system == chemical_system + def test_copy(chemical_system): original = chemical_system @@ -139,11 +140,10 @@ def test_copy(chemical_system): print(original.number_of_atoms) print(copied.atom_list) print(copied.number_of_atoms) - assert(repr(original) == repr(copied)) + assert repr(original) == repr(copied) + -def test_compression(sample_trajectory, - gzipped_trajectory, - lzffed_trajectory): +def test_compression(sample_trajectory, gzipped_trajectory, lzffed_trajectory): size_uncompressed = os.stat(sample_trajectory).st_size size_gzipped = os.stat(gzipped_trajectory).st_size size_lzffed = os.stat(lzffed_trajectory).st_size From bc06412e4dd08eff530d036318b9a8995f2ea634 Mon Sep 17 00:00:00 2001 From: Maciej Bartkowiak Date: Mon, 22 Apr 2024 12:40:05 +0100 Subject: [PATCH 4/8] Remove threadpool tests to save time --- MDANSE/Tests/UnitTests/Analysis/test_dynamics.py | 2 +- MDANSE/Tests/UnitTests/Analysis/test_meansquare.py | 2 +- MDANSE/Tests/UnitTests/Analysis/test_structure.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py index 0fdd01b2f6..22e3c6a2ca 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py @@ -95,7 +95,7 @@ def parameters(): # "OrderParameter", "PositionAutoCorrelationFunction", ]: - for rm in [("single-core", 1), ("threadpool", 4), ("multicore", 4)]: + for rm in [("single-core", 1), ("multicore", 4)]: for of in ["MDAFormat", "TextFormat"]: total_list.append((jt, rm, of)) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py b/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py index 14f6c7dd02..c8a61b5770 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py @@ -57,7 +57,7 @@ def test_parallel_meansquare(): parameters = {} parameters["frames"] = (0, 10, 1) parameters["output_files"] = (temp_name2, ("MDAFormat",)) - parameters["running_mode"] = ("threadpool", 4) + parameters["running_mode"] = ("multicore", 4) parameters["trajectory"] = short_traj msd_par = IJob.create("MeanSquareDisplacement") msd_par.run(parameters, status=True) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_structure.py b/MDANSE/Tests/UnitTests/Analysis/test_structure.py index e3719c4c59..5db7cca03d 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_structure.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_structure.py @@ -63,7 +63,7 @@ def parameters(): "Voronoi", "Eccentricity", ]: - for rm in [("single-core", 1), ("threadpool", 4), ("multicore", 4)]: + for rm in [("single-core", 1), ("multicore", 4)]: for of in ["MDAFormat", "TextFormat"]: total_list.append((jt, rm, of)) From aec5c6a44ded4602dd7c52ca09c2de4436769a57 Mon Sep 17 00:00:00 2001 From: Chi Cheng Date: Mon, 22 Apr 2024 16:17:52 +0100 Subject: [PATCH 5/8] Reverted so the DOS plots the symmetric omega window. Fixed so that time_window is plotted for only positive times. --- .../InstrumentResolutionConfigurator.py | 7 +------ .../Framework/InstrumentResolutions/Gaussian.py | 4 ++-- .../IInstrumentResolution.py | 15 +++++---------- .../Framework/InstrumentResolutions/Ideal.py | 2 +- .../Framework/InstrumentResolutions/Lorentzian.py | 4 ++-- .../InstrumentResolutions/PseudoVoigt.py | 4 ++-- .../Framework/InstrumentResolutions/Square.py | 4 ++-- .../Framework/InstrumentResolutions/Triangular.py | 4 ++-- .../Src/MDANSE/Framework/Jobs/DensityOfStates.py | 13 ++++++++----- .../Jobs/StructureFactorFromScatteringFunction.py | 2 +- .../Tests/UnitTests/Analysis/test_scattering.py | 2 -- 11 files changed, 26 insertions(+), 35 deletions(-) diff --git a/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py b/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py index db1e1be6d7..bb9a89ca9f 100644 --- a/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py +++ b/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py @@ -93,12 +93,7 @@ def configure(self, value): resolution.set_kernel(self["omega"], self["time_step"]) self["omega_window"] = resolution.omegaWindow self["time_window"] = resolution.timeWindow.real - - rresolution = IInstrumentResolution.create(kernel) - rresolution.setup(parameters) - rresolution.set_kernel(self["romega"], self["time_step"], fft="rfft") - self["romega_window"] = rresolution.omegaWindow - self["rtime_window"] = rresolution.timeWindow.real + self["time_window_positive"] = np.fft.ifftshift(self["time_window"])[:len(time)] def get_information(self): """ diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Gaussian.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Gaussian.py index 61af5bb168..2e38c4bbaf 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Gaussian.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Gaussian.py @@ -31,11 +31,11 @@ class Gaussian(IInstrumentResolution): settings["mu"] = ("FloatConfigurator", {"default": 0.0}) settings["sigma"] = ("FloatConfigurator", {"default": 1.0}) - def set_kernel(self, omegas, dt, fft="fft"): + def set_kernel(self, omegas, dt): mu = self._configuration["mu"]["value"] sigma = self._configuration["sigma"]["value"] self._omegaWindow = (np.sqrt(2.0 * np.pi) / sigma) * np.exp( -0.5 * ((omegas - mu) / sigma) ** 2 ) - self._timeWindow = self.apply_fft(self._omegaWindow, dt, fft) + self._timeWindow = self.apply_fft(self._omegaWindow, dt) diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py index f3be5427b4..deff0d48f6 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py @@ -37,18 +37,13 @@ def __init__(self): self._timeWindow = None @abc.abstractmethod - def set_kernel(self, omegas, dt, fft="fft"): + def set_kernel(self, omegas, dt): pass - def apply_fft(self, omegaWindow, dt, fft="fft"): - if fft == "fft": - timeWindow = np.fft.fftshift( - np.fft.ifft(np.fft.ifftshift(omegaWindow)) / dt - ) - elif fft == "rfft": - timeWindow = np.fft.irfft(np.fft.ifftshift(omegaWindow)) / dt - else: - raise ValueError("fft variable should be fft or rfft.") + def apply_fft(self, omegaWindow, dt): + timeWindow = np.fft.fftshift( + np.fft.ifft(np.fft.ifftshift(omegaWindow)) / dt + ) return timeWindow @property diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Ideal.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Ideal.py index 7744335f91..89b1ad985d 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Ideal.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Ideal.py @@ -29,7 +29,7 @@ class Ideal(IInstrumentResolution): settings = collections.OrderedDict() - def set_kernel(self, omegas, dt, fft="fft"): + def set_kernel(self, omegas, dt): nOmegas = len(omegas) self._omegaWindow = np.zeros(nOmegas, dtype=np.float64) self._omegaWindow[int(nOmegas / 2)] = 1.0 diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Lorentzian.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Lorentzian.py index 6f2365c8dd..f6da8a9273 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Lorentzian.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Lorentzian.py @@ -33,9 +33,9 @@ class Lorentzian(IInstrumentResolution): settings["mu"] = ("FloatConfigurator", {"default": 0.0}) settings["sigma"] = ("FloatConfigurator", {"default": 1.0}) - def set_kernel(self, omegas, dt, fft="fft"): + def set_kernel(self, omegas, dt): mu = self._configuration["mu"]["value"] sigma = self._configuration["sigma"]["value"] self._omegaWindow = (2.0 * sigma) / ((omegas - mu) ** 2 + sigma**2) - self._timeWindow = self.apply_fft(self._omegaWindow, dt, fft) + self._timeWindow = self.apply_fft(self._omegaWindow, dt) diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/PseudoVoigt.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/PseudoVoigt.py index da7a661a2e..6c2b99800b 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/PseudoVoigt.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/PseudoVoigt.py @@ -34,7 +34,7 @@ class PseudoVoigt(IInstrumentResolution): settings["mu_gaussian"] = ("FloatConfigurator", {"default": 0.0}) settings["sigma_gaussian"] = ("FloatConfigurator", {"default": 1.0}) - def set_kernel(self, omegas, dt, fft="fft"): + def set_kernel(self, omegas, dt): eta = self._configuration["eta"]["value"] muL = self._configuration["mu_lorentzian"]["value"] sigmaL = self._configuration["sigma_lorentzian"]["value"] @@ -48,4 +48,4 @@ def set_kernel(self, omegas, dt, fft="fft"): lorentzian = (2.0 * sigmaL) / ((omegas - muL) ** 2 + sigmaL**2) self._omegaWindow = eta * lorentzian + (1.0 - eta) * gaussian - self._timeWindow = self.apply_fft(self._omegaWindow, dt, fft) + self._timeWindow = self.apply_fft(self._omegaWindow, dt) diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Square.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Square.py index 3913281bfc..3d617ead9d 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Square.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Square.py @@ -31,7 +31,7 @@ class Square(IInstrumentResolution): settings["mu"] = ("FloatConfigurator", {"default": 0.0}) settings["sigma"] = ("FloatConfigurator", {"default": 1.0}) - def set_kernel(self, omegas, dt, fft="fft"): + def set_kernel(self, omegas, dt): mu = self._configuration["mu"]["value"] sigma = self._configuration["sigma"]["value"] @@ -41,4 +41,4 @@ def set_kernel(self, omegas, dt, fft="fft"): * np.where((np.abs(omegas - mu) - sigma) > 0, 0.0, 1.0 / (2.0 * sigma)) ) - self._timeWindow = self.apply_fft(self._omegaWindow, dt, fft) + self._timeWindow = self.apply_fft(self._omegaWindow, dt) diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Triangular.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Triangular.py index 9bd264bd27..80a68bb6a8 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Triangular.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/Triangular.py @@ -31,7 +31,7 @@ class Triangular(IInstrumentResolution): settings["mu"] = ("FloatConfigurator", {"default": 0.0}) settings["sigma"] = ("FloatConfigurator", {"default": 1.0}) - def set_kernel(self, omegas, dt, fft="fft"): + def set_kernel(self, omegas, dt): mu = self._configuration["mu"]["value"] sigma = self._configuration["sigma"]["value"] @@ -39,4 +39,4 @@ def set_kernel(self, omegas, dt, fft="fft"): self._omegaWindow = 2.0 * np.pi * np.where(val >= 0, 0.0, -val / sigma**2) - self._timeWindow = self.apply_fft(self._omegaWindow, dt, fft) + self._timeWindow = self.apply_fft(self._omegaWindow, dt) diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/DensityOfStates.py b/MDANSE/Src/MDANSE/Framework/Jobs/DensityOfStates.py index c6208bf4d5..5133b211f3 100644 --- a/MDANSE/Src/MDANSE/Framework/Jobs/DensityOfStates.py +++ b/MDANSE/Src/MDANSE/Framework/Jobs/DensityOfStates.py @@ -102,18 +102,21 @@ def initialize(self): self._outputData.add( "time_window", "LineOutputVariable", - instrResolution["rtime_window"], + instrResolution["time_window_positive"], axis="time", units="au", ) self._outputData.add( - "omega", "LineOutputVariable", instrResolution["romega"], units="rad/ps" + "omega", "LineOutputVariable", instrResolution["omega"], units="rad/ps" + ) + self._outputData.add( + "romega", "LineOutputVariable", instrResolution["romega"], units="rad/ps" ) self._outputData.add( "omega_window", "LineOutputVariable", - instrResolution["romega_window"], + instrResolution["omega_window"], axis="omega", units="au", ) @@ -130,7 +133,7 @@ def initialize(self): "dos_%s" % element, "LineOutputVariable", (instrResolution["n_romegas"],), - axis="omega", + axis="romega", units="au", ) self._outputData.add( @@ -144,7 +147,7 @@ def initialize(self): "dos_total", "LineOutputVariable", (instrResolution["n_romegas"],), - axis="omega", + axis="romega", units="au", ) diff --git a/MDANSE/Src/MDANSE/Framework/Jobs/StructureFactorFromScatteringFunction.py b/MDANSE/Src/MDANSE/Framework/Jobs/StructureFactorFromScatteringFunction.py index cd3da49b1c..130080183c 100644 --- a/MDANSE/Src/MDANSE/Framework/Jobs/StructureFactorFromScatteringFunction.py +++ b/MDANSE/Src/MDANSE/Framework/Jobs/StructureFactorFromScatteringFunction.py @@ -72,7 +72,7 @@ def initialize(self): self._outputData.add( "time_window", "LineOutputVariable", - inputFile["time_window"][:], + resolution["time_window_positive"], axis="time", units="au", ) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py index 0c5cbec243..4659c67f2c 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_scattering.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_scattering.py @@ -184,7 +184,6 @@ def test_ndtsf(disf, dcsf, qvector_spherical_lattice): def test_ssfsf(disf): - """Also fails at the moment. Must be fixed soon""" temp_name = tempfile.mktemp() parameters = {} parameters["sample_inc"] = disf @@ -199,7 +198,6 @@ def test_ssfsf(disf): assert path.exists(temp_name + "_text.tar") assert path.isfile(temp_name + "_text.tar") os.remove(temp_name + "_text.tar") - assert False @pytest.mark.xfail(reason="see docstring") From 7b66cc6f4916a231cd681db0c6b7b8db8878594d Mon Sep 17 00:00:00 2001 From: Chi Cheng Date: Mon, 22 Apr 2024 16:20:01 +0100 Subject: [PATCH 6/8] applied black --- .../Configurators/InstrumentResolutionConfigurator.py | 4 +++- .../Framework/InstrumentResolutions/IInstrumentResolution.py | 4 +--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py b/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py index bb9a89ca9f..58d4b06888 100644 --- a/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py +++ b/MDANSE/Src/MDANSE/Framework/Configurators/InstrumentResolutionConfigurator.py @@ -93,7 +93,9 @@ def configure(self, value): resolution.set_kernel(self["omega"], self["time_step"]) self["omega_window"] = resolution.omegaWindow self["time_window"] = resolution.timeWindow.real - self["time_window_positive"] = np.fft.ifftshift(self["time_window"])[:len(time)] + self["time_window_positive"] = np.fft.ifftshift(self["time_window"])[ + : len(time) + ] def get_information(self): """ diff --git a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py index deff0d48f6..4ac2a0e034 100644 --- a/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py +++ b/MDANSE/Src/MDANSE/Framework/InstrumentResolutions/IInstrumentResolution.py @@ -41,9 +41,7 @@ def set_kernel(self, omegas, dt): pass def apply_fft(self, omegaWindow, dt): - timeWindow = np.fft.fftshift( - np.fft.ifft(np.fft.ifftshift(omegaWindow)) / dt - ) + timeWindow = np.fft.fftshift(np.fft.ifft(np.fft.ifftshift(omegaWindow)) / dt) return timeWindow @property From bc9ab75e00eddc09b5578e7bb554affe0a9ae6b6 Mon Sep 17 00:00:00 2001 From: Maciej Bartkowiak Date: Mon, 22 Apr 2024 17:19:16 +0100 Subject: [PATCH 7/8] Add non-strict number of CPU cores to RunningModeConfigurator --- .../Configurators/RunningModeConfigurator.py | 17 ++++++++++------- .../Tests/UnitTests/Analysis/test_dynamics.py | 2 +- .../Tests/UnitTests/Analysis/test_meansquare.py | 2 +- .../Tests/UnitTests/Analysis/test_structure.py | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/MDANSE/Src/MDANSE/Framework/Configurators/RunningModeConfigurator.py b/MDANSE/Src/MDANSE/Framework/Configurators/RunningModeConfigurator.py index cfa2bdfff4..7be374cd17 100644 --- a/MDANSE/Src/MDANSE/Framework/Configurators/RunningModeConfigurator.py +++ b/MDANSE/Src/MDANSE/Framework/Configurators/RunningModeConfigurator.py @@ -28,7 +28,7 @@ class RunningModeConfigurator(IConfigurator): """ This configurator allows to choose the mode used to run the calculation. - MDANSE currently support single-core or multicore (SMP) running modes. In the laster case, you have to + MDANSE currently support single-core or multicore (SMP) running modes. In the latter case, you have to specify the number of slots used for running the analysis. """ @@ -59,17 +59,20 @@ def configure(self, value): else: slots = int(value[1]) + maxSlots = multiprocessing.cpu_count() - if mode == "multicore": - maxSlots = multiprocessing.cpu_count() + if slots == 0: + self.error_status = "invalid number of allocated slots." + return + elif slots < 0: + slots = abs(slots) + if slots > maxSlots: + slots = maxSlots + else: if slots > maxSlots: self.error_status = "invalid number of allocated slots." return - if slots <= 0: - self.error_status = "invalid number of allocated slots." - return - self["mode"] = mode self["slots"] = slots diff --git a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py index 22e3c6a2ca..12bb1819ae 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py @@ -95,7 +95,7 @@ def parameters(): # "OrderParameter", "PositionAutoCorrelationFunction", ]: - for rm in [("single-core", 1), ("multicore", 4)]: + for rm in [("single-core", 1), ("multicore", -4)]: for of in ["MDAFormat", "TextFormat"]: total_list.append((jt, rm, of)) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py b/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py index c8a61b5770..4b398f710f 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_meansquare.py @@ -57,7 +57,7 @@ def test_parallel_meansquare(): parameters = {} parameters["frames"] = (0, 10, 1) parameters["output_files"] = (temp_name2, ("MDAFormat",)) - parameters["running_mode"] = ("multicore", 4) + parameters["running_mode"] = ("multicore", -4) parameters["trajectory"] = short_traj msd_par = IJob.create("MeanSquareDisplacement") msd_par.run(parameters, status=True) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_structure.py b/MDANSE/Tests/UnitTests/Analysis/test_structure.py index 5db7cca03d..741043bf2d 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_structure.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_structure.py @@ -63,7 +63,7 @@ def parameters(): "Voronoi", "Eccentricity", ]: - for rm in [("single-core", 1), ("multicore", 4)]: + for rm in [("single-core", 1), ("multicore", -4)]: for of in ["MDAFormat", "TextFormat"]: total_list.append((jt, rm, of)) From 7008c081abb9369abf800543395bc6de53683746 Mon Sep 17 00:00:00 2001 From: Maciej Bartkowiak Date: Tue, 23 Apr 2024 09:03:56 +0100 Subject: [PATCH 8/8] Make parallelism optional in test runs to fix GitHub errors on MacOS --- MDANSE/Tests/UnitTests/Analysis/test_dynamics.py | 2 +- MDANSE/Tests/UnitTests/Analysis/test_infrared.py | 2 +- MDANSE/Tests/UnitTests/Analysis/test_mcstas.py | 2 +- MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py | 2 +- MDANSE/Tests/UnitTests/Analysis/test_structure.py | 2 +- MDANSE/Tests/UnitTests/Analysis/test_trajectory.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py index 12bb1819ae..559de1c449 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_dynamics.py @@ -61,7 +61,7 @@ def parameters(): # parameters['atom_transmutation'] = None # parameters['frames'] = (0, 1000, 1) parameters["trajectory"] = short_traj - parameters["running_mode"] = ("threadpool", 4) + parameters["running_mode"] = ("threadpool", -4) parameters["q_vectors"] = ( "SphericalLatticeQVectors", { diff --git a/MDANSE/Tests/UnitTests/Analysis/test_infrared.py b/MDANSE/Tests/UnitTests/Analysis/test_infrared.py index 1508c2adce..f40d0f1fad 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_infrared.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_infrared.py @@ -28,7 +28,7 @@ def parameters(): # parameters['atom_transmutation'] = None # parameters['frames'] = (0, 1000, 1) parameters["trajectory"] = short_traj - parameters["running_mode"] = ("threadpool", 4) + parameters["running_mode"] = ("threadpool", -4) parameters["q_vectors"] = ( "SphericalLatticeQVectors", { diff --git a/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py b/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py index 412ecaa270..5459bf13ca 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_mcstas.py @@ -28,7 +28,7 @@ def parameters(): # parameters['atom_transmutation'] = None # parameters['frames'] = (0, 1000, 1) parameters["trajectory"] = short_traj - parameters["running_mode"] = ("threadpool", 4) + parameters["running_mode"] = ("threadpool", -4) parameters["q_vectors"] = ( "SphericalLatticeQVectors", { diff --git a/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py b/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py index 6b98096b49..be46fde82b 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_molecule_names.py @@ -28,7 +28,7 @@ def parameters(): # parameters['atom_transmutation'] = None # parameters['frames'] = (0, 1000, 1) parameters["trajectory"] = short_traj - parameters["running_mode"] = ("threadpool", 4) + parameters["running_mode"] = ("threadpool", -4) parameters["q_vectors"] = ( "SphericalLatticeQVectors", { diff --git a/MDANSE/Tests/UnitTests/Analysis/test_structure.py b/MDANSE/Tests/UnitTests/Analysis/test_structure.py index 741043bf2d..764c6b20c9 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_structure.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_structure.py @@ -28,7 +28,7 @@ def parameters(): # parameters['atom_transmutation'] = None # parameters['frames'] = (0, 1000, 1) parameters["trajectory"] = short_traj - parameters["running_mode"] = ("threadpool", 4) + parameters["running_mode"] = ("threadpool", -4) parameters["q_vectors"] = ( "SphericalLatticeQVectors", { diff --git a/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py b/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py index 81b18de0eb..9e736f1bb7 100644 --- a/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py +++ b/MDANSE/Tests/UnitTests/Analysis/test_trajectory.py @@ -28,7 +28,7 @@ def parameters(): # parameters['atom_transmutation'] = None # parameters['frames'] = (0, 1000, 1) parameters["trajectory"] = short_traj - parameters["running_mode"] = ("threadpool", 4) + parameters["running_mode"] = ("threadpool", -4) parameters["q_vectors"] = ( "SphericalLatticeQVectors", {