schrodinger.application.matsci.rxn_path module¶
Classes and functions for generating reaction paths.
Copyright Schrodinger, LLC. All rights reserved.
-
class
schrodinger.application.matsci.rxn_path.
ParserWrapper
(scriptname, description)¶ Bases:
object
Manages the argparse module to parse user command line arguments.
-
JOB_NAME
= 'rxnpath'¶
-
REACTANT
= 'reactant'¶
-
PRODUCT
= 'product'¶
-
TS
= 'ts'¶
-
REACTANT_LIKE
= 'reactant_like'¶
-
MIDWAY
= 'midway'¶
-
PRODUCT_LIKE
= 'product_like'¶
-
PRESUMED_TS
= 'midway'¶
-
PRESUMED_TS_CHOICES
= ['reactant_like', 'midway', 'product_like']¶
-
DENSEAROUND
= False¶
-
SAMPLE_DEFAULT
= [10.0]¶
-
SUPPORTEDINEXTS
= ['.mae', '.mae.gz', '.maegz']¶
-
FVAL_KEYS
= ['reactant', 'reactant_like', 'midway', 'product_like', 'product']¶
-
FVAL_VALUES
= [0.0, 0.25, 0.5, 0.75, 1.0]¶
-
FVAL_DICT
= {'midway': 0.5, 'product': 1.0, 'product_like': 0.75, 'reactant': 0.0, 'reactant_like': 0.25}¶
-
NUMDENSEPOINTS
= 10¶
-
STEPDENSEPOINTS
= 0.02¶
-
BONDWEIGHT
= 1000.0¶
-
ANGLEWEIGHT
= 1000.0¶
-
DIHEDRALWEIGHT
= 1000.0¶
-
CARTESIANWEIGHT
= 1000.0¶
-
PENALTYWEIGHT
= 1.0¶
-
MIXPREVIOUS
= 0.5¶
-
MIXPREVIOUSMIN
= 0.0¶
-
MIXPREVIOUSMAX
= 1.0¶
-
CARTESIAN
= 'cartesian'¶
-
DISTANCE
= 'distance'¶
-
INTERNAL
= 'internal'¶
-
INTERPOLATIONCHOICES
= ['internal', 'distance', 'cartesian']¶
-
BEFORESUPERPOSITION
= 'beforesuperposition'¶
-
AFTERSUPERPOSITION
= 'aftersuperposition'¶
-
GUESSCHOICES
= ['beforesuperposition', 'aftersuperposition']¶
-
CONNECTIVITYCHOICES
= ['reactant', 'ts', 'product']¶
-
NORXNCOMPLEX
= False¶
-
VDWSCALE
= 1.0¶
-
REORDER
= False¶
-
REVERSE_INTERPOLATION
= False¶
-
__init__
(scriptname, description)¶ Create a ParserWrapper object and process it.
- Parameters
scriptname (str) – name of this script
description (str) – description of this script
-
loadIt
()¶ Load ParserWrapper with options.
-
parseArgs
(args)¶ Parse the command line arguments.
- Parameters
args (tuple) – command line arguments
-
-
class
schrodinger.application.matsci.rxn_path.
CheckInput
¶ Bases:
object
Check user input.
-
PAIRS
= [('[]', ''), ('][', '-'), ('[', ''), (']', ''), (';', ''), (' ', '_')]¶
-
COMBIGLD_REPLACEMENTS
= {' ': '_', ';': '', '[': '', '[]': '', ']': '', '][': '-'}¶
-
TITLEKEY
= 's_m_title'¶
-
ENTRYNAMEKEY
= 's_m_entry_name'¶
-
checkJobName
(job_name, logger=None)¶ Check job_name option.
- Parameters
job_name (str) – name of job
logger (logging.getLogger) – output logger
- Return type
str
- Returns
job_name, name of job
-
checkInputFiles
(inputfiles, logger)¶ Check input files.
- Parameters
inputfiles (list of str) – all provided input files
logger (logging.getLogger) – output logger
-
checkStructures
(logger=None, *allstructures)¶ Check structures.
- Parameters
logger (logging.getLogger) – output logger
allstructures (tuple of schrodinger.structure.Structure) – all provided structures
- Return type
list of schrodinger.structure.Structure
- Returns
structures, updated list of structures
-
checkStructurePairs
(reorder, logger=None, *allstructures)¶ Check reactant and product pairs of structures.
- Parameters
reorder (boolean) – normalize the atomic ordering
logger (logging.getLogger) – output logger
allstructures (tuple of schrodinger.structure.Structure) – all provided structure
- Return type
list of schrodinger.structure.Structure
- Returns
structures, updated list of structures
-
checkSample
(sample, logger=None)¶ Check sample option.
- Parameters
sample (list of float) – sample points
logger (logging.getLogger) – output logger
- Return type
list of floats
- Returns
sample, sample points
-
checkPresumedTs
(presumed_ts, logger=None)¶ Check the location of the presumed ts.
- Parameters
presumed_ts (str) – gives the location of the presumed ts
logger (logging.getLogger) – output logger
- Return type
str
- Returns
presumed_ts, the location of the presumed ts
-
checkInterpolation
(interpolation, logger=None)¶ Check interpolation option.
- Parameters
interpolation (str) – coordinate system used for interpolating
logger (logging.getLogger) – output logger
- Return type
str
- Returns
interpolation, coordinate system used for interpolating
-
checkMixPrevious
(mixprevious, logger=None)¶ Check mixprevious option.
- Parameters
mixprevious (float) – mixing weight of solution from previous path point
logger (logging.getLogger) – output logger
- Return type
float
- Returns
mixprevious, mixing weight of solution from previous path point
-
checkGuess
(guess, logger=None)¶ Check guess option.
- Parameters
guess (str) – type of guess solution
logger (logging.getLogger) – output logger
- Return type
str
- Returns
guess, type of guess solution
-
checkConnectivity
(connectivity, logger=None)¶ Check connectivity option.
- Parameters
connectivity (str) – type of connectivity
logger (logging.getLogger) – output logger
- Return type
str
- Returns
connectivity, type of connectivity
-
checkNoRxnComplex
(norxncomplex, vdwscale, logger=None)¶ Check norxncomplex and vdwscale options.
- Parameters
norxncomplex (boolean) – disable preprocessing into a reaction complex
vdwscale (float) – scales the intermolecular distance
logger (logging.getLogger) – output logger
- Return type
boolean, float
- Returns
norxncomplex, vdwscale, disable preprocessing into a reaction complex and scales the intermolecular distance
-
checkReorder
(reorder, logger=None)¶ Check reorder option.
- Parameters
reorder (boolean) – normalize the atomic ordering
logger (logging.getLogger) – output logger
- Return type
boolean
- Returns
reorder, normalize the atomic ordering
-
checkReverseInterpolation
(reverse_interpolation, logger=None)¶ Check reverse interpolation option.
- Parameters
reverse_interpolation (boolean) – interpolate the reaction path in reverse
logger (logging.getLogger) – output logger
- Return type
boolean
- Returns
reverse_interpolation, interpolate the reaction path in reverse
-
checkWeights
(bondweight, angleweight, dihedralweight, cartesianweight, penaltyweight, logger=None)¶ Check weights, i.e. bondweight, angleweight, dihedralweight, cartesianweight, and penaltyweight.
- Parameters
bondweight (float) – weight of the bond term
angleweight (float) – weight of the angle term
dihedralweight (float) – weight of the dihedral term
cartesianweight (float) – weight of the Cartesian term
penaltyweight (float) – weight of the bond penalty term
logger (logging.getLogger) – output logger
:rtype float, float, float, float, float :return: bondweight, angleweight, dihedralweight, cartesianweight,
penaltyweight, weights of the bond, angle, dihedral, Cartesian, and penalty terms
-
-
class
schrodinger.application.matsci.rxn_path.
Coord
(indicies, names, value)¶ Bases:
object
Manage the properties of an internal coordinate.
-
BOND
= 'bond'¶
-
ANGLE
= 'angle'¶
-
DIHEDRAL
= 'dihedral'¶
-
__init__
(indicies, names, value)¶ Create a Coord instance.
- Parameters
indiciees – atomic indicies
names (list of str) – atomic names
value (list of float) – value(s) of the internal coordinate in units of Angstrom or degree
-
-
class
schrodinger.application.matsci.rxn_path.
InternalCoords
¶ Bases:
object
Manage the internal coordinates of a structure.
-
ZMATNUMBER
= 1¶
-
__init__
()¶ Create an InternalCoords instance.
-
getZmatrix
(astructure)¶ Get the Z-matrix for the structure.
- Raises
ValueError – if there is a problem with the input
- Parameters
astructure (schrodinger.structure.Structure) – the structure
-
getDmatrix
(astructure)¶ Get the distance matrix for the structure.
- Parameters
astructure (schrodinger.structure.Structure) – the structure
-
printInternals
(headermsg, maxindexwidth, logger)¶ Formatted print of header followed by the internal coordinates.
- Parameters
headermsg (str) – header
maxindexwidth (int) – number of characters in the largest atom index
logger (logging.getLogger) – output logger
-
-
schrodinger.application.matsci.rxn_path.
max_pair_vdw_distance
(astructure)¶ Find the largest atom-atom VDW distance in a structure.
- Parameters
astructure (schrodinger.structure.Structure) – the structure
- Return type
int, int, float
- Returns
atom1, atom2, maxdistance, atom1 and atom2 are the first and second atom indicies and maxdistance is the largest distance. If input structure is a single atom then just return that atom index twice followed by twice its VDW radius, i.e. the atomic diameter.
-
schrodinger.application.matsci.rxn_path.
add_temp_hydrogen
(astructure, index)¶ To the given structure add a temporary hydrogen to the atom with the given index. This function is more robust than structutils.build.add_hydrogens.
- Parameters
astructure (schrodinger.structure.Structure) – the structure containing the atom to which a hydrogen will be added
index (int) – the index of the atom to which to add the hydrogen
- Return type
int
- Returns
the index of the added temporary hydrogen
-
class
schrodinger.application.matsci.rxn_path.
ReactionCoords
¶ Bases:
object
Manage reaction coordinates.
-
REACTIONBONDTHRESH
= 0.05¶
-
REACTIONANGLETHRESH
= 1.0¶
-
REACTIONDIHEDRALTHRESH
= 1.0¶
-
REVOLUTION
= 360¶
-
HALFREVOLUTION
= 180¶
-
REVOLUTIONTHRESH
= 10¶
-
REACTANTPREFIX
= 'pre-'¶
-
PRODUCTPREFIX
= 'post-'¶
-
__init__
()¶ Create a ReactionCoords instance.
-
getNormalOrdering
(reactant, product, logger=None)¶ Attempt to normalize the atomic ordering between reactants and products.
- Parameters
reactant (schrodinger.structure.Structure) – the reactant
product (schrodinger.structure.Structure) – the product
logger (logging.getLogger) – output logger
- Return type
schrodinger.structure.Structure, schrodinger.structure.Structure
- Returns
newreactant, newproduct, if defined specifies the reordered reactant and product structures
-
makeRxnComplex
(reactant, product, vdwscale, logger=None)¶ For certain bimolecular reactions preprocess reactants and products into reaction complexes.
- Parameters
reactant (schrodinger.structure.Structure) – reactant
product (schrodinger.structure.Structure) – product
vdwscale (float) – scales the intermolecular distance
logger (logging.getLogger) – output logger
- Return type
schrodinger.structure.Structure, schrodinger.structure.Structure
- Returns
newreactant, newproduct, if defined specifies the reactant and product structures in the created reaction complex
-
collectInternals
(reactant, product, rinternals, pinternals, logger=None)¶ Find the redundant internal coordinates by merging the coordinates defined in the reactant and product.
- Parameters
reactant (schrodinger.structure.Structure) – reactant
product (schrodinger.structure.Structure) – product
rinternals (InternalCoords) – reactant internal coordinates
pinternals (InternalCoords) – product internal coordinates
logger (logging.getLogger) – output logger
-
getReactionInternals
(rinternals, pinternals, reactioninternals)¶ Determine the reactive redundant internal coordinates.
- Parameters
rinternals (InternalCoords) – reactant internal coordinates
pinternals (InternalCoords) – product internal coordinates
reactioninternals (InternalCoords) – reaction internal coordinates
-
runSuperposition
(reactant, product, reactioninternals, logger=None)¶ Superpose the product structure on to the reactant structure using the non-reactive atoms, i.e. those that do not define any reactive redundant internal coordinate.
- Parameters
reactant (schrodinger.structure.Structure) – reactant
product (schrodinger.structure.Structure) – product
reactioninternals (InternalCoords) – reaction internal coordinates
logger (logging.getLogger) – output logger
- Return type
list of ints, float
- Returns
tosuperpose, armsd, atom indicies used to superpose and the final RMSD
-
getCartesianCoords
(astructure)¶ Get the Cartesian coordinates of a structure as a 3N dimensional list of floats.
- Parameters
astructure (schrodinger.structure.Structure) – structure
- Return type
list of float
- Returns
cartesians, the 3N Cartesian coordinates ordered like [x1, y1, z1, x2, …, zN]
-
prepare
(reactant, product, interpolation, norxncomplex, vdwscale, samplepoints, logger=None)¶ Prepare reaction coordinates.
- Parameters
reactant (schrodinger.structure.Structure) – reactant
product (schrodinger.structure.Structure) – product
interpolation (str) – coordinate system used for interpolating
norxncomplex (boolean) – disable preprocessing into a reaction complex
vdwscale (float) – scales the intermolecular distance
samplepoints (list of float) – reaction path sample points
logger (logging.getLogger) – output logger
-
-
class
schrodinger.application.matsci.rxn_path.
Point
(index, fval, name, astructure, internals, cartesians)¶ Bases:
object
Collect properties of reaction path points.
-
__init__
(index, fval, name, astructure, internals, cartesians)¶ Create a Point instance.
- Parameters
index (int) – path point index
fval (float) – path point value
name (str) – path point name
astructure (schrodinger.structure.Structure) – structure
internals (InternalCoords) – path point internal coordinates
cartesians (list of float) – the 3N Cartesian coordinates ordered like [x1, y1, z1, x2, …, zN]
-
-
class
schrodinger.application.matsci.rxn_path.
ReactionPath
¶ Bases:
object
Generate reaction path.
-
FVALINCREMENT
= 0.001¶
-
NORMTHRESH
= 1e-12¶
-
BONDPENALTYTHRESH
= 1000000000.0¶
-
DIFFLOWTHRESH
= 10.0¶
-
DIFFHIGHVAL
= 1000000000.0¶
-
RXNINDEX
= 'i_matsci_RXN_Index'¶
-
RXNCOORD
= 'r_matsci_RXN_Coord'¶
-
REACTIVEATOM
= 'b_matsci_Reactive_Atom'¶
-
__init__
()¶ Create a ReactionPath instance.
-
getSamplePoints
(sample, densearound, presumed_ts)¶ Determine the final set of sampling points.
- Parameters
sample (list of float) – points to be interpolated
densearound (bool) – include additional sampling points at specific regions
presumed_ts (str) – location of presumed ts
- Return type
list of floats
- Returns
samplepoints, the list of points to be sampled.
-
getReactiveAtoms
(reactant, product)¶ Determine the reactive atoms, i.e. those which have changed Cartesian positions in the superposed reactant/product pair.
- Parameters
reactant (schrodinger.structure.Structure) – reactant
product (schrodinger.structure.Structure) – product
- Return type
list of int
- Returns
reactiveatoms, reactive atoms
-
interpolateReactionCoords
(pointindex, fval, connectivity, rpoint, ppoint, reactiveatoms, logger=None)¶ Interpolate reaction coordinates between the reactant and product for this sample point.
- Parameters
pointindex (int) – sample point index
fval (float) – interpolated reaction path point
connectivity (str) – specifies the type of connectivity
rpoint (Point) – reactant information
ppoint (Point) – product information
reactiveatoms (list of ints) – reactive atoms
logger (logging.getLogger) – output logger
- Return type
- Returns
ipoint, interpolated point information
-
getInitialGuess
(cartesians, reactiveatoms)¶ Obtain the initial guess Cartesians for the non-linear least squares solver. The guess is the interpolated Cartesian coordinates for the reactive atoms.
- Parameters
cartesians (list of floats) – all interpolated Cartesian coordinates
reactiveatoms (list of ints) – atom indicies of reactive atoms
- Return type
list of floats
- Returns
guessparams, interpolated Cartesian coordinates of the reactive atoms
-
doNonLinearFit
(ipoint, guessparams, reactiveatoms, mixprevious, logger=None)¶ Using the interpolated redundant internal coordinates and interpolated Cartesian coordinates obtain the final set of Cartesian coordinates for this reaction path point by minimizing a sum-of-squares error function using non-linear least sqaures, i.e.
- error = sum_{bonds} bondweight*(r(a,b) - r^{i}(a,b))**2
sum_{angles} angleweight*(theta(a,b,c) - theta^{i}(a,b,c))**2
sum_{dihedrals} dihedralweight*(tau(a,b,c,d) - tau^{i}(a,b,c,d))**2
sum_{atoms} cartweight*[(x(a) - x^{i}(a))**2 + (y(a) - y^{i}(a))**2
(z(a) - z^{i}(a))**2]
where those variables marked with “^{i}” are the interpolated quantities and where
r(a,b) = r(x(a), y(a), z(a), x(b), y(b), z(b)) = norm(vec(a,b)) theta(a,b,c) = arccos[(vec(a,b) dot vec(c,b))/(norm(vec(a,b))*norm(vec(c,b)))] tau(a,b,c,d) = arccos[((vec(c,b) cross vec(a,b)) dot (vec(d,c) cross vec(b,c)))
/ (norm((vec(c,b) cross vec(a,b)))*norm((vec(d,c) cross vec(b,c))))]
The 3N Cartesian coordinates, x(a), y(a), z(a), x(b), …, z(N), are choosen so as to minimize the error.
- Parameters
ipoint (Point) – interpolated point information
guessparams (list of floats) – initial parameters, i.e. Cartesian coordinates of the reactive atoms
reactiveatoms (list of ints) – atomic indicies of reactive atoms
mixprevious (float) – specifies to what extent the optimized Cartesian coordinates from the previous reaction path point are mixed with the coordinates determined by interpolation at the current point.
logger (logging.getLogger) – output logger
- Return type
list
- Returns
optcartesians, non-linear-optimized Cartesian coordinates for this sample point.
-
getInterpolatedStructure
(ipoint, optcartesians, reactiveatoms, tosuperpose, fval, connectivity, presumed_ts, rpoint, ppoint)¶ Build the schrodinger.structure.Structure object from the optimized Cartesian coordinates for the interpolated structure at this sample point and update the internal and Cartesian coordinates in the Point object.
- Parameters
ipoint (Point) – interpolated point information
optcartesians (list of floats) – optimized Cartesian coordinates for the reactive atoms
reactiveatoms (list of ints) – atom indicies of reactive atoms.
tosuperpose (list of ints) – contains the atom indicies of the atoms used in the superposition.
fval (float) – The interpolated reaction path point.
connectivity (str) – specifies the type of connectivity
presumed_ts (str) – specifies the location of the presumed ts
rpoint (Point) – reactant information
ppoint (Point) – product information
- Return type
list of floats, InternalCoords object
- Returns
optcartesianssuperposed, reactiveinternals, the optimized Cartesian coordinates for the reactive atoms after superposition on to the reactant structure and an object containing the interpolated and calculated reactive internal coordinates.
-
runIt
(reactant, product, job_name='rxnpath', sample=[10.0], presumed_ts='midway', densearound=False, bondweight=1000.0, angleweight=1000.0, dihedralweight=1000.0, cartesianweight=1000.0, penaltyweight=1.0, interpolation='cartesian', mixprevious=0.5, guess='beforesuperposition', connectivity='ts', norxncomplex=False, vdwscale=1.0, reorder=False, reverse_interpolation=False, logger=None)¶ Function to orchestrate calculation of the reaction path.
- Parameters
reactant (schrodinger.structure.Structure) – reactant
product (schrodinger.structure.Structure) – product
job_name (str) – name of job
sample (list of floats) – contains either the list of sample points or the number of points to sample as a “decimal-less” float.
presumed_ts (str) – gives the location of the presumed ts.
densearound (bool) – Specifies if additional sampling points should be included in the interpolation.
bondweight (float) – Specifies the weight of the bonding term in the objective function which is minimized using non-linear least squares.
angleweight (float) – Specifies the weight of the angle term in the objective function which is minimized using non-linear least squares.
dihedralweight (float) – Specifies the weight of the dihedral term in the objective function which is minimized using non-linear least squares.
cartesianweight (float) – Specifies the weight of the Cartesian term in the objective function which is minimized using non-linear least squares.
penaltyweight (float) – Specifies the weight of the bond penalty term in the objective function which is minimized using non-linear least squares.
interpolation (str) – specifies the coordinate system in which the reaction path points are interpolated.
mixprevious (float) – specifies to what extent the optimized Cartesian coordinates from the previous reaction path point are mixed with the coordinates determined by interpolation at the current point.
guess (str) – specifies the type of solution guess generated from the optimized Cartesian coordinates of the previous reaction path point.
connectivity (str) – specifies the type of connectivity to use in defining the structure objects of points along the reaction path.
norxncomplex (boolean) – Disables the preprocessing of reactants and products into reaction complexes for certain bimolecular reactions.
vdwscale (float) – Scales the inter-molecular VDW distance used to separate reactant or product structures when forming reaction complexes for certain bimolecular reactions.
reorder (boolean) – Specifies to run the protocol to normalize the atom ordering in the reactants and products.
reverse_interpolation (boolean) – interpolate the reaction in reverse
logger (a logging.getLogger object) – The output logger for this script.
-