"""
Define common numerical constants, CT and atom property names, and keyword
values (enums).
Copyright Schrodinger, LLC. All rights reserved.
"""
import enum
from schrodinger.infra.mm import FFIO_DATA_CT_TYPE
from schrodinger.infra.mm import FFIO_FULL_SYSTEM
class _ConstantsMeta(type):
def __iter__(self):
for k, v in self.__dict__.items():
if not k.startswith("_"):
yield v
def __str__(self):
"""
Prints all constant members defined in the `_ConstantsMeta` class into a
string.
"""
return " ".join([str(e) for e in self])
[docs]class Constants(object, metaclass=_ConstantsMeta):
"""
Related constants can inherit from `Constants` to make them iterable
in the order of their declarations.
"""
class _MaePropertyValue:
"""
This class defines a container for values associated
with `MaePropertyName`. This makes the values iterable
in the order of their declarations.
"""
def __init__(self, **kwargs):
self._kwargs = kwargs
for k, v in kwargs.items():
setattr(self, k, v)
def __iter__(self):
for v in self._kwargs.values():
yield v
def __str__(self):
return " ".join([str(e) for e in self._kwargs.values()])
[docs]class MaePropertyName(str):
"""
This class defines a container for structure or atom level properties.
The property key can be accessed directly, while enum values are
accessed via the `VAL` attribute.
Example usage:
CT_TYPE = MaePropertyName(FFIO_DATA_CT_TYPE, FULL_SYSTEM=FFIO_FULL_SYSTEM)
ct.property[CT_TYPE] = CT_TYPE.VAL.FULL_SYSTEM
valid_ct_types = list(CT_TYPE.VAL)
"""
def __new__(cls, name: str, **kwargs):
# Validation checks can be added here.
return str.__new__(cls, name)
[docs] def __init__(self, name: str, **kwargs):
self.VAL = _MaePropertyValue(**kwargs)
# Physical constants
# References:
# - GAS_CONSTANT / BOLTZMANN:
# - https://en.wikipedia.org/wiki/Gas_constant
# - https://physics.nist.gov/cgi-bin/cuu/Value?r
BOLTZMANN = 1.9872036E-3 # kcal/mol/K
GAS_CONSTANT = BOLTZMANN
GAS_CONSTANT_JOUL = 8.3144598 # J/mol/K
ONE_ATMOSPHERE = 1.01325 # bar
# Unit conversion factors
[docs]class Conversion:
KCAL_TO_JOUL = 4184.0
CAL_CM_TO_MPA = 0.48888 # From (cal/cm^3)^1/2 to MPa^(1/2)
AU_TO_KG = 1.6605655 # Mass: 1 mole of AU to kg
# Misc. constants
LIGAND_TOTAL_ATOMS_LIMIT = 150
# Force Field CT block
FFIO_FF = 'ffio_ff'
[docs]class EXISTING_RESTRAINT(Constants):
RETAIN = 'retain'
IGNORE = 'ignore'
IGNORE_POSRE = 'ignore_posre'
[docs]class WATER_MODELS(Constants):
SPC = 'SPC'
SPCE = 'SPCE'
TIP3P = 'TIP3P'
TIP3P_CHARMM = 'TIP3P_CHARMM'
TIP4P = 'TIP4P'
TIP4PEW = 'TIP4PEW'
TIP4P2005 = 'TIP4P2005'
TIP5P = 'TIP5P'
TIP4PD = 'TIP4PD'
# Map water model name to pdb residue
FFLD_WATER = {
WATER_MODELS.SPC: "SPC",
WATER_MODELS.SPCE: "SPCE",
WATER_MODELS.TIP3P: "T3P",
WATER_MODELS.TIP4P: "T4P",
WATER_MODELS.TIP4P2005: "T4P5",
WATER_MODELS.TIP4PEW: "T4PE",
WATER_MODELS.TIP4PD: "T4PD",
WATER_MODELS.TIP5P: "T5P"
}
[docs]class CUSTOM_CHARGE_MODE(Constants):
KEEP = 'keep'
CLEAR = 'clear'
ASSIGN = 'assign'
# graph constants
[docs]class FEP_TYPES(Constants):
PROTEIN_STABILITY = 'prm_stability'
PROTEIN_SELECTIVITY = 'protein_selectivity'
COVALENT_LIGAND = 'covalent_ligand'
SMALL_MOLECULE = 'small_molecule'
METALLOPROTEIN = 'metalloprotein'
LIGAND_SELECTIVITY = 'ligand_selectivity'
ABSOLUTE_BINDING = "absolute_binding"
SOLUBILITY = 'solubility'
PROTEIN_FEP_TYPES = (FEP_TYPES.PROTEIN_STABILITY, FEP_TYPES.PROTEIN_SELECTIVITY,
FEP_TYPES.LIGAND_SELECTIVITY)
SELECTIVITY_FEP_TYPES = (FEP_TYPES.PROTEIN_SELECTIVITY,
FEP_TYPES.LIGAND_SELECTIVITY)
# Per edge simulation protocol
[docs]class SIMULATION_PROTOCOL(Constants):
DEFAULT = 'default'
CHARGED = "charge"
FORMALCHARGED = "charge0"
COREHOPPING = "core-hopping"
MACROCYCLE_COREHOPPING = "macrocycle-core-hopping"
FRAGMENT_LINKING = "fragment-linking"
# Used for building filenames
PROTOCOL_TO_POSTFIX = {
SIMULATION_PROTOCOL.DEFAULT: "",
SIMULATION_PROTOCOL.CHARGED: "_chg",
SIMULATION_PROTOCOL.FORMALCHARGED: "_chg",
SIMULATION_PROTOCOL.COREHOPPING: "_corehopping",
SIMULATION_PROTOCOL.MACROCYCLE_COREHOPPING: "_corehopping",
SIMULATION_PROTOCOL.FRAGMENT_LINKING: "_fragment_linking"
}
# Structure level ct properties
NUM_COMPONENT = 'i_ffio_num_component'
USE_CUSTOM_OPLSDIR = 'b_ffio_use_custom_oplsdir'
IS_INFINITE = 'b_matsci_is_infinite' # (MATSCI-2544, MATSCI-6234)
CT_INDEX = 'i_ffio_ct_index'
CT_TYPE = MaePropertyName(FFIO_DATA_CT_TYPE,
FULL_SYSTEM=FFIO_FULL_SYSTEM,
SOLUTE='solute',
SOLVENT='solvent',
MEMBRANE='membrane',
ION='ion',
COSOLVENT='cosolvent',
CRYSTAL_WATER='crystal water',
POSITIVE_SALT='positive salt',
NEGATIVE_SALT='negative salt',
LIGAND='ligand',
RECEPTOR='receptor',
ALCHEMICAL_WATER='alchemical_water')
# there may be more..
FEP_STRUC_TAG = MaePropertyName(
's_fep_struc_tag',
LIGAND='ligand',
RECEPTOR='receptor',
MEMBRANE='membrane',
SOLVENT='solvent', # ct with solvent, not leg
COMPLEX='complex') # ct with protein-ligand complex, not leg
MOLTYPE = MaePropertyName("s_leadoptmap_moltype", LIGAND='ligand')
VISIBILITY = "i_m_visibility"
FEP_FRAGNAME = "s_fep_fragname"
FEP_WRTFRAG = 's_fep_wrtfrag'
FEP_PERTDB = 's_fep_pertdb'
FEPMAPPER_BIAS = "i_fepmapper_bias"
FEP_SUITABILITY = "r_bioluminate_delta_FEP_Suitability"
COVALENT_LIGAND = 's_fep_covalent_ligand'
FEP_COVALENT_PROTEIN_BB_ATOM = 'i_fep_cov_protein_bb_atom'
FEP_DG_PREFIX = "s_des_dG"
FEP_DDG_PREFIX = "s_des_ddG"
FEP_DG_CROSSLINK_CORRECTION_REF = FEP_DG_PREFIX + "_crosslink_correction_ref"
FEP_DG_CROSSLINK_CORRECTION_MUT = FEP_DG_PREFIX + "_crosslink_correction_mut"
FEP_DDG_CROSSLINK_CORRECTION = FEP_DDG_PREFIX + "_crosslink_correction"
# For the absolute binding fep workflow
FEP_DG_CROSSLINK_CORRECTION = FEP_DG_PREFIX + "_crosslink_correction"
FEP_PRED_DG = "r_fepplus_pred_dg" # FIXME: PANEL should use this contant
FEP_PRED_DG_ERROR = "r_fepplus_pred_dg_error" # FIXME: PANEL should use this contant
# Used to set node experimental dg on initial graph creation.
FEPMAPPER_EXP_DG = "r_fepmapper_exp_dG"
# Used to keep track of the mutations for protein fep.
BIOLUMINATE_MUTATION = "s_bioluminate_Mutations"
# Marker for the WT structure.
BIOLUMINATE_WT = 'NONE'
ABFEP_DUMMY_LIGAND = "b_fep_ab_dummy_ligand"
# Marker for dummy ligand in AB FEP and Solubility
DUMMY_LIGAND = "b_fep_dummy_ligand"
LIGAND_ORIGINAL_TITLE = "s_ligand_original_title"
PROTEIN_ORIGINAL_TITLE = "s_protein_original_title"
# Selection bias correction properties.
CORRECTED_PREDICTED_AFFINITY_KCAL = 'r_fep_Corrected_Predicted_Affinity_(kcal/mol)'
CORRECTED_PREDICTED_UNCERTAINTY_KCAL = 'r_fep_Corrected_Predicted_Uncertainty_(kcal/mol)'
CORRECTED_PREDICTED_AFFINITY_nM = 'r_fep_Corrected_Predicted_Affinity_(nM)'
FOLD_UNCERTAINTY = 'r_fep_Fold_Uncertainty'
# Mixed solvent properties.
MXMD_COSOLVENT_PROBE = 's_mxmd_cosolvent_probe'
MXMD_GRID_SPACING = 'r_mxmd_grid_spacing'
MXMD_BOX_LENGTH = 'r_mxmd_box_length'
MXMD_NUM_PROBES = 'i_mxmd_num_probes'
MXMD_CENTER_X = 'r_mxmd_center_x'
MXMD_CENTER_Y = 'r_mxmd_center_y'
MXMD_CENTER_Z = 'r_mxmd_center_z'
# Simulation box
_SIM_BOX_BASENAME = 'r_chorus_box'
SIM_BOX = tuple(f"{_SIM_BOX_BASENAME}_{abc}{xyz}" for abc in ['a', 'b', 'c']
for xyz in ['x', 'y', 'z'])
SIM_BOX_DIAGONAL = tuple(
f"{_SIM_BOX_BASENAME}_{val}" for val in ('ax', 'by', 'cz'))
# Trajectory
TRJ_POINTER = 's_chorus_trajectory_file'
# Solubility FEP properties.
FEP_ORIGINAL_TITLE = 's_fep_original_title'
FEP_HASH_ID = 's_fep_hash_id'
FEP_SOLUBILITY = "s_des_dG_dissolution"
FEP_SOLUBILITY_MICROMOLAR = 'r_des_solubility_[uM]'
FEP_TRANSFER_FREE_ENERGY = "s_des_dG_transfer"
SOLUBILITY_SUBJOB = MaePropertyName('s_fep_solubility_subjob',
MD='md',
HYDRATION='hydration',
SUBLIMATION='sublimation',
SOLVATION='solvation',
SOLUBLE='soluble')
SOLUBILITY_STATUS = MaePropertyName('s_fep_solubility_status',
FINISHED='finished',
FAILED='failed')
# Atom level ct properties
FEP_MAPPING = "i_fep_mapping"
FEP_RESTRAIN = "i_fep_restrain"
FEPIO_STAGE = 'i_fepio_stage'
FEP_SUBST = 'i_fep_subst'
# Marks the ligand atoms for protein ligand mutation
LIGAND_MARKER = "i_protmap_nochange"
CRYSTAL_WATER_PROP = 'i_desmond_crystal_water'
FF_USE_EXISTING_CHARGE = "i_ff_skip_cm1a"
# TODO: What is the difference between these?
FEP_ATOM_INDEX = "i_fep_pa_atomindex"
ORIGINAL_INDEX = 'i_m_original_index'
ORIGINAL_MOLECULE_NUMBER = 'i_m_original_molecule'
# atom property added in captermini.CapTermini
PPW_ATOM_INDEX = "i_ppw_original_index"
# atom property added in Epik generated titration states
FEP_TMP_IDX = "i_fep_tmp_idx"
# Atom charge
FF_CUSTOM_CHARGE = 'r_ffio_custom_charge'
DES_ATOM_DOMAIN = MaePropertyName('i_des_atom_domain',
SOLUTE=1,
SOLVENT=2,
ION=3,
MEMBRANE=4,
CRYSTAL_WATER=5,
ALCHEM_A=7,
ALCHEM_B=8,
INACTIVE=9)
# REST region definition
REST_HOTREGION = "i_rest_hotregion"
[docs]class REST_PROPERTIES(Constants):
SOLVENT_HOTREGION = 'i_rest_solvent_hotregion'
COMPLEX_HOTREGION = 'i_rest_complex_hotregion'
[docs]class REST_COMPONENT(Constants):
ENVIRONMENT = "environment"
RECEPTOR = "receptor"
MEMBRANE = "membrane"
LIGAND = "ligand"
COMPLEX = "complex"
[docs]class REST_REGION_RULE(Constants):
DEFAULT = 'default'
ALL = 'all'
# Absolute FEP properties.
FEP_ABSOLUTE_ENERGY = "i_ffio_grp_energy"
FEP_ABSOLUTE_LIGAND = "i_ffio_grp_ligand"
# Protein FEP properties.
# PROT_LIGAND_REGION signifies the subset of the protein that
# is mutating in protein fep, analogous to the ligand in normal FEP
# (no guarantee that all atoms are mutated)
PROT_LIGAND_REGION = "i_fep_protein_mutating_subset"
# Original coordinates
REFERENCE_COORD_BASENAME = 'r_fep_original_coord'
REFERENCE_COORD_PROPERTIES = [
REFERENCE_COORD_BASENAME + '_x', REFERENCE_COORD_BASENAME + '_y',
REFERENCE_COORD_BASENAME + '_z'
]
# Only for the analysis, not used to determine restraints
_ANALYSIS_REFERENCE_COORD_BASENAME = 'r_fep_analysis_original_coord'
ANALYSIS_REFERENCE_COORD_PROPERTIES = [
_ANALYSIS_REFERENCE_COORD_BASENAME + '_x',
_ANALYSIS_REFERENCE_COORD_BASENAME + '_y',
_ANALYSIS_REFERENCE_COORD_BASENAME + '_z'
] # yapf: disable
# alchemical ion
# FIXME: Note there is also a `CT_TYPE.VAL.ALCHEMICAL_WATER`
ALCHEMICAL_ION = 'b_fep_alchemical_ion'
ALCHEMICAL_WATER = 'i_fep_alchemical_water'
ALCHEMICAL_WATER_CHARGE = 'i_fep_alchemical_water_charge'
# Maestro subgroup
M_SUBGROUP_TITLE = 's_m_subgroup_title'
M_SUBGROUPID = 's_m_subgroupid'
M_SUBGROUP_COLLAPSED = 'b_m_subgroup_collapsed'
# FEP schedule names
POSE_DIHEDRAL_RESTRAINT = 'pose_dihedral_restraint'
[docs]class IsotropyPolicy(Constants):
ISOTROPIC = 'isotropic'
SEMI_ISOTROPIC = 'semi_isotropic'
CONSTANT_AXIS_A = "constant_axis_a"
CONSTANT_AXIS_B = "constant_axis_b"
CONSTANT_AXIS_C = "constant_axis_c"
ANISOTROPIC = "anisotropic"
FLEXIBLE = "flexible"
# Conformation restraint types
[docs]class ConfRestraintType(Constants):
BACKBONE = "backbone"
SIDECHAIN = "sidechain"
CALPHA_RUNG = "calpha_rung"
# Fragment linking
FRAGMENT_LINKING_JOBS = MaePropertyName(
's_fep_frag_linking_job',
COMPLEX='complex',
SOLVENT='solvent',
FRAGMENT_HYDRATION='solvent_fragment_hydration',
RESTRAINED_FRAGMENT_HYDRATION='solvent_restrained_fragment_hydration')
FRAGMENT_LINKING_SOLVENT_JOBS = (
FRAGMENT_LINKING_JOBS.VAL.SOLVENT,
FRAGMENT_LINKING_JOBS.VAL.FRAGMENT_HYDRATION,
FRAGMENT_LINKING_JOBS.VAL.RESTRAINED_FRAGMENT_HYDRATION)
FRAGMENT_LINKING_HYDRATION_JOBS = (
FRAGMENT_LINKING_JOBS.VAL.FRAGMENT_HYDRATION,
FRAGMENT_LINKING_JOBS.VAL.RESTRAINED_FRAGMENT_HYDRATION)
FEP_RESTRAINT_CORRECTION = 'r_fep_restraint_correction'
FRAGMENT_LINKING_SIGN = 'i_fep_frag_linking_sign'
FEP_ENCODED_RESTRAINTS = 's_fep_encoded_restraints'
ABFE_LIGAND = 'b_fep_abfe'
FEP_ABSOLUTE_BINDING_LIGAND = 'i_fep_absolute_binding_ligand'
# protein backbone atom pdbname
PROTEIN_BACKBONE_PDB_NAMES = [
' H ', ' N ', ' O ', ' CA ', ' HA ', ' C ', ' HA3', ' HA2'
]
# Absolute Binding FEP
ABSOLUTE_BINDING_LEGS = MaePropertyName('s_fep_absolute_binding_leg',
COMPLEX='complex',
SOLVENT='solvent')
[docs]class FepLegTypes(Constants):
COMPLEX = 'complex'
SOLVENT = 'solvent'
VACUUM = 'vacuum'
SUBLIMATION = 'sublimation'
HYDRATION = 'hydration'
SOLVATION = SOLUBILITY_SUBJOB.VAL.SOLVATION
FRAGMENT_HYDRATION = FRAGMENT_LINKING_JOBS.VAL.FRAGMENT_HYDRATION
RESTRAINED_FRAGMENT_HYDRATION = FRAGMENT_LINKING_JOBS.VAL.RESTRAINED_FRAGMENT_HYDRATION
MD = 'md'
[docs]class Ensembles(Constants):
NVT = "NVT"
NPT = "NPT"
MUVT = "muVT"
[docs]class RestrainTypes(Constants):
POS = 'pos'
POS_FBHW = 'posfbhw'
STRETCH_FBHW = 'stretchfbhw'
ANGLE_FBHW = 'anglefbhw'
IMPROPER_FBHW = 'improperfbhw'
# Default
ABSOLUTE_BINDING_COMPLEX_LAMBDAS = 68
ABSOLUTE_BINDING_SOLVENT_LAMBDAS = 60
# ABFEP with restraints uses a different number of lambdas
ABSOLUTE_BINDING_RESTRAINED_COMPLEX_LAMBDAS = 80
ABSOLUTE_BINDING_RESTRAINED_SOLVENT_LAMBDAS = 68
# Default number of lambdas
[docs]class Schedule(Constants):
DEFAULT = "default"
FLEXIBLE = "flexible"
CHARGE = "charge"
DEFAULT_LAMBDAS_BY_SCHEDULE = {
Schedule.DEFAULT: 12,
Schedule.FLEXIBLE: 16,
Schedule.CHARGE: 24,
}
# Absolute hydration windows
FRAGMENT_LINKING_HYDRATION_LAMBDAS = 24
DEFAULT_LAMBDAS_BY_SIMULATION_PROTOCOL = {
SIMULATION_PROTOCOL.DEFAULT: DEFAULT_LAMBDAS_BY_SCHEDULE[Schedule.DEFAULT],
SIMULATION_PROTOCOL.CHARGED: DEFAULT_LAMBDAS_BY_SCHEDULE[Schedule.CHARGE],
SIMULATION_PROTOCOL.FORMALCHARGED: DEFAULT_LAMBDAS_BY_SCHEDULE[
Schedule.CHARGE],
SIMULATION_PROTOCOL.COREHOPPING: DEFAULT_LAMBDAS_BY_SCHEDULE[
Schedule.FLEXIBLE],
SIMULATION_PROTOCOL.MACROCYCLE_COREHOPPING: DEFAULT_LAMBDAS_BY_SCHEDULE[
Schedule.FLEXIBLE],
SIMULATION_PROTOCOL.FRAGMENT_LINKING: FRAGMENT_LINKING_HYDRATION_LAMBDAS
}
FFIO_NUM_PSEUDOS = 'i_ffio_num_pseudos'
FFIO_PARENT2PSEUDO = 's_ffio_parent_to_pseudo'
FEP_TITRATION_STATES = 's_fep_TITRATION_STATES'
FEP_STATE_INFO = 's_fep_STATE_INFO'
FEP_AID2GID = 's_fep_aid2gid'
FEP_ALCHEMICAL_CHANGE = 's_fep_ALCHEMICAL_CHANGE'
DESMOND_WRITE_JSON = 'b_desmond_write_json'
[docs]class IdConversion(Constants):
COMPONENT_TO_COMBINED = 'component_to_combined'
ATOM_TOTAL = 'atom_total'
PSEUDO_END = 'pseudo_end'
PARENT2PSEUDO = 'parent_to_pseudo'
PSEUDO2PARENT = 'pseudo_to_parent'
TOPOLOGY = 'topology'
GCMC_BATCH_SIZE_DEFAULT = 1600
GCMC_LIGAND = 'i_gcmc_ligand'
# keys are (water model, inner timestep fs)
# values are: (chemical_potential: kcal/mol, molecule number density: 1/A^3)
# exclusion_radius = 1.5 A
GCMC_CHEMICAL_POTENTIALS = {
("SPC", 4): (-6.137, 0.032480),
("TIP3P", 4): (-6.011, 0.032722),
("TIP4P", 4): (-5.997, 0.033041),
("TIP4PEW", 4): (-6.858, 0.033145),
("TIP4PD", 4): (-7.694, 0.033083),
("TIP5P", 4): (-5.569, 0.032731),
("SPCE", 4): (-6.958, 0.033),
("TIP4P2005", 4): (-7.064, 0.033),
("SPC", 2): (-6.189, 0.03262),
("TIP3P", 2): (-6.060, 0.0329),
("TIP4P", 2): (-6.051, 0.03315),
("TIP4PEW", 2): (-6.940, 0.03323),
("TIP4PD", 2): (-7.821, 0.03316),
("TIP5P", 2): (-5.628, 0.03285),
("SPCE", 2): (-7.016, 0.033),
("TIP4P2005", 2): (-7.122, 0.033),
}
# Water models that only work with S-OPLS and not OPLS2005
S_OPLS_WATER_MODELS = {
"TIP4P", "TIP4P2005", "TIP4PEW", "TIP4PD", "TIP5P", "SCPE"
}
# FEP advanced options GUI lambda window option aliases
ALIAS_FEP_NUM_LW_DEFAULT = 'num_lw_default'
ALIAS_FEP_NUM_LW_CORE = 'num_lw_core'
ALIAS_FEP_NUM_LW_CHARGE = 'num_lw_charge'
# FFIO velocity
_FFIO_PREFIX = 'r_ffio_'
_VELOCITY_POSTFIX = '_vel'
VELOCITY_PROPERTIES = [
_FFIO_PREFIX + 'x' + _VELOCITY_POSTFIX,
_FFIO_PREFIX + 'y' + _VELOCITY_POSTFIX,
_FFIO_PREFIX + 'z' + _VELOCITY_POSTFIX
]
# FFIO coordinate
_COORD_POSTFIX = '_coord'
COORD_PROPERTIES = [
_FFIO_PREFIX + 'x' + _COORD_POSTFIX, _FFIO_PREFIX + 'y' + _COORD_POSTFIX,
_FFIO_PREFIX + 'z' + _COORD_POSTFIX
]
[docs]class CorrectionTerm(Constants):
PKA = "pKa"
STATE_PENALTY = "State Penalty"
UNKNOWN = "Unknown"
BORESCH_RESTRAINT = "Boresch Restraint"
FRAGMENT_SOLVATION = "Fragment Solvation"
# keys used in interaction match
[docs]class FEP_STATE_KEYS(Constants):
WT = 'wt'
MUT = 'mut'
# ASL
BACKBONE_CA_ASL = "(backbone and atom.ptype ' CA ')"
[docs]class ENERGY_GROUPS(Constants):
PRESSURE_TENSOR = 'pressure_tensor'
CORR_ENERGY = 'corr_energy'
SELF_ENERGY_ONLY = 'self_energy_only'
CROSS_ENERGY_ONLY = 'cross_energy_only'
GCMC_INFO = 'gcmc_info'
SIMULATION_BOX = 'simulation_box'
# type of cms.Cms
[docs]class SystemType(Constants):
ALCHEMICAL = 1 # requires desmond gibbs plugin for alchemical changes
BINDING = 2 # requires desmond gibbs plugin for binding FEP
OTHER = 0
# property to use titration code for fep
USE_TITRATION = 'b_fep_use_titration'
# Lambda Dynamics
FEP_TITRATABLE_GROUP = 'i_fep_titratable_group'
CONSTANT_PH_UNMAP_SIDECHAIN = 'b_titration_unmap_sidechain'
CONSTANT_PH_TITRATABLE_WATER = 'b_fep_TITRATABLE_H2O'
CONSTANT_PH_PMF_ORDER = 4
# key for conf-pose restraints
CONF_POST_RESTRAINTS = "conf_pose_restraints"
# For model2 license
[docs]class PRODUCT(Constants):
FEP = 'fep'
CONSTANT_PH = 'constant_ph'
IFD_MD = 'ifd-md'
# For OPLS_DIR
SCHRODINGER_MULTISIM_DONT_COPY_OPLS = 'SCHRODINGER_MULTISIM_DONT_COPY_OPLS'
# For memory, linear fit is for mem in MB vs num atoms * num lambdas
# Data comes from GraphDB runs
# For small molecule, abfep, prm stability fep
CPU_SLOPE_INTERCEPT = (0.002214250636309, 4162.26530542264)
GPU_SLOPE_INTERCEPT = (0.004060048145001, 879.10326851197)
# For covalent and selectivity fep
COVALENT_CPU_SLOPE_INTERCEPT = (0.00427170019974, 4056.80282331548)
COVALENT_GPU_SLOPE_INTERCEPT = (0.010131291639133, -232.357871994725)
# For CLIs
UiMode = enum.Enum("UiMode", "NEW,RESTART,EXTEND")
# build_geometry stage
[docs]class BUILD_GEOMETRY(Constants):
NAME = 'build_geometry'
REMOVE_OVERLAPPED_SOLVENT = 'remove_overlapped_solvent'
[docs]class SYSTEM_BUILDER_INP(Constants):
CHECK_SOLVENT_OVERLAP = 'check_solvent_overlap'