Source code for schrodinger.application.matsci.msconst
"""
Contains common MatSci constants
Copyright Schrodinger, LLC. All rights reserved.
"""
import enum
from schrodinger.application.desmond import constants as dconst
CMS = 'cms'
CMS_OUT_EXT = f'-out.{CMS}'
ENSEMBLE_NVE = 'NVE'
ENSEMBLE_NVT = dconst.Ensembles.NVT
ENSEMBLE_NPT = dconst.Ensembles.NPT
ENSEMBLES = [ENSEMBLE_NVE, ENSEMBLE_NVT, ENSEMBLE_NPT]
SPC = 'SPC'
SPCE = 'SPCE'
TIP3P = 'TIP3P'
TIP4P = 'TIP4P'
TIP4P2005 = 'TIP4P2005'
TIP4PEW = 'TIP4PEW'
TIP5P = 'TIP5P'
TIP4PD = "TIP4PD"
NONE = "none"
ISOTROPIC = dconst.IsotropyPolicy.ISOTROPIC.title()
SEMI_ISOTROPIC = dconst.IsotropyPolicy.SEMI_ISOTROPIC.title()
CONSTANT_AXIS_A = dconst.IsotropyPolicy.CONSTANT_AXIS_A.title()
CONSTANT_AXIS_B = dconst.IsotropyPolicy.CONSTANT_AXIS_B.title()
CONSTANT_AXIS_C = dconst.IsotropyPolicy.CONSTANT_AXIS_C.title()
ANISOTROPIC = dconst.IsotropyPolicy.ANISOTROPIC.title()
# All barostat coupling methods accepted by Desmond
ISOTROPIC_DICT = {
ISOTROPIC: dconst.IsotropyPolicy.ISOTROPIC,
SEMI_ISOTROPIC: dconst.IsotropyPolicy.SEMI_ISOTROPIC,
CONSTANT_AXIS_A: dconst.IsotropyPolicy.CONSTANT_AXIS_A,
CONSTANT_AXIS_B: dconst.IsotropyPolicy.CONSTANT_AXIS_B,
CONSTANT_AXIS_C: dconst.IsotropyPolicy.CONSTANT_AXIS_C,
ANISOTROPIC: dconst.IsotropyPolicy.ANISOTROPIC
}
# Most commonly used barostat coupling method.
COMMON_ISOTROPIC_DICT = {
ISOTROPIC: dconst.IsotropyPolicy.ISOTROPIC,
ANISOTROPIC: dconst.IsotropyPolicy.ANISOTROPIC
}
NOSE_HOOVER_CHAIN = 'Nose-Hoover chain'
LANGEVIN = 'Langevin'
DPD = 'DPD'
MARTYNA_TOBIAS_KLEIN = "Martyna-Tobias-Klein"
NH = 'NH'
MTK = 'MTK'
THERMO_METHOD_DICT = {
NOSE_HOOVER_CHAIN: NH,
LANGEVIN: LANGEVIN,
DPD: DPD,
}
BARO_METHOD_DICT = {MARTYNA_TOBIAS_KLEIN: MTK, LANGEVIN: LANGEVIN, DPD: DPD}
# Extensions
MSJ = 'msj'
ZIP = '.zip'
HDF5 = '.hdf5'
CSV = '.csv'
# Keys are user-facing names, values are pdbres names recognized by
# solvent model (see /mmshare/include/solvent_models.h)
# none is added as the last option to use the generic parameters
WATER_FFTYPES = dconst.FFLD_WATER.copy()
WATER_FFTYPES[NONE] = None
# See MATSCI-11438
VALID_WATER_FFTYPES_OPLS2005 = [SPC, TIP3P, NONE]
# Units
DENSITY_UNIT = 'g/cm3'
ANGSTROM_UNICODE = u'\u00C5'
SMARTS_METHOD = enum.Enum('SMARTS_METHOD', 'internal canvas rdkit')
SMARTS_CHOICES = tuple(x.name for x in SMARTS_METHOD)
[docs]@enum.unique
class DIMENSIONALITY(enum.IntEnum):
BULK = 111
# This is not Miller indices set. This means non-periodic in Z
SLAB_XY = 110
# ISOLATED = 0 # not yet used anywhere
[docs] def __init__(self, value):
"""
Initialize enum member.
:param Any value: Input value
"""
labels = {111: 'Bulk', 110: 'Slab'}
self.label = labels[value]
[docs] @classmethod
def getDict(cls, use_labels=False):
""" Get dictionary with enum members. """
get_name = lambda member: member.label if use_labels else member.name
return {get_name(x): x.value for x in cls}