Package CHEM :: Package CombiCDB :: Module MechanismPredictor :: Class MechanismPredictor
[hide private]
[frames] | no frames]

Class MechanismPredictor



Given a mixture of molecules (usually a pair) and solvent / reagent molecules if relevant, try finding the most reactive electrons (higest occupied molecular orbital: HOMO) and most accepting atom (lowest unoccupied molecular orbital: LUMO). Then move the orbital electrons over to produce another product (probably a transition state intermediate). Recurse until a product with much greater stability results, presumably an intermediate closing into a stable product.

Record each series of (intermediate) products as well as a stability rating for each to allow for subsequent sorting by product stability or intermediate stability (indicative of activation energy).

Instance Methods [hide private]
 
__init__(self)
Default constructor.
 
predictReactionsStream(self, molstreamFactory, productFile)
Given an input molecule stream factory containg several chemical mixtures, try the predictReactions method for every molecule mixture.
 
predictReactions(self, reactantMixture)
Primary method.
 
__buildProductInfo(self, mol, prevSmi, productInfoBySmi, inputEnergy, homo=None, lumo=None, arrowStr=None)
Primary recursive function.
 
__terminationCondition(self, smi, productInfoBySmi, inputEnergy)
A productInfo record should have just been created and recorded for the molecule represented by the smi SMILES string.
 
__highestOccupiedMolecularOrbitals(self, mol)
Given a molecule, produce an iterator over the "most reactive" occupied molecular orbitals of the molecule that we want to consider for reaction possibilities.
 
__lowestUnoccupiedMolecularOrbitals(self, mol)
Given a molecule, produce an iterator over the "most reactive" unoccupied molecular orbitals of the molecule that we want to consider for reaction possibilities.
Method Details [hide private]

predictReactionsStream(self, molstreamFactory, productFile)

 

Given an input molecule stream factory containg several chemical mixtures, try the predictReactions method for every molecule mixture.

Write the outputs to the product file. Contents and format may change, but something like, listing each product, including intermediates, as a mixture SMILES, tab-delimited with additional information including:
  • Immediately preceding intermediate mixture SMILES, or the entire path of intermediates
  • Shortest # steps from original input to the product
  • Energy of the product vs. original input
  • Maximum energy of any intermediate product before this one vs. original input

predictReactions(self, reactantMixture)

 
Primary method.  Given a molecule mixture object, predict
all of the reaction products (including intermediates) from the mixture.

Returns a list (or iterator) over a series of dictionary objects, each
one containing information about one of the (intermediate) products.
This data will be keyed by the strings:
    smi:        Isomeric SMILES string representing the product
    prevSmi:    Isomeric SMILES string of the immediately previous mol that generated this product
    energy:     FreeEnergy calculation for the molecule, relative to the "zero" level of the original input
    actEnergy:  Maximum energy calculated for any prior intermediate product, relative to the original input
    steps:      Number of steps from the original input molecule needed to make this product
    homo:       Electron source orbital (highest occupied molecular orbital)
    lumo:       Electron target orbital (lowest unoccupied molecular orbital)
    arrows:     Encoded arrow string to be translated for mechanism visualization

__buildProductInfo(self, mol, prevSmi, productInfoBySmi, inputEnergy, homo=None, lumo=None, arrowStr=None)

 

Primary recursive function. Creates or updates a productInfo entry for the mol parameter in the productInfoBySmi dictionary. If recursion termination conditions have not yet been satisfied, then apply further branching operation to the molecule (molecular orbital half-reactions) and recurse.

mol - Molecule object representing a product to produce an information record for prevSmi - SMILES string representing the precursor to the current molecule productInfoBySmi - Dictionary with all of the productInfo records produced so far, keyed by their respective SMILES strings inputEnergy - Energy value for the original input molecule. All subsequent energy calculations are recorded with respect to this one returns - No explicit return value, results are added to the productInfoBySmi dictionary.

__terminationCondition(self, smi, productInfoBySmi, inputEnergy)

 
A productInfo record should have just been created and recorded for the molecule represented by the smi SMILES string. Decide whether to continue to recursively search for more reaction possibilities.

__highestOccupiedMolecularOrbitals(self, mol)

 
Given a molecule, produce an iterator over the "most reactive" occupied molecular orbitals of the molecule that we want to consider for reaction possibilities. In general, these should correspond to the most basic / nucleophilic electron pairs.

__lowestUnoccupiedMolecularOrbitals(self, mol)

 
Given a molecule, produce an iterator over the "most reactive" unoccupied molecular orbitals of the molecule that we want to consider for reaction possibilities. In general, these should correspond to the most electrophilic (Lewis acid) empty orbitals (empty or anti-bonding).