Selectivity rules are real-valued chemical expressions that order products according to their occurrence. If a selectivity rule is specified, then Reactor sorts the product lists by the evaluation result of the rule (decreasing order) and returns product lists in this order.
The selectivity tolerance determines the acceptance range of the selectivity rule, only the main product lists are accepted by default. Products are returned by Reactor only if the difference between their computed selectivity and the maximum selectivity value is within the specified tolerance. The default tolerance is 0.0001 which essentially means that only the maximum selectivity value is accepted.
Multiple selectivity rules can be specified by separating the rules by ";" characters. The corresponding tolerance values are also specified as a ";"-separated list, where the empty string refers to the default tolerance. When sorting product lists by the evaluation result of multiple selectivity rules, the order of the selectivity rules determines their precedence: the results of the first selectivity rule are compared first, then in case of approximate equality, the results of the second selectivity rule are compared, and so on. For example, assume we have two selectivity rules: charge(ratom(1)); pka(ratom(2)) where reactant atom map 1 is in the first reactant and reactant atom map 2 is in the second reactant. Assume we have two matches for both, with different evaluation results: 0.2, 0.1 for the charge and 5.3, 4.2 for the pKa. The sorted evaluation results are the following:
Product lists are returned in this order if we ignore tolerance. However, with tolerance values 0.15; 0.5 only the first and the third product lists are returned: