####################################################################### 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__=["protocols","createProtocol"]from._customimport*from._equilibrationimport*from._free_energy_minimisationimport*from._free_energy_equilibrationimport*from._free_energy_productionimport*from._metadynamicsimport*from._minimisationimport*from._productionimport*from._steeringimport*_protocols=[]# List of protocols (actual name)._protocols_lower=[]# List of lower case names._protocol_dict={}# Mapping between upper case name and class.importsysas_sys_namespace=_sys.modules[__name__]for_varindir():if_var[0]!="_"and_var!="Custom":_protocols.append(_var)_protocols_lower.append(_var.lower())_protocol_dict[_var.lower()]=getattr(_namespace,_var)del_namespacedel_sysdel_var
[docs]defprotocols():""" Return a list of the supported Molecular Dynamics protocols. Returns ------- protocols : [str] A list of the supported Molecular Dynamics protocols. """return_protocols
[docs]defcreateProtocol(protocol):""" Create a default simulation protocol. Parameters ---------- protocol : str The name of the simulation protocol. Returns ------- protocol : :class:`Protocol <BioSimSpace.Protocol>` The chosen simulation protocol. """# Strip whitespace and convert to lower case._protocol=protocol.replace(" ","").lower()if_protocolnotin_protocols_lower:raiseKeyError("Unsupported protocol '%s', supported protocols are %s"%(protocol,_protocols))return_protocol_dict[_protocol]()