schrodinger.application.matsci.cgforcefield module

Constants, functions and classes for assigning coarse-grained force fields to structures

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.application.matsci.cgforcefield.get_rev_dict(x)
schrodinger.application.matsci.cgforcefield.get_density_from_scale_factor(density, scale_factor)

Get the coarse grain density in g/cm^3 after applying scale factor to it

Parameters:
  • density (float) – current density

  • scale_factor (float) – scaling factor to scale the density by

Return type:

float

Returns:

scaled density in g/cm^3

schrodinger.application.matsci.cgforcefield.get_scale_factor_from_density(old_density, new_density)

Get the scale factor for change from old density to the new density

Parameters:
  • old_density (float) – old density of the system in g/cm^3

  • new_density (float) – new (desired) density of the system in g/cm^3

Return type:

float

Returns:

scale factor to change the old density to new density

schrodinger.application.matsci.cgforcefield.get_reduced_density_from_cutoff(nparticles, volume, cutoff)

Get reduced density (number) from DPD cutoff in Ang.

Parameters:
  • nparticles (int) – number of particles in the system

  • volume (float) – volume of the system

  • cutoff (float) – DPD potential cutoff

Return type:

float

Returns:

reduced density of the DPD simulation

schrodinger.application.matsci.cgforcefield.get_cutoff_from_reduced_density(nparticles, volume, reduced_density)

Get the DPD cutoff in Ang. from the reduced density

Parameters:
  • nparticles (int) – number of particles in the system

  • volume (float) – volume of the system

  • reduced_density (float) – reduced density of the DPD simulation

Return type:

float

Returns:

DPD potential cutoff

schrodinger.application.matsci.cgforcefield.get_scaled_volume(initial_volume, scale_factor)

Return the new volume for coarse grain system after applying scale factor

Parameters:
  • initial_volume (float) – volume before applying the scale factor

  • scale_factor (float) – scale factor to apply volume

Return type:

float

Returns:

new volume

schrodinger.application.matsci.cgforcefield.get_dpd_scale_factor_from_FF(struct, forcefield)

Return the new volume for coarse grain system after applying scale factor

Parameters:
Return type:

float

Returns:

new volume

schrodinger.application.matsci.cgforcefield.write_force_field_to_json(ff_data, ff_file_path)

Write force field data to a json file

Parameters:
  • ff_data (dict) – The dictionary that defines the force field

  • ff_file_path (str) – filename path for the json file

schrodinger.application.matsci.cgforcefield.scale_cell(astructure, scale_factor)

Scale the cell of the given structure according to the given scale factor.

Parameters:
  • astructure (structure.Structure) – the structure whose cell will be scaled

  • scale_factor (float) – the uniform scale factor

schrodinger.application.matsci.cgforcefield.is_like_lennard_jones(nonbond_type)

Return True if the given type is like Lennard-Jones.

Parameters:

nonbond_type (str) – the nonbond type

Return type:

bool

Returns:

True if like Lennard-Jones

schrodinger.application.matsci.cgforcefield.is_dpd(cgff_path)

Return True if any of the non-bonded parameter is repulsive harmonic

Parameters:

path (str) – The path to the force field file to read

Return type:

bool

Returns:

True if any of the non-bonded parameter is repulsive harmonic

schrodinger.application.matsci.cgforcefield.get_type_dict_from_ff_file(ff_file)

Return a sorted type dict for the given force field file.

Parameters:

ff_file (str) – path to the force field file from which to obtain the type dict

Return type:

OrderedDict

Returns:

the sorted type dict, keys are particle names, values are ParticleInfo

schrodinger.application.matsci.cgforcefield.get_all_force_field_paths(allow_enc=False, include=False)

Get a dictionary of force field names and force field file paths for all defined CG force fields, keyed at the top level by location, INSTALLED_CG_FF_LOCATION_TYPE for FF_PARAMETERS_INSTALLED_PATH and LOCAL_CG_FF_LOCATION_TYPE for FF_PARAMETERS_LOCAL_PATH.

Parameters:
  • allow_enc (bool) – whether to allow encrypted force field files

  • include (bool) – whether to recurse any included force field paths

Return type:

dict

Returns:

top level keys are either INSTALLED_CG_FF_LOCATION_TYPE or LOCAL_CG_FF_LOCATION_TYPE while inner dictionaries have force field names as keys and absolute paths to force field files as values

schrodinger.application.matsci.cgforcefield.add_local_type_force_field_to_job_builder(builder, ffname, local_type_includes_cwd=True)

Set up the Launch API Job Builder to use the given local type force field.

