from pathlib import (
Path,
)
from typing import (
TYPE_CHECKING,
List,
Optional,
Tuple,
Union,
)
import dpdata
from .traj_render import (
TrajRender,
)
if TYPE_CHECKING:
from pfd.exploration.selector import (
ConfFilters,
)
[docs]
@TrajRender.register("lmp")
@TrajRender.register("lammps")
class TrajRenderLammps(TrajRender):
def __init__(
self,
nopbc: bool = False,
use_ele_temp: int = 0,
):
self.nopbc = nopbc
self.use_ele_temp = use_ele_temp
[docs]
def get_confs(
self,
trajs: List[Path],
# id_selected: List[List[int]],
type_map: Optional[List[str]] = None,
conf_filters: Optional["ConfFilters"] = None,
optional_outputs: Optional[List[Path]] = None,
) -> dpdata.MultiSystems:
ntraj = len(trajs)
if optional_outputs:
assert ntraj == len(optional_outputs)
traj_fmt = "lammps/dump"
ms = dpdata.MultiSystems(type_map=type_map)
for ii in range(ntraj):
# if len(id_selected[ii]) > 0:
ss = dpdata.System(trajs[ii], fmt=traj_fmt, type_map=type_map)
ss.nopbc = self.nopbc
# ss = ss.sub_system(id_selected[ii])
ms.append(ss)
if conf_filters is not None:
ms2 = dpdata.MultiSystems(type_map=type_map)
for s in ms:
s2 = conf_filters.check(s)
if len(s2) > 0:
ms2.append(s2)
ms = ms2
return ms