VCL Commands

(very preliminary ideas from 0.03 and 0.04 prototypes)

From Mug '97


This is a list of VCL commands used in development.
General

Input files are interpreted as whitespace-delimited words.

Words in the form $n (dollars-integer) are interpreted as parameters and are replaced with the n-th positional argument.

These words are reserved:

   ADD CREATE DESTROY PRINT REACT REMOVE MIX

Strings may contain all printable characters.

Strings containing whitespace, or in the form $n, or which are the same as reserved words must be delimited by double quotes (").

VCL commands operate on a specific type of object (usually molecules) and will process any kind of object which contains that object type (e.g., molecules in a container or set).

A VCL set can contain any number of objects of any type.

A VCL container only contains molecules which are never implicitly combined with molecules in other containers. E.g., when REACTing a set of molecules, all molecules in the set participate; when REACTing a set of containers, the reaction can occur only among molecules in each container.

ADD -- add (copy) molecules from object(s) to other object(s).
ADD  from-object  to-object [to-object..]
Add (copy) molecules from object(s) to other object(s). Objects may be molecules, containers containing molecules, or sets containing such objects. This is a successful no-op if the from-object does not contain molecule(s). If from-object is not an existing name, it is interpreted as a SMILES (in which case it is an error if it's not a valid SMILES).

CREATE -- create new objects
CREATE CONTAINER      name [object [object..] ]

CREATE MOLECULE name [smiles]
CREATE SET name [object [object..] ]
CREATE PATTERN name smarts
CREATE TRANSFORMATION name smirks
Create a named object. A name is always required, it is an error if it collides with the name of an existing object. Container, molecule, and set contents are optional: if missing, an empty object will be created.

DESTROY -- destroy existing object(s)

DESTROY object [object..]

Destroy object(s) (and their contents) by name.

PRINT -- print literal string(s)

PRINT object|"string" [object|"string"..]

Print literal string(s), objects' descriptions, or a combination of such, followed by a newline.

REACT -- transform molecules
REACT container transformation [product_container]

Apply a generic transformation to reactant molecules in a container to produce product molecules. If a product_container(s) ARE speciifed, products are added to those objects and the reactant objects remain unchanged. If product_container(s) ARE NOT speciifed, reacting molecules are removed from the reactant container(s) and replaced with product molecules. This is a successful no-op if the reactant object(s) do not contain molecule(s) which match the generic reactants in the transformation.

REMOVE -- remove molecules
REMOVE molecule | pattern | smarts  [object]
Remove molecules from the object if given (if not, from the current set of all objects). Molecules to be removed may be specified as the name of a molecule or pattern; if the first argument is not an existing name, it is interpreted as a SMARTS. This is a successful no-op if the target object(s) do not contain molecule(s) which match the request.
MIX -- add molecules from one or more containers to another

MIX from-container [from-container..] to-container
Like ADD but with multiple sources and a single destination.

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