Parameters:
  • builder (schrodinger.job.launchapi.JobSpecificationArgsBuilder) – The job builder to use for setting the FF as an input file

  • ffname (str) – The name of the force field to use (should be the user-facing name, not the force field file name)

  • local_type_includes_cwd (bool) – whether the LOCAL_CG_FF_LOCATION_TYPE also includes the CWD

schrodinger.application.matsci.cgforcefield.force_field_name_to_file_name(ffname)

Convert the user-facing force field name to a file name - without the full path

Parameters:

ffname (str) – The name of the force field

Return type:

str

Returns:

The name of the force field file

schrodinger.application.matsci.cgforcefield.get_force_field_file_path(force_field_name, location_type='local', local_type_includes_cwd=False, check_existence=False)

Return the force field file path given the force field name and location type.

Parameters:
  • force_field_name (str) – the force field name

  • location_type (str) – the location type, either INSTALLED_CG_FF_LOCATION_TYPE or LOCAL_CG_FF_LOCATION_TYPE

  • local_type_includes_cwd (bool) – whether the LOCAL_CG_FF_LOCATION_TYPE also includes the CWD

  • check_existence (bool) – check the existence of the path

Raise:

ValueError: If the directory the file should be found in does not exist and cannot be made, or if an existence check is being performed and the path doesn’t exist

Return type:

str

Returns:

the force field file path

schrodinger.application.matsci.cgforcefield.get_force_field_name(force_field_file_path)

Return the force field name given the force field file path.

Parameters:

force_field_file_path (str) – the force field file path

Return type:

str

Returns:

the force field name

schrodinger.application.matsci.cgforcefield.get_included_force_field_paths(ff_parameter_dict, installed=True, local=True)

Return the list of included force field paths from the given force field dictionary.

Parameters:
  • ff_parameter_dict (dict) – the force field parameter dictionary

  • installed (bool) – if True then include force field paths from the installed location

  • local (bool) – if True then include force field paths from the local location

Raises:

ValueError – if there is an issue

Return type:

list[str]

Returns:

the included force field paths

schrodinger.application.matsci.cgforcefield.is_force_field_encrypted(path=None, data=None, include=False)

Return True if the given path or data is for an encrypted force field.

Parameters:
  • path (str or None) – the path to the force field file to read, if None then data must be given

  • data (dict or None) – the force field parameter dictionary, if None then path must be given

  • include (bool) – whether to recurse any included force field paths

Raises:

ValueError – if there is an issue

Return type:

bool

Returns:

whether the force field is encrypted

schrodinger.application.matsci.cgforcefield.recurse_include(ff_parameters_dict)

Return a copy of the given force field parameters dictionary where any included force field paths are recursed.

Parameters:

ff_parameters_dict (dict) – the force field parameters dictionary

Return type:

dict

Returns:

the recursed force field parameters dictionary

schrodinger.application.matsci.cgforcefield.load_force_field_parameters(path, include=False)

Load force field parameters.

Parameters:
  • path (str) – the path to the force field file to read

  • include (bool) – whether to recurse any included force field paths

Return type:

dict

Returns:

the force field parameters dictionary

schrodinger.application.matsci.cgforcefield.is_type_name_encrypted(type_name, type_key, ff_parameters_dict)

Return whether the given type name is encrypted.

Parameters:
  • type_name (str) – the type name

  • type_key (str) – the type key

  • ff_parameters_dict (dict) – the force field parameters dictionary

Return type:

bool

Returns:

True if the given type name is encrypted

schrodinger.application.matsci.cgforcefield.get_type_name(types)

Get combined name for a parameter based on the given particle names

Parameters:

types (tuple) – A tuple of particle names that should be joined together for form the type name

Return type:

str

Returns:

The particle names in types joined by the TYPE_SEPARATOR character

schrodinger.application.matsci.cgforcefield.split_type_name(name)

Split a type name up into particle types based on the TYPE_SEPARATOR delimiter

Parameters:

name (str) – A string with the particle type names joined by the TYPE_SEPARATOR delimiter

Return type:

list

Returns:

The list of particle type names that formed name

schrodinger.application.matsci.cgforcefield.get_vdw_type_name(ff_type, name)

Get the VDW type name based on the given FF type and site name.

Parameters:
  • ff_type (str) – The FF type

  • name (str) – The name of the site for this vdw type

Return type:

str

Returns:

The VDW type name for this particle name

schrodinger.application.matsci.cgforcefield.create_ffio_block(struct)

Given a structure, create an empty ffio block for it. Return structure copy and its ffio block.

