From 820ca84f3241be823d1701aa648fa6ea72c9e1dc Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:43:51 +0900 Subject: [PATCH 01/51] add ASE's traj --- dpdata/plugins/ase.py | 109 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index f668a0a77..43c703eb9 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -5,6 +5,7 @@ import dpdata from dpdata.driver import Driver, Minimizer from dpdata.format import Format +from ase.io import Trajectory try: import ase.io @@ -187,6 +188,114 @@ def to_labeled_system(self, data, *args, **kwargs): return structures +@Format.register("ase/traj") +class ASETrajFormat(Format): + """Format for the ASE's trajectory format `_ (ase).' + a `traj' contains a sequence of frames, each of which is an `Atoms' object. + """ + + def from_system(self, file_name: str, + begin: Optional[int] = 0, + end: Optional[int] = -1, + step: Optional[int] = 1, + **kwargs) -> dict: + """Read ASE's trajectory file to `System` of multiple frames. + + Parameters + ---------- + file_name : str + ASE's trajectory file + begin : int, optional + begin frame index + end : int, optional + end frame index + step : int, optional + frame index step + **kwargs : dict + other parameters + + Returns + ------- + dict_frames: dict + a dictionary containing data of multiple frames + """ + traj = Trajectory(file_name) + dict_frames = {"atom_names": [], + "atom_numbs": [], + "atom_types": [], + "cells": [], + "coords": [], + "orig": [], + "nopbc": []} + sub_traj = traj[begin:end:step] + for atoms in sub_traj: + tmp = ASEStructureFormat().from_system(atoms) + dict_frames["atom_names"].append(tmp["atom_names"]) + dict_frames["atom_numbs"].append(tmp["atom_numbs"]) + dict_frames["atom_types"].append(tmp["atom_types"]) + dict_frames["cells"].append(tmp["cells"]) + dict_frames["coords"].append(tmp["coords"]) + dict_frames["orig"].append(tmp["orig"]) + dict_frames["nopbc"].append(tmp["nopbc"]) + + return dict_frames + + def from_labeled_system(self, file_name: str, + begin: Optional[int] = 0, + end: Optional[int] = -1, + step: Optional[int] = 1, + **kwargs) -> dict: + """Read ASE's trajectory file to `System` of multiple frames. + + Parameters + ---------- + file_name : str + ASE's trajectory file + begin : int, optional + begin frame index + end : int, optional + end frame index + step : int, optional + frame index step + **kwargs : dict + other parameters + + Returns + ------- + dict_frames: dict + a dictionary containing data of multiple frames + """ + traj = Trajectory(file_name) + dict_frames = {"atom_names": [], + "atom_numbs": [], + "atom_types": [], + "cells": [], + "coords": [], + "orig": [], + "nopbc": [], + "energies": [], + "forces": [], + "virials": []} + sub_traj = traj[begin:end:step] + for atoms in sub_traj: + tmp = ASEStructureFormat().from_labeled_system(atoms) + dict_frames["atom_names"].append(tmp["atom_names"]) + dict_frames["atom_numbs"].append(tmp["atom_numbs"]) + dict_frames["atom_types"].append(tmp["atom_types"]) + dict_frames["cells"].append(tmp["cells"]) + dict_frames["coords"].append(tmp["coords"]) + dict_frames["orig"].append(tmp["orig"]) + dict_frames["nopbc"].append(tmp["nopbc"]) + dict_frames["energies"].append(tmp["energies"]) + dict_frames["forces"].append(tmp["forces"]) + if "virials" in tmp.keys(): + dict_frames["virials"].append(tmp["virials"]) + else: + dict_frames["virials"].append(None) + + return dict_frames + + @Driver.register("ase") class ASEDriver(Driver): """ASE Driver. From 45949818c385b7b162df2938b3d660b772e6b304 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 18:00:07 +0900 Subject: [PATCH 02/51] Update ase.py --- dpdata/plugins/ase.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 43c703eb9..8a2252a58 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -228,9 +228,10 @@ def from_system(self, file_name: str, "orig": [], "nopbc": []} sub_traj = traj[begin:end:step] - for atoms in sub_traj: + for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_system(atoms) - dict_frames["atom_names"].append(tmp["atom_names"]) + if i == 0: + dict_frames["atom_names"] = tmp["atom_names"] dict_frames["atom_numbs"].append(tmp["atom_numbs"]) dict_frames["atom_types"].append(tmp["atom_types"]) dict_frames["cells"].append(tmp["cells"]) @@ -277,9 +278,10 @@ def from_labeled_system(self, file_name: str, "forces": [], "virials": []} sub_traj = traj[begin:end:step] - for atoms in sub_traj: + for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_labeled_system(atoms) - dict_frames["atom_names"].append(tmp["atom_names"]) + if i == 0: + dict_frames["atom_names"] = tmp["atom_names"] dict_frames["atom_numbs"].append(tmp["atom_numbs"]) dict_frames["atom_types"].append(tmp["atom_types"]) dict_frames["cells"].append(tmp["cells"]) From b055b888a7f111a7861a3593b9c466e55f1145c9 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 18:02:51 +0900 Subject: [PATCH 03/51] Update ase.py --- dpdata/plugins/ase.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 8a2252a58..a95cfc1ff 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -232,8 +232,8 @@ def from_system(self, file_name: str, tmp = ASEStructureFormat().from_system(atoms) if i == 0: dict_frames["atom_names"] = tmp["atom_names"] - dict_frames["atom_numbs"].append(tmp["atom_numbs"]) - dict_frames["atom_types"].append(tmp["atom_types"]) + dict_frames["atom_numbs"] = tmp["atom_numbs"] + dict_frames["atom_types"] = tmp["atom_types"] dict_frames["cells"].append(tmp["cells"]) dict_frames["coords"].append(tmp["coords"]) dict_frames["orig"].append(tmp["orig"]) @@ -282,8 +282,8 @@ def from_labeled_system(self, file_name: str, tmp = ASEStructureFormat().from_labeled_system(atoms) if i == 0: dict_frames["atom_names"] = tmp["atom_names"] - dict_frames["atom_numbs"].append(tmp["atom_numbs"]) - dict_frames["atom_types"].append(tmp["atom_types"]) + dict_frames["atom_numbs"] = tmp["atom_numbs"] + dict_frames["atom_types"] = tmp["atom_types"] dict_frames["cells"].append(tmp["cells"]) dict_frames["coords"].append(tmp["coords"]) dict_frames["orig"].append(tmp["orig"]) From bde8b7b92c984f0e3db8b8aaaf6b6707c48b6a18 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 18:04:51 +0900 Subject: [PATCH 04/51] Update ase.py --- dpdata/plugins/ase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index a95cfc1ff..eee92fc08 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -284,9 +284,9 @@ def from_labeled_system(self, file_name: str, dict_frames["atom_names"] = tmp["atom_names"] dict_frames["atom_numbs"] = tmp["atom_numbs"] dict_frames["atom_types"] = tmp["atom_types"] + dict_frames["orig"].append(tmp["orig"]) dict_frames["cells"].append(tmp["cells"]) dict_frames["coords"].append(tmp["coords"]) - dict_frames["orig"].append(tmp["orig"]) dict_frames["nopbc"].append(tmp["nopbc"]) dict_frames["energies"].append(tmp["energies"]) dict_frames["forces"].append(tmp["forces"]) From 0377b27a8856f81be0c83ccb57b2f727b5c2afc8 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 18:09:04 +0900 Subject: [PATCH 05/51] Update ase.py --- dpdata/plugins/ase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index eee92fc08..aaddaa282 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -234,9 +234,9 @@ def from_system(self, file_name: str, dict_frames["atom_names"] = tmp["atom_names"] dict_frames["atom_numbs"] = tmp["atom_numbs"] dict_frames["atom_types"] = tmp["atom_types"] + dict_frames["orig"].append(tmp["orig"]) dict_frames["cells"].append(tmp["cells"]) dict_frames["coords"].append(tmp["coords"]) - dict_frames["orig"].append(tmp["orig"]) dict_frames["nopbc"].append(tmp["nopbc"]) return dict_frames From da3daa88ee0fd745ab6640cb6c6efbffae21e207 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 20:46:40 +0900 Subject: [PATCH 06/51] finish add ASE's traj support --- dpdata/plugins/ase.py | 59 +++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index aaddaa282..0577fd915 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -196,7 +196,7 @@ class ASETrajFormat(Format): def from_system(self, file_name: str, begin: Optional[int] = 0, - end: Optional[int] = -1, + end: Optional[int] = None, step: Optional[int] = 1, **kwargs) -> dict: """Read ASE's trajectory file to `System` of multiple frames. @@ -220,13 +220,13 @@ def from_system(self, file_name: str, a dictionary containing data of multiple frames """ traj = Trajectory(file_name) - dict_frames = {"atom_names": [], - "atom_numbs": [], - "atom_types": [], + dict_frames = {"atom_names": None, + "atom_numbs": None, + "atom_types": None, + "orig": None, + "nopbc": None, "cells": [], - "coords": [], - "orig": [], - "nopbc": []} + "coords": []} sub_traj = traj[begin:end:step] for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_system(atoms) @@ -234,16 +234,20 @@ def from_system(self, file_name: str, dict_frames["atom_names"] = tmp["atom_names"] dict_frames["atom_numbs"] = tmp["atom_numbs"] dict_frames["atom_types"] = tmp["atom_types"] - dict_frames["orig"].append(tmp["orig"]) - dict_frames["cells"].append(tmp["cells"]) - dict_frames["coords"].append(tmp["coords"]) - dict_frames["nopbc"].append(tmp["nopbc"]) + dict_frames["orig"] = tmp["orig"] + dict_frames["nopbc"] = tmp["nopbc"] + dict_frames["cells"].append(tmp["cells"][0]) + dict_frames["coords"].append(tmp["coords"][0]) + + ## Covert to numpy array + dict_frames["cells"] = np.asarray(dict_frames["cells"]) + dict_frames["coords"] = np.asarray(dict_frames["coords"]) return dict_frames def from_labeled_system(self, file_name: str, begin: Optional[int] = 0, - end: Optional[int] = -1, + end: Optional[int] = None, step: Optional[int] = 1, **kwargs) -> dict: """Read ASE's trajectory file to `System` of multiple frames. @@ -267,13 +271,13 @@ def from_labeled_system(self, file_name: str, a dictionary containing data of multiple frames """ traj = Trajectory(file_name) - dict_frames = {"atom_names": [], - "atom_numbs": [], - "atom_types": [], + dict_frames = {"atom_names": None, + "atom_numbs": None, + "atom_types": None, + "orig": None, + "nopbc": None, "cells": [], "coords": [], - "orig": [], - "nopbc": [], "energies": [], "forces": [], "virials": []} @@ -284,17 +288,24 @@ def from_labeled_system(self, file_name: str, dict_frames["atom_names"] = tmp["atom_names"] dict_frames["atom_numbs"] = tmp["atom_numbs"] dict_frames["atom_types"] = tmp["atom_types"] - dict_frames["orig"].append(tmp["orig"]) - dict_frames["cells"].append(tmp["cells"]) - dict_frames["coords"].append(tmp["coords"]) - dict_frames["nopbc"].append(tmp["nopbc"]) - dict_frames["energies"].append(tmp["energies"]) - dict_frames["forces"].append(tmp["forces"]) + dict_frames["orig"] = tmp["orig"] + dict_frames["nopbc"] = tmp["nopbc"] + dict_frames["cells"].append(tmp["cells"][0]) + dict_frames["coords"].append(tmp["coords"][0]) + dict_frames["energies"].append(tmp["energies"][0]) + dict_frames["forces"].append(tmp["forces"][0]) if "virials" in tmp.keys(): - dict_frames["virials"].append(tmp["virials"]) + dict_frames["virials"].append(tmp["virials"][0]) else: dict_frames["virials"].append(None) + ## Covert to numpy array + dict_frames["cells"] = np.asarray(dict_frames["cells"]) + dict_frames["coords"] = np.asarray(dict_frames["coords"]) + dict_frames["energies"] = np.asarray(dict_frames["energies"]) + dict_frames["forces"] = np.asarray(dict_frames["forces"]) + dict_frames["virials"] = np.asarray(dict_frames["virials"]) + return dict_frames From 70f781348d60cacb45931710f2bc1cc3e42fba49 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 11:50:49 +0000 Subject: [PATCH 07/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 66 +++++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 0577fd915..045d1363a 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -1,11 +1,11 @@ from typing import TYPE_CHECKING, Optional, Type import numpy as np +from ase.io import Trajectory import dpdata from dpdata.driver import Driver, Minimizer from dpdata.format import Format -from ase.io import Trajectory try: import ase.io @@ -194,11 +194,14 @@ class ASETrajFormat(Format): a `traj' contains a sequence of frames, each of which is an `Atoms' object. """ - def from_system(self, file_name: str, - begin: Optional[int] = 0, - end: Optional[int] = None, - step: Optional[int] = 1, - **kwargs) -> dict: + def from_system( + self, + file_name: str, + begin: Optional[int] = 0, + end: Optional[int] = None, + step: Optional[int] = 1, + **kwargs, + ) -> dict: """Read ASE's trajectory file to `System` of multiple frames. Parameters @@ -220,13 +223,15 @@ def from_system(self, file_name: str, a dictionary containing data of multiple frames """ traj = Trajectory(file_name) - dict_frames = {"atom_names": None, - "atom_numbs": None, - "atom_types": None, - "orig": None, - "nopbc": None, - "cells": [], - "coords": []} + dict_frames = { + "atom_names": None, + "atom_numbs": None, + "atom_types": None, + "orig": None, + "nopbc": None, + "cells": [], + "coords": [], + } sub_traj = traj[begin:end:step] for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_system(atoms) @@ -245,11 +250,14 @@ def from_system(self, file_name: str, return dict_frames - def from_labeled_system(self, file_name: str, - begin: Optional[int] = 0, - end: Optional[int] = None, - step: Optional[int] = 1, - **kwargs) -> dict: + def from_labeled_system( + self, + file_name: str, + begin: Optional[int] = 0, + end: Optional[int] = None, + step: Optional[int] = 1, + **kwargs, + ) -> dict: """Read ASE's trajectory file to `System` of multiple frames. Parameters @@ -271,16 +279,18 @@ def from_labeled_system(self, file_name: str, a dictionary containing data of multiple frames """ traj = Trajectory(file_name) - dict_frames = {"atom_names": None, - "atom_numbs": None, - "atom_types": None, - "orig": None, - "nopbc": None, - "cells": [], - "coords": [], - "energies": [], - "forces": [], - "virials": []} + dict_frames = { + "atom_names": None, + "atom_numbs": None, + "atom_types": None, + "orig": None, + "nopbc": None, + "cells": [], + "coords": [], + "energies": [], + "forces": [], + "virials": [], + } sub_traj = traj[begin:end:step] for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_labeled_system(atoms) From 65d2797dced99739ad943d2326b24f38e8f66b8d Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 20:54:20 +0900 Subject: [PATCH 08/51] Update ase.py --- dpdata/plugins/ase.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 0577fd915..4ecb23e6f 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -5,7 +5,6 @@ import dpdata from dpdata.driver import Driver, Minimizer from dpdata.format import Format -from ase.io import Trajectory try: import ase.io @@ -16,6 +15,8 @@ except ImportError: pass +from ase.io import Trajectory + @Format.register("ase/structure") class ASEStructureFormat(Format): From 7f1a398a0e0b2c3c2b290b27e60c2e7e64ef2635 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 11:54:44 +0000 Subject: [PATCH 09/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index a9f1845d0..045d1363a 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -16,8 +16,6 @@ except ImportError: pass -from ase.io import Trajectory - @Format.register("ase/structure") class ASEStructureFormat(Format): From 59e32472e6a736358131059b44e06081b7631188 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Wed, 13 Mar 2024 21:05:25 +0900 Subject: [PATCH 10/51] Update ase.py --- dpdata/plugins/ase.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 045d1363a..209ac128a 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -1,8 +1,6 @@ from typing import TYPE_CHECKING, Optional, Type import numpy as np -from ase.io import Trajectory - import dpdata from dpdata.driver import Driver, Minimizer from dpdata.format import Format @@ -222,6 +220,7 @@ def from_system( dict_frames: dict a dictionary containing data of multiple frames """ + from ase.io import Trajectory traj = Trajectory(file_name) dict_frames = { "atom_names": None, @@ -278,6 +277,7 @@ def from_labeled_system( dict_frames: dict a dictionary containing data of multiple frames """ + from ase.io import Trajectory traj = Trajectory(file_name) dict_frames = { "atom_names": None, From a381f891f0b8436aa40fd02346521155b6100906 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 12:05:36 +0000 Subject: [PATCH 11/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 209ac128a..b2929ca6a 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING, Optional, Type import numpy as np + import dpdata from dpdata.driver import Driver, Minimizer from dpdata.format import Format @@ -221,6 +222,7 @@ def from_system( a dictionary containing data of multiple frames """ from ase.io import Trajectory + traj = Trajectory(file_name) dict_frames = { "atom_names": None, @@ -278,6 +280,7 @@ def from_labeled_system( a dictionary containing data of multiple frames """ from ase.io import Trajectory + traj = Trajectory(file_name) dict_frames = { "atom_names": None, From 1585ff8de7a19bc798e9ce01af56bd05d492c86b Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:17:22 +0900 Subject: [PATCH 12/51] Update ase.py --- dpdata/plugins/ase.py | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index b2929ca6a..9fad1273c 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -224,16 +224,16 @@ def from_system( from ase.io import Trajectory traj = Trajectory(file_name) + sub_traj = traj[begin:end:step] dict_frames = { "atom_names": None, "atom_numbs": None, "atom_types": None, "orig": None, "nopbc": None, - "cells": [], - "coords": [], + "cells": [None] * len(sub_traj), + "coords": [None] * len(sub_traj) } - sub_traj = traj[begin:end:step] for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_system(atoms) if i == 0: @@ -242,8 +242,8 @@ def from_system( dict_frames["atom_types"] = tmp["atom_types"] dict_frames["orig"] = tmp["orig"] dict_frames["nopbc"] = tmp["nopbc"] - dict_frames["cells"].append(tmp["cells"][0]) - dict_frames["coords"].append(tmp["coords"][0]) + dict_frames["cells"][i] = tmp["cells"][0] + dict_frames["coords"][i] = tmp["coords"][0] ## Covert to numpy array dict_frames["cells"] = np.asarray(dict_frames["cells"]) @@ -282,19 +282,19 @@ def from_labeled_system( from ase.io import Trajectory traj = Trajectory(file_name) + sub_traj = traj[begin:end:step] dict_frames = { "atom_names": None, "atom_numbs": None, "atom_types": None, "orig": None, "nopbc": None, - "cells": [], - "coords": [], - "energies": [], - "forces": [], - "virials": [], + "cells": [None] * len(sub_traj), + "coords": [None] * len(sub_traj), + "energies": [None] * len(sub_traj), + "forces": [None] * len(sub_traj), + "virials": [None] * len(sub_traj) } - sub_traj = traj[begin:end:step] for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_labeled_system(atoms) if i == 0: @@ -303,14 +303,12 @@ def from_labeled_system( dict_frames["atom_types"] = tmp["atom_types"] dict_frames["orig"] = tmp["orig"] dict_frames["nopbc"] = tmp["nopbc"] - dict_frames["cells"].append(tmp["cells"][0]) - dict_frames["coords"].append(tmp["coords"][0]) - dict_frames["energies"].append(tmp["energies"][0]) - dict_frames["forces"].append(tmp["forces"][0]) + dict_frames["cells"][i] = tmp["cells"][0] + dict_frames["coords"][i] = tmp["coords"][0] + dict_frames["energies"][i] = tmp["energies"][0] + dict_frames["forces"][i] = tmp["forces"][0] if "virials" in tmp.keys(): - dict_frames["virials"].append(tmp["virials"][0]) - else: - dict_frames["virials"].append(None) + dict_frames["virials"][i] = tmp["virials"][0] ## Covert to numpy array dict_frames["cells"] = np.asarray(dict_frames["cells"]) From 2fefd7f23f3955f3abc29533d3ca8da528fd72fd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 00:17:33 +0000 Subject: [PATCH 13/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 9fad1273c..79808a0ad 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -232,7 +232,7 @@ def from_system( "orig": None, "nopbc": None, "cells": [None] * len(sub_traj), - "coords": [None] * len(sub_traj) + "coords": [None] * len(sub_traj), } for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_system(atoms) @@ -293,7 +293,7 @@ def from_labeled_system( "coords": [None] * len(sub_traj), "energies": [None] * len(sub_traj), "forces": [None] * len(sub_traj), - "virials": [None] * len(sub_traj) + "virials": [None] * len(sub_traj), } for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_labeled_system(atoms) From 793745c5b9334dab5ac501c59483791fa710d0f8 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:24:24 +0900 Subject: [PATCH 14/51] Update ase.py --- dpdata/plugins/ase.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 79808a0ad..d5870c03e 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -245,7 +245,7 @@ def from_system( dict_frames["cells"][i] = tmp["cells"][0] dict_frames["coords"][i] = tmp["coords"][0] - ## Covert to numpy array + ## Convert to numpy array dict_frames["cells"] = np.asarray(dict_frames["cells"]) dict_frames["coords"] = np.asarray(dict_frames["coords"]) @@ -293,7 +293,7 @@ def from_labeled_system( "coords": [None] * len(sub_traj), "energies": [None] * len(sub_traj), "forces": [None] * len(sub_traj), - "virials": [None] * len(sub_traj), + "virials": [None] * len(sub_traj) } for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_labeled_system(atoms) @@ -310,7 +310,7 @@ def from_labeled_system( if "virials" in tmp.keys(): dict_frames["virials"][i] = tmp["virials"][0] - ## Covert to numpy array + ## Convert to numpy array dict_frames["cells"] = np.asarray(dict_frames["cells"]) dict_frames["coords"] = np.asarray(dict_frames["coords"]) dict_frames["energies"] = np.asarray(dict_frames["energies"]) From 76895a78e1d7b445a8564f80db8604cae33e37bf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 00:24:36 +0000 Subject: [PATCH 15/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index d5870c03e..1fecbfbe4 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -293,7 +293,7 @@ def from_labeled_system( "coords": [None] * len(sub_traj), "energies": [None] * len(sub_traj), "forces": [None] * len(sub_traj), - "virials": [None] * len(sub_traj) + "virials": [None] * len(sub_traj), } for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_labeled_system(atoms) From a12c374600d5e3b8ba0f3574f7451ebe2ae0553a Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 12:43:33 +0900 Subject: [PATCH 16/51] Update ase.py --- dpdata/plugins/ase.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 1fecbfbe4..29e642f0f 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -9,6 +9,7 @@ try: import ase.io from ase.calculators.calculator import PropertyNotImplementedError + from ase.io import Trajectory if TYPE_CHECKING: from ase.optimize.optimize import Optimizer @@ -221,8 +222,6 @@ def from_system( dict_frames: dict a dictionary containing data of multiple frames """ - from ase.io import Trajectory - traj = Trajectory(file_name) sub_traj = traj[begin:end:step] dict_frames = { @@ -279,8 +278,6 @@ def from_labeled_system( dict_frames: dict a dictionary containing data of multiple frames """ - from ase.io import Trajectory - traj = Trajectory(file_name) sub_traj = traj[begin:end:step] dict_frames = { From 0a77be5d3060f6aa946c0e56e7dba9e10acc6efb Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 18:58:52 +0900 Subject: [PATCH 17/51] Update test_ase_traj.py --- tests/test_ase_traj.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 593d96f09..842464544 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -43,5 +43,16 @@ def setUp(self): self.v_places = 4 +@unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") +class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): + def setUp(self): + self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") + self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") + self.places = 6 + self.e_places = 6 + self.f_places = 6 + self.v_places = 4 + + if __name__ == "__main__": unittest.main() From ea85559a086b472c6449338ed82344398a68dc90 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:11:38 +0900 Subject: [PATCH 18/51] u --- tests/ase_traj/MoS2_unlabeled.traj | Bin 0 -> 647 bytes tests/test_ase_traj.py | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 tests/ase_traj/MoS2_unlabeled.traj diff --git a/tests/ase_traj/MoS2_unlabeled.traj b/tests/ase_traj/MoS2_unlabeled.traj new file mode 100644 index 0000000000000000000000000000000000000000..b39d3d102d800257cb66f52fe1dda6d94b190d93 GIT binary patch literal 647 zcmdN@$WK!U&B=8PcGV3jO3X@4F3B&dR8U}MfB;4)Z2+Y^paNPzz5o;x!-i_dpadc; zx11>ZX@8Jc!rw0atv%QE#RaxpKkadd?}v)-59A8koyW`OfNmhf99{>QIWT!Nai}?* z82WjbwA;lbg&ok{gF_tV9(#26K-|d*H3#7y9OC=GLmgVJRF+y)oSC1eWTjxJqo9;n zoEnc1Q8LyuGSV|t0!kDlB?Fa2mlTzz>L@_Sw8Wg^)L5WgUTJO;&=ftOf@-C_l*FQ< z#7dCjXhS2AbY@q<_| z$pM>bre|zsrlVk>X8 Date: Thu, 14 Mar 2024 10:11:48 +0000 Subject: [PATCH 19/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_ase_traj.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 3ef4a91b4..64cf866f3 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -49,7 +49,9 @@ def setUp(self): self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_3 = dpdata.System("ase_traj/MoS2_unlabeled.traj", fmt="ase/traj") - self.system_4 = dpdata.LabeledSystem("ase_traj/MoS2_unlabeled.traj", fmt="ase/traj") + self.system_4 = dpdata.LabeledSystem( + "ase_traj/MoS2_unlabeled.traj", fmt="ase/traj" + ) self.places = 6 self.e_places = 6 self.f_places = 6 From 0b27552e4e999a8379f0545d6a80c69e36b0dc0f Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:15:26 +0900 Subject: [PATCH 20/51] Update test_ase_traj.py --- tests/test_ase_traj.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 3ef4a91b4..25eb0c6d1 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -50,10 +50,6 @@ def setUp(self): self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_3 = dpdata.System("ase_traj/MoS2_unlabeled.traj", fmt="ase/traj") self.system_4 = dpdata.LabeledSystem("ase_traj/MoS2_unlabeled.traj", fmt="ase/traj") - self.places = 6 - self.e_places = 6 - self.f_places = 6 - self.v_places = 4 if __name__ == "__main__": From 67e78769d5374e81836b08db7a24abcde852a5e4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:17:06 +0000 Subject: [PATCH 21/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_ase_traj.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 25eb0c6d1..ea5bedf46 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -49,7 +49,9 @@ def setUp(self): self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_3 = dpdata.System("ase_traj/MoS2_unlabeled.traj", fmt="ase/traj") - self.system_4 = dpdata.LabeledSystem("ase_traj/MoS2_unlabeled.traj", fmt="ase/traj") + self.system_4 = dpdata.LabeledSystem( + "ase_traj/MoS2_unlabeled.traj", fmt="ase/traj" + ) if __name__ == "__main__": From 2afdc4f89fc748927823e1559c97f87ec2a6b777 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:24:07 +0900 Subject: [PATCH 22/51] up --- tests/ase_traj/Cu_unlabeled.traj | Bin 0 -> 1190 bytes tests/ase_traj/MoS2_unlabeled.traj | Bin 647 -> 0 bytes tests/test_ase_traj.py | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 tests/ase_traj/Cu_unlabeled.traj delete mode 100644 tests/ase_traj/MoS2_unlabeled.traj diff --git a/tests/ase_traj/Cu_unlabeled.traj b/tests/ase_traj/Cu_unlabeled.traj new file mode 100644 index 0000000000000000000000000000000000000000..a9b7c75922a3443e6ffc5eff4c9d1c6650ff8ec8 GIT binary patch literal 1190 zcmc&wy-tHr7}dBk>S%IvHxo+usnxg?2jc^%6B0x5Ho;IZ7iv_yu!J#-lo@!t*F5OHj(GFqwLWBxTdd zh)OKd=RA9iq>N^jH}Kp_PO{Q-sp51HE~=uuNJ?6`(Qh)Zij31dDhGWEIp_U46^k^j ZJJ0AuCbKQOevmn+-`jCJX~$u>_yvfJXxab( literal 0 HcmV?d00001 diff --git a/tests/ase_traj/MoS2_unlabeled.traj b/tests/ase_traj/MoS2_unlabeled.traj deleted file mode 100644 index b39d3d102d800257cb66f52fe1dda6d94b190d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmdN@$WK!U&B=8PcGV3jO3X@4F3B&dR8U}MfB;4)Z2+Y^paNPzz5o;x!-i_dpadc; zx11>ZX@8Jc!rw0atv%QE#RaxpKkadd?}v)-59A8koyW`OfNmhf99{>QIWT!Nai}?* z82WjbwA;lbg&ok{gF_tV9(#26K-|d*H3#7y9OC=GLmgVJRF+y)oSC1eWTjxJqo9;n zoEnc1Q8LyuGSV|t0!kDlB?Fa2mlTzz>L@_Sw8Wg^)L5WgUTJO;&=ftOf@-C_l*FQ< z#7dCjXhS2AbY@q<_| z$pM>bre|zsrlVk>X8 Date: Thu, 14 Mar 2024 19:24:54 +0900 Subject: [PATCH 23/51] u --- .../ase_traj/{Cu_unlabeled.traj => Cu_unlabel.traj} | Bin tests/test_ase_traj.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename tests/ase_traj/{Cu_unlabeled.traj => Cu_unlabel.traj} (100%) diff --git a/tests/ase_traj/Cu_unlabeled.traj b/tests/ase_traj/Cu_unlabel.traj similarity index 100% rename from tests/ase_traj/Cu_unlabeled.traj rename to tests/ase_traj/Cu_unlabel.traj diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index d2ba216c2..34b75991b 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -48,9 +48,9 @@ class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") - self.system_3 = dpdata.System("ase_traj/Cu_unlabeled.traj", fmt="ase/traj") + self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") self.system_4 = dpdata.LabeledSystem( - "ase_traj/Cu_unlabeled.traj", fmt="ase/traj" + "ase_traj/Cu_unlabel.traj", fmt="ase/traj" ) From fe5163a7f7db1ea5495c8e4f325674f075bebcd4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:26:00 +0000 Subject: [PATCH 24/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_ase_traj.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 34b75991b..2f5b4b9d6 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -49,9 +49,7 @@ def setUp(self): self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") - self.system_4 = dpdata.LabeledSystem( - "ase_traj/Cu_unlabel.traj", fmt="ase/traj" - ) + self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") if __name__ == "__main__": From d41573ba2f2811ee42ccfc96e1cd02064a43f68e Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:30:11 +0900 Subject: [PATCH 25/51] Update test_ase_traj.py --- tests/test_ase_traj.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 34b75991b..4807f872a 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -46,8 +46,8 @@ def setUp(self): @unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): - self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") - self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") + # self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") + # self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") self.system_4 = dpdata.LabeledSystem( "ase_traj/Cu_unlabel.traj", fmt="ase/traj" From e05c9cef37611f1a918de0ce7c7152bc0946a835 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:35:43 +0900 Subject: [PATCH 26/51] u --- tests/ase_traj/Cu.traj | Bin 0 -> 28809 bytes tests/test_ase_traj.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 tests/ase_traj/Cu.traj diff --git a/tests/ase_traj/Cu.traj b/tests/ase_traj/Cu.traj new file mode 100644 index 0000000000000000000000000000000000000000..9239cba8f6e7489230df6095744be9d744a747de GIT binary patch literal 28809 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 erK+w*NReo&@5uX{`P&Ip8o|YN#OSY literal 0 HcmV?d00001 diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 0ff687761..b60898581 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -46,8 +46,8 @@ def setUp(self): @unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): - # self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") - # self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") + self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") + self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") From 95939bd1164dbb0df1a93d509882bf849c959a01 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:18:24 +0900 Subject: [PATCH 27/51] Update ase.py --- dpdata/plugins/ase.py | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 29e642f0f..9cd4b8794 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -85,23 +85,24 @@ def from_labeled_system(self, atoms: "ase.Atoms", **kwargs) -> dict: have a calculator """ info_dict = self.from_system(atoms) - try: - energies = atoms.get_potential_energy(force_consistent=True) - except PropertyNotImplementedError: - energies = atoms.get_potential_energy() - forces = atoms.get_forces() - info_dict = { - **info_dict, - "energies": np.array([energies]), - "forces": np.array([forces]), - } - try: - stress = atoms.get_stress(False) - except PropertyNotImplementedError: - pass - else: - virials = np.array([-atoms.get_volume() * stress]) - info_dict["virials"] = virials + if atoms.calc is not None: + try: + energies = atoms.get_potential_energy(force_consistent=True) + except PropertyNotImplementedError: + energies = atoms.get_potential_energy() + forces = atoms.get_forces() + info_dict = { + **info_dict, + "energies": np.array([energies]), + "forces": np.array([forces]), + } + try: + stress = atoms.get_stress(False) + except PropertyNotImplementedError: + pass + else: + virials = np.array([-atoms.get_volume() * stress]) + info_dict["virials"] = virials return info_dict def from_multi_systems( @@ -302,8 +303,10 @@ def from_labeled_system( dict_frames["nopbc"] = tmp["nopbc"] dict_frames["cells"][i] = tmp["cells"][0] dict_frames["coords"][i] = tmp["coords"][0] - dict_frames["energies"][i] = tmp["energies"][0] - dict_frames["forces"][i] = tmp["forces"][0] + if "energies" in tmp.keys(): + dict_frames["energies"][i] = tmp["energies"][0] + if "forces" in tmp.keys(): + dict_frames["forces"][i] = tmp["forces"][0] if "virials" in tmp.keys(): dict_frames["virials"][i] = tmp["virials"][0] From 52ef114235e040f7c4e7ebaa4a6cb79dbef2fd76 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:18:55 +0900 Subject: [PATCH 28/51] Update ase.py --- dpdata/plugins/ase.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 9cd4b8794..ae078d9b1 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -85,6 +85,7 @@ def from_labeled_system(self, atoms: "ase.Atoms", **kwargs) -> dict: have a calculator """ info_dict = self.from_system(atoms) + if atoms.calc is not None: try: energies = atoms.get_potential_energy(force_consistent=True) @@ -103,6 +104,7 @@ def from_labeled_system(self, atoms: "ase.Atoms", **kwargs) -> dict: else: virials = np.array([-atoms.get_volume() * stress]) info_dict["virials"] = virials + return info_dict def from_multi_systems( From 60212f6c9677a7d82c60a7693e5a32a4898fb673 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:28:30 +0900 Subject: [PATCH 29/51] Update ase.py --- dpdata/plugins/ase.py | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index ae078d9b1..c82b865e7 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -85,26 +85,23 @@ def from_labeled_system(self, atoms: "ase.Atoms", **kwargs) -> dict: have a calculator """ info_dict = self.from_system(atoms) - - if atoms.calc is not None: - try: - energies = atoms.get_potential_energy(force_consistent=True) - except PropertyNotImplementedError: - energies = atoms.get_potential_energy() - forces = atoms.get_forces() - info_dict = { - **info_dict, - "energies": np.array([energies]), - "forces": np.array([forces]), - } - try: - stress = atoms.get_stress(False) - except PropertyNotImplementedError: - pass - else: - virials = np.array([-atoms.get_volume() * stress]) - info_dict["virials"] = virials - + try: + energies = atoms.get_potential_energy(force_consistent=True) + except PropertyNotImplementedError: + energies = atoms.get_potential_energy() + forces = atoms.get_forces() + info_dict = { + **info_dict, + "energies": np.array([energies]), + "forces": np.array([forces]), + } + try: + stress = atoms.get_stress(False) + except PropertyNotImplementedError: + pass + else: + virials = np.array([-atoms.get_volume() * stress]) + info_dict["virials"] = virials return info_dict def from_multi_systems( From 57d938e2e48b4c35aaa8a2cb486c622b0a3c3a78 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:32:12 +0900 Subject: [PATCH 30/51] Update test_ase_traj.py --- tests/test_ase_traj.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index b60898581..556db336f 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -48,8 +48,8 @@ class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") - self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") - self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + # self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + # self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") if __name__ == "__main__": From 3c9537635959a785f6ab3fc4ada3be26766e726a Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:51:24 +0900 Subject: [PATCH 31/51] Update test_ase_traj.py --- tests/test_ase_traj.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 556db336f..3a2f12e77 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -48,7 +48,7 @@ class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") - # self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") # self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") From c3c45efed2beb4f45f6db082efa60c3a7bbbd164 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 10:06:47 +0900 Subject: [PATCH 32/51] Update ase.py --- dpdata/plugins/ase.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index c82b865e7..2437d5698 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -280,6 +280,11 @@ def from_labeled_system( """ traj = Trajectory(file_name) sub_traj = traj[begin:end:step] + + ## check if the first frame has a calculator + if sub_traj[0].calc is None: + raise ValueError("The input trajectory does not contain energies and forces.") + dict_frames = { "atom_names": None, "atom_numbs": None, @@ -302,10 +307,8 @@ def from_labeled_system( dict_frames["nopbc"] = tmp["nopbc"] dict_frames["cells"][i] = tmp["cells"][0] dict_frames["coords"][i] = tmp["coords"][0] - if "energies" in tmp.keys(): - dict_frames["energies"][i] = tmp["energies"][0] - if "forces" in tmp.keys(): - dict_frames["forces"][i] = tmp["forces"][0] + dict_frames["energies"][i] = tmp["energies"][0] + dict_frames["forces"][i] = tmp["forces"][0] if "virials" in tmp.keys(): dict_frames["virials"][i] = tmp["virials"][0] From 46171fcd8cb00827c09c711e43df3a78e3c6fb89 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 01:06:58 +0000 Subject: [PATCH 33/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 2437d5698..b4236857b 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -283,7 +283,9 @@ def from_labeled_system( ## check if the first frame has a calculator if sub_traj[0].calc is None: - raise ValueError("The input trajectory does not contain energies and forces.") + raise ValueError( + "The input trajectory does not contain energies and forces." + ) dict_frames = { "atom_names": None, From 1efef9b51869810f21a3c5a27fb96fe166a5fe02 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 10:12:24 +0900 Subject: [PATCH 34/51] Update test_ase_traj.py --- tests/test_ase_traj.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 3a2f12e77..0bb9a0c65 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -49,7 +49,11 @@ def setUp(self): self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") - # self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + self.places = 6 + self.e_places = 6 + self.f_places = 6 + self.v_places = 4 if __name__ == "__main__": From 33c508453b00c8ca28bd3cd1bb02ab6b1906fd68 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 10:15:00 +0900 Subject: [PATCH 35/51] Update ase.py --- dpdata/plugins/ase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index b4236857b..e753b1975 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -284,7 +284,7 @@ def from_labeled_system( ## check if the first frame has a calculator if sub_traj[0].calc is None: raise ValueError( - "The input trajectory does not contain energies and forces." + "The labeled input is expected. However, the input trajectory does not contain energies and forces, please check it." ) dict_frames = { From 790d4b5e58448844c6c82b473966887f547ca025 Mon Sep 17 00:00:00 2001 From: "C. Thang Nguyen" <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 11:05:57 +0900 Subject: [PATCH 36/51] u --- tests/test_ase_traj.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 0bb9a0c65..f4fc3c4ee 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -48,8 +48,8 @@ class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") - self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") - self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + # self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + # self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 self.f_places = 6 From f0c5c7def878ae151f3d1d130c15c1ff8f810dcb Mon Sep 17 00:00:00 2001 From: "C. Thang Nguyen" <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 11:15:27 +0900 Subject: [PATCH 37/51] u --- tests/ase_traj/Cu.traj | Bin 28809 -> 0 bytes tests/ase_traj/Cu_unlabel.traj | Bin 1190 -> 0 bytes tests/test_ase_traj.py | 6 ++---- 3 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 tests/ase_traj/Cu.traj delete mode 100644 tests/ase_traj/Cu_unlabel.traj diff --git a/tests/ase_traj/Cu.traj b/tests/ase_traj/Cu.traj deleted file mode 100644 index 9239cba8f6e7489230df6095744be9d744a747de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28809 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 erK+w*NReo&@5uX{`P&Ip8o|YN#OSY diff --git a/tests/ase_traj/Cu_unlabel.traj b/tests/ase_traj/Cu_unlabel.traj deleted file mode 100644 index a9b7c75922a3443e6ffc5eff4c9d1c6650ff8ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1190 zcmc&wy-tHr7}dBk>S%IvHxo+usnxg?2jc^%6B0x5Ho;IZ7iv_yu!J#-lo@!t*F5OHj(GFqwLWBxTdd zh)OKd=RA9iq>N^jH}Kp_PO{Q-sp51HE~=uuNJ?6`(Qh)Zij31dDhGWEIp_U46^k^j ZJJ0AuCbKQOevmn+-`jCJX~$u>_yvfJXxab( diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index f4fc3c4ee..6ac463c82 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -46,10 +46,8 @@ def setUp(self): @unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): - self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") - self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") - # self.system_3 = dpdata.System("ase_traj/Cu_unlabel.traj", fmt="ase/traj") - # self.system_4 = dpdata.LabeledSystem("ase_traj/Cu_unlabel.traj", fmt="ase/traj") + self.system_1 = dpdata.System("ase_traj/Al4He4O6.traj", fmt="ase/traj") + self.system_2 = dpdata.LabeledSystem("ase_traj/Al4He4O6.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 self.f_places = 6 From 551920e2053d5aed6882ee3e5e91c89bd1803605 Mon Sep 17 00:00:00 2001 From: "C. Thang Nguyen" <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 12:06:27 +0900 Subject: [PATCH 38/51] u --- tests/test_ase_traj.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 6ac463c82..842464544 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -46,8 +46,8 @@ def setUp(self): @unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): - self.system_1 = dpdata.System("ase_traj/Al4He4O6.traj", fmt="ase/traj") - self.system_2 = dpdata.LabeledSystem("ase_traj/Al4He4O6.traj", fmt="ase/traj") + self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") + self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 self.f_places = 6 From d7c98f96bdbb3a530e49b61816cb3c56b7121652 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 13:55:58 +0900 Subject: [PATCH 39/51] u --- dpdata/plugins/ase.py | 4 ++-- tests/test_ase_traj.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index e753b1975..d0138404d 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -230,8 +230,8 @@ def from_system( "atom_types": None, "orig": None, "nopbc": None, - "cells": [None] * len(sub_traj), - "coords": [None] * len(sub_traj), + "cells": np.array([None] * len(sub_traj)), + "coords": np.array([None] * len(sub_traj)), } for i, atoms in enumerate(sub_traj): tmp = ASEStructureFormat().from_system(atoms) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 842464544..ce3f8fc66 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -47,7 +47,7 @@ def setUp(self): class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") - self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") + # self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 self.f_places = 6 From e0b53f759877d569904b445fd94f11691bde4c64 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 15:35:26 +0900 Subject: [PATCH 40/51] u --- dpdata/plugins/ase.py | 79 +++++++++++++----------------------------- tests/test_ase_traj.py | 2 +- 2 files changed, 25 insertions(+), 56 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index d0138404d..efe38915a 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -224,29 +224,15 @@ def from_system( """ traj = Trajectory(file_name) sub_traj = traj[begin:end:step] - dict_frames = { - "atom_names": None, - "atom_numbs": None, - "atom_types": None, - "orig": None, - "nopbc": None, - "cells": np.array([None] * len(sub_traj)), - "coords": np.array([None] * len(sub_traj)), - } - for i, atoms in enumerate(sub_traj): + dict_frames = ASEStructureFormat().from_system(sub_traj[0]) + for atoms in sub_traj[1:]: tmp = ASEStructureFormat().from_system(atoms) - if i == 0: - dict_frames["atom_names"] = tmp["atom_names"] - dict_frames["atom_numbs"] = tmp["atom_numbs"] - dict_frames["atom_types"] = tmp["atom_types"] - dict_frames["orig"] = tmp["orig"] - dict_frames["nopbc"] = tmp["nopbc"] - dict_frames["cells"][i] = tmp["cells"][0] - dict_frames["coords"][i] = tmp["coords"][0] - - ## Convert to numpy array - dict_frames["cells"] = np.asarray(dict_frames["cells"]) - dict_frames["coords"] = np.asarray(dict_frames["coords"]) + dict_frames["cells"] = np.append(dict_frames["cells"], tmp["cells"][0]) + dict_frames["coords"] = np.append(dict_frames["coords"], tmp["coords"][0]) + + ## Correct the shape of numpy arrays + dict_frames["cells"] = dict_frames["cells"].reshape(-1, 3, 3) + dict_frames["coords"] = dict_frames["coords"].reshape(len(sub_traj), -1, 3) return dict_frames @@ -284,42 +270,25 @@ def from_labeled_system( ## check if the first frame has a calculator if sub_traj[0].calc is None: raise ValueError( - "The labeled input is expected. However, the input trajectory does not contain energies and forces, please check it." + "The input trajectory does not contain energies and forces, may not be a labeled system." ) - dict_frames = { - "atom_names": None, - "atom_numbs": None, - "atom_types": None, - "orig": None, - "nopbc": None, - "cells": [None] * len(sub_traj), - "coords": [None] * len(sub_traj), - "energies": [None] * len(sub_traj), - "forces": [None] * len(sub_traj), - "virials": [None] * len(sub_traj), - } - for i, atoms in enumerate(sub_traj): + dict_frames = ASEStructureFormat().from_labeled_system(sub_traj[0]) + for atoms in sub_traj[1:]: tmp = ASEStructureFormat().from_labeled_system(atoms) - if i == 0: - dict_frames["atom_names"] = tmp["atom_names"] - dict_frames["atom_numbs"] = tmp["atom_numbs"] - dict_frames["atom_types"] = tmp["atom_types"] - dict_frames["orig"] = tmp["orig"] - dict_frames["nopbc"] = tmp["nopbc"] - dict_frames["cells"][i] = tmp["cells"][0] - dict_frames["coords"][i] = tmp["coords"][0] - dict_frames["energies"][i] = tmp["energies"][0] - dict_frames["forces"][i] = tmp["forces"][0] - if "virials" in tmp.keys(): - dict_frames["virials"][i] = tmp["virials"][0] - - ## Convert to numpy array - dict_frames["cells"] = np.asarray(dict_frames["cells"]) - dict_frames["coords"] = np.asarray(dict_frames["coords"]) - dict_frames["energies"] = np.asarray(dict_frames["energies"]) - dict_frames["forces"] = np.asarray(dict_frames["forces"]) - dict_frames["virials"] = np.asarray(dict_frames["virials"]) + dict_frames["cells"] = np.append(dict_frames["cells"], tmp["cells"][0]) + dict_frames["coords"] = np.append(dict_frames["coords"], tmp["coords"][0]) + dict_frames["energies"] = np.append(dict_frames["energies"], tmp["energies"][0]) + dict_frames["forces"] = np.append(dict_frames["forces"], tmp["forces"][0]) + if "virials" in tmp.keys() and "virials" in dict_frames.keys(): + dict_frames["virials"] = np.append(dict_frames["virials"], tmp["virials"][0]) + + ## Correct the shape of numpy arrays + dict_frames["cells"] = dict_frames["cells"].reshape(-1, 3, 3) + dict_frames["coords"] = dict_frames["coords"].reshape(len(sub_traj), -1, 3) + dict_frames["forces"] = dict_frames["forces"].reshape(len(sub_traj), -1, 3) + if "virials" in dict_frames.keys(): + dict_frames["virials"] = dict_frames["virials"].reshape(-1, 3, 3) return dict_frames diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index ce3f8fc66..842464544 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -47,7 +47,7 @@ def setUp(self): class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") - # self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") + self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 self.f_places = 6 From 81f402a54d0596ae4d6dcbe02ff7972f21c977f4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 06:35:36 +0000 Subject: [PATCH 41/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index efe38915a..e205f465e 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -278,10 +278,14 @@ def from_labeled_system( tmp = ASEStructureFormat().from_labeled_system(atoms) dict_frames["cells"] = np.append(dict_frames["cells"], tmp["cells"][0]) dict_frames["coords"] = np.append(dict_frames["coords"], tmp["coords"][0]) - dict_frames["energies"] = np.append(dict_frames["energies"], tmp["energies"][0]) + dict_frames["energies"] = np.append( + dict_frames["energies"], tmp["energies"][0] + ) dict_frames["forces"] = np.append(dict_frames["forces"], tmp["forces"][0]) if "virials" in tmp.keys() and "virials" in dict_frames.keys(): - dict_frames["virials"] = np.append(dict_frames["virials"], tmp["virials"][0]) + dict_frames["virials"] = np.append( + dict_frames["virials"], tmp["virials"][0] + ) ## Correct the shape of numpy arrays dict_frames["cells"] = dict_frames["cells"].reshape(-1, 3, 3) From 924883320a216d071859a197d2635dfbc1e0b23c Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Fri, 15 Mar 2024 15:42:17 +0900 Subject: [PATCH 42/51] u --- tests/ase_traj/Cu.traj | Bin 0 -> 28809 bytes tests/test_ase_traj.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 tests/ase_traj/Cu.traj diff --git a/tests/ase_traj/Cu.traj b/tests/ase_traj/Cu.traj new file mode 100644 index 0000000000000000000000000000000000000000..9239cba8f6e7489230df6095744be9d744a747de GIT binary patch literal 28809 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 erK+w*NReo&@5uX{`P&Ip8o|YN#OSY literal 0 HcmV?d00001 diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 842464544..90cfb921a 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -46,8 +46,8 @@ def setUp(self): @unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): - self.system_1 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") - self.system_2 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") + self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") + self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 self.f_places = 6 From 8f4684d7b1944f24540d563b3268e4301be0b6bc Mon Sep 17 00:00:00 2001 From: "C. Thang Nguyen" <46436648+thangckt@users.noreply.github.com> Date: Sat, 16 Mar 2024 15:53:55 +0900 Subject: [PATCH 43/51] u --- tests/test_ase_traj.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 90cfb921a..ed76668b8 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -48,6 +48,8 @@ class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.System("ase_traj/Cu.traj", fmt="ase/traj") self.system_2 = dpdata.LabeledSystem("ase_traj/Cu.traj", fmt="ase/traj") + self.system_3 = dpdata.System("ase_traj/HeAlO.traj", fmt="ase/traj") + self.system_4 = dpdata.LabeledSystem("ase_traj/HeAlO.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 self.f_places = 6 From eb6657151537992c07d0376d092f855ef3c5c23e Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Sun, 17 Mar 2024 00:58:33 +0900 Subject: [PATCH 44/51] u --- tests/ase_traj/Cu.traj | Bin 28809 -> 0 bytes tests/ase_traj/MoS2.traj | Bin 0 -> 21487 bytes tests/ase_traj/MoS2/set.000/box.npy | Bin 0 -> 344 bytes tests/ase_traj/MoS2/set.000/coord.npy | Bin 0 -> 7616 bytes tests/ase_traj/MoS2/set.000/energy.npy | Bin 0 -> 152 bytes tests/ase_traj/MoS2/set.000/force.npy | Bin 0 -> 7616 bytes tests/ase_traj/MoS2/set.000/virial.npy | Bin 0 -> 344 bytes tests/ase_traj/MoS2/type.raw | 104 +++++++++++++++++++++++++ tests/ase_traj/MoS2/type_map.raw | 2 + tests/test_ase_traj.py | 6 +- 10 files changed, 108 insertions(+), 4 deletions(-) delete mode 100644 tests/ase_traj/Cu.traj create mode 100644 tests/ase_traj/MoS2.traj create mode 100644 tests/ase_traj/MoS2/set.000/box.npy create mode 100644 tests/ase_traj/MoS2/set.000/coord.npy create mode 100644 tests/ase_traj/MoS2/set.000/energy.npy create mode 100644 tests/ase_traj/MoS2/set.000/force.npy create mode 100644 tests/ase_traj/MoS2/set.000/virial.npy create mode 100644 tests/ase_traj/MoS2/type.raw create mode 100644 tests/ase_traj/MoS2/type_map.raw diff --git a/tests/ase_traj/Cu.traj b/tests/ase_traj/Cu.traj deleted file mode 100644 index 9239cba8f6e7489230df6095744be9d744a747de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28809 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 erK+w*NReo&@5uX{`P&Ip8o|YN#OSY diff --git a/tests/ase_traj/MoS2.traj b/tests/ase_traj/MoS2.traj new file mode 100644 index 0000000000000000000000000000000000000000..07ebd2833434c4caf2a3d2d8bc623c4315261d70 GIT binary patch literal 21487 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 FKLBhTjUxa6 literal 0 HcmV?d00001 diff --git a/tests/ase_traj/MoS2/set.000/box.npy b/tests/ase_traj/MoS2/set.000/box.npy new file mode 100644 index 0000000000000000000000000000000000000000..b7a78de97596502fda79588d692d69a0e92781b8 GIT binary patch literal 344 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

>p8e68?BF2Ully5ZYIO*{&SKo-hQCj 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 i{_VK=4-50Z>=*X!jk(m&vmYi8 Date: Sun, 17 Mar 2024 01:00:53 +0900 Subject: [PATCH 45/51] Update test_ase_traj.py --- tests/test_ase_traj.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index d3b982181..6ae8ee134 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -46,7 +46,7 @@ def setUp(self): @unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): - self.system_1 = dpdata.System("ase_traj/MoS2", fmt="deepmd") + self.system_1 = dpdata.LabeledSystem("ase_traj/MoS2", fmt="deepmd") self.system_2 = dpdata.LabeledSystem("ase_traj/MoS2.traj", fmt="ase/traj") self.places = 6 self.e_places = 6 From 77e8ef4b2319de90f707011060fd2065b91952a6 Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Sun, 17 Mar 2024 19:46:28 +0900 Subject: [PATCH 46/51] u --- tests/ase_traj/MoS2/box.raw | 3 +++ tests/ase_traj/MoS2/coord.raw | 3 +++ tests/ase_traj/MoS2/energy.raw | 3 +++ tests/ase_traj/MoS2/force.raw | 3 +++ tests/ase_traj/MoS2/set.000/box.npy | Bin 344 -> 0 bytes tests/ase_traj/MoS2/set.000/coord.npy | Bin 7616 -> 0 bytes tests/ase_traj/MoS2/set.000/energy.npy | Bin 152 -> 0 bytes tests/ase_traj/MoS2/set.000/force.npy | Bin 7616 -> 0 bytes tests/ase_traj/MoS2/set.000/virial.npy | Bin 344 -> 0 bytes tests/ase_traj/MoS2/virial.raw | 3 +++ 10 files changed, 15 insertions(+) create mode 100644 tests/ase_traj/MoS2/box.raw create mode 100644 tests/ase_traj/MoS2/coord.raw create mode 100644 tests/ase_traj/MoS2/energy.raw create mode 100644 tests/ase_traj/MoS2/force.raw delete mode 100644 tests/ase_traj/MoS2/set.000/box.npy delete mode 100644 tests/ase_traj/MoS2/set.000/coord.npy delete mode 100644 tests/ase_traj/MoS2/set.000/energy.npy delete mode 100644 tests/ase_traj/MoS2/set.000/force.npy delete mode 100644 tests/ase_traj/MoS2/set.000/virial.npy create mode 100644 tests/ase_traj/MoS2/virial.raw diff --git a/tests/ase_traj/MoS2/box.raw b/tests/ase_traj/MoS2/box.raw new file mode 100644 index 000000000..c104fa1a8 --- /dev/null +++ b/tests/ase_traj/MoS2/box.raw @@ -0,0 +1,3 @@ +1.571723287959847148e+01 1.382976769974756167e-14 -4.335347714314398588e-27 -2.135776446678914908e+01 3.745820611488967700e+01 -5.045434369425391968e-16 2.142284677455918376e-24 8.545634906358754423e-15 2.312999999999935952e+01 +1.571734059897834079e+01 1.382976314475292595e-14 -4.334590580314998760e-27 -2.135791084402753981e+01 3.745820611488959173e+01 -5.045434369425390982e-16 2.155934654129174673e-24 8.545634906358737068e-15 2.312999999999930978e+01 +1.571733836538147244e+01 1.382976369106826543e-14 1.070818208280100644e-26 -2.135790780884721940e+01 3.745820611488941410e+01 -2.741620021286372525e-14 -1.227011684011214072e-23 -4.602381967266446384e-15 2.312999999999919609e+01 diff --git a/tests/ase_traj/MoS2/coord.raw b/tests/ase_traj/MoS2/coord.raw new file mode 100644 index 000000000..3fdeab792 --- /dev/null +++ b/tests/ase_traj/MoS2/coord.raw @@ -0,0 +1,3 @@ +-5.698917181841744117e+00 1.006790679306580394e+01 1.159245053571848239e+01 -4.124148015489565999e+00 1.088802337022864286e+01 1.315383735185872993e+01 -4.133118968716363639e+00 1.086190741420796613e+01 1.000733134883523334e+01 -7.267890536356554243e+00 1.273698271989690234e+01 1.158891517840854313e+01 -5.683596759923723596e+00 1.368706277403957472e+01 1.313437400602857785e+01 -5.709284394070140323e+00 1.366162503042886378e+01 1.000793735424933928e+01 -8.841702832703273174e+00 1.550089578223382780e+01 1.158717571654348610e+01 -7.251303482056198568e+00 1.643579562597492583e+01 1.313984541628219560e+01 -7.281059165397710586e+00 1.642087870241086378e+01 1.000323716977040078e+01 -1.041692876545396551e+01 1.825873596754246009e+01 1.158119272673626909e+01 -8.821943846043978965e+00 1.918508074987153122e+01 1.313819814976830891e+01 -8.845941842383382436e+00 1.917560395927925398e+01 1.000270590166260654e+01 -1.199618073825843112e+01 2.101155575753879390e+01 1.156390533994406589e+01 -1.041693743111767567e+01 2.193435873625131549e+01 1.313427014536195436e+01 -1.041693744539048261e+01 2.194353310684435954e+01 1.000090664546197416e+01 -1.356913420004361903e+01 2.376992782718692609e+01 1.156670372486669329e+01 -1.199579262729072227e+01 2.469462411737959329e+01 1.314429695808350473e+01 -1.198967025290584587e+01 2.470860008111487360e+01 1.000699283988100241e+01 -1.513623430404684633e+01 2.653175673146733260e+01 1.161275669332301064e+01 -1.356869490284493729e+01 2.753404029092070360e+01 1.308770381909617164e+01 -1.356108596304206593e+01 2.756170398235698826e+01 1.012504570146521665e+01 -2.558304034934836046e+00 1.006980273310816010e+01 1.158430616815146053e+01 -9.924592946396952886e-01 1.088802307619554277e+01 1.315383703252938297e+01 -9.834886043095262265e-01 1.086190701459755026e+01 1.000733101965925265e+01 -4.128804268604826078e+00 1.274232493671640576e+01 1.156519404322548894e+01 -2.558306242684514231e+00 1.370676133878904324e+01 1.310524266874485555e+01 -2.558306479971662828e+00 1.365501994800619912e+01 9.987832811009482725e+00 -5.690593164153622041e+00 1.551464941075666992e+01 1.155608893075993926e+01 -4.078117835059944518e+00 1.650688319293193729e+01 1.307881189048612214e+01 -4.146985493997946470e+00 1.643660008963127339e+01 9.937420963221658354e+00 -7.252251520775193860e+00 1.825797182629527171e+01 1.155937764455236128e+01 -5.595377446683438727e+00 1.918435702588932301e+01 1.308364674909424963e+01 -5.700406344960809335e+00 1.916187012105485721e+01 9.939404887867590688e+00 -8.837687449899291892e+00 2.101155718606796441e+01 1.156390558462243767e+01 -7.237174184890847961e+00 2.191958348614020125e+01 1.311286817387469839e+01 -7.274935598983326202e+00 2.194600101884719834e+01 9.985282410436752798e+00 -1.041694157185184366e+01 2.377328387059488790e+01 1.157496872621570105e+01 -8.838094904560733767e+00 2.469461773653482339e+01 1.314429268680620666e+01 -8.844217413754346779e+00 2.470859409720934963e+01 1.000699821242212018e+01 -1.199064168181607215e+01 2.653789936022496576e+01 1.158117533161214396e+01 -1.041694389184850245e+01 2.754153911227140838e+01 1.306860071727008865e+01 -1.041694321361428521e+01 2.755752490878823835e+01 1.010452294461432743e+01 5.823099934433714209e-01 1.006790650118490937e+01 1.159245014632243453e+01 2.148119405353396516e+00 1.087733829323083157e+01 1.316865096589381601e+01 2.158685908223945127e+00 1.086547323581495661e+01 1.002126261836044208e+01 -9.878077396453111003e-01 1.274232459365219405e+01 1.156519361478049923e+01 5.669847490892869768e-01 1.368706172481450878e+01 1.313437318585602753e+01 5.926721853159174769e-01 1.366162423522419544e+01 1.000793675826584739e+01 -2.558308955048808730e+00 1.553299890067566658e+01 1.151140750602048080e+01 -1.038499416393461550e+00 1.650688116503055269e+01 1.307881148225254009e+01 -9.696329174742051027e-01 1.643659952336661334e+01 9.937421174822970826e+00 -4.078505522603895983e+00 1.828591885126800776e+01 1.146013612415139349e+01 -2.558311174918602493e+00 1.919082972979224166e+01 9.876181758589398285e+00 -5.669621321207881870e+00 2.099642629779980396e+01 1.151606857264874151e+01 -4.083630182471662096e+00 2.185974028973842564e+01 1.308223613431343324e+01 -4.110311090025156489e+00 2.195381936351689589e+01 9.941772736885965855e+00 -7.264739618353374340e+00 2.376992117469228205e+01 1.156670390579104080e+01 -5.689252131741514340e+00 2.466672737423497708e+01 1.314745303753850969e+01 -5.695965488238677210e+00 2.472231891378701718e+01 1.000754510225564786e+01 -8.843247786636982966e+00 2.653789191798409774e+01 1.158117487190271078e+01 -7.265181321302753403e+00 2.753400612777943479e+01 1.308771939400797280e+01 -7.272794516266514186e+00 2.756167289310100799e+01 1.012503009205889626e+01 3.723364982714284732e+00 1.006519994348230007e+01 1.160199592113434974e+01 5.300312548763216114e+00 1.086757070425900373e+01 1.317464063944806973e+01 5.300312788909637973e+00 1.086074131292664369e+01 1.002853203100074353e+01 2.151279722427089425e+00 1.273698257395620814e+01 1.158891435545648285e+01 3.721948173366897539e+00 1.366637854516506856e+01 1.315510861932774489e+01 3.732018060849395802e+00 1.365748901374670865e+01 1.003021192480254875e+01 5.739761182288783958e-01 1.551464813041132373e+01 1.155608817117646581e+01 2.134685791685109635e+00 1.643579371956662527e+01 1.313984491160858070e+01 2.164441637163803112e+00 1.642087780927716167e+01 1.000323701073572025e+01 -1.038118088478996004e+00 1.828591792503268465e+01 1.146013615158802956e+01 4.787524939850497652e-01 1.918435580127990647e+01 1.308364712396041263e+01 5.837816028573388216e-01 1.916186915880260244e+01 9.939405535359684407e+00 -2.558313424751053500e+00 2.096405662177598117e+01 1.146677839202338944e+01 -1.032996118698992882e+00 2.185974077092517120e+01 1.308223668088551328e+01 -1.006314727332078274e+00 2.195382007072077002e+01 9.941772923759311098e+00 -4.120688522272067722e+00 2.375902750116983597e+01 1.155931858153266667e+01 -2.558308694539850325e+00 2.468409174093096325e+01 1.314070860660076612e+01 -2.558308191599064862e+00 2.471090731160718335e+01 1.000059508587925805e+01 -5.697633901250210187e+00 2.653174526590392190e+01 1.161275516284062803e+01 -4.131462413570855752e+00 2.753291014733921216e+01 1.308857623421079097e+01 -4.126892260652781808e+00 2.756033376482473329e+01 1.012248426738593388e+01 6.877259871691087767e+00 1.006520025870661428e+01 1.160199614119876621e+01 8.452506034244610333e+00 1.087733780656707872e+01 1.316865126091968641e+01 8.441939690068700486e+00 1.086547311527689885e+01 1.002126330885984551e+01 5.300311281762470017e+00 1.272974567527594658e+01 1.159863361046340913e+01 6.878673583853759155e+00 1.366637885172642974e+01 1.315510912648590924e+01 6.868604457932521612e+00 1.365748925488491139e+01 1.003021226165447111e+01 3.725086680482507351e+00 1.550089525876192376e+01 1.158717530344491387e+01 5.300307658925730081e+00 1.643026852450373454e+01 1.315595685424727712e+01 5.300307948427596116e+00 1.642075553780648534e+01 1.001898063525183247e+01 2.135627021627230615e+00 1.825796999882071958e+01 1.155937765542856255e+01 3.705316644233208834e+00 1.918507987148703720e+01 1.313819813373191714e+01 3.729314550136949347e+00 1.917560321427697190e+01 1.000270601888333566e+01 5.529910684498311468e-01 2.099642450322899023e+01 1.151606902024513168e+01 2.120539094848372663e+00 2.191958542985757674e+01 1.311286839315879149e+01 2.158299888112893417e+00 2.194600306389649802e+01 9.985282500410450623e+00 -9.959383860143034006e-01 2.375903118740000508e+01 1.155931945830122665e+01 5.726208276325375213e-01 2.466673477954738658e+01 1.314746194170199445e+01 5.793338760544003430e-01 2.472232703248838703e+01 1.000753835254378821e+01 -2.558312171072238961e+00 2.653463970605916344e+01 1.158100469501322571e+01 -9.851693249532823549e-01 2.753293164660075121e+01 1.308856633648331957e+01 -9.897348082304271433e-01 2.756035280198889126e+01 1.012249589870060618e+01 +-5.698899252707963825e+00 1.006709166201017247e+01 1.159263035948073117e+01 -4.124179637130697351e+00 1.088843130913417490e+01 1.315483649412146505e+01 -4.133167570619408870e+00 1.086214597022126327e+01 1.000660970261920824e+01 -7.267923733387639196e+00 1.273697450636649720e+01 1.158894029398738112e+01 -5.683643392899686120e+00 1.368712639166996858e+01 1.313497238701403802e+01 -5.709320420419545350e+00 1.366156404965355442e+01 1.000732387341059848e+01 -8.841781462915788481e+00 1.550101751671864747e+01 1.158706673592200787e+01 -7.251368047490985624e+00 1.643579835174361392e+01 1.314019489380282657e+01 -7.281108160351989156e+00 1.642083476040329515e+01 1.000264617603186501e+01 -1.041700023114036888e+01 1.825869176357937107e+01 1.158106432740169822e+01 -8.822010789315669399e+00 1.918512689007783223e+01 1.313867678440783315e+01 -8.845993308837126534e+00 1.917567809616631536e+01 1.000197572819505254e+01 -1.199627442379864917e+01 2.101157610225475025e+01 1.156383000321370069e+01 -1.041700783812175501e+01 2.193425908668765700e+01 1.313480156520071951e+01 -1.041700777202155770e+01 2.194354226962850163e+01 1.000022114665214090e+01 -1.356918110741335681e+01 2.376981953311853246e+01 1.156671365098075732e+01 -1.199589292096264259e+01 2.469469478195286882e+01 1.314485803452081925e+01 -1.198973115373508236e+01 2.470882302781368978e+01 1.000648579541964445e+01 -1.513632398892794839e+01 2.653161865158584121e+01 1.161283751627225236e+01 -1.356883281573455413e+01 2.753445049905774056e+01 1.308853771133933641e+01 -1.356114615005609281e+01 2.756230257322127031e+01 1.012458796531722349e+01 -2.558321620595915391e+00 1.006895416839068069e+01 1.158446314312797831e+01 -9.924630879180625920e-01 1.088843096162388946e+01 1.315483607681463951e+01 -9.834754079604455246e-01 1.086214555082322342e+01 1.000660949191113502e+01 -4.128814835468618050e+00 1.274231221747578502e+01 1.156523427425823947e+01 -2.558323850347719475e+00 1.370683969327215124e+01 1.310583130497894366e+01 -2.558324199558698719e+00 1.365493597357263589e+01 9.987222696626044893e+00 -5.690607695324513493e+00 1.551477867288928181e+01 1.155599296520706609e+01 -4.078091778454123073e+00 1.650697302854138115e+01 1.307916705015558101e+01 -4.147016216635728725e+00 1.643653598201820287e+01 9.936874436795495313e+00 -7.252308485976815433e+00 1.825794968799876727e+01 1.155922331123963964e+01 -5.595375474460673182e+00 1.918435299305763309e+01 1.308417552277508378e+01 -5.700453642684905731e+00 1.916191714731199625e+01 9.938662362051044141e+00 -8.837736493325907716e+00 2.101157666210415087e+01 1.156382997493411047e+01 -7.237185259946379290e+00 2.191948751762386038e+01 1.311337421356438604e+01 -7.274961819513793060e+00 2.194599638597865976e+01 9.984602896519112036e+00 -1.041701426952339204e+01 2.377317026963250512e+01 1.157496079366018904e+01 -8.838132269672346553e+00 2.469468937746475490e+01 1.314485626208840685e+01 -8.844294228822720427e+00 2.470881732666051533e+01 1.000648824053289943e+01 -1.199069186855410862e+01 2.653770662284100013e+01 1.158129146035124535e+01 -1.041701427974139449e+01 2.754196475949682110e+01 1.306937948951783390e+01 -1.041701386983984889e+01 2.755811891261366497e+01 1.010405588915183372e+01 5.822569688391172615e-01 1.006709201375897145e+01 1.159262996003011281e+01 2.148142100819369293e+00 1.087779201814817220e+01 1.316962160472623466e+01 2.158744443040457650e+00 1.086572061654623766e+01 1.002059850403867003e+01 -9.878317610654293590e-01 1.274231187334548743e+01 1.156523384229066842e+01 5.669960551327258846e-01 1.368712539184315347e+01 1.313497166537040073e+01 5.926727798941318071e-01 1.366156329915635936e+01 1.000732323895071829e+01 -2.558326137410205536e+00 1.553311806620245505e+01 1.151140202005945135e+01 -1.038560854564283487e+00 1.650697097458445839e+01 1.307916671779559792e+01 -9.696376250638932826e-01 1.643653529713771277e+01 9.936874453079077796e+00 -4.078591907413184892e+00 1.828589016853135973e+01 1.146014318592271408e+01 -2.558329220662825865e+00 1.919082574813148412e+01 9.875150402439450303e+00 -5.669705046696358330e+00 2.099649777084153612e+01 1.151593118844558283e+01 -4.083628674504812928e+00 2.185962546758227631e+01 1.308278253002614555e+01 -4.110309682561839040e+00 2.195380678429133070e+01 9.941099952837461728e+00 -7.264835745506021958e+00 2.376981601403646494e+01 1.156671341934659125e+01 -5.689297506051098630e+00 2.466673661921281990e+01 1.314803159786408671e+01 -5.696012185548022799e+00 2.472251389509583674e+01 1.000699863819037283e+01 -8.843329305882473790e+00 2.653770140486098228e+01 1.158129098140530466e+01 -7.265186078573267814e+00 2.753441730265510756e+01 1.308854665965365704e+01 -7.272876246720580973e+00 2.756227225619459631e+01 1.012457872575549622e+01 3.723410268187445027e+00 1.006439143049602336e+01 1.160223419148382362e+01 5.300348763330512192e+00 1.086796662231453325e+01 1.317561256343038423e+01 5.300348997716789690e+00 1.086090331294546552e+01 1.002789139901055648e+01 2.151278021602788471e+00 1.273697433926019507e+01 1.158893954430077500e+01 3.721977454872941404e+00 1.366644562589704570e+01 1.315570809569650912e+01 3.732038054188936194e+00 1.365740916286103790e+01 1.002957440342161455e+01 5.739560914373011968e-01 1.551477736270247831e+01 1.155599233213189336e+01 2.134714926751356767e+00 1.643579642309564548e+01 1.314019451426714546e+01 2.164455197929858965e+00 1.642083359302407786e+01 1.000264582981251138e+01 -1.038065999667767469e+00 1.828588908996018603e+01 1.146014367481307872e+01 4.787152226750435169e-01 1.918435122968299922e+01 1.308417626158404801e+01 5.837934905863618740e-01 1.916191567592734302e+01 9.938662513290639211e+00 -2.558330732834627419e+00 2.096414467935515802e+01 1.146665402395987599e+01 -1.033034346848442420e+00 2.185962570648994330e+01 1.308278289121181182e+01 -1.006352621016402660e+00 2.195380754146965074e+01 9.941100572212027586e+00 -4.120765308366518553e+00 2.375897347957176464e+01 1.155920608741807243e+01 -2.558329821720393582e+00 2.468413657903467140e+01 1.314130721278504055e+01 -2.558329075969790534e+00 2.471108666165722667e+01 9.999971807126980750e+00 -5.697690300431923482e+00 2.653161180328933355e+01 1.161283663889430784e+01 -4.131492644766866285e+00 2.753327453744889652e+01 1.308941979971501191e+01 -4.126900623305139959e+00 2.756095783669405108e+01 1.012203444372014083e+01 6.877287471270479458e+00 1.006439120657153197e+01 1.160223446478635090e+01 8.452555768354786281e+00 1.087779169057048989e+01 1.316962205181610202e+01 8.441953587735357090e+00 1.086572061080768847e+01 1.002059904030497783e+01 5.300347658461863176e+00 1.272981359742230367e+01 1.159866441856982533e+01 6.878716498091043796e+00 1.366644594604461282e+01 1.315570855031458564e+01 6.868656556941311386e+00 1.365740940777058121e+01 1.002957475615765937e+01 3.725130407944358346e+00 1.550101698865586108e+01 1.158706637823132901e+01 5.300343797044993366e+00 1.643026394253148226e+01 1.315627024210271401e+01 5.300344106004795108e+00 1.642071689598810735e+01 1.001844432482108083e+01 2.135649300387166605e+00 1.825794803817464995e+01 1.155922352913199269e+01 3.705348687336053271e+00 1.918512566327444091e+01 1.313867697135866841e+01 3.729331181301127174e+00 1.917567696730004556e+01 1.000197558691800737e+01 5.530405907953713784e-01 2.099649710395302904e+01 1.151593157540700219e+01 2.120515596367548383e+00 2.191948914480678212e+01 1.311337394331668627e+01 2.158291651975258851e+00 2.194599806163761357e+01 9.984603330836570478e+00 -9.958933851514146784e-01 2.375897523388436028e+01 1.155920659564623421e+01 5.726288966981420980e-01 2.466674406764736815e+01 1.314803589819102747e+01 5.793432669142427605e-01 2.472252173696501387e+01 1.000699643570553476e+01 -2.558335276791040336e+00 2.653449836809068074e+01 1.158109459776694372e+01 -9.851755365296315237e-01 2.753329520962954291e+01 1.308941370637538526e+01 -9.897642960631177766e-01 2.756097654396804231e+01 1.012204188210788836e+01 +-5.698903230904072359e+00 1.006727581965461660e+01 1.159265972183372106e+01 -4.124170662243650476e+00 1.088820799097116776e+01 1.315449126043842298e+01 -4.133161376897842132e+00 1.086191345752641624e+01 1.000699402016660144e+01 -7.267926029810379163e+00 1.273707963154028810e+01 1.158894607568725021e+01 -5.683643255674473593e+00 1.368717981996584321e+01 1.313471450669472418e+01 -5.709315575081569172e+00 1.366160308282726632e+01 1.000757845662496059e+01 -8.841769829494424471e+00 1.550094201862157384e+01 1.158705571512152765e+01 -7.251372477699439933e+00 1.643580504658980956e+01 1.313996316006667442e+01 -7.281104687536144482e+00 1.642083163643226129e+01 1.000284925929275204e+01 -1.041699865419464821e+01 1.825873434447315802e+01 1.158104319536925253e+01 -8.822013736982119880e+00 1.918512314043275069e+01 1.313841800708780916e+01 -8.846001476122141938e+00 1.917568234023756801e+01 1.000220142512669597e+01 -1.199627031184137849e+01 2.101156177594521424e+01 1.156380849918444653e+01 -1.041700663617005063e+01 2.193426202703923522e+01 1.313456092709732026e+01 -1.041700660643854626e+01 2.194355038983341188e+01 1.000045015172172036e+01 -1.356919415293687337e+01 2.376986014224661048e+01 1.156669928113934631e+01 -1.199587497442004391e+01 2.469464828299128456e+01 1.314462228642576314e+01 -1.198972606153838960e+01 2.470878833281939180e+01 1.000673247239376451e+01 -1.513632583422225686e+01 2.653172110248944904e+01 1.161285728898610259e+01 -1.356883589895097408e+01 2.753420106110278454e+01 1.308834665424756594e+01 -1.356115159500398804e+01 2.756207873875348824e+01 1.012481475667063258e+01 -2.558321280622569915e+00 1.006912340392266181e+01 1.158449711554532335e+01 -9.924713431332428115e-01 1.088820767831479763e+01 1.315449088375102704e+01 -9.834808739834294267e-01 1.086191308447501136e+01 1.000699377149015667e+01 -4.128818294485308016e+00 1.274240629750356746e+01 1.156524125777901979e+01 -2.558323436183255417e+00 1.370686557167022457e+01 1.310558184839655738e+01 -2.558323776235477354e+00 1.365498742781451114e+01 9.987479223462141675e+00 -5.690617549393459207e+00 1.551470118775830542e+01 1.155598677795485507e+01 -4.078107601409520555e+00 1.650695631104296979e+01 1.307894542679267147e+01 -4.147003954899821210e+00 1.643654985095486509e+01 9.937078097743565763e+00 -7.252311629498416679e+00 1.825797613219189586e+01 1.155921002231801609e+01 -5.595398415306819473e+00 1.918437388935696930e+01 1.308389888819569613e+01 -5.700435575686765510e+00 1.916191745550757730e+01 9.938900114370847305e+00 -8.837737357042287911e+00 2.101156276056269334e+01 1.156380858520116561e+01 -7.237209091899102553e+00 2.191949945939410682e+01 1.311313511541884935e+01 -7.274977996884548048e+00 2.194601617806352323e+01 9.984823274179646546e+00 -1.041701167069855316e+01 2.377321349731050049e+01 1.157496263901010281e+01 -8.838149779473342349e+00 2.469464155221822210e+01 1.314462085572834482e+01 -8.844298945037595061e+00 2.470878121718012466e+01 1.000673444082786112e+01 -1.199070063702153455e+01 2.653783629375429953e+01 1.158131202550609729e+01 -1.041701393604547832e+01 2.754171371100630594e+01 1.306919904349343398e+01 -1.041701348476136424e+01 2.755788267062252928e+01 1.010428705900806534e+01 5.822616357563122902e-01 1.006727588068776136e+01 1.159265932355778261e+01 2.148132556117443137e+00 1.087757196496283463e+01 1.316927938484911031e+01 2.158741612463619397e+00 1.086547350419073332e+01 1.002098432346608448e+01 -9.878277665256788298e-01 1.274240594006659677e+01 1.156524082564408218e+01 5.669967020372155275e-01 1.368717881494253419e+01 1.313471379206969836e+01 5.926687291323202711e-01 1.366160232880184999e+01 1.000757784628906322e+01 -2.558325909942864129e+00 1.553305317133280283e+01 1.151136789989835307e+01 -1.038544160393777505e+00 1.650695425687314355e+01 1.307894512675801124e+01 -9.696490174660746808e-01 1.643654919402273507e+01 9.937078170024131296e+00 -4.078568171721341784e+00 1.828593377668270037e+01 1.146000535765200645e+01 -2.558328629379290398e+00 1.919082787832470771e+01 9.875490311197415494e+00 -5.669675716057024140e+00 2.099645288853670166e+01 1.151593770085117008e+01 -4.083635989273449951e+00 2.185964547795340707e+01 1.308251468170386644e+01 -4.110311235361518101e+00 2.195381564145905884e+01 9.941315145204637105e+00 -7.264819393077482701e+00 2.376985518082773652e+01 1.156669926376524238e+01 -5.689304093725719547e+00 2.466671801661927077e+01 1.314776297648326420e+01 -5.696034127520958279e+00 2.472251080374117294e+01 1.000725741290882986e+01 -8.843322886566021168e+00 2.653782973751691188e+01 1.158131175337761398e+01 -7.265180042089830259e+00 2.753416797445815334e+01 1.308836069138753544e+01 -7.272868401906101177e+00 2.756204882158383995e+01 1.012480037176239911e+01 3.723405446386039319e+00 1.006459395159939163e+01 1.160225676216632351e+01 5.300348024692181248e+00 1.086777577850563858e+01 1.317528303942677503e+01 5.300348263549723882e+00 1.086067634355402234e+01 1.002826893005067355e+01 2.151280925956544632e+00 1.273707943444959945e+01 1.158894531661942828e+01 3.721973355907906011e+00 1.366651127183168413e+01 1.315545005754539964e+01 3.732035063548226894e+00 1.365745296492096905e+01 1.002982700456628429e+01 5.739664603794082387e-01 1.551469984323716922e+01 1.155598611161261147e+01 2.134720134395892366e+00 1.643580318155154885e+01 1.313996276311722511e+01 2.164452492835682751e+00 1.642083055135489644e+01 1.000284897458535127e+01 -1.038089328022311575e+00 1.828593275879876501e+01 1.146000565084143119e+01 4.787390672974672357e-01 1.918437241558287809e+01 1.308389950993547401e+01 5.837762807721084135e-01 1.916191628058552254e+01 9.938900455142547941e+00 -2.558330488716592743e+00 2.096409330369501234e+01 1.146657034845994794e+01 -1.033025584372179173e+00 2.185964585632912005e+01 1.308251494023678951e+01 -1.006349636990232943e+00 2.195381662972447145e+01 9.941315799966389477e+00 -4.120743142345192567e+00 2.375900640273706088e+01 1.155922048748163711e+01 -2.558327808464954778e+00 2.468411205073800829e+01 1.314102231130870457e+01 -2.558327092081891685e+00 2.471108963506725331e+01 1.000024501073619732e+01 -5.697683593646305056e+00 2.653171151239473602e+01 1.161285624420458440e+01 -4.131499413391155784e+00 2.753302833990519005e+01 1.308923922382946259e+01 -4.126892602727406434e+00 2.756074589412269304e+01 1.012226014694119769e+01 6.877290768649579888e+00 1.006459393497419619e+01 1.160225702669391090e+01 8.452563808181892568e+00 1.087757156826557114e+01 1.316927975829690212e+01 8.441954902678741490e+00 1.086547341529801258e+01 1.002098492387619899e+01 5.300346857501406106e+00 1.272989079722016648e+01 1.159866631282915073e+01 6.878719095386479410e+00 1.366651159498034929e+01 1.315545050689429374e+01 6.868658042922476170e+00 1.365745321673066037e+01 1.002982733920083547e+01 3.725119401188281998e+00 1.550094146112481575e+01 1.158705534517550895e+01 5.300343030296632563e+00 1.643027176753677310e+01 1.315605044228539100e+01 5.300343335862304883e+00 1.642071754613269974e+01 1.001863010784906471e+01 2.135653117279959545e+00 1.825797435978724437e+01 1.155921013843398804e+01 3.705352204734076338e+00 1.918512210929428718e+01 1.313841811264293469e+01 3.729339905321024329e+00 1.917568143847599771e+01 1.000220142676171164e+01 5.530116836252524370e-01 2.099645162911541263e+01 1.151593811827314084e+01 2.120539984486769836e+00 2.191950132997969192e+01 1.311313475578919352e+01 2.158308353697939275e+00 2.194601819770194595e+01 9.984823863332735527e+00 -9.959167969748842220e-01 2.375900913188741725e+01 1.155922120198045278e+01 5.726372380437072529e-01 2.466672722479448154e+01 1.314776685358279629e+01 5.793670876203240727e-01 2.472252051038532628e+01 1.000725542414085467e+01 -2.558331714215764663e+00 2.653459377732039925e+01 1.158110840187172386e+01 -9.851666307059278038e-01 2.753304885759270348e+01 1.308922996484461265e+01 -9.897693305100244698e-01 2.756076429338564537e+01 1.012227036153841198e+01 diff --git a/tests/ase_traj/MoS2/energy.raw b/tests/ase_traj/MoS2/energy.raw new file mode 100644 index 000000000..b55ff4a45 --- /dev/null +++ b/tests/ase_traj/MoS2/energy.raw @@ -0,0 +1,3 @@ +-7.451970583582814243e+02 +-7.451969391738879267e+02 +-7.451971058997563659e+02 diff --git a/tests/ase_traj/MoS2/force.raw b/tests/ase_traj/MoS2/force.raw new file mode 100644 index 000000000..c769e8ca1 --- /dev/null +++ b/tests/ase_traj/MoS2/force.raw @@ -0,0 +1,3 @@ +9.013107678251028711e-04 -2.332439539904825748e-02 2.997344463656068277e-03 -1.800715757809372966e-04 7.487215463744179532e-03 1.955538483659603061e-02 -4.832574402657565890e-04 4.620230247334738104e-03 -1.481816829274890807e-02 5.119003383474286621e-04 1.046400786196914926e-03 3.876721520836999470e-04 -3.005148458955049441e-04 1.606027751391215196e-03 1.263092258415979101e-02 -1.964013762455138219e-04 -4.666502710863097442e-04 -1.289588882268987574e-02 -4.001373508732376447e-04 2.453173546087846716e-03 -1.814052634883730466e-03 -4.404635886398895316e-04 2.396628566787378464e-04 8.233302096758335353e-03 -3.170507741618406260e-04 -6.876221214723195457e-04 -1.218593709687693441e-02 -1.138602917319733641e-06 -1.040220317658065337e-03 -2.031563261661815164e-03 -3.249694150322219536e-04 1.967305561197316838e-03 1.031645420257711922e-02 -1.521767730619793006e-04 2.359156830168795960e-03 -1.452656755804656794e-02 -2.528451782260086812e-04 6.473958477493726993e-04 -1.061156533623803296e-03 9.985734615826665883e-06 -5.516475557626365940e-04 1.038171341305468148e-02 1.185002974722843341e-05 1.369221183777977538e-03 -1.309190601856571184e-02 8.961785288077316232e-04 -2.461389997695696916e-03 2.669610532214701125e-04 -5.114383480599002965e-06 3.543787845285087542e-04 1.096201761101626461e-02 6.143859644809677003e-04 2.857658752148673105e-03 -1.030226892479925091e-02 3.189342417186031881e-04 -6.638067873427321887e-03 1.033543886869158455e-03 -5.722243974540430680e-04 5.157727364008239321e-03 1.791611394261043155e-02 7.678347424980626887e-07 8.306352399538854611e-03 -1.184884271013952710e-02 -4.160794108918881937e-07 -2.301932828338753081e-02 2.633106064820684052e-03 1.750483108337487633e-04 7.486080543147466231e-03 1.955332119142613387e-02 4.784204635569508715e-04 4.619714599476504487e-03 -1.481563330487304340e-02 4.160564541195110270e-04 1.108918056892380316e-03 6.733068425863401440e-04 -1.598002734881222116e-06 1.871836423443442839e-03 1.236115527065935991e-02 -3.409086718760755013e-06 -8.548044758072781499e-04 -1.294473648036318855e-02 6.969502712263319754e-04 2.563235527646137366e-03 -1.513710631867686354e-03 5.188448730194940121e-04 1.131268267990138921e-03 8.029247594373878014e-03 -3.630870812440597671e-04 -1.167351576516778393e-03 -1.196189297111213863e-02 1.324337922148092670e-04 -4.662552753672812239e-04 -2.373756346956982111e-03 -3.670733159090830595e-04 5.084079330628554945e-04 1.114001476255749822e-02 -9.332104663527266905e-04 1.589694668376005369e-03 -1.509220376985755292e-02 2.499499042491709448e-04 6.271013758973925569e-04 -1.067376097037195859e-03 3.727458710267202700e-04 -4.805665773135116454e-04 9.929461217039924764e-03 -2.662917441223663884e-05 1.073470762285275246e-03 -1.284857933522444255e-02 -5.512023074314532185e-05 -2.397335500881887620e-03 -3.630167245443911405e-06 6.217431458197126279e-05 3.485608137110640615e-04 1.102186613171623857e-02 -5.579319447560525868e-04 2.840853482393496197e-03 -1.037198912448777932e-02 7.749969035629808564e-04 -7.862944376341369709e-03 1.964858533866699428e-03 -6.103083115157848730e-06 4.803080855538803366e-03 1.666957216368935082e-02 -5.533457883056459242e-06 7.629462007287973226e-03 -1.163066445753430794e-02 -9.009071585509206012e-04 -2.332197784152370904e-02 2.997052844101261160e-03 3.405888242186541149e-04 7.975833814541512246e-03 1.891980822051059913e-02 1.001152081815757672e-03 4.544321250564800282e-03 -1.388621256499234652e-02 -4.050373894938621489e-04 1.107737431625856065e-03 6.730207893834396675e-04 2.952581268712558085e-04 1.606803647830527901e-03 1.263167715964700136e-02 1.891753317353367955e-04 -4.663423293778858210e-04 -1.289581874687993276e-02 7.553340992529493639e-06 2.022090635502112998e-03 2.369484441102575299e-04 -5.248191905278162253e-04 1.131194600930463022e-03 8.030141190500264189e-03 3.560775769624892860e-04 -1.169676041822312893e-03 -1.196603819442118750e-02 -1.389114897337865142e-03 -1.368649505304198434e-03 2.401127909602409315e-03 -9.281247484002995164e-06 2.075054386468342684e-04 -2.183699418082837851e-02 -1.553514555985623623e-03 1.931345628027693329e-03 -2.644379049296604212e-03 -4.772654037309215160e-04 5.244336013604098583e-04 1.179521753364377347e-02 -5.713535014683592721e-04 1.767203351691700895e-03 -1.368198206482688743e-02 -9.166101311218871053e-04 -2.407653321147687486e-03 2.615953510772171483e-04 -1.135084779239641011e-04 -5.751805671811128454e-04 1.140659268578800983e-02 -1.081776138303032687e-04 2.782708382249178547e-03 -1.077893623349053878e-02 -5.860265381738403610e-04 -7.809720175855077058e-03 1.974080273037233466e-03 5.672090510890893901e-04 5.134059698932246125e-03 1.782687410109507625e-02 -2.856277382546206215e-06 8.287814199463776343e-03 -1.176586587702349931e-02 4.464362713748171283e-04 -2.447889478413218731e-02 3.894060345540760470e-03 -2.867421415858556547e-06 7.229596119614098600e-03 1.894639661374186712e-02 -3.047002567289436559e-06 3.312403439142635238e-03 -1.367243591989141145e-02 -5.072901144267834544e-04 1.044416616117741078e-03 3.890755820994092127e-04 1.996393890989032614e-04 1.653675066928644985e-03 1.260921641341936419e-02 1.020573388997790646e-04 -8.631998537186461647e-04 -1.323851578146431791e-02 -6.847439141102372928e-04 2.562141504105401937e-03 -1.510600067922800160e-03 4.325352336511970822e-04 2.397896968434620746e-04 8.234915225988966025e-03 3.091483403066746334e-04 -6.925465619409837013e-04 -1.219009294532885125e-02 1.405635392985853408e-03 -1.372616812020753486e-03 2.413349798347661813e-03 3.633640918128643580e-04 4.983702377795501057e-04 1.114756177805447529e-02 9.275859527431616841e-04 1.581149967796590056e-03 -1.510282829564781396e-02 8.262969129876839670e-06 2.810015788129394988e-03 -1.136410649584713084e-03 4.566935004160360147e-04 5.277366361681139597e-04 1.178821792790035045e-02 5.555653942215401210e-04 1.776985994238464367e-03 -1.366863166781563318e-02 -9.774233230034196345e-04 -1.235801965983451128e-03 -2.134518537837228926e-03 -4.518082266163068913e-05 6.423860797249057123e-04 1.177868276531963965e-02 -4.235493365425109475e-05 2.907898132552780724e-03 -1.179472927454668606e-02 -3.752874977205430300e-04 -6.526527907919821639e-03 1.038109829123053801e-03 3.416369407774637237e-04 4.577050514793021621e-03 1.830908655367120136e-02 4.640916209440172592e-04 8.992878551564952722e-03 -1.167937475713306562e-02 -4.424354238050447977e-04 -2.448280414589589643e-02 3.895330514667732277e-03 -3.450733629820855724e-04 7.979143576111050531e-03 1.892293767931177081e-02 -1.005593831799758784e-03 4.546967691679813101e-03 -1.388941145227178854e-02 1.858487320936608409e-06 2.620854842143163950e-03 4.806063525966544690e-04 -2.092320277838467888e-04 1.654063673411859366e-03 1.260884868693075422e-02 -1.133804790597254983e-04 -8.628935283782921762e-04 -1.323859729364694482e-02 4.058717459351572610e-04 2.453049765139873016e-03 -1.812673441494281994e-03 -4.559603502561759593e-06 2.113551939391602888e-04 7.543235844378592785e-03 -4.053043859133241622e-06 -4.388138979787805012e-04 -1.120128899462646474e-02 -1.234538609563104884e-04 -4.629967878346693795e-04 -2.367950089001834291e-03 3.239750129192312780e-04 1.960759247786146488e-03 1.032070312594584455e-02 1.534283551304932588e-04 2.351715206544131073e-03 -1.453247977058806997e-02 1.573923769105062048e-03 1.958093511054289325e-03 -2.645975667739694330e-03 -3.681477750704058977e-04 -4.723616964040490375e-04 9.908421836257810117e-03 3.259981145123360335e-05 1.080077187382555252e-03 -1.283260918922057327e-02 1.093426232485803602e-03 -1.268626543083426882e-03 -2.141893223203434216e-03 7.941824551306313098e-05 -5.409796592368746422e-04 1.129578084192918788e-02 7.720633509263674979e-05 2.811045498945556609e-03 -1.067028373743525264e-02 -8.386627568874872570e-05 -6.870189306548488486e-03 1.318908795577466249e-03 -3.454246572686867339e-04 4.581595263890528291e-03 1.835701754066616093e-02 -4.799819206117491980e-04 9.006958402114807402e-03 -1.172894538611081797e-02 +8.899314336109990500e-04 2.231846221248900627e-02 3.041183282123239955e-03 2.361247480281912731e-04 -2.955583973988173008e-03 -1.219544468255928139e-02 7.497256622968552118e-05 -4.869017642028875166e-03 1.653448706053790157e-02 -9.828085144822514517e-05 -1.625793586451841025e-03 5.621390130565020798e-04 7.665283397904509475e-05 1.088089936157407654e-03 -4.873579400702180917e-03 2.066335444189647556e-04 -1.074145226506060743e-03 4.492057072860414571e-03 7.209765922148254815e-05 -6.614391876695493826e-04 -1.592627984572591747e-03 -6.527103648930009908e-05 1.305679090650105388e-03 -7.846276481213091195e-03 4.909239056273160748e-04 4.474702237542853875e-04 4.010428729923692578e-03 -1.081247273537236554e-06 1.663300178566405737e-03 -2.290104551225056323e-03 -2.972715918105503746e-05 4.106585891686679517e-04 -7.354404527591077746e-03 -1.956664195381854895e-04 8.665630868673639868e-04 3.093421119942220930e-03 -1.428297554972176534e-04 -2.180787642851184777e-04 -1.688320923915357730e-03 6.238363872706183060e-05 -1.666884315493133992e-03 -6.063300445974106369e-03 6.004974900185228089e-05 -5.058742672172097466e-04 3.916234897616378136e-03 -4.249413044655641117e-04 -2.014515941184686211e-04 -5.404116687609814614e-04 1.368437425907088802e-03 -2.274518094315271417e-03 -6.192063095596166654e-03 1.285781810128792772e-03 -6.067447547935057633e-05 7.053125603462060203e-03 7.074836282161660068e-04 4.955334171111377278e-03 2.176206098314307190e-03 -1.081238591351062293e-03 -1.026028431151949395e-02 2.145099566100969516e-04 -7.048541735885488740e-05 -6.911404903440197985e-03 5.549115185539287357e-03 -2.700689341985095946e-06 2.026676016731248156e-02 2.733343821089781727e-03 -2.427044352447442434e-04 -2.954984964646807221e-03 -1.219525080585752083e-02 -8.075300092873953853e-05 -4.867202417144737316e-03 1.653460955249959341e-02 9.161342495738708817e-05 -2.189334428334550366e-03 7.540025141910846034e-04 -5.104769257073384388e-07 -4.704833015115512961e-04 -4.434619145565871744e-03 -8.240173210111615774e-07 -6.704570648996335813e-04 4.665675025431401980e-03 -3.669317475319228225e-06 -4.296889172942551581e-04 -1.182982391670071333e-03 -4.909359065040485443e-04 1.625196215202636069e-04 -7.250693781473998255e-03 -1.728744467158044014e-05 9.089560609477661916e-04 4.542834421590273043e-03 -1.667076482065234385e-04 1.320631807739073172e-03 -2.161072899105517895e-03 -1.691193294767979246e-03 9.898820532398345043e-04 -7.592826049301938836e-03 6.093639696156335789e-04 1.712734518425211875e-04 3.553212654399660365e-03 1.595791519665957180e-04 -2.153035494465427833e-04 -1.689921307162744503e-03 -1.600240437110613066e-03 -1.095183078016474148e-03 -6.365629207592126901e-03 -7.377922057090890041e-04 -1.467001412288672932e-04 3.534113234901505550e-03 1.234878819114326677e-04 3.605596105667130619e-04 7.438253037405060687e-05 -1.009745204785258022e-03 -2.060829050284491981e-03 -6.242122404072928885e-03 -9.519206708007495622e-04 1.230634697941270731e-04 7.108820221127673533e-03 4.911036166961683111e-04 5.533349651485710771e-03 2.226183740948508780e-03 1.687966301478674815e-04 -1.002117048226398507e-02 -5.126059978786002419e-04 1.262379774438161708e-04 -7.871662606967186337e-03 5.763889461349204837e-03 -8.931172329475457142e-04 2.233501606309897317e-02 3.040938422684617316e-03 -2.259769813943525766e-04 -2.255696372830672761e-03 -1.237733650506678620e-02 2.336981595501854661e-04 -5.475063483687184554e-03 1.758988912519787035e-02 -9.599915308816539495e-05 -2.187256754616138509e-03 7.540930589273657590e-04 -7.729770640833471586e-05 1.086969005796814981e-03 -4.872998411096330501e-03 -2.080631609958679263e-04 -1.075195049780265123e-03 4.493334558835648633e-03 -5.567506821040574068e-07 -2.631925388895181025e-05 -1.944613512923790231e-03 4.852985135025390481e-04 1.578369492916857706e-04 -7.249031498202103234e-03 1.195610024672591403e-05 9.052024438819940115e-04 4.543118521740749198e-03 2.364294143900189799e-03 2.638786124801493528e-03 -6.474803346993737892e-03 -1.011121809820313297e-05 3.623347522118762465e-04 8.835323810292131097e-03 9.963645066054568206e-04 -1.403534118786836605e-03 -1.260210311400256815e-03 -3.113518608922741021e-04 -6.366708014486693532e-04 -7.420541916352632779e-03 5.203371246555090618e-04 -8.431076756829859655e-04 3.793572299009187465e-03 4.848028762924280494e-04 -1.202529907145677158e-04 -5.483388391668473326e-04 -1.705948059923219698e-03 -1.090804244897353821e-03 -7.901481616059691238e-03 -2.495031021914845357e-03 1.114873326094862000e-03 7.658332387613681937e-03 -2.893120328865015300e-04 5.512725835805259642e-03 2.182707910361686519e-03 1.197404054055298218e-03 -1.006012389710502983e-02 -1.265099013412056023e-04 1.987323919670377058e-04 -6.739880031895848118e-03 5.900525494849736055e-03 7.475273388701834335e-04 2.407990951089084702e-02 3.663979004381706737e-03 1.186393306966657981e-06 -1.721509626751060095e-03 -1.139581851578425238e-02 1.425827169151639177e-06 -5.773505520686797454e-03 1.721000931264603934e-02 9.339344968035323471e-05 -1.623479944527981807e-03 5.624440889765936142e-04 -1.045961359217498340e-04 1.502537966019300980e-03 -5.040621491863109607e-03 -2.943767147258550534e-04 -8.753967495518023183e-04 4.377747768626683543e-03 -8.760128306134159824e-07 -4.287000588708085765e-04 -1.183781696246499759e-03 6.754277458043733196e-05 1.300181351724125599e-03 -7.844058362083065894e-03 -4.890895834610682570e-04 4.409402232721759923e-04 4.010152073473714426e-03 -2.364308607167028321e-03 2.639963041982426161e-03 -6.483143639320835226e-03 1.685696706528468959e-03 9.778550505283761015e-04 -7.593456915605220278e-03 -6.165514836116119243e-04 1.561088435572703312e-04 3.552323847320470757e-03 -1.222891722029482012e-05 -3.736986172001801991e-03 -4.759689982256784697e-03 2.249690220381437645e-04 -6.880696043194594116e-04 -7.417607844668098159e-03 -6.000655915607948105e-04 -8.879704261213113839e-04 3.778988261863481038e-03 3.989036104533879115e-04 -7.931237440869169349e-04 -2.036662082795359500e-04 -2.163204121143635385e-04 -2.255840763171275583e-03 -8.303812163995708331e-03 -1.893913874243700272e-04 1.346589257696184736e-03 7.419733203865194228e-03 -7.863829052237292748e-04 4.884715463840446498e-03 2.270040175504797839e-03 -1.123009700239689049e-03 -9.503050478188387190e-03 6.732523095015300338e-04 8.683233203480933762e-04 -5.363604706691570828e-03 5.364756255153867691e-03 -7.440388807421012465e-04 2.406934364027611684e-02 3.663936990392752634e-03 2.245973700708844638e-04 -2.257239448058522002e-03 -1.237849372797523821e-02 -2.357850437051027081e-04 -5.477407913824385195e-03 1.759055959567900826e-02 -2.654501492986038325e-06 -1.923465243977969408e-03 5.759510766859895917e-04 1.043330244808582369e-04 1.503594513458288932e-03 -5.041292915703809822e-03 2.929765449398028312e-04 -8.743509008642480831e-04 4.376903201311872250e-03 -7.926358643274778381e-05 -6.612612628795610115e-04 -1.592774613475867905e-03 3.217942120855024321e-06 9.560286768085085856e-04 -7.916090006728816048e-03 3.599221727755995464e-06 3.596491152423836953e-04 3.919506029856027925e-03 1.644828680604123170e-04 1.324914387450610393e-03 -2.164280878978481343e-03 5.238920643699154084e-05 4.029386180634109268e-04 -7.355145302921381120e-03 2.176997406213412097e-04 8.608823313460011893e-04 3.097580012576535684e-03 -1.001483409290071513e-03 -1.401854130609297370e-03 -1.258584638963234411e-03 1.631888359619265098e-03 -1.184261628383254973e-03 -6.336289794363258489e-03 7.706925846193206321e-04 -2.242974733147552659e-04 3.509871906483965059e-03 -5.900624120589914503e-04 -8.332068351382817357e-04 -2.078644198843911594e-04 1.584755028441168449e-03 -1.380966133578538386e-03 -7.828493778149992963e-03 2.365931431970968481e-03 8.424133813552697097e-04 7.577959719943545315e-03 -1.115766532794893595e-04 5.142718281802785216e-03 7.816435803973520837e-04 9.029130266816178321e-04 -9.612333232568822522e-03 8.606972789361349348e-04 -1.145331980000173977e-03 -5.465551440993311229e-03 5.116133167118294169e-03 +-5.328864521898683338e-04 8.140566735153953459e-03 2.610544037853203009e-03 2.812497202909661036e-04 -5.411596666603050824e-03 1.567663189074315622e-03 3.261309227144612035e-05 -7.919596183386889976e-03 2.931977751295120407e-03 2.596077137579539144e-04 5.653692368786305406e-03 2.953395296733507384e-04 -4.513619792624215901e-04 4.280154640946682437e-03 -5.918682382450869348e-03 8.285630791363386108e-05 2.237646382699414946e-03 5.596112933690710993e-03 1.778595069043842098e-04 -1.297361751232543317e-03 -1.794548441140951653e-03 -5.522469872201908473e-04 3.710065804780224795e-04 -5.502969253716408042e-03 -4.977926583438612449e-04 -6.992647541978288693e-04 1.647725317892491251e-03 -2.672395441555464203e-06 4.258008975701984460e-04 -2.254809599727764392e-03 -3.614019890825317699e-04 1.102048189513322139e-03 -5.093497275619799335e-03 -3.364950032353833387e-04 1.855402368263004646e-03 1.022518625366799182e-03 6.611578739547963824e-06 1.170509826940169726e-05 -1.775880984318807098e-03 2.391807290879291193e-05 6.618181036578319907e-04 -4.502247476309759015e-03 2.570541815061413570e-05 2.453610026392530688e-03 2.285119508419935878e-03 2.463424532652441117e-04 -4.744725226624744237e-04 -5.273707015001343357e-04 -1.901641793305978339e-04 2.530797369667244726e-03 -3.113530468757461003e-03 3.890851390498614748e-04 4.669723690989085151e-03 4.056666235135987508e-03 -6.087827234950888037e-04 -1.671231891322905909e-03 1.278273802226890295e-03 3.112518216136237804e-04 -3.450918223345893730e-04 1.558881096605556045e-03 4.717811165824209342e-06 2.569369842154726330e-03 4.173104784544284969e-03 -3.262021470967747869e-07 8.961764571527171611e-03 2.144964135246907062e-03 -2.849955989255340775e-04 -5.412565298537208233e-03 1.567737376185106973e-03 -3.668678536846434798e-05 -7.920082997981693976e-03 2.932030600681190518e-03 -6.244423546095017653e-05 5.062329473452736178e-03 3.886565261258550412e-04 -1.004602229479603894e-07 4.560972729698125651e-03 -5.677968962877967714e-03 -1.177757522060504242e-06 2.201469711508302965e-03 5.448688700829013021e-03 -1.651936190990099272e-05 -1.519663405749768510e-03 -1.293792957324454290e-03 2.780332384075690898e-04 1.093539152368556500e-03 -4.655252829132755857e-03 6.334500110276332623e-04 -6.085289193544505312e-04 1.497950120308933018e-03 -1.935881907422265828e-04 2.231566055637954136e-04 -2.190902915325083303e-03 2.685992219441881877e-04 1.339733715940487520e-03 -4.761748846353526868e-03 -1.524535196269031503e-04 2.009619583540508264e-03 6.903927400036167193e-04 -2.679886364968668615e-06 4.278357199128793736e-06 -1.779048645902770159e-03 6.272004524003612714e-04 6.485215542600823767e-04 -4.556000892117956919e-03 -4.419863973205464245e-04 2.502875338095066592e-03 2.079012696052014945e-03 1.729384156854698543e-05 -6.535851453871469128e-04 -2.892153369546966767e-04 3.202793199855440576e-04 2.593805507131537093e-03 -3.114696643865916877e-03 -2.590675245068355657e-04 4.726779370274407886e-03 4.055420130390092505e-03 -3.305177593154661419e-04 -1.785661936486568433e-03 2.054863562319704778e-03 6.542003891147860648e-05 -3.473639477052795966e-04 1.197022819587437474e-03 5.726805354601644476e-05 2.095951969447691372e-03 4.051499825976974389e-03 5.318512309278309626e-04 8.138260035881247217e-03 2.610556294395414284e-03 -2.077599350342959085e-04 -5.392085749311593262e-03 1.653140640740362668e-03 3.931052096596128974e-04 -8.795150547502616004e-03 3.139186799264794079e-03 6.289684179899479783e-05 5.062634674688075258e-03 3.889749326719035144e-04 4.496233580910970998e-04 4.278965711333963980e-03 -5.916962869869508458e-03 -8.551950842389050499e-05 2.236629389994145879e-03 5.595614798779355650e-03 1.945472054274958650e-06 -1.559392575122798283e-03 -6.273446516958260501e-04 -2.806124456810787015e-04 1.092738312712995472e-03 -4.654413157240870104e-03 -6.368719598988787072e-04 -6.105331627641470129e-04 1.497211063926012298e-03 -1.755218823722985017e-03 -6.675457308812233473e-04 -1.556484039614249070e-03 -6.429910769511617687e-06 9.899092246036626797e-04 -3.910060587832824008e-03 -2.076955944003444925e-04 1.536013635039383573e-04 -1.498610652955809260e-03 -4.654543679000268317e-06 1.138610040923390514e-03 -4.538357705331966252e-03 -1.087712171293603444e-03 2.527862427523884861e-03 1.067044040684842279e-03 -2.355984301981479685e-04 -4.362969725091872465e-04 -5.351185096991399994e-04 5.725271425949783350e-04 2.556920688122804684e-03 -3.754834218512804935e-03 2.810270597891459629e-05 5.307193094926001067e-03 4.124467746917753058e-03 5.054610257130364272e-04 -1.753480010836561652e-03 2.036079162912903320e-03 -2.848109033173590971e-04 -3.007310493755757761e-04 1.403281581804095282e-03 4.253068637640626727e-05 2.600451893179268111e-03 4.322080423698386117e-03 -4.330893753682929807e-04 7.661373849978505082e-03 3.385248551911968808e-03 -5.223117278581253080e-07 -4.550533430641251660e-03 1.797073475461873375e-03 -3.956605100781521643e-07 -8.474474810839174518e-03 3.387174953583432010e-03 -2.617729252207185212e-04 5.653490169476933953e-03 2.962520037585618707e-04 -4.202292032518248262e-05 4.614304588333573327e-03 -5.849506608112395485e-03 6.863453922761733075e-07 2.136059853303094898e-03 5.029285612731419948e-03 1.712335209464660240e-05 -1.518174357652469662e-03 -1.292826363514537657e-03 5.504264963120788015e-04 3.699751051004231909e-04 -5.501408989314682425e-03 4.958250384123223447e-04 -7.031450902217742426e-04 1.646811098916189453e-03 1.760847228970244087e-03 -6.680691304777816586e-04 -1.554432178846013425e-03 -2.716544533469370556e-04 1.330871571119346440e-03 -4.759307909410185992e-03 1.484111342626716584e-04 1.999296473447965527e-03 6.870397428852572904e-04 -3.706764030765882097e-06 2.129677783332068006e-03 -2.311167456032468120e-03 -2.899755951944548872e-05 1.125904720012790763e-03 -4.534799723700461485e-03 1.052833970438981541e-03 2.516686672743977896e-03 1.064232915124073984e-03 -1.333108032835162110e-04 2.805515789059040400e-04 -9.911789608573200357e-04 -7.991651437010733759e-05 3.726008990531943198e-03 -4.661232841657057813e-03 -7.609111209138166854e-05 6.002857647846961305e-03 4.102565053782534707e-03 5.439580889607082510e-04 -1.622957683003777192e-03 1.294027283940801538e-03 9.672805152702609703e-04 -1.381957183899657502e-03 1.468111142346308160e-03 -4.659108985609984924e-04 2.857204930134563461e-03 4.793408132377589663e-03 4.324999948198305516e-04 7.662306809585755010e-03 3.385553808151033853e-03 2.057455962621575034e-04 -5.389364680675267673e-03 1.652615979077672959e-03 -3.952008266686659319e-04 -8.793251098309298394e-03 3.139768539807752563e-03 -1.394751509039696768e-06 5.367999684254079647e-03 2.133135813818606450e-04 3.801797794869484919e-05 4.615229522193060700e-03 -5.850199445623168078e-03 -5.622820816131666926e-06 2.137251840482385680e-03 5.029211825491573980e-03 -1.812230037379841479e-04 -1.296733479294044991e-03 -1.793845150226069073e-03 -8.262818757468039986e-07 6.292729721526228899e-04 -5.436309700060317288e-03 -6.507631364559736965e-07 -1.047431576755923193e-04 1.627232589538455320e-03 1.932103478703853315e-04 2.264177944674948268e-04 -2.189992521505392236e-03 3.694830178152825467e-04 1.096542943215925115e-03 -5.092143011681361971e-03 3.458138654730113907e-04 1.849136275799825608e-03 1.021150092311664138e-03 2.118057125893754418e-04 1.625285090485794931e-04 -1.497612377117401488e-03 -6.148494757537663466e-04 6.256233790714309934e-04 -4.550102267440053055e-03 4.578039624987601170e-04 2.479749391109076391e-03 2.074947171936770973e-03 1.117993900525013432e-04 2.586225328904903252e-04 -9.937748374144353240e-04 -6.233368499273384119e-04 2.483649659265782256e-03 -3.763572530815650300e-03 -8.432107167055673160e-05 5.225091612794106541e-03 4.136000969617695949e-03 -9.907221763608920688e-05 -2.012628893861698881e-03 1.651106466310555331e-03 -1.041249400223460226e-03 -1.407552853175796570e-03 1.567428057187941282e-03 3.554279377602902754e-04 2.836893197835590411e-03 4.687391406828008734e-03 diff --git a/tests/ase_traj/MoS2/set.000/box.npy b/tests/ase_traj/MoS2/set.000/box.npy deleted file mode 100644 index b7a78de97596502fda79588d692d69a0e92781b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 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

>p8e68?BF2Ully5ZYIO*{&SKo-hQCj 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 i{_VK=4-50Z>=*X!jk(m&vmYi8 Date: Mon, 18 Mar 2024 14:19:55 +0900 Subject: [PATCH 47/51] u --- dpdata/plugins/ase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index e205f465e..ce562c054 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -44,7 +44,7 @@ def from_system(self, atoms: "ase.Atoms", **kwargs) -> dict: data dict """ symbols = atoms.get_chemical_symbols() - atom_names = list(set(symbols)) + atom_names = list(dict.fromkeys(symbols)) # use: list(set(symbols)) cannot maintain the order of items atom_numbs = [symbols.count(symbol) for symbol in atom_names] atom_types = np.array([atom_names.index(symbol) for symbol in symbols]).astype( int From 45c801879a93ddc858a0002660b9288b9533d5d0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 05:20:05 +0000 Subject: [PATCH 48/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/plugins/ase.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index ce562c054..243022269 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -44,7 +44,9 @@ def from_system(self, atoms: "ase.Atoms", **kwargs) -> dict: data dict """ symbols = atoms.get_chemical_symbols() - atom_names = list(dict.fromkeys(symbols)) # use: list(set(symbols)) cannot maintain the order of items + atom_names = list( + dict.fromkeys(symbols) + ) # use: list(set(symbols)) cannot maintain the order of items atom_numbs = [symbols.count(symbol) for symbol in atom_names] atom_types = np.array([atom_names.index(symbol) for symbol in symbols]).astype( int From 71d0e70812325d76316c03918c5d8dcd36165eea Mon Sep 17 00:00:00 2001 From: Thang Nguyen <46436648+thangckt@users.noreply.github.com> Date: Mon, 18 Mar 2024 14:30:22 +0900 Subject: [PATCH 49/51] Update ase.py --- dpdata/plugins/ase.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dpdata/plugins/ase.py b/dpdata/plugins/ase.py index 243022269..127611f65 100644 --- a/dpdata/plugins/ase.py +++ b/dpdata/plugins/ase.py @@ -44,9 +44,7 @@ def from_system(self, atoms: "ase.Atoms", **kwargs) -> dict: data dict """ symbols = atoms.get_chemical_symbols() - atom_names = list( - dict.fromkeys(symbols) - ) # use: list(set(symbols)) cannot maintain the order of items + atom_names = list(dict.fromkeys(symbols)) atom_numbs = [symbols.count(symbol) for symbol in atom_names] atom_types = np.array([atom_names.index(symbol) for symbol in symbols]).astype( int From e3909e70578aed27d79e10895bbb93821ecf1f8f Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Tue, 19 Mar 2024 05:02:54 -0400 Subject: [PATCH 50/51] add a test for unlabeled system Signed-off-by: Jinzhe Zeng --- tests/test_ase_traj.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index 6ae8ee134..ba1c1dde3 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -1,6 +1,6 @@ import unittest -from comp_sys import CompLabeledSys, IsPBC +from comp_sys import CompSys, CompLabeledSys, IsPBC from context import dpdata try: @@ -44,7 +44,18 @@ def setUp(self): @unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") -class TestASEtraj3(unittest.TestCase, CompLabeledSys, IsPBC): +class TestASEtraj3(unittest.TestCase, CompSys, IsPBC): + def setUp(self): + self.system_1 = dpdata.System("ase_traj/MoS2", fmt="deepmd") + self.system_2 = dpdata.System("ase_traj/MoS2.traj", fmt="ase/traj") + self.places = 6 + self.e_places = 6 + self.f_places = 6 + self.v_places = 4 + + +@unittest.skipIf(skip_ase, "skip ase related test. install ase to fix") +class TestASEtraj3Labeled(unittest.TestCase, CompLabeledSys, IsPBC): def setUp(self): self.system_1 = dpdata.LabeledSystem("ase_traj/MoS2", fmt="deepmd") self.system_2 = dpdata.LabeledSystem("ase_traj/MoS2.traj", fmt="ase/traj") From b49a4e2b34726408a0dd2c02b74ae3d9a195709c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 09:03:03 +0000 Subject: [PATCH 51/51] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_ase_traj.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_ase_traj.py b/tests/test_ase_traj.py index ba1c1dde3..b6eab27e1 100644 --- a/tests/test_ase_traj.py +++ b/tests/test_ase_traj.py @@ -1,6 +1,6 @@ import unittest -from comp_sys import CompSys, CompLabeledSys, IsPBC +from comp_sys import CompLabeledSys, CompSys, IsPBC from context import dpdata try: