Source code for BioSimSpace.Process._utils

######################################################################
# BioSimSpace: Making biomolecular simulation a breeze!
#
# Copyright: 2017-2024
#
# Authors: Lester Hedges <lester.hedges@gmail.com>
#
# BioSimSpace is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BioSimSpace is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BioSimSpace. If not, see <http://www.gnu.org/licenses/>.
#####################################################################

"""Utility functions."""

__author__ = "Lester Hedges"
__email__ = "lester.hedges@gmail.com"

__all__ = ["engines", "createProcess"]

from ._amber import *
from ._gromacs import *
from ._namd import *
from ._openmm import *
from ._process_runner import *
from ._somd import *

_engines = []  # List of supported engines (actual name).
_engines_lower = []  # List of lower case engine names.
_engine_dict = {}  # Mapping between lower case name and class.
import sys as _sys

_namespace = _sys.modules[__name__]
for _var in dir():
    if _var[0] != "_" and _var != "ProcessRunner":
        _engines.append(_var)
        _engines_lower.append(_var.lower())
        _engine_dict[_var.lower()] = getattr(_namespace, _var)
del _namespace
del _sys
del _var


[docs] def engines(): """ Return a list of the supported Molecular Dynamics engines. Returns ------- engines : [str] The list of supported Molecular Dynamics engines. """ return _engines
[docs] def createProcess(system, protocol, engine, **kwargs): """ Create a simulation process. Parameters ---------- system : :class:`System <BioSimSpace._SireWrappers.System>` The molecular system. protocol : :class:`Protocol <BioSimSpace.Protocol>` The protocol for the process. engine : str The name of the simulation engine. kwargs : dict A dictionary of optional keyword arguments neeeded by the engine. Returns ------- process : :class:`Process <BioSimSpace.Process>` The process object for the specific simulation engine. """ # Strip whitespace and convert to lower case. _engine = engine.replace(" ", "").lower() if _engine not in _engines_lower: raise KeyError( "Unsupported engine '%s', supported engines are %s" % (engine, _engines) ) return _engine_dict[_engine](system, protocol, **kwargs)