Parameters:

struct (structure.Structure) – Input structure

Return type:

structure.Structure, ffiostructure.FFIOStructure

Returns:

Input structure copy, FFIO block

class schrodinger.application.matsci.cgforcefield.QEMDCms(struct)

Bases: object

Class to generate a CMS from the QE MD output.

__init__(struct)

Create an instance.

Parameters:

struct (structure.Structure) – Input structure

write(cms_fn)

Write *cms file.

Parameters:

cms_fn (str) – CMS output file name

setMass()

Set masses in the ffio.site sites from the self.st atoms’ masses.

class schrodinger.application.matsci.cgforcefield.CGFFIOStructure(st)

Bases: object

Manage building a coarse grain structure.

__init__(st)

Create an instance.

Parameters:

st (structure.Structure) – the structure for which the coarse grain structure is needed

setName(name='general')

Set the name.

Parameters:

name (str) – the name

setCombiningRule(combining_rule='geometric')

Set the combining rule.

Parameters:

combining_rule (str) – the combining rule

setDescription(description=None)

Set the description.

Parameters:

description (str or None) – the description or None if there isn’t one

setFFType(ff_type='general')

Set the FF type.

Parameters:

ff_type (str or None) – the FF type, if None then GENERAL_TYPE is used

writeCMS(st, file_name, encrypt=False)

Write *cms file.

Parameters:
  • st (structure.Structure) – the full system structure

  • file_name (str) – the file name

  • encrypt (bool) – whether to encrypt the FF parameters in the cms

class schrodinger.application.matsci.cgforcefield.FFIOParam(data, ff_type='general')

Bases: object

The base class for FFIO parameters such as bonds, angles, VDW parameters, exclusions, etc.

PARAM_ORDER = []
NAMED_PROPERTIES = ['ai', 'aj', 'ak', 'al']
CONSTANT_PROPERTIES = {}
FUNCTION = ''
CSTART = 1
__init__(data, ff_type='general')

Create an instance

Parameters:
  • data (dict or None) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters. These values in most classes are converted to FFIO cx parameters using the PARAM_ORDER list.

  • ff_type (str) – the force field type, either GENERAL_TYPE or MARTINI_TYPE

extractData(data)

Extract the data from the database parameters

Parameters:

data (dict) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters. These values in most classes are converted to FFIO cx parameters using the PARAM_ORDER list.

getObject(fst)

Reimplement in subclasses to return the proper FFIO block object for the class

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIOSubBlock

Returns:

The block object for this parameter

addParams(fobject)

Add the parameters taken from the database data to the FFIO block. These parameters generally have generic cx (x=integer) names.

Parameters:

fobject (ffiostructure._FFIOSubBlock) – The object to add the parameters to

addNamedProperties(fobject, named_props)

Add the parameters passed to the addToFST method to the FFIO block. These parameters generally have custom names.

Parameters:
  • fobject (ffiostructure._FFIOSubBlock) – The object to add the parameters to

  • named_props (tuple) – Property values in the same order as the NAMED_PROPERTIES list

addConstantProperties(fobject)

Add any properties that are constant for all instances of this class

Parameters:

fobject (ffiostructure._FFIOSubBlock) – The object to add the parameters to

addToFFST(fst, *named_props)

Add a block with associated properties to the CGFFIO structure

Parameters:

fst (CGFFIOStructure) – The ffio structure to add the block to

@keywrd named_props: method arguments. There should be as many arguments and in the same order as the NAMED_PROPERTIES list

Return type:

schrodinger.application.desmond.ffiostructure._FFIOSubBlock

Returns:

The FFIO object with all parameters added to it.

class schrodinger.application.matsci.cgforcefield.FFIOBond(data, ff_type='general')

Bases: FFIOParam

The class that handles the FFIO bond block

PARAM_ORDER = ['eq_length/Ang.', 'force_constant/(kcal/mol)/Ang.^2']
getObject(fst)

Return the ffio bond block

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIOBond

Returns:

The block object for this parameter

extractData(data)

Extract the data from the database parameters

Parameters:

data (dict) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters. These values in most classes are converted to FFIO cx parameters using the PARAM_ORDER list.

class schrodinger.application.matsci.cgforcefield.FFIOAngle(data, ff_type='general')

Bases: FFIOParam

The class that handles the FFIO angle block

getObject(fst)

Return the ffio angle block

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIOAngle

Returns:

The block object for this parameter

extractData(data)

Extract the data from the database parameters. Modified from the parent class because the cx parameters must be computed from the database data rather than using the data directly.

