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.
The reaction can be described with the following SMARTS string:
while the selectivity rule can be defined with this Chemical Termsexpression:
These together define the following reaction:
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.
Note, that this simple rule is applicable for benzene derivatives only.
Our sample reactants are stored in the arom.smiles molecule file:
Run Reactor with default tolerance to get the products with highest priority (determined by the evaluation result of the selectivity rule):
react -r "[c:1][H:2]>>[c:1][Br:3]..s:-energyE(ratom(1))" arom.smiles
The result is:
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:
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:
Run Reactor with the default tolerance to get the product with highest priority (determined by the evaluation result of the selectivity rule):
react -r alkene+hcl.rdf alkenes.smiles -S aromatize.xml -t reaction -o alkene+hcl_result.smiles
The result is stored in alkene+hcl_result.smiles. Four sample result reactions are shown below:
The Cl atom is attached to the carbon with less hydrogens
Here is another invocation of the same reaction processing, using SMARTS reaction string with appended selectivity rule:
react -r "[C:1]=[C:2]>Cl>[C:1]([#6:2])[Cl:3]..s:-hcount(ratom(1))" alkenes.smiles -S aromatize.xml -t reaction
The result is the same as above.
The use and meaning of command-line options in the above commands: