VCL Examples
    (very preliminary ideas from 0.03 and 0.04 prototypes)
From Mug '97
back to VCL
 
  esterify1.vcl
  This is an example of a "hard-coded" VCL file.
  
 NOTE  example of an explicit single-step reaction scheme
 NOTE  -- create transformations up front
 CREATE TRANSFORMATION "acid-catalyzed esterification"
   [C:1][O:2][H:3].[C:4][C:5](=[O:6])[OH:7]>>[C:4][C:5](=[O:6])[O:2][C:1].[OH:7][H:3]
 NOTE  -- get our starting materials
 CREATE MOLECULE CCO         ethanol
 CREATE MOLECULE CC(=O)O    "acetic acid"
 CREATE MOLECULE [H+].[Cl-] "hydrochloric acid"
 NOTE  -- build the laboratory
 CREATE CONTAINER beaker
 NOTE  -- get started
 ADD  ethanol            TO beaker
 ADD "acetic acid"       TO beaker
 ADD "hydrochloric acid" TO beaker
 NOTE  -- do the reaction
 REACT "acid-catalyzed esterification" IN beaker
 NOTE  -- purification
 REMOVE "[OH2]" FROM beaker
 NOTE  -- write output
 PRINT beaker
 
  | 
Running this through the vcl processor with the -t(erse) option produces
SMILES for the products only:
$ vcl -t -i esterify1.vcl
CCOC(=O)C
 
  esterify2.vcl
  This is an example of a the same VCL reaction scheme
  set up to process reactants given as input:
  
 NOTE  example of a generic single-step reaction scheme
 NOTE  takes one argument, <reactants>
 NOTE  -- create transformations up front
 CREATE TRANSFORMATION "acid-catalyzed esterification"
   [C:1][O:2][H:3].[C:4][C:5](=[O:6])[OH:7]>>[C:4][C:5](=[O:6])[O:2][C:1].[OH:7][H:3]
 NOTE  -- get our starting materials
 CREATE MOLECULE $1          reactants
 CREATE MOLECULE [H+].[Cl-] "hydrochloric acid"
 NOTE  -- build the laboratory
 CREATE CONTAINER beaker
 NOTE  -- get started
 ADD  reactants          TO beaker
 ADD "hydrochloric acid" TO beaker
 NOTE  -- do the reaction
 REACT "acid-catalyzed esterification" IN beaker
 NOTE  -- purification
 REMOVE "[OH2]" FROM beaker
 NOTE  -- write output
 PRINT beaker
 
  | 
Running this vcl specification with all reactants as an input argument
processes the given structures:
$ vcl -t -i esterify2.vcl "CCO.CC(=O)O"
CCOC(=O)C
VCL reactions are done exhaustively,
as shown in this 2x2 combinatorial case:
$ vcl -t -i esterify2.vcl "CO.CCO.CC(=O)O.OC(=O)CC(=O)O"
COC(=O)C           (methyl acetate)
CCOC(=O)C          (ethyl acetate)
COC(=O)CC(=O)OC    (dimethyl malonate)
CCOC(=O)CC(=O)OC   (methyl, ethyl malonate)
CCOC(=O)CC(=O)OCC  (diethyl malonate)
 
  esterify3.vcl
  The is the same reaction scheme but with controlled input.
  Different reagents are specified separately and
  specific chemical identities are required.
  
 NOTE  example of a reaction scheme with controlled input
 NOTE  takes two arguments, <alcohol> and <organic acid>
 NOTE  -- create transformations up front
 CREATE TRANSFORMATION "acid-catalyzed esterification"
   [C:1][O:2][H:3].[C:4][C:5](=[O:6])[OH:7]>>[C:4][C:5](=[O:6])[O:2][C:1].[OH:7][H:3]
 NOTE  -- get our starting materials
 CREATE MOLECULE $1          alcohol
 CREATE MOLECULE $2         "organic acid"
 CREATE MOLECULE [H+].[Cl-] "hydrochloric acid"
 NOTE  -- test reagents
 REQUIRE  alcohol       [CX4][OH]      "aliphatic alcohol"
 REQUIRE "organic acid" [CX4]C(=O)[OH] "aliphatic organic acid"
 NOTE  -- build the laboratory
 CREATE CONTAINER beaker
 NOTE  -- get started
 ADD  alcohol            TO beaker
 ADD "organic acid"      TO beaker
 ADD "hydrochloric acid" TO beaker
 NOTE  -- do the reaction
 REACT "acid-catalyzed esterification" IN beaker
 NOTE  -- purification
 REMOVE "[OH2]" FROM beaker
 NOTE  -- write output
 PRINT beaker
 
  | 
Without -t(erse) or -v(erbose)
The default VCL mode (i.e., without -t(erse) or -v(erbose) options) prints
a table of the containers and their contents which exist at the end of
the specification.
Note that the alcohol and acid must be specified as separate arguments
to esterify3.
$ vcl -i esterify3.vcl "CCO" "CC(=O)O"
+------------+------------+
| CONTAINER  | CONTENTS   |
+------------+------------+
| beaker     | CCOC(=O)C  |
+------------+------------+
Here's what happens with inappropriate input:
$ vcl -i esterify3.vcl "CCO.CC(=O)O" "CC(=O)N"
WARNING   require "aliphatic alcohol" in object "alcohol"
WARNING   ignoring other component(s) in "alcohol":
WARNING   CC(=O)O
ERROR     require "aliphatic organic acid" in object "organic acid"
ERROR     required structure not found in "organic acid":
ERROR     CC(=O)N
The vcl processor also provides a -h(tml) option which produces
embeddable HTML (like MCL):
$ vcl -h -i esterify3.vcl "CO.CCO" "CC(=O)O.OC(=O)CC(=O)O"
... produces html containing ...
| Container | Contents
 | 
|---|
| beaker |   | 
    
    
    Daylight Chemical Information Systems, Inc.
    
    info@daylight.com