Parameters:

data (dict) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters.

class schrodinger.application.matsci.cgforcefield.FFIODihedral(data, ff_type='general')

Bases: FFIOParam

The class that handles the FFIO dihedral block

CSTART = 0
getObject(fst)

Return the ffio dihedral block

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIODihedral

Returns:

The block object for this parameter

extractData(data)

Extract the data from the database parameters. Modified from the parent class because the cx parameters must be computed from the database data rather than using the data directly and to add additional parameters that fill out the required c0-c6 parameter block.

Parameters:

data (dict) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters.

class schrodinger.application.matsci.cgforcefield.FFIOImproper(data, ff_type='general')

Bases: FFIODihedral

The class that handles the FFIO improper block, which is just part of the dihedral block

PARAM_ORDER = ['eq_angle/deg.', 'force_constant/(kcal/mol)/rad.^2']
extractData(data)

Extract the data from the database parameters. Modified from the parent class to add additional parameters that fill out the required c0-c6 parameter block.

Parameters:

data (dict) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters. These values in most classes are converted to FFIO cx parameters using the PARAM_ORDER list.

class schrodinger.application.matsci.cgforcefield.FFIOExclusion(data, ff_type='general')

Bases: FFIOParam

The class that handles the FFIO exclusion list block

getObject(fst)

Return the ffio exclusion block

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIOExclusion

Returns:

The block object for this parameter

class schrodinger.application.matsci.cgforcefield.FFIOVdwType(data, ff_type='general')

Bases: FFIOParam

The class that handles the FFIO VdW type list block

NAMED_PROPERTIES = ['name']
FUNCTION = 'polynomial_cij'
getObject(fst)

Return the ffio Vdwtype block

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIOVdwtype

Returns:

The block object for this parameter

class schrodinger.application.matsci.cgforcefield.FFIOSite(data, ff_type='general')

Bases: FFIOParam

The class that handles the FFIO site block

NAMED_PROPERTIES = ['site', 'vdwtype', 'mass', 'charge']
CONSTANT_PROPERTIES = {'type': 'atom'}
getObject(fst)

Return the ffio Site block

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIOSite

Returns:

The block object for this parameter

extractData(data)

Extract the data from the database parameters. Modified from the parent class because unlike other blocks, sites do not have cx parameters but do have named parameters that appear in the database dictionary.

Parameters:

data (dict) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters.

setDielectricConstant(dielectric)

Set the dielectric constant for the site.

Parameters:

dielectric (float) – the dielectric constant

addNamedProperties(fobject, named_props)

Add the parameters passed to the addToFST method to the FFIO block. These parameters generally have custom names. Modified from the parent class to include the mass and charge parameters which have been extracted from the database dictionary.

Parameters:
  • fobject (ffiostructure._FFIOSite) – The object to add the parameters to

  • named_props (list) – Two item list, first item is the name of the site and second is the vdw type of the site

class schrodinger.application.matsci.cgforcefield.FFIOVdwTypesCombined(cutoff, dielectric_i, dielectric_j, charge_i, charge_j, coulomb_type, *args, **kwargs)

Bases: FFIOParam

The class that handles the FFIO combined VdW block

FUNCTION = 'polynomial_cij'
NAMED_PROPERTIES = ['name1', 'name2']
CONSTANT_PROPERTIES = {'t1': 1}
DEFAULT_COULOMB = {'Lennard-Jones': 'ewald', 'Shifted Lennard-Jones': 'shifted_lj'}
__init__(cutoff, dielectric_i, dielectric_j, charge_i, charge_j, coulomb_type, *args, **kwargs)

Create an instance

Parameters:
  • cutoff (float) – The force field cutoff parameter in Angstroms

  • dielectric_i (float) – the dielectric constant for the first site

  • dielectric_j (float) – the dielectric constant for the second site

  • charge_i (float) – the charge on the first site

  • charge_j (float) – the charge on the second site

  • coulomb_type (str or None) – the coulomb method to use for electrostatic interactions. If None the method would be selected depending on the type of non-bonded interaction.

See parent class for additional argument documentation

getObject(fst)

Return the ffio VdwTypeCombined block

Parameters:

fst (CGFFIOStructure) – The structure to get the block object from

Return type:

schrodinger.application.desmond.ffiostructure._FFIOVdwtypescombined

Returns:

The block object for this parameter

extractData(data)

Extract the data from the database parameters. Modified from the parent class because the cx parameters must be computed from the database data rather than using the data directly.

Parameters:

