Subject: Chemistry Tools

From: [email-masked] (Wolf-D. Ihlenfeldt)
Date: Fri, 14 May 93 16:06:18 jst

Chemistry Tools

Since a few days this newsgroup enjoys a lively discussion about
the usefulness of tools which can be combined to advanced systems.

A year ago I was thinking about the same problems, and I actually 
decided to tackle the problem and provide a complete algorithm
development, chaining, exchange and verification system to the scientific
community. The system under development is called CACTVS -
Chemistry Algorithm Construction, Threading and Verification
System. It will be public domain, but I will need some more months
to work on some problems. After that there will be an alpha test
phase before it becomes truely public. Volunteers welcome.

Lectures and posters on the system are scheduled for the
- 3rd International Conference on Chemical Structures
  June 6-10, Norrdwijkerhout, Netherlands
- 3rd World Congress of Theoretical Organic Chemists (WATOC'93),
  July 18-24, Toyohashi, Japan

What does CACTVS ?

- The basic aim of most chemical computations is to derived properties
  of ensembles of molecules (can be a single molecule ensemble, of course).
  Besides being subjected to computations, molecules are probably
  edited structurally or in property values (i.e. 3D-coordinates). And
  you want to see/vizualize the result and analyse them. We need
  to provide this basic functionality, but we must be as open as possible
  to incorporate new data structures, data and computation methods.
- Chemical properties come in a wide variety of formats. They can be ensemble-,
  molecule-, atom-, bond-, ring- etc. oriented. They can have different
  formats (a single boolean or a catalog number string or a raytracer 
  gif image file or a pair of variable length vectors of 3D coordinates
  attached only to bonds which pass a specific filter condition,
  where there are two independent sets of properties when the bond is
  viewed in different directions, and this data becomes invalid
  when another prop changes or the structure is edited).
  Cactvs allows properties to have a complex structure built from primitives.
  New primitives can be defined dynamically at runtime without
  recompilation by dynamic linking.
- You are allowed to have your own ideas on what a 'bond' or 'atom' is.
  New classes can be defined on the spot. Torsional angles are a
  property of a special 'bond' type with 4 atoms. All data structures
  are allocated dynamically, no size limitations.
- Properties typically rely on input data (values of other properties).
  These are simply requested in the computation module. No need to know
  anything about subroutine calling orders, parameters or the way the prop is
  actually computed - this is all looked up by the system. This process
  is recursive. All your routine gets are the values or an error code
  if some start values were not computable.
- The system maintain a validity status of the current props. I.e. after
  editing the structure or some property value, the system automatically
  knows which props are invalidated.
- New properties can be defined at runtime, and the definitions can be stored
  in files and databases privately for for public access. If a property
  is mentioned which is not yet known to the system, directories and 
  databases (networked, even worldwide) are searched automatically.
  Property definitions are interactively editable.
- Properties are computed by a limited set of built-in functions,
  dynamically loaded object files, a scripting language or servers. This
  process is transparent. The computation method is part of the property 
  definition. Property definitions in databases can contain objects
  for dynamic loading, independent server programs and/or source. The
  system tries to locate an object or server program compatible with the
  local architecture. If this fails, you still get the source (if it
  was deposited) and can try to compile it locally. A property definition
  without objects or source can be considered useful as a
  'we can do this, contact us for further information' advertisement.
  Databases can be searched for keywords in property descriptions and other
  criteria. Documentation of the module is part of the definition.
  Scripts and dynamically loaded modules can be edited/replaced at runtime
  for interactive algorithm development. Using scripts, classical external
  unadapted programs may be started and results reread. Or the user is asked 
  interactively for some data which is not computable.
- Molecules and all computed results can be stored,retrieved and searched
  in an object-oriented database including historic access (i.e.
  'what was the result with version 0.7 from feb93 ?' 'which are the
  molecules from the standard data set where the value changed
  from vers 0.7 to 0.8 by more than 0.1 units'?). New search and
  indexing methods can be added dynamically to the database. Search modules
  will be stored in databases like property compuation modules.
- Various popular file I/O formats are supported. New formats can be added
  by dynamically linking new I/O methods as objects or command language scripts.
  File I/O modules are again distributable by networked databases.
- The whole property computation/maintenance system is embedded
  into a X11/Xview/Slingshot graphical environment. The operation
  follows visual programming paradigmens. Property
  computation requests, structure editing methods or result analysis
  procedures are coded as tool objects. Tool objects are again
  archiveable in databases. Tools can present forms for user 
  interaction and numerical result output. Tools and other objects can
  be chained to pipes and trees. Pipelines are fed by dropping files
  or molecules onto them. Tools can manipulate the number of
  molecules passing through them, i.e. filter out unfit species or
  generate isomers. Other objects like archives, database portals,
  output files, molecule editors, display server objects and the undispensible
  trashbin can be integrated in those pipes or used as isolated utility objects.
  Display servers use the same mechanisms as computation servers,
  only that they typically do not report results back (but they may, i.e.
  change 3D-coordinates of rotated molecules). Displays may
  request arbitrary properties for vizualisation via the standard lookup
  service. Complete executable display servers, their manuals
  and their source can be stored in databases. 
- The sequence of instructions for script-based property computations
  and tool actions is defined by a general-purpose interpreted
  command language (Tcl/TclX). New commands (for example for
  the statistical analysis of results) can be added as script procedures
  or dynamically linked language extensions. The language has
  access to files, databases, property definitions, tool definitions etc.

More questions ? Send Email.

WDI

(System used for development: Sun SparcII, SunOS4.1.2. No ports yet,
but should not be too difficult, provided the various libraries are
available. The Postgres4.1 data base system, Xview3 X toolkit and GnuDLD3.2.3
dynamic loader are probably the most problematic. You find them all on the
net. This system uses LOTS of usenet software. The internal programming
language is C)

Caveats:

 Currently, the emphasis of the system is on empirical/topological/mm
 methods, not heavy duty quantum chemistry. But of course you are free
 to define a z-matrix basic data type, probably attached to ensembles.
 Then write a couple of functions transforming between z-matrix and
 coordinates and put them for world-wide access into your local
 CACTVS database. Maybe add input and output modules for the file format
 of your favorite numbercrunching program.
 And don't forget to tell the community about it.

 Furthermore, CACTVS is not an vizualisation system
 per se, although the display server concept makes it easy to use
 all kinds of displays once they are provided - hopefully people
 will put plenty of display servers for the vizualisation
 of the most obscure data into their databases for global access. Or
 somebody writes an interface (server?) to AVS or Chorus.

WDI