Source code for rid.common.gromacs.trjconv

import os, sys
import logging
from typing import Sequence
from rid.common.gromacs.gmx_constant import gmx_trjconv_cmd
from rid.utils import list_to_string
from rid.utils import run_command


logging.basicConfig(
    format="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
    level=os.environ.get("LOGLEVEL", "INFO").upper(),
    stream=sys.stdout,
)
logger = logging.getLogger(__name__)


[docs]def slice_trjconv( xtc: str, top: str, selected_time: float, output_group: int = 0, output: str = "conf.gro" ): logger.info("slicing trajectories by gmx trjconv command ...") logger.warning("You are using `gmx trjconv` to slice trajectory, " "make sure that the selected index is in the unit of time (ps).") cmd_list = gmx_trjconv_cmd.split() cmd_list += ["-f", str(xtc)] cmd_list += ["-s", str(top)] cmd_list += ["-dump", str(selected_time)] cmd_list += ["-o", output] logger.info(list_to_string(cmd_list, " ")) return_code, out, err = run_command( cmd_list, stdin=f"{output_group}\n" ) assert return_code == 0, err