Skip to content

Commit eb779cb

Browse files
feat: add input_extra_files for lmp-md and lmp-template (#306)
fix issue #305 Now we can add input_extra_files for lmp-md and lmp-template in json configurations. The docs were updated too. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - New Features - You can now attach extra input files to LAMMPS-based tasks (including NPT), which will be bundled and sent with each task. - Configuration helpers now accept an input_extra_files option for NPT, LAMMPS template, and customized LAMMPS template task groups. - Documentation - Clarified the description for trajectory frequency in NPT task configuration to better reflect its behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent edbaa44 commit eb779cb

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

dpgen2/exploration/task/lmp_template_task_group.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,21 @@ def set_lmp(
4848
traj_freq: int = 10,
4949
extra_pair_style_args: str = "",
5050
pimd_bead: Optional[str] = None,
51+
input_extra_files: Optional[List[str]] = None,
5152
) -> None:
5253
self.lmp_template = Path(lmp_template_fname).read_text().split("\n")
5354
self.revisions = revisions
5455
self.traj_freq = traj_freq
5556
self.extra_pair_style_args = extra_pair_style_args
5657
self.pimd_bead = pimd_bead
58+
if input_extra_files is not None:
59+
self.input_extra_files = [Path(ii).name for ii in input_extra_files]
60+
self.input_extra_file_contents = [
61+
Path(ii).read_text() for ii in input_extra_files
62+
]
63+
else:
64+
self.input_extra_files = []
65+
self.input_extra_file_contents = []
5766
self.lmp_set = True
5867
self.model_list = sorted([model_name_pattern % ii for ii in range(numb_models)])
5968
self.lmp_template = revise_lmp_input_model(
@@ -134,6 +143,13 @@ def _make_lmp_task(
134143
plm_input_name,
135144
plm_cont,
136145
)
146+
147+
# Add extra files to the task
148+
for file_name, file_content in zip(
149+
self.input_extra_files, self.input_extra_file_contents
150+
):
151+
task.add_file(file_name, file_content)
152+
137153
return task
138154

139155

dpgen2/exploration/task/make_task_group_from_config.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ def npt_task_group_args():
4848
doc_ele_temp_f = "The electron temperature set by frame style"
4949
doc_ele_temp_a = "The electron temperature set by atomistic style"
5050
doc_pimd_bead = "Bead index for PIMD, None for non-PIMD"
51+
doc_input_extra_files = (
52+
"Extra files that may be needed during exploration (e.g., ZBL parameter files)"
53+
)
5154

5255
return [
5356
Argument("conf_idx", list, optional=False, doc=doc_conf_idx, alias=["sys_idx"]),
@@ -70,7 +73,7 @@ def npt_task_group_args():
7073
int,
7174
optional=True,
7275
default=10,
73-
doc=doc_nsteps,
76+
doc=doc_traj_freq,
7477
alias=["t_freq", "trj_freq", "traj_freq"],
7578
),
7679
Argument("tau_t", float, optional=True, default=5e-2, doc=doc_tau_t),
@@ -116,6 +119,13 @@ def npt_task_group_args():
116119
default=None,
117120
doc=doc_pimd_bead,
118121
),
122+
Argument(
123+
"input_extra_files",
124+
list,
125+
optional=True,
126+
default=[],
127+
doc=doc_input_extra_files,
128+
),
119129
]
120130

121131

@@ -126,6 +136,9 @@ def lmp_template_task_group_args():
126136
doc_traj_freq = "The frequency of dumping configurations and thermodynamic states"
127137
doc_extra_pair_style_args = "The extra arguments for pair_style"
128138
doc_pimd_bead = "Bead index for PIMD, None for non-PIMD"
139+
doc_input_extra_files = (
140+
"Extra files that may be needed during exploration (e.g., ZBL parameter files)"
141+
)
129142

130143
return [
131144
Argument("conf_idx", list, optional=False, doc=doc_conf_idx, alias=["sys_idx"]),
@@ -174,6 +187,13 @@ def lmp_template_task_group_args():
174187
default=None,
175188
doc=doc_pimd_bead,
176189
),
190+
Argument(
191+
"input_extra_files",
192+
list,
193+
optional=True,
194+
default=[],
195+
doc=doc_input_extra_files,
196+
),
177197
]
178198

179199

dpgen2/exploration/task/npt_task_group.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import itertools
22
import random
3+
from pathlib import (
4+
Path,
5+
)
36
from typing import (
47
List,
58
Optional,
@@ -50,6 +53,7 @@ def set_md(
5053
ele_temp_f: Optional[float] = None,
5154
ele_temp_a: Optional[float] = None,
5255
pimd_bead: Optional[str] = None,
56+
input_extra_files: Optional[List[str]] = None,
5357
):
5458
"""
5559
Set MD parameters
@@ -72,6 +76,14 @@ def set_md(
7276
self.relative_v_epsilon = relative_v_epsilon
7377
self.ele_temp_f = ele_temp_f
7478
self.ele_temp_a = ele_temp_a
79+
if input_extra_files is not None:
80+
self.input_extra_files = [Path(ii).name for ii in input_extra_files]
81+
self.input_extra_file_contents = [
82+
Path(ii).read_text() for ii in input_extra_files
83+
]
84+
else:
85+
self.input_extra_files = []
86+
self.input_extra_file_contents = []
7587
self.md_set = True
7688
self.pimd_bead = pimd_bead
7789

@@ -136,4 +148,11 @@ def _make_lmp_task(
136148
pimd_bead=self.pimd_bead,
137149
),
138150
)
151+
152+
# Add extra files to the task
153+
for file_name, file_content in zip(
154+
self.input_extra_files, self.input_extra_file_contents
155+
):
156+
task.add_file(file_name, file_content)
157+
139158
return task

0 commit comments

Comments
 (0)