diff --git a/dpdata/deepmd/mixed.py b/dpdata/deepmd/mixed.py index b25107dbc..ccf9b2f58 100644 --- a/dpdata/deepmd/mixed.py +++ b/dpdata/deepmd/mixed.py @@ -1,5 +1,6 @@ from __future__ import annotations +import copy import glob import os import shutil @@ -160,6 +161,9 @@ def dump(folder, data, set_size=2000, comp_prec=np.float32, remove_sets=True): if "real_atom_types" not in data: from dpdata import LabeledSystem, System + # not change the original content + data = copy.deepcopy(data) + if "energies" in data: temp_sys = LabeledSystem(data=data) else: diff --git a/tests/test_deepmd_mixed.py b/tests/test_deepmd_mixed.py index 02044932e..70a09dbe8 100644 --- a/tests/test_deepmd_mixed.py +++ b/tests/test_deepmd_mixed.py @@ -314,5 +314,27 @@ def test_str(self): ) +class TestMixedSingleSystemsDump(unittest.TestCase, CompLabeledSys, IsNoPBC): + def setUp(self): + self.places = 6 + self.e_places = 6 + self.f_places = 6 + self.v_places = 6 + + # C1H4 + self.system_1 = dpdata.LabeledSystem( + "gaussian/methane.gaussianlog", fmt="gaussian/log" + ) + self.system_2 = dpdata.LabeledSystem( + "gaussian/methane.gaussianlog", fmt="gaussian/log" + ) + # test dump + self.system_1.to("deepmd/npy/mixed", "tmp.deepmd.mixed.single") + + def tearDown(self): + if os.path.exists("tmp.deepmd.mixed.single"): + shutil.rmtree("tmp.deepmd.mixed.single") + + if __name__ == "__main__": unittest.main()