data (dict) – The two-level dictionary of forcefield data for this parameter. The top-level dictionary has one key - the function parameter for this object. The value is another dictionary. The keys in the inner dictionary are force field parameter names and the values are the values for those parameters.

getAlphaParameter()

Return the alpha parameter.

Return type:

float

Returns:

the alpha parameter

getWidthParameter(cutoff, ewald_epsilon=1e-09)

Return the Ewald charge distribution width parameter.

Parameters:
  • cutoff (float) – The cutoff parameter in Angstroms

  • ewald_epsilon (float) – parameter in reciprocal Ang. used to determine the width

Return type:

float

Returns:

the width in reciprocal Ang.

getScaledEwaldConstants()

Scale the given Ewald constant given the cutoff and exponent.

Return type:

dict

Returns:

Keys are index and values are scaled Ewald constants to use for the parameter with that index

getEwaldRealSpaceFFIOConstants()

Return the Ewald real space Coulomb potential FFIO constants.

Return type:

dict

Returns:

The real space FFIO constants. Keys are 1-based parameter index as in r_ffio_c<idx>, and values are the constants

getShiftedLennardJonesFFIOConstants(epsilon, sigma, key=(12, 6, 9.0, 12.0))

Return the shifted Lennard-Jones potential FFIO constants.

Parameters:
  • epsilon (float) – the epsilon parameter in kcal/mol

  • sigma (float) – the sigma parameter in Ang.

  • key (str) – the key that indexes the fit constants, should be keys for the sigma dicts used in SHIFTED_LJ_FIT

Return type:

dict

Returns:

The shifted Lennard-Jones FFIO constants. Keys are 1-based parameter index as in r_ffio_c<idx>, and values are the constants

getShiftedCoulombFFIOConstants(key=(0.0, 12.0))

Return the shifted Coulomb potential FFIO constants.

Parameters:

key (str) – the key that indexes the fit constants, should be keys used in SHIFTED_COULOMB_FIT

Return type:

dict

Returns:

The shifted Coulomb FFIO constants. Keys are 1-based parameter index as in r_ffio_c<idx>, and values are the constants

getFFIOConstants()

Return the FFIO constants.

Return type:

list

Returns:

the FFIO constants as a list in order from 0 to NTERMS. All constants, including those defined as zero, are included in the list.

exception schrodinger.application.matsci.cgforcefield.MissingParameterError

Bases: Exception

Raised if the force field is missing required data for a structure

exception schrodinger.application.matsci.cgforcefield.MixedPotentialsException

Bases: Exception

class schrodinger.application.matsci.cgforcefield.VDWData(vtype, charge, dielectric)

Bases: tuple

charge

Alias for field number 1

dielectric

Alias for field number 2

vtype

Alias for field number 0

class schrodinger.application.matsci.cgforcefield.ShadowData(name1, name2, depth)

Bases: tuple

depth

Alias for field number 2

name1

Alias for field number 0

name2

Alias for field number 1

class schrodinger.application.matsci.cgforcefield.AngleAdaptationMixin

Bases: object

Manage adapting the angles of a FF that has already been applied to a structure.

static isBackboneAtom(atom)

Return True if the given atom is a backbone atom.

Parameters:

atom (schrodinger.structure._StructureAtom) – the atom

Return type:

bool

Returns:

True if the given atom is a backbone atom

isSideChainAtom(atom)

Return True if the given atom is a sidechain atom.

Parameters:

atom (schrodinger.structure._StructureAtom) – the atom

Return type:

bool

Returns:

True if the given atom is a sidechain atom

static isKeepSideChainAtom(atom)

Return True if the given atom is a sidechain atom for which the backbone-backbone-sidechain angle will be kept.

Parameters:

atom (schrodinger.structure._StructureAtom) – the atom

Return type:

bool

Returns:

True if the given atom is a sidechain atom for which the backbone-backbone-sidechain angle will be kept

getBondedSideChainAtoms(atom)

Return a tuple of side chain atoms bonded to the given atom.

Parameters:

atom (schrodinger.structure._StructureAtom) – the atom

Return type:

tuple[schrodinger.structure._StructureAtom]

Returns:

contains the bonded side chain atoms

getBackboneIdxs(**kwargs)
getTerminiIdxs(**kwargs)
getOrderedBackbone(**kwargs)
getLeftAngles(fst, mol_idx)

For the given molecule return a set of (backbone_l, backbone, sidechain) angles where backbone_l is to the left of backbone.

Parameters:
  • fst (ffiostructure.FFIOStructure) – the FFIO structure

  • mol_idx (int) – the molecule index

