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