These examples show how to specify a selectivity rule on reactants and/or products: reaction products are always accepted but sorted according to priority defined by reaction rules. Rules are defined as chemical terms and evaluated by the Chemical Terms Evaluator. See the Reaction rules section of the Reactor Manual for the syntax of these rules.
Note, that the
Tolerance attribute sets the sensitivity of the selectivity maximum: product lists with selectivity value falling within tolerance of the maximum possible selectivity value are accepted, others rejected. The default tolerance is
0.0001, which means that real-valued selectivity values should be approximately equal to the maximum, while integral selectivity values are tested for equality with the maximum. If you want to accept all product lists and use the selectivity rule only for sorting the results then apply the
-n t command line option in which case Reactor ignores the tolerance setting.
In RDF files, the selectivity rule can be set in the
SELECTIVITY RDF tag, while the tolerance can be specified in a separate
TOLERANCE RDF tag.
This example demonstrates the rule that bromine is attracted to the aromatic carbon atom having the lowest localization energy having an attached electrophile in the intermediate state.
To run this example, license for the HuckelAnalysisPlugin is required (otherwise Reactor can calculate the energy values for the first reactant only).
The reaction can be described with the following SMARTS string:
while the selectivity rule can be defined with this Chemical Terms expression:
These together define the following reaction:
Note, that this simple rule is applicable for benzene derivatives only.Note the minus sign in front of the rule: this means that we want to sort results in increasing order instead of decreasing order, that is, we prefer the aromatic carbon (attached to a hydrogen) with lowest localization energy having an attached electrophile in the intermediate state.
Our sample reactants are stored in the arom.smiles molecule file.
react -r "[c:1][H:2]>>[c:1][Br:3]..s:-energyE(ratom(1))" arom.smilesRun Reactor with default tolerance to get the products with highest priority (determined by the evaluation result of the selectivity rule):
The result is:
OC1=CC=CC(C=O)=C1Br FC1=CC(Br)=C2OCC(C=O)=C(Cl)C2=C1 CCN(CCC#N)C1=CC=C(C=O)C(C)=C1Br
Check that the bromine indeed became attached to the aromatic carbon (with hydrogen) with lowest localization energy having an attached electrophile in the intermediate state:
Reactants with electrophilic localization energy values
Products with bromine attached to the aromatic carbon (with hydrogen) having lowest electrophilic localization energy
Standardization of reactants can be defined in the
STANDARDIZATION RDF tag of the reaction molecule or after the -S command line option. The standardization specified using the command line option overrides the standardization given in the
STANDARDIZATION RDF tag. For the description of standardization and its configuration, refer to the Standardizer Manual.
Running the same example with aromatization specified after the -S option as a Standardizer action string:
react -r "[c:1][H:2]>>[c:1][Br:3]..s:-energyE(ratom(1))" -S aromatize arom.smiles
The result is now aromatized:
Oc1cccc(C=O)c1Br Fc1cc(Br)c2OCC(C=O)=C(Cl)c2c1 CCN(CCC#N)c1ccc(C=O)c(C)c1Br
This example demonstrates a selectivity rule with calculating the hydrogen count: when adding hydrogen chloride to an alkene, the carbon-carbon double bond is transformed to a single bond with the chloride being attached to the carbon with less hydrogens (Markovnikov rule).
The reaction (alkene+hcl.rdf) with the selectivity rule is shown below:
Note the minus sign in front of the rule: this means that we want to sort results in increasing order instead of decreasing order, that is, we prefer the carbon with least number of attached hydrogens.
The reactants are taken from alkenes.smiles. Four sample reactants are shown below:
react -r alkene+hcl.rdf alkenes.smiles -S aromatize.xml -t reaction -o alkene+hcl_result.smilesRun Reactor with the default tolerance to get the product with highest priority (determined by the evaluation result of the selectivity rule):
This time we used aromatize.xml to specify the Standardizer configuration. It only contains aromatization.
The result is stored in alkene+hcl_result.smiles. Four sample result reactions are shown below:
Cl atom is attached to the carbon with less hydrogens
react -r "[C:1]=[C:2]>Cl>C:1[Cl:3]..s:-hcount(ratom(1))" alkenes.smiles -S aromatize.xml -t reactionHere is another invocation of the same reaction processing, using SMARTS reaction string with appended selectivity rule:
The result is the same as above.
The use and meaning of command-line options in the above commands: