ADMET Predictor® User Manual

Encoded Reactions

Encoded Reactions

One of the principal reaction formats supported by ADMET Predictor is the encoded reaction. This internal format provides users considerable flexibility in creating complex single- or multi-step reactions, with the optional use of logical operators and other parameters. ADMET Predictor supports the use of encoded reactions in all features, and this format is required for each record of a CRF file.

A single encoded reaction is constructed by writing one or more encoded-reaction primitives, separated by logical operators. The format for an encoded-reaction primitive is:

REACTION_CODE REACTION_STRING PROCESS_CODE

The individual elements, which must be separated by whitespace (excluding newline), are discussed below.

REACTION_CODE is a three-letter code that specifies the particular type of reaction that is being requested (e.g., a SMIRKS reaction). The following list provides the most important of the supported codes. Note that these values are not case sensitive.

NRX. Specifies a named reaction. This code indicates that the subsequent reaction string will be a special name recognized by ADMET Predictor. See the earlier discussion of named reactions for the complete list of supported reaction names. Note that the NRX tag is considered the default tag and can thus be omitted. Hence a reaction such as “Remove_Small_Fragments” is recognized as valid.

SMK. Specifies a reaction based on the SMIRKS syntax defined by Daylight CIS, Inc. See the earlier section on SMIRKS reactions for more information on the required syntax.

REACTION_STRING defines the actual reaction, written in a format appropriate for the preceding reaction code. Hence “Neutralize” would be an appropriate reaction string for the “NRX” code, while “[O:1]>>[S:1]” (change Oxygen to Sulfur) would be an appropriate string for the “SMK” code.

PROCESS_CODE is optional. One of three single-letter codes indicates how to process the specified reaction. The list of allowed codes is shown below. Note that if no code is provided, a default of F is assumed.

S. Single reaction. This code indicates that the reaction will be performed at most one time.

F. Full reaction. This code indicates that the reaction will be performed as many times as is applicable. For example, in a reaction converting Oxygen to Sulfur, a molecule with three Oxygen atoms will yield three separate product molecules, each having one Sulfur atom.

C. Complete reaction. This code is similar to F in that more than one reaction can be performed. But in this case, each reaction after the first one acts on the product(s) of the previous reaction. For example, in a reaction converting Oxygen to Sulfur, a molecule with three Oxygen atoms will yield a single product molecule having three Sulfur atoms.

The three codes are illustrated graphically in the following diagram:

images_encoded_reaction.png

In summary, the following are examples of valid encoded-reaction primitives:

NRX Neutralize

Neutralize \<\<the “NRX” code is assumed>>

SMK [O:1]>>[S:1] C

ADMET Predictor also allows two or more encoded-reaction primitives to be combined to form a logical expression. The primitives must be separated by one of three logical operators: PLUS (+), AND (&&) and OR (||), with PLUS being the default operator assumed when none is specified. The three operators are described below. Each example is based on the simple combination of two reactions, RXN1 and RXN2, separated by the operator being described:

RXN1 [OPERATOR] RXN2 

where [OPERATOR] is PLUS, AND or OR

PLUS (+). The effect of this operator is that if the first reaction (RXN1) succeeds, the products of that reaction are processed by the second reaction (RXN2). Conversely, if the first reaction fails, the original reactants are processed by the second reaction. Likewise, if the second reaction succeeds, the final products will be the products of that reaction, while if the second reaction fails, the final products will be the reactants upon which the second reaction was acting. A common example of the use of this operator is molecule standardization. In this scenario, a single molecule is processed by a series of standardization reactions such as salt removal, acid/base neutralization, correction of valence errors, etc. If the salt-removal reaction succeeds on a molecule (i.e., if it removes salts), then the subsequent reaction should begin with the products of the previous one: namely, it should begin with the molecule with its salts already removed. Conversely, if the first reaction fails (i.e., if the input molecule lacks any salts), then the subsequent reaction should begin with the original molecule. The PLUS operator provides precisely this behavior, so this operator is used to separate reactions in the case of the standardization task. Note that expressions using the PLUS operator always result in products being generated. Even in the extreme case that every individual reaction fails to yield products, the original reactants will become the de facto products. This behavior of always yielding products is different from that of the AND and OR operators. Finally, note that the PLUS operator can be used to terminate an expression containing only a single reaction. This has the effect of ensuring that if the reaction fails to yield a product, the reactants themselves will be returned as the products. Thus the reaction “SMK [O:1]>>[S:1] +” will always return a product, whereas “SMK [O:1]>>[S:1]” might not.

AND (&&). The effect of this operator is that if the first reaction (RXN1) succeeds, the products of that reaction are processed by the second reaction (RXN2). The final products, if any, are then determined by the successful application of the second reaction. Conversely, if the first reaction fails, the subsequent reaction is not applied at all, meaning that no products are yielded by this pair of reactions. The AND operator is therefore used when one or more reactions is contingent upon the successful application of a prior reaction. Note that expressions using the AND operator can yield zero products; this is a major difference between this operator and the PLUS operator.

OR (||). The effect of this operator is that if the first reaction (RXN1) succeeds, the products of that reaction are returned immediately as the products of the entire expression. The second reaction (RXN2) is deemed unnecessary and is skipped entirely. Conversely, if the first reaction fails, the original reactants are processed by the second reaction. The final products, if any, are then determined by the successful application of the second reaction. The OR operator is therefore used when one or more reactions is contingent upon the failure of a prior reaction. Note that expressions using the OR operator can yield zero products; this is a major difference between this operator and the PLUS operator.

ADMET Predictor supports a shorthand syntax for the above logical operators. These are “+” (PLUS), “&&” (AND), and “||” (OR). Thus the following are example expressions using reactions:

NRX Remove_Small_Fragments + NRX Neutralize

SMK [NH2:1].[OH:2]>>[NH:1]-[O:2] S && SMK [NH:1]-[O:2]>>[NH2:1].[OH:2] S

The first reaction expression above performs two standardization tasks: salt removal and acid/base neutralization. The PLUS operator ensures that products will always be generated by the expression: a molecule having no salts, acids or bases will simply be returned unmodified as the product of the reaction expression. The second reaction expression takes two reactants, the first having a primary amine and the second an alcohol. The first individual reaction creates a bond between the amine Nitrogen and alcohol Oxygen, yielding the single fused product. The second individual reaction expects a single reactant having the N-O bond that was created in the first reaction. This second reaction cleaves the bond, yielding the original primary amine and alcohol as separate products. Because of the AND operator, this second expression will yield products only if both individual reactions are successful. The use of the ‘S’ operator ensures that each individual reaction will be applied only once. Thus even if the two original reactants contain multiple primary amines and multiple alcohols, the overall expression will yield only two products (the same original reactants). If the ‘F’ operator were used instead of ‘S’, the first reaction could yield multiple products instead of a single one, and the overall expression could yield more than two products.

Note that like the similarly defined encoded query syntax, encoded reaction syntax requires whitespace between the various operators. Thus an expression such as “Neutralize+ Remove_Small_Fragments” is invalid, since there must be spaces around the “+” operator.