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 ...
ContainerContents
beaker

Daylight Chemical Information Systems, Inc.
info@daylight.com