Source code for icolos.core.workflow_steps.pmx.gentop

from icolos.core.containers.perturbation_map import PerturbationMap
from icolos.core.workflow_steps.pmx.base import StepPMXBase
from icolos.utils.enums.logging_enums import LoggingConfigEnum
from icolos.utils.enums.program_parameters import PMXEnum
from icolos.utils.execute_external.pmx import PMXExecutor
from pydantic import BaseModel
import os

_PE = PMXEnum()
_LE = LoggingConfigEnum()


[docs]class StepPMXgentop(StepPMXBase, BaseModel): """Fill hybrid topology with B states.""" def __init__(self, **data): super().__init__(**data) self._initialize_backend(executor=PMXExecutor)
[docs] def execute(self): perturbation_map: PerturbationMap = ( self.get_workflow_object().get_perturbation_map() ) # generate the B states based on the topology from pmx mutate for edge in perturbation_map.get_edges(): edge_dir = os.path.join(self.work_dir, edge.get_edge_id()) # overwrite the topology generated by pdb2gmx gentop_args = ["-p", "topol.top", "-o", "topol.top"] for branch in self.therm_cycle_branches: self._logger.log( f"Generating B-state topology for edge {edge.get_edge_id()}, branch {branch}", _LE.DEBUG, ) self._backend_executor.execute( command=_PE.GENTOP, arguments=gentop_args, check=True, location=os.path.join(edge_dir, branch), )
# now we have pmxtop.top in the edge dir help_string = """ pmx gentop -h usage: pmx [-h] [-p topol] [-o outfile] [-ff ff] [--split] [--scale_mass] [--scale_dih SCALE_DIH] [--norecursive] This script fills in the B state to a topology file (itp or top) according to the hybrid residues present in the file. If you provide a top file with include statemets, by default the script will run through the included itp files too; this can turned off using the --norecursive flag. You need to use this script after having mutated a structure file with pmx mutate, and after having passed that mutated structure through pdb2gmx. optional arguments: -h, --help show this help message and exit -p topol Input topology file (itp or top). Default is "topol.top" -o outfile Output topology file. Default is "pmxtop.top" -ff ff Force field to use. If -p is a top file, it is not necessary to specify the forcefield, as it will be determined automatically. If -p is an itp file, then -ff is needed, and if not provided a list of available ff will be shown. --split Write separate topologies for the vdW and charge transformations. --scale_mass Scale the masses of morphing atoms so that dummies have a mass of 1. --scale_dih SCALE_DIH Scale the dihedrals that have a dummy. --norecursive Whether to fill the B states also for all itp files included in the provided topology file. Default is True. This flag sets it to False. """