Return type:

list[tuple]

Returns:

the left angles, each tuple is a triple of atom indices

deleteAngles(fst)

Delete angles.

Parameters:

fst (ffiostructure.FFIOStructure) – the FFIO structure

adaptAngles(cgfst)

Adapt the angles of the FF applied to the given structure.

Parameters:

cgfst (CGFFIOStructure) – the CG FFIO structure

class schrodinger.application.matsci.cgforcefield.RestraintAdaptationMixin

Bases: object

Manage adapting the restraints of a FF that has already been applied to a structure.

addRestraints(fst)

Add restraints.

Parameters:

fst (ffiostructure.FFIOStructure) – the FFIO structure

Raises:

RuntimeError – if there is an issue

adaptRestraints(cgfst)

Adapt the restraints of the FF applied to the given structure.

Parameters:

cgfst (CGFFIOStructure) – the CG FFIO structure

class schrodinger.application.matsci.cgforcefield.ForceField(path=None, data=None, coulomb_type=None)

Bases: AngleAdaptationMixin, RestraintAdaptationMixin

Reads in force field data and applies it to a structure

FP_CLASSES = {'angles': <class 'schrodinger.application.matsci.cgforcefield.FFIOAngle'>, 'bonds': <class 'schrodinger.application.matsci.cgforcefield.FFIOBond'>, 'impropers': <class 'schrodinger.application.matsci.cgforcefield.FFIOImproper'>, 'sites': <class 'schrodinger.application.matsci.cgforcefield.FFIOSite'>}
__init__(path=None, data=None, coulomb_type=None)

Create a ForceField instance

Parameters:
  • path (str) – The path to the force field file. Not used if data is provided. Can be encrypted using the enc module.

  • data (dict) – The dictionary that defines the force field. If not provided, the database will be read from path. Can include encrypted force field paths.

  • coulomb_type (str or None) – The coulomb method to use for electrostatic interactions. If None the method would be selected depending on the type of non-bonded interaction.

Raises:

ValueError – if neither path nor data have been provided

getKeyData(key, fail_on_missing=True, data=None)

Get the force field data for key

Parameters:
  • key (str) – A top level key for the force field data dictionary

  • fail_on_missing (bool) – True if an exception should be raised if the key is not in the force field data. If False, None will be returned for a missing key

  • data (dict or None) – the force field parameters dictionary, if None the stored attribute is used

Returns:

the value associated with key, or None if key is missing and fail_on_missing is False

Raises:

MissingParameterError – If key is missing and fail_on_missing is True

defineInternals(struct, data=None)

Define the internal coordinates (bonds, angles, dihedrals, included and excluded nonbonds, etc) for the structure

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to use when defining internals.

  • data (dict or None) – the force field parameters dictionary, if None the stored attribute is used

getDatabaseData(names, key, fail_on_missing=True, data=None)

Get the database data of type key for the particles with the given names. The names be ordered in the same way they would be ordered by the coarsegrain.Internals class and the proper number of names must be provided for the desired type - two for bonds, three for angles, etc.

Parameters:
  • names (tuple) – The names of the particles to retrieve data for

  • key (str) – One of the top level keys in the database dictionary. Should be one of the *_INTERNAL_KEY constants

  • fail_on_missing (bool) – Whether missing database data should cause a MissingParameterError. If False, no error is raised and None is returned

  • data (dict or None) – the force field parameters dictionary, if None the stored attribute is used

Return type:

dict or None

Returns:

A dictionary of database data. The key is the function type and the value is a dictionary of parameter keys and values. None is returned if no data exists and fail_on_missing is False.

Raises:

MissingParameterError – If fail_on_missing is True and there is no data

getFFIOParam(names, key, fail_on_missing=True, data=None)

Get the FFIOParam object for the given particle names and key

Parameters:
  • names (tuple) – The names of the particles to retrieve data for

  • key (str) – One of the top level keys in the database dictionary. Should be one of the *_INTERNAL_KEY constants that is a key in the FP_CLASSES dictionary.

  • fail_on_missing (bool) – Whether missing database data should cause a MissingParameterError. If False, no error is raised and None is returned

  • data (dict or None) – the force field parameters dictionary, if None the stored attribute is used

Return type:

FFIOParam or None

Returns:

The FFIOParam object that handles the data for this internal. None is returned if no data exists and fail_on_missing is False.

addProperties(struct, fst, data=None)

Add some force field properties to the structures.

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to add properties to

  • fst (CGFFIOStructure) – The FFIO structure to add properties to

  • data (dict or None) – the force field parameters dictionary, if None the stored attribute is used

