Daylight Summer School 1998, July 28-30, St. John's College, Santa Fe, NM

Daylight Worksheet - Transform basics.


  1. We'll start with trantest2.c. Build trantest2 and run it. Experiment with some generic reactions and molecules. (You can find some example SMIRKS in $DY_ROOT/contrib/src/c/transform/txf/).

    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 reaction is only applied once per reaction.

  2. Modify trantest2. Take out most of the output. Only show the unique SMILES for each reaction. Try modifying the 'limit' and 'direction' parameters on dt_transform() and observe their effect on the output. Build and test.

  3. Modify trantest2 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.

  4. Experiment with the functions dt_utransform() and dt_xtransform(). See how their behavior differs from dt_transform(). In some ways, dt_xtransform() behaves like an 'exhaustive' reaction. How does the behavior differ from the code you wrote in step #3?

Mixture enumeration

  1. Continuing with trantest2.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.