Source code for dpgen2.exploration.render.traj_render_lammps

from pathlib import (
    Path,
)
from typing import (
    TYPE_CHECKING,
    List,
    Optional,
    Tuple,
    Union,
)

import dpdata
import numpy as np

from ..deviation import (
    DeviManager,
    DeviManagerStd,
)
from .traj_render import (
    TrajRender,
)

if TYPE_CHECKING:
    from dpgen2.exploration.selector import (
        ConfFilters,
    )


[docs] class TrajRenderLammps(TrajRender): def __init__( self, nopbc: bool = False, ): self.nopbc = nopbc
[docs] def get_model_devi( self, files: List[Path], ) -> DeviManager: ntraj = len(files) model_devi = DeviManagerStd() for ii in range(ntraj): self._load_one_model_devi(files[ii], model_devi) return model_devi
def _load_one_model_devi(self, fname, model_devi): dd = np.loadtxt(fname) model_devi.add(DeviManager.MAX_DEVI_V, dd[:, 1]) model_devi.add(DeviManager.MIN_DEVI_V, dd[:, 2]) model_devi.add(DeviManager.AVG_DEVI_V, dd[:, 3]) model_devi.add(DeviManager.MAX_DEVI_F, dd[:, 4]) model_devi.add(DeviManager.MIN_DEVI_F, dd[:, 5]) model_devi.add(DeviManager.AVG_DEVI_F, dd[:, 6])
[docs] def get_confs( self, trajs: List[Path], id_selected: List[List[int]], type_map: Optional[List[str]] = None, conf_filters: Optional["ConfFilters"] = None, ) -> dpdata.MultiSystems: del conf_filters # by far does not support conf filters ntraj = len(trajs) 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) return ms