schrodinger.application.desmond.stage.prepare.forcefield module¶
- schrodinger.application.desmond.stage.prepare.forcefield.is_valid_opls_name(name: str) bool ¶
- class schrodinger.application.desmond.stage.prepare.forcefield.AssignCustomCharge(*args, **kwargs)¶
Bases:
schrodinger.application.desmond.cmj.StructureStageBase
This sets up and runs the custom charge script for the ligand cts in the input file. Ligands must be in separate cts, otherwise custom charges will not be assigned. Other cts will be passed unchanged. This must be called prior to the AssignForcefield stage.
- NAME = 'assign_custom_charge'¶
- PARAM = <schrodinger.utils.sea.sea.Map object>¶
- run(jobname: str, mae_fname: str) Optional[str] ¶
- Parameters
jobname – Jobname for this stage.
input_fname – Filename for the input structure.
- Returns
Filename for the output structure or
None
if there was an error generating the output.
- class schrodinger.application.desmond.stage.prepare.forcefield.AssignForcefield(*args, **kwargs)¶
Bases:
schrodinger.application.desmond.cmj.StageBase
- Variables
ff_builder_args – a list storing arguments passed to desmond_ff_builder so that the same arguments can be passed to generate_titration_states.
- NAME = 'assign_forcefield'¶
- FFLD_WATER = {'SPC': 'SPC', 'SPCE': 'SPCE', 'TIP3P': 'T3P', 'TIP4P': 'T4P', 'TIP4P2005': 'T4P5', 'TIP4PD': 'T4PD', 'TIP4PEW': 'T4PE', 'TIP5P': 'T5P'}¶
- parameter_string = '\n DATA = {\n forcefield = OPLS_2005\n water = SPC\n humble = no\n fepio_mode = 2\n restrain = none\n restraints = {\n new = []\n existing = ignore\n }\n print_restraint = false\n atom_group = retain\n fep_retain_angle = yes\n core_hopping_fepio = on\n hydrogen_mass_repartition = off\n make_alchemical_water = on\n fep_enhance_sampling_dihedral = off\n assign_is_infinite = off\n fail_on_lewis_failure = on\n use_zob_property = on\n pose_conf_restraint = {\n enable = false\n name = harm\n schedule = pose_dihedral_restraint\n fc = 50.0\n sigma = 10.0\n alpha = 1.0\n dihedral_schedule = ""\n max_ring_size = 999\n }\n macromolecule_conf_restraint = {\n enable = false\n dihedral_schedule = ""\n backbone = {\n name = harm\n schedule = ""\n fc = 50.0\n sigma = 10.0\n alpha = 1.0\n }\n sidechain = {\n name = harm\n schedule = ""\n fc = 50.0\n sigma = 10.0\n alpha = 1.0\n }\n calpha_rung = {\n name = harm\n schedule = ""\n fc = 5.0\n alpha = 1.0\n }\n }\n }\n\n VALIDATE = {\n forcefield = {type = str _check = check_forcefield}\n water = {type = enum range = [SPC SPCE TIP3P TIP4P TIP4P2005 TIP4PEW TIP4PD TIP5P none]}\n humble = {type = bool}\n fepio_mode = {type = int range = [1 3]}\n atom_group = [\n {type = enum range = [retain none]}\n {atom = {type = str}\n name = {type = str}\n index = {type = int range = [0 7]}\n }\n {type = list size = 0\n elem = {atom = {type = str}\n name = {type = str}\n index = {type = int range = [0 7]}\n }\n }\n ]\n restrain = [\n {type = enum range = [retain none]}\n {_mapcheck = check_restrain _skip = all}\n {type = list size = -1\n elem = {_mapcheck = check_restrain _skip = all}\n }\n ]\n restraints = {\n existing = {type = enum range = [retain ignore ignore_posre]}\n new = [{type = list} {_skip = all}]\n }\n print_restraint = {type = bool }\n fep_retain_angle = {type = bool}\n core_hopping_fepio = {type = bool}\n hydrogen_mass_repartition = {type = bool}\n make_alchemical_water = {type = bool}\n fep_enhance_sampling_dihedral = {type = bool}\n assign_is_infinite = {type = bool}\n fail_on_lewis_failure = {type = bool}\n use_zob_property = {type = bool}\n pose_conf_restraint = {\n enable = {type = bool}\n name = {type = enum range = [harm fbhw soft]}\n fc = {type = float+}\n sigma = {type = float+}\n alpha = {type = float+}\n schedule = {type = str}\n dihedral_schedule = {type = str}\n max_ring_size = {type = int}\n _mapcheck = check_pose_conf_restraint\n }\n macromolecule_conf_restraint = {\n enable = {type = bool}\n dihedral_schedule = {type = str}\n backbone = {\n name = {type = enum range = [harm fbhw soft]}\n schedule = {type = str}\n fc = {type = float+}\n sigma = {type = float+}\n alpha = {type = float+}\n }\n sidechain = {\n name = {type = enum range = [harm fbhw soft]}\n schedule = {type = str}\n fc = {type = float+}\n sigma = {type = float+}\n alpha = {type = float+}\n }\n calpha_rung = {\n name = {type = enum range = [harm]}\n schedule = {type = str}\n fc = {type = float+}\n alpha = {type = float+}\n }\n }\n }\n '¶
- PARAM = <schrodinger.utils.sea.sea.Map object>¶
- __init__(*args, **kwargs)¶
- crunch()¶
- hook_captured_successful_job(job)¶
- static get_water_atom_indices(st: schrodinger.structure._structure.Structure) List[int] ¶
Method that returns a generator for all the water atoms in a structure.
- class schrodinger.application.desmond.stage.prepare.forcefield.LambdaDynamicsAssignForcefield(*args, **kwargs)¶
Bases:
schrodinger.application.desmond.stage.prepare.forcefield.AssignForcefield
An assign forcefield stage that is exclusive for the lambda dynamics workflow.
Subclassing this stage is needed to correctly use the assign forcefield infrastructure, but make sure the correct input files are copied to the stage directory. These input files are no longer just named after the previous stage’s jobname, but also have a structure type associated with them based on whether they are just the mutation chain or a binding complex.
DESMOND-14405: refactor this stage to use the AssignForcefield stage if possible
- NAME = 'lambda_dynamics_assign_forcefield'¶
- crunch()¶
- exception schrodinger.application.desmond.stage.prepare.forcefield.AssignLambdaScheduleError¶
Bases:
Exception
- class schrodinger.application.desmond.stage.prepare.forcefield.AssignLambdaSchedule(should_pack=True)¶
Bases:
schrodinger.application.desmond.cmj.StageBase
- NAME = 'assign_lambda_schedule'¶
- PARAM = <schrodinger.utils.sea.sea.Map object>¶
- crunch() None ¶
- static get_n_vdw_and_charge_div(norm_dipole_per_atom: float, n_win: int) Tuple[int, float] ¶
Compute number of van der Waals windows and fraction of charges.
Uses a “broken stick” function to determine the partition of the lambda windows into van der Waals and electrostatic interactions.
- schrodinger.application.desmond.stage.prepare.forcefield.encode_restraints(ct: schrodinger.structure._structure.Structure, restraints: List[schrodinger.utils.sea.sea.Map])¶
Encode the restraints in the
FEP_ENCODED_RESTRAINTS
ct property.- Parameters
ct – Structure to modify in place.
restraints – List of restraints as sea.Map objects.
- schrodinger.application.desmond.stage.prepare.forcefield.decode_restraints(ct: schrodinger.structure._structure.Structure) List[schrodinger.utils.sea.sea.Map] ¶
Decode the restraints in the
FEP_ENCODED_RESTRAINTS
ct property.- Parameters
ct – Structure to read the restraints from.
- Returns
If found, restraints that can be passed to
schrodinger.application.desmond.packages.restraint.RestraintsBuilder
. Otherwise, returnNone
.
- schrodinger.application.desmond.stage.prepare.forcefield.clear_restraints(ct: schrodinger.structure._structure.Structure)¶
Clear the
FEP_ENCODED_RESTRAINTS
ct property andFEP_RESTRAIN
atom property from a given structure.- Parameters
ct – Structure to modify in place.
- schrodinger.application.desmond.stage.prepare.forcefield.add_restraint_reference(st: schrodinger.structure._structure.Structure, restraints: List[schrodinger.utils.sea.sea.Map])¶
Add the reference values for Boresch type distance/angle/dihedral restraints.
- Parameters
st – Reference structure.
restraints – List of restraints, updated in place.
- schrodinger.application.desmond.stage.prepare.forcefield.calculate_restraint_correction_term(restraints: List[schrodinger.utils.sea.sea.Map], temperature: float) float ¶
Calculate the correction to the free energy due to the restraints.
- Parameters
restraints – List of restraints.
temperature – The temperature for the simulation.
- Returns
The correction term in kcal/mol.
- schrodinger.application.desmond.stage.prepare.forcefield.add_restraint_atom_marker(st: schrodinger.structure._structure.Structure, ligand_asl: str) Dict[int, int] ¶
Update
st
to mark the ligand atoms that could be part of a restraint. Returns a dictionary mapping theFEP_RESTRAIN
values to the structure atom indicies.- Parameters
st – This will be updated in place to add atom properties to mark the ligand atoms.
ligand_asl – ASL to identify the ligand.
- class schrodinger.application.desmond.stage.prepare.forcefield.LoadRestraintsFromStructure(*args, **kwargs)¶
Bases:
schrodinger.application.desmond.cmj.StructureStageBase
Load the restraints encoded in the structure using
encode_restraints
and store to the cms. By default this stage will append to any existing restraints, set ‘load_restraints_from_structure.existing = ignore’ to ignore existing restraints in the structure.The restraints can be used by setting ‘restrain.existing = retain’ in the subsequent simulate stage.
- NAME = 'load_restraints_from_structure'¶
- PARAM = <schrodinger.utils.sea.sea.Map object>¶
- run(jobname: str, cms_fname: str) Optional[str] ¶
- Parameters
jobname – Jobname for this stage.
input_fname – Filename for the input structure.
- Returns
Filename for the output structure or
None
if there was an error generating the output.
- class schrodinger.application.desmond.stage.prepare.forcefield.ForcefieldBuilderLauncher(should_pack=True)¶
Bases:
schrodinger.application.desmond.cmj.StageBase
- NAME = 'forcefield_builder_launcher'¶
- PARAM = <schrodinger.utils.sea.sea.Map object>¶
- crunch()¶
This is where jobs of this stage are created. This function should be overriden by the subclass.