static getPotentialType(data, key, default)

Return the most common potential type for this forcefield for the given key.

Parameters:
  • data (dict) – the FF dictionary

  • key (str) – the top level key of the block to inspect

  • default (str) – a default potential type in case one is not present in the given FF dictionary

Return type:

str

Returns:

the potential type

static getSiteType(data)

Determine the site type for this forcefield by inspecting one of the site parameter blocks. We assume all blocks use the same type so an arbitrary block is chosen.

Parameters:

data (dict) – the FF dictionary

Return type:

str

Returns:

the site type such as SITES_GENERAL_ATOM_KEY

static getAngleType(data)

Determine the angle type for this forcefield by inspecting one of the angle parameter blocks. We assume all blocks use the same type so an arbitrary block is chosen.

Parameters:

data (dict) – the FF dictionary

Return type:

str

Returns:

the angle type such as ANGLES_HARMONIC_KEY

static getDihedralType(data)

Determine the dihedral type for this forcefield by inspecting one of the dihedral parameter blocks. We assume all blocks use the same type so an arbitrary block is chosen.

Parameters:

data (dict) – the FF dictionary

Return type:

str

Returns:

the dihedral type such as DIHEDRALS_OPLS_PROPER_KEY

static getNonBondType(data)

Determine the nonbond type for this forcefield by inspecting one of the nonbond parameter blocks. We assume all blocks use the same type so an arbitrary block is chosen.

Parameters:

data (dict) – the FF dictionary

Return type:

str

Returns:

the nonbond type such as coarsegrain.LENNARD_JONES

static definedShadowBonds(data)

A generator over all defined shadow bonds in the force field. A shadow bond is a bond that doesn’t physically exist in the structure but exists in the forcefield as a bonding attraction between two particles.

Parameters:

data (dict) – The dictionary defining the force field, such as provided by load_force_field_parameters.

Return type:

ShadowData

Returns:

A ShadowData namedtuple that provides the names of the two particles and the number of bonds that seperate them.

adaptFF(cgfst)

Adapt the applied FF to the structure.

Parameters:

cgfst (CGFFIOStructure) – the CG FFIO structure

applyFF(struct, internals=None, filename=None, ff_name=None, encrypt=None, adapt_ff=False)

Apply the force field to the structure

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to apply the force field

  • internals (schrodinger.appliction.matsci.coarsegrain.Internals) – The set of internal coordinates computed from the structure. If not provided, they will be computed.

  • filename (str) – If provided, a Cms structure with the applied force field will be written to this file path

  • ff_name (str or None) – the name of the forcefield used if self.ff_name is None, if None and self.ff_name is None then the default of FFIO_NAME will be used

  • encrypt (bool or None) – whether to encrypt the FF parameters in the written cms, if None and an encrypted CG FF file was used at instantiation then the cms is automatically encrypted

  • adapt_ff (bool) – applies structure specific modifications to the FF after its raw application to the given structure

Return type:

schrodinger.application.desmond.cms.Cms

Returns:

The CMS structure with the force field applied

Raises:
  • MissingParameterError – If required data is missing from the force

  • TypeError – If struct is not a coarse grain structure

  • KeyError – If struct does not have chorus box PBC properties

  • LicenseError – If the license is not available for using coarse grain force fields

schrodinger.application.matsci.cgforcefield.create_cg_system(struct, ff_path, filename=None, pbc_position=None, coulomb_type=None, encrypt=None, adapt_ff=False, scale=False)

Apply the force field located at ff_path to struct and return the resulting CMS object

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to apply the forcefield to

  • ff_path (str) – The path to the force field file

  • filename (str) – If given, the CMS structure will be written to this file

  • pbc_position (str or None) – Set the pbc position. If not None, pbc_position must be either xtal.CENTER_PBC_POSITION or xtal.ANCHOR_PBC_POSITION

  • coulomb_type (str or None) – The coulomb method to use for electrostatic interactions. If None the method would be selected depending on the type of non-bonded interaction.

  • encrypt (bool or None) – whether to encrypt the FF parameters in the returned cms, if None and an encrypted CG FF file has been given then the cms is automatically encrypted

  • adapt_ff (bool) – applies structure specific modifications to the FF after its raw application to the given structure

  • scale (bool) – Scale the lattice vector to get density representative of the force field parameters

Return type:

schrodinger.application.desmond.cms.Cms

Returns:

The Cms object that results from applying the force field to the structure

schrodinger.application.matsci.cgforcefield.validate_options(parser, args, ff_flag, cg_ff_loc_type_flag, input_file_flag=None, input_sts=None)

Validate options.

Parameters:
  • parser (argparse.ArgumentParser) – argument parser to validate

  • args (list) – the arguments to parse

  • ff_flag (str) – the force field flag

  • cg_ff_loc_type_flag (str) – the coarse-grained force field location type flag

  • input_file_flag (str or None) – the input file flag or None if using input_sts

  • input_sts (list or None) – the input structures or None if using input_file_flag

Return type:

named tuple

Returns:

argparse parsed specified options

schrodinger.application.matsci.cgforcefield.add_local_type_force_field_to_job_builder_w_check(builder, options, ff_flag, cg_ff_loc_type_flag, input_file_flag=None, input_sts=None)

Check and set up the Launch API Job Builder to use the given local type force field.

Parameters:
  • builder (schrodinger.job.launchapi.JobSpecificationArgsBuilder) – the job builder to use for setting the FF as an input file

  • options (named tuple) – argparse parsed specified options

  • ff_flag (str) – the force field flag

  • cg_ff_loc_type_flag (str) – the coarse-grained force field location type flag

  • input_file_flag (str or None) – the input file flag or None if using input_sts

  • input_sts (list or None) – the input structures or None if using input_file_flag

class schrodinger.application.matsci.cgforcefield.MartiniProteinFFCleaner(struct)

Bases: object

A class to clean up the Martini protein force field FFIO block

PREV_BACKBONE_SITE_PROP = 'i_m_previous_backbone_site_relative'
RESTRAINT_PROP = 's_m_relative_restraint'
BACKBONE_SUFFIX = '_B'
SIDE_CHAIN_ATOMS = ['PHE_S3', 'TYR_S3']
EXCLUSION_BIG_RING_SIZE = 20
REST_BLOCK_SEP = ';'
REST_PARAM_SEP = ','
__init__(struct)

Initialize the FFIO block cleaner

Parameters:

struct (schrodinger.application.desmond.ffiostructure.FFIOStructure) – The structure to clean

static isBackboneAtom(atom)

Determine if an atom is a backbone atom.

Parameters:

atom (schrodinger.structure._StructureAtom) – The atom to check

Returns:

True if the atom is a backbone atom, False otherwise

Return type:

bool

isProteinStructure()

Determine if the structure is a protein structure.

Returns:

True if the structure is a protein structure, False otherwise

Return type:

bool

getBondedSideChainAtom(atom)

Get the bonded side chain atom for a backbone atom, in the case of multiple side chain atoms, the last side chain atom is returned.

Parameters:

atom (schrodinger.structure._StructureAtom) – The backbone atom

Returns:

The bonded side chain atom or None if there is no side chain atom

Return type:

schrodinger.structure._StructureAtom or None

isBackboneSidechain(angle_aids)

Determine if the angle is a backbone-sidechain angle.

Parameters:

angle_aids (tuple(int)) – The atom indices of the angle

Returns:

True if the angle is a backbone-sidechain angle, False otherwise

Return type:

bool

static findNTerminiAtomIds(struct, molecule)

Find the N-terminus backbone sites in a molecule using the PREV_BACKBONE_SITE_PROP property.

Parameters:

molecule (schrodinger.structure.Molecule) – The molecule to find the N-terminus backbone sites in

Returns:

The set of N-terminus backbone atom indices

Return type:

set(int)

static findBackboneAtomsIds(start_atom)

Find the backbone atoms sequentially from the starting atom.

Parameters:

start_atom (schrodinger.structure.Atom) – The atom to start the search from

Returns:

The list of backbone atom indices

Return type:

list(int)

findBackboneAngles(backbone)

Find the backbone angles in a molecule

Parameters:

backbone (list(int)) – The backbone atom indices

Returns:

The set of backbone angles

Return type:

set(tuple(int))

deleteExtraAngles()

Delete the extra angles in the component

addHarmonicRestraints()

Add harmonic restraints to the component using the value set in the atom property

mergeRings(simple_rings)

Merge rings that share atoms into a single rings

Parameters:

simple_rings (list(list(int))) – The simple rings to merge

Returns:

The merged rings

Return type:

list(set(int))

adjustExclusions()

Delete exclusions between atoms that are part of the same large ring but not part of a small ring.

clean()

Cleanup the ffio structure

schrodinger.application.matsci.cgforcefield.cleanup_martini_protein(cmsfile)

Cleanup a Martini protein force field parameters in the cms file

Parameters:

cmsfile (str) – The path of cms file to cleanup