Source code for icolos.utils.execute_external.gromacs

from icolos.utils.enums.program_parameters import GromacsEnum
from icolos.utils.execute_external.execute import ExecutorBase

_GE = GromacsEnum()


[docs]class GromacsExecutor(ExecutorBase): def __init__(self, prefix_execution=None, binary_location=None): super().__init__( prefix_execution=prefix_execution, binary_location=binary_location )
[docs] def execute( self, command: str, arguments: list, check=True, location=None, pipe_input=None ): gmx_commands = [ _GE.EDITCONF, _GE.GENION, _GE.GROMPP, _GE.SOLVATE, _GE.MDRUN, _GE.MPI_MDRUN, _GE.PDB2GMX, _GE.MAKE_NDX, _GE.GENRESTR, _GE.TRJCONV, _GE.TRJCAT, _GE.CLUSTER, _GE.MMPBSA, _GE.DO_DSSP, _GE.RMS, ] if not any([cmd in command for cmd in gmx_commands]): raise ValueError( "Command must be present in internal list of GROMACS executables" ) # handle for dealing with programs that want interactive input return super().execute( command=command, arguments=arguments, check=check, location=location, pipe_input=pipe_input, )
[docs] def is_available(self): try: result = self.execute(command=_GE.PDB2GMX, arguments=[], check=False) if _GE.PDB2GMX_FAIL_ID_STRING in result.stderr: return True return False except Exception as e: return False