| Home | Trees | Indices | Help |
|---|
|
|
Given a set of SMIRKS reactions and reactant molecules, generates as many
combinatorial products as possible by running every reactant permutation
through each reaction
Also includes a script to generate the output in a format easily inserted
into the application database. Assuming starting with some reactant
and SMIRKS files that have NOT been inserted to the database, a complete
run, including inserting the product info into the database could be
accomplished with the following from the command line:
===========================================================================
python ReactionProcessor.py reactant.smi example.smirks product.smi
python DBUtil.py -ireactant.smi -tMOLECULE -oreactant.smi.id CAN_SMILES LABEL
python DBUtil.py -iexample.smirks -tREACTION -oexample.smirks.id SMIRKS LABEL
python DBUtil.py -iproduct.smi -tMOLECULE -oproduct.smi.id CAN_SMILES LABEL
python ReactionProcessor.py -dsynthesis.txt -pproduct.smi reactant.smi.id example.smirks.id product.smi.id
python DBUtil.py -isynthesis.txt -tSYNTHESIS -osynthesis.id PRODUCT_ID REACTION_ID REACTANT_ID REACTANT_POSITION
===========================================================================
Alternatively, if you wish to use reactants and SMIRKS from the database, something like this:
===========================================================================
python DBUtil.py "select CAN_SMILES, LABEL, MOLECULE_ID from MOLECULE" reactant.smi
python DBUtil.py "select SMIRKS, LABEL, REACTION_ID from REACTION" example.smirks
python ReactionProcessor.py reactant.smi example.smirks product.smi
python DBUtil.py -iproduct.smi -tMOLECULE -oproduct.smi.id CAN_SMILES LABEL
python ReactionProcessor.py -dsynthesis -pproduct.smi reactant.smi example.smirks product.smi.id
python DBUtil.py -isynthesis -tSYNTHESIS -osynthesis.id PRODUCT_ID REACTION_ID REACTANT_ID REACTANT_POSITION
===========================================================================
Input:
- Reacant molecule file
Can be any format understandable by oemolistream, assuming a properly
named extension. For example, "molecules.smi" for SMILES format.
- SMIRKS reaction file
File containing one SMIRKS reaction string per line that will
be used to process the reactants
Either of the above can take stdin as their source by specifying the
filename "-" or ".smi" or something similar. See documentation of
oemolistream for more information
Output:
- Product molecule file
Outputs all possible products generated from the SMIRKS reactions
out of the reactant molecules. Again, redirection to stdout possible
by specifying the filename "-". Each product SMILES will be followed
by a molecule "title" of the format "SMIRKS[A]Reactants[X,Y,Z,etc.]" where
A = Index / position in the SMIRKS reaction file of the reaction
used to generate this product. Index is zero-based
X,Y,Z,etc. = Index / position in the Reactant molecule file of
the respective reactant used
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
ignoreSelfReactions = False
|
|||
includeReactants = <CHEM.DB.rdb.search.NameRxnPatternMatchingM
|
|||
includeUnusedReactants = False
|
|||
|
|||
Primary method, reads the source files to generate products to the output file. See module documentation for more information. Note: This method takes actual File objects, oemolistreams and oemolostreams, not filenames, to allow the caller to pass "virtual Files" for the purpose of testing and interfacing. Use the "main" method to have the module take care of opening files from filenames. Note that the reactantOEISFactory is not a simple oemolistream either, but a factory object that can generate oemolistreams over the list of reactants. This is necessary as nested loops iterating over the reactants simultaneously is required. |
Read the contents of the file as a list of SMIRKS strings.
Comment lines prefixed with "#" will be ignored.
Expects one SMIRKS string per line of the file. Each SMIRKS string can be followed
by any title / comment, etc. separated by whitespace. These will be ignored.
|
Recursive function to apply the reaction in libgen to all possible
permutations of reactants from the reactantOEIS and outputting the results
to the productOEOS. Returns the number of products added for this function call.
libgen = OELibraryGen initialized with a SMIRKS (or other reaction) string
and any number of reactants upto libgen.NumReactants()
reactantOEISFactory = IteratorFactory object that can generate
oemolistreams over the reactant molecules to feed into libgen.
productOEOS = Oemolostream to write output products from reaction processing to
reactionIndex = Index indicating what reaction was used in this libgen.
Just for labelling purposes of output.
currReactantIndexes = List of indexes of reactants that have already been set
on the libgen. Length of list indicates how many have already been set
(i.e. the current depth of recursion)
and the actual indexes are again useful for labelling the output.
If reactions always had 2 reactants, this design would not be necessary.
A simple doubly nested loop could enumerate all permutations. However,
since an arbitrary reaction may have n reactants, an "n-leveled" nested
loop would be required, which cannot be determined until runtime. Thus,
this recursive approach is used instead.
|
Convenience method. Parse out the SMIRKS string for the caller and collect product results in a list, rather than requiring an OE output stream. This instantiates separate copies of every product list, thus being less efficient in memory usage than a streaming process. Should only be used for convenience. Reactant list parameter is expected to be a list of molecule objects. If uniqueOnly, will only return non-redundant results |
Given a reaction product molecule (OEMolBase) and the library generator that created it (OELibraryGen), find all of the reactants (starting materials) from the libGen and add them as part of the product molecule such that the product molecule will instead represent the whole reaction, reactants included. Note that this method assumes that there is only one starting material per reactant position. For other library generation applications, this assumption may be true. |
|
Given the database IDs of reactants, reactions (smirks) and products and information indicating how they are all related, generate a simple text file that should be very easy to import into the database to persist that association information. Each line should correspond to a row in the SYNTHESIS table, with values to insert respective to PRODUCT_ID, REACTION_ID, REACTANT_ID and REACTANT_POSITION |
|
|
|||
includeReactants
|
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0beta1 on Thu Nov 8 17:49:27 2007 | http://epydoc.sourceforge.net |