Daylight Software Version 4.93 Release Notes

============================ CONTENTS ============================




   This document describes changes and features specific to
   version 4.93 of Daylight Chemical Information Systems
   software.  If there is a machine-specific file for your
   machine in this directory (e.g. "readme-v493-sgi"),
   please read it too.

   Version 4.93 includes new Daycart features, new conversion
   tools, new web services, Java and C++ wrappers for the toolkits,
   toolkit fixes and enhancements.

   Installation and configuration instructions can be found
   in the file dayhtml/doc/install/index.html.

========================== 2. LICENSING ==========================

Usage and Evaluation Licenses

   The usage license for the Daylight software is accessible at
   This license is also included with the software. For any further
   clarification, contact our business office at 949-831-9990. 

====================== 3. DETAILS OF CHANGES =====================

Supported Platforms: Solaris, IRIX, Linux, Windows

   Version 4.93 is supported on: SPARC Solaris 7 and
   higher (32- and 64-bit), X84_64 Solaris 10, SGI MIPS/IRIX
   6.5 and higher (32- and 64-bit), x86 Linux RHEL2.1,
   RHEL3, and RHEL4. AMD64 Linux RHEL3, and RHEL4, x86 Windows
   2000 Professional and higher.

   Support for x86 and x86_64 Solaris is new.  PowerPC-based
   MacOS has been dropped from this release.

   Release 4.93 does not include static libraries for 
   toolkit programmers.  Because of the linking requirements
   for incorporation of FLEXnet licensing features, only
   shared object libraries are included.

   See the Operating System specific readme for more details.

Web Services

   With this release, Daylight now offers a new product line
   to facilitate the development of web applications.  In
   release 4.93, the following services are available for
   installation under Apache tomcat-5.5:

      canonicalizeSmiles (both molecules and reactions)
      getProperties      (traditional Daylight properties)
      getDepiction       (gif images from SMILES or TDT)
      convertStructure   (conversions to/from MDL and Daylight)
      deriveScaffold     (common substructure from a group of
      deriveSDClusters   (scaffold-directed clustering for
                          up to ~10,000 molecules)

   Example SOAP clients and installation tests are provided.

Wrappers for Java and C++

   With this release, Daylight now offers fully supported
   wrappers for Java and C++.  These wrappers cover all of the
   functionality of the Smiles, Smarts, Reaction, Depiction,
   and Fingerprint toolkits.  See the release notes in the
   separate wrapper distribution for details.

Oracle Cartridge

   Daycart is supported on 9.0x (9i), 9.2x (9iR2),
   10.1 (10g), and 10.2 (10gR2) under release 4.93.

   Daycart now includes a general option handling mechanism.
   The new table c$dcischem.options stores sets of option
   name-value pairs which can be used.  One can define default
   options which get set for every new Daycart session and can
   define alternate sets of options which can be invoked easily
   as a group within a session.  See the Daycart manual on
   the ddpackage.fsetinfo() function for more details.

   Significant improvements to the string-based lexical triage
   algorithm have been performed.  These result in improved
   speed for contains() searches.

   Daycart now takes advantage of multiple threads for the
   contains() and matches() searches.  The option 'thread_count'
   controls the number of computational threads which are used
   during searching.  For searches which are CPU-bound 
   (long-running contains() and matches() queries) the performance
   improvements are significant.

   Daycart has a mechanism to return counts of results (both
   actual and estimated counts) for ddblob-based index queries
   more efficiently.  This is especially helpful for queries which
   return huge numbers of hits; this mechanism eliminates the
   overhead of returning rowid number for every hit.
   One can now get a count for ddblob index searches by calling
   ddpackage.fsetinfo('count_mode={ACTUAL|ESTIMATE}') before
   running a SQL query.  After the query, the count is stored
   in the count_value option and can be retrieved with:
   ddpackage.finfo('count_value').  In the case of an estimated
   count,  Daycart checks approximately 1% of the rows and projects
   a hit count.  In the case of an actual count, Daycart performs
   the full search to get the count.  If the 'timeout_interrupt'
   option is set, the full search will short-circuit after
   the interrupt time and compute an estimate for the remaining

Multithreading Toolkits

   The base toolkits can now be used in multithreaded programs.
   The Smiles, Smarts, Fingerprint, Reaction, Depict, and Progob
   toolkits are all thread safe.

   There are two main object models which one can use.  First is
   the global model, where all objects are visible to all threads.
   In this case, there are several new functions (dt_mp_lock,
   dt_mp_trylock(), and dt_mp_unlock()) which are used to coordinate
   access to objects which are shared between threads.

   The second model is the per-thread object model.  In this case 
   objects are local to the thread in which they were created; no
   sharing of objects is permitted.  See the Toolkit Programmers
   Guide for more information.

Common Substructure

   The toolkits include a new function dt_commonsubstruct(), which
   will compute a path-based maximal substructure for a given set
   of molecules or reactions.

   There is a new agglomerative clustering program, sdcluster, which
   clusters by maximizing the coverage of shared common substructures
   across a set.

Conversion Tools

   Conversion of MDL-formatted reaction transforms to SMIRKS 
   have been added.  As with v4.92, conversions to Daylight TDT 
   and SQL loader formats maintain the original depiction 
   information.  The conversion tools are available as command
   line applications, as web services, and are embedded in
   Daycart.  A number of minor bug fixes and enhancements 
   have been added.

New ClogP Version

   A new version of ClogP from Biobyte is included.  The
   Biobyte algorithm version is 5.1, and the database version
   is #25.  This version fixes several bugs in the computed
   fragment code and adds new fragment values to the fragment


   The smi2gif server application based on the HTTP Toolkit has
   a new feature to highlight substructures if present.  A new
   option (highlight=some_smarts) will enable the highlighting
   of one or all matches of the SMARTS against the input
   molecule or reaction.  All of the features of smi2gif are
   also available from the web service (above).


   The Daylight system now can make use of FLEXnet floating
   licenses. FLEXnet license servers are supported on Solaris, 
   SGI IRIX, and Linux. Clients (i.e. floating Daylight
   products) are supported on Windows, Solaris, SGI IRIX and
   Linux.  All Daylight toolkits, programs, and servers can
   be licensed using floating licenses.  Contact Daylight at for more information on availability
   and pricing of floating licenses.

========================== 4. UPGRADING ===========================

The 4.93 release is a full distribution.  It does not 
depend on having a 4.91 release already installed and
can be installed in parallel with any previous releases.

The thor database format is identical between 4.7x, 4.8x
and 4.9x.  No Thor database upgrade is require.  One can
simply start using 4.9x thorserver, merlinserver and
applications against 4.7 and 4.8 database files.

An upgrade of Daycart from 4.92 to 4.93 only requires
replacing the 4.92 file with a new version.

An upgrade of Daycart from a version prior to 4.92
requires a full reinstallation.  This entails dropping
all Daycart indexes, dropping the old Daycart packages,
installing the 4.93 Daycart packages, and recreating all
Daycart indexes.  The documentation in
dayhtml/doc/sql/index.html describes this process in detail.

========================== 5. BUGS FIXED ==========================

>  dt_smarts_opt() fixed for 64-bit libraries (#848).

>  dt_alloc_vbind() allowed names which didn't follow the
    documented naming criteria (#850).

>  In cases where molfiles had stereo bonds set but are 
    not actually chiral the mol2smi program did not warn the user
    that chirality is being ignored (#889).

>  The program object toolkit would hang when one did not
    user a delimiter for the communication (#952).

>  Testlicense now gives diagnostics about non-printing
    characters in a license (#954).

>  dcgi_smi2jme would crash on Linux and SGI (#955).

>  dt_atend(pathset...) returned TRUE in the wrong situation.
    It is supposed to return TRUE only after dt_next() has returned
    NULL_OB at least once (#956).

>  jarpat crashed when the number of structures to be clustered
    was less than the desired 'near' parameter (#957).

>  For certain molecules with exocyclic double bonds to aromatic
    rings, sd2smarts would erroneously assign single bonds within the
    aromatic ring, eg. N=c1-ccncc-1 (#959).

>  dt_dbo() did not return correct EZ-stereo for exo double bonds
    to aromatic rings (#966).

>  dt_dfnormdata() would not return the autogen tag for
    a thor datatype (#967).

>  Within Daycart, the euclid() operator was incorrectly
    computing the value in the index search (#971).

>  In Daycart, the extproc process would sometimes not die if
    the client killed an index search (#973).

>  For clogp, several classes of fragments with multiple tautomeric
    forms were corrected; results are now consistant for both tautomeric
    forms (#983).

>  Within Daycart, the tversky() index search incorrectly
    screened certain classes of queries (alpha & beta parameters) (#984).

>  Implemented requested option handling in Daycart (#988).

>  For command line applications, the error messages on incorrect 
    options was misleading; added additional clarification for missing 
    option error messages (#990).

>  The value of the output NN<> datatypes for the tanimoto
    values was incorrect when the skip_input parameter was used (#993).