Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion dpgen2/op/run_lmp.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ def execute(

ret_dict = {
"log": work_dir / lmp_log_name,
"traj": work_dir / lmp_traj_name,
"traj": self.get_traj(work_dir / lmp_traj_name),
"model_devi": self.get_model_devi(work_dir / lmp_model_devi_name),
}
plm_output = (
Expand All @@ -223,6 +223,10 @@ def execute(
def get_model_devi(self, model_devi_file):
return model_devi_file

def get_traj(self, traj_file):
"""Return the filesystem trajectory used by the standard backend."""
return traj_file

@staticmethod
def lmp_args():
doc_lmp_cmd = "The command of LAMMPS"
Expand Down Expand Up @@ -412,3 +416,7 @@ def get_output_sign(cls):

def get_model_devi(self, model_devi_file):
return np.loadtxt(model_devi_file)

def get_traj(self, traj_file):
"""Return trajectory text for serialization into an HDF5 dataset."""
return traj_file.read_text()
26 changes: 26 additions & 0 deletions tests/op/test_run_lmp.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
)
from dpgen2.op.run_lmp import (
RunLmp,
RunLmpHDF5,
get_ele_temp,
merge_pimd_files,
set_models,
Expand Down Expand Up @@ -149,6 +150,31 @@ def test_extra_outputs(self):
"Hello -i in.lammps -log log.lammps",
)

@patch("dpgen2.op.run_lmp.run_command")
def test_hdf5_outputs_dataset_values(self, mocked_run):
"""Return serializable data instead of filesystem paths for HDF5."""

def write_outputs(*args, **kwargs):
Path(lmp_traj_name).write_text("trajectory data")
np.savetxt(lmp_model_devi_name, np.arange(7).reshape(1, 7))
return 0, "foo\n", ""

mocked_run.side_effect = write_outputs

out = RunLmpHDF5().execute(
OPIO(
{
"config": {"command": "mylmp"},
"task_name": self.task_name,
"task_path": self.task_path,
"models": self.models,
}
)
)

self.assertEqual(out["traj"], "trajectory data")
np.testing.assert_array_equal(out["model_devi"], np.arange(7))


class TestRunLmpDist(unittest.TestCase):
lmp_config = """variable NSTEPS equal 1000
Expand Down