Daylight Summer School 2002, June 5-7, Santa Fe, NM

Daylight Worksheet - Transforms -- SHOW HINTS


  1. react.cgi is a web interface which applies reaction transforms (SMIRKS) to molecules (SMILES). It is useful for learning how transforms work and testing new SMIRKS. Start react.cgi and press the help button. Several examples are shown. Another source of examples is SMIRKS FAQ and Examples.

  2. Try some of the example SMIRKS and SMILES. Then try to invent different SMILES which are also matched and transformed by the SMIRKS. Finally, try modifying a SMIRKS to achieve a desired result.

  3. $DY_ROOT/contrib/src/c/reaction/react.c:

    Build react and run it. Experiment with some generic reactions and molecules.

    Try the following example:

        SMIRKS: [c:1][N:2](=[O:6])=[O:4]>>[c:1][N+:2](=[O:6])[O-:4]
        SMILES: O=N(=O)c1ccc(N(=O)=O)cc1
    Note that the transform is only applied once (by default) per reaction.

  4. Experiment with react.c by trying the options: -r (reverse), -u (dt_utransform), -x (dt_xtransform), and -mix (mix products).

    To vary the 'limit' parameter you will have to modify react.c and rebuild. Vary the limit parameter and observe the effect on the output.

  5. Modify react.c so that it applies the same transform repeatedly until no further matches are found. That is, take the product from the first application, and feed it back into the transform. After the transform has been applied exhaustively, print out the products. Is this behavior the same as with dt_xtransform() applied once?

Mixture enumeration

  1. Continuing with react.c, lets start to build a combinatorial library enumerator. We want to create a simpler version of the enumerate.c program. Our program will handle two-component mixtures. We'll try the enumeration two different ways:

  2. First, modify the interface so the user can enter two sets of reactant molecules as SMILES. Accept each set of SMILES as a dot-separated list.

  3. Next, apply the generic reaction to both sets of molecules in one step. It you use dt_transform() with the 'limit' parameter set to FALSE, the toolkit will do the full enumeration of the library for you. This will probably be slow but yields the simplest code. Build and test.

  4. Now, rather than doing one large enumeration, try breaking up the two sets of dot-separated reactant SMILES. Make two arrays of molecule objects (one array for each set of reactants). Apply dt_transform() once for each possible pair of reactants and write out the products. Build and test.

Daylight Chemical Information Systems Inc.