Daylight Software Version 4.42 Release Notes

Back to 4.42 Release Notes.


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

    1. INTRODUCTION AND HIGHLIGHTS OF RELEASE 4.42
    2. DETAILS OF CHANGES MADE IN RELEASE 4.42
    3. BUGS FIXED FOR VERSION 4.42
    4. KNOWN BUGS IN VERSION 4.42
    5. DAYLIGHT SOFTWARE-RELEASE HISTORY



========= 1. INTRODUCTION AND HIGHLIGHTS OF RELEASE 4.42 =========

DAYLIGHT CIS SOFTWARE, VERSION 4.42
Rev: Feb  2 1996

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


Daylight HTML/CGI:

    - All Daylight documentation is supplied as HTML.
    - CGI programs provide Mac/PC/Unix access to THOR/Merlin via networks.
    - CGI programs give easy access to Daylight-supplied databases.
    - CGI program for Rubicon.
    - CGI programs for CLOGP and CMR.

THOR and Merlin:

    Many of the changes from 4.41 to 4.42 are in the THOR/Merlin
    system.  Its reliability and speed were improved, and several new
    features were added:

      - TDT record locking.  Records can be locked for exclusive access.
      - THOR can destroy a database.  New program: thordestroy(1)
      - You can attach messages to databases/servers, received on login/open.
      - You can evict users from servers and/or databases.
      - True read-only databases are supported, e.g. for use on CD-ROMs.
      - More choices for THOR database caching.
      - Better THOR Toolkit support for "raw" data.
      - Much faster merging of new and old data data in THOR databases.
      - A new program, thordiff(1), compares two databases' contents.
      - A new program, thorchange(1), changes a database's configuration.
      - Much better Merlin performance when server is heavily loaded.
      - Merlin "program objects" for user-written search functions
      - Merlin parallelized substructure searching for multi-CPU machines


====================== 2. DETAILS OF CHANGES =====================

DAYLIGHT HTML AND CGI APPLICATION PROGRAMS

    With the rapid spread of the World-Wide Web (WWW), and the resulting
    widespread use of and familiarity with WWW Browsers such as Mosaic
    and Netscape, Daylight has taken a new course.

    All Daylight documentation is now supplied in HTML form, for use with
    "Web Browsers" such as Netscape or Mosaic.  Mosaic, which is a free,
    public-domain program, is also supplied along with the Daylight
    distribution.

    Daylight CGI ("Common Gateway Interface") programs provide a new
    way to access the Thor/Merlin database system, as well as several
    Daylight application programs (CLOGP/CMR, Rubicon).


ON-LINE MAN PAGES

    For the die-hard UNIX programmer who prefers the good ol' man(1)
    command over those newfangled HTML versions, all Daylight Toolkit
    functions, programs, and objects have on-line man-style manual
    pages:

        Section      Catagory           Example
        -------      --------           -------
           1         Programs           "man thordiff"
           3         Toolkit functions  "man dt_open"
           3         Toolkit objects    "man database"
           5         Misc topics        "man 5 database"


THOR/MERLIN DATABASE ADMINISTRATION

    Many new features and enhancements were added to THOR for database
    creation and administration.

    Destroy databases:
	Previously, you destroyed a database by removing its files from
	the disk "by hand".  Now the THOR server can do it for you.
        The following features support this:

	    1. thordestroy(1): a new "thorfilter" program to destroy
	       a database.

	    2. sthorman has new menu items to destroy databases.

	    3. dt_thor_destroy(3) is a new Toolkit function.

    Evicting users:
	New THOR and Merlin features allow you to "evict" users from a
	server or a database.  For a server, the user is forcibly
	"logged out"; for a database, the user's connection to the
	database is closed and the user no longer has access to it (but
	the user stays connected to the server, and other databases
	aren't affected).  The following features support this:

            1. merlinload has new options, "-EVICT_USER TRUE" and
	       "-LOAD_POOL RELOAD".  These allow you to re-load a Merlin
	       pool even when it is in use.

            2. sthorman has a similar feature: it allows you to evict
	       users from a Merlin pool in order to re-load it.

	    3. A new "thorfilter" program, dayevict(1), lets you evict
	       users from a THOR or Merlin server, or a THOR database or
	       Merlin pool.

	    4. A new Toolkit function dt_evict(3) is the basis for this
	       feature.

    Messages:
	New THOR and Merlin features allow you to "broadcast" messages
	to all client programs.  These messages can be attached to a
	THOR or Merlin server or database; a message attached to a
	server is sent to users each time they connect to the server,
	and a messages attached to a database is sent to users each time
	they open the database.  You can also broadcast a message to all
	users of a server or database immediately.  The following
	features support this:

            1. sthorman has new menu selections for messages.

	    2. A new "thorfilter" program, daymessage(1), lets you send
	       messages to users or attach them to a server or database.

            3. The THOR and Merlin servers have new options:
	       THOR_SERVER_MESSAGE, MERLIN_SERVER_MESSAGE, respectively,
               that allow you to specify a message on the command line.
               See the documentation for thorserver(1) and merlinserver(1)
               for more details.

	    4. A new Toolkit function, dt_setmessage(3), is the basis
	       for these new features.

    Database management:
        thorchange(1) -- new program, similar to thormake(1) but
                         for existing databases.

    Read-only databases:
        sthorman(1) - In DATABASE CONFIGURATION menu
        thorchange -SETACCESS READONLY|WRITEABLE ...
        dt_thor_readonly(3) -- new toolkit function
        dt_thor_setreadonly(3) -- new toolkit function

    THOR Caching:
        partial caching: Data-only or Xrefs-only
        sthorman(1) -- In DATABASE CONFIGURATION menu
        thormake -CACHE_WHEN ... -CACHE_LEVEL ...
        thorchange -CACHE_WHEN ... -CACHE_LEVEL ...

    Raw Data:
        You can merge raw data with existing.  Previously, you could
        only merge if you also "standardized", which was much slower.
        See thorload(1), sthorman(1), dt_thor_tdtput_raw(3).

        The raw-data "suite" of functions has been filled out.
        Three new functions make it possible to work entirely with
        "raw" data (TDTs in lexical, standardized form):
            dt_thor_tdtget_raw(3) -- new toolkit function
            dt_thor_tdtremove_raw(3) -- new toolkit function
            dt_thor_tdtput_raw(3) -- new toolkit function

        The function dt_thor_tdtputraw(3) is obsolete (but still supported).
        It is replaced by dt_thor_tdtput_raw(3), which has more functionality.

    Database comparison
        thordiff(1) -- new program, compares two databases.  Allows you
                       to select or ignore specific data.

    Miscellaneous THOR Bugs and Enhancements

      - thorserver checks all incoming TDTs for lexical correctness.
	Previously it trusted the client programs to send good TDTs, so it
	was possible to build a database (particularly with "raw" data) that
	was corrupt.

      - Merging is now MUCH faster, in most cases 3-4 times faster.
	In earlier releases, the THOR clients retrieved all data to be
	merged from the server, merged it, then sent it all back to the
	server.  Now all merging is done in the server, and the server's
	merging algorithm is much faster than the older client-based
	algorithm.

      - thordelete(1) now correctly reports the number of TDTs deleted,
	not-found, and the number of errors.  The function
	dt_thor_tdtdelete(3) is obsolete (but still supported), replaced by
	dt_thor_tdtremove(3).  The obsolete function's design was inadequate
	to the task.

      - thorload has a new option, SHOW_ERRORLEVEL (allowed values:
	ALL|NOTE|WARNING|ERROR|FATAL|NONE) indicates which errors are to
	be reported.  Default is ERROR.

      - thorwho(1) and merlinwho(1) were combined into a single program (but
	either name will invoke the new, combined version), and the
	capabilities extend to databases.  You can now ask who is logged in to
	Thor and/or Merlin servers, and/or who is using a THOR and/or Merlin
	databases, all with a single command, e.g. "thorwho indigo:thor
	indigo:merlin".  See the manual page thorwho(1) for details.

    Obsolete THOR Functions

	The following functions are obsolete.  The will be supported
	indefinitely, but new programs should not use them:

	    dt_thor_create(3)           -- replaced by dt_thor_createdb(3)
	    dt_thor_tdtputraw(3)        -- replaced by dt_thor_tdtput_raw(3)
	    dt_thor_tdtrevise(3)        -- replaced by dt_thor_tdtput(3)
	    dt_thor_tdtputforced(3)     -- replaced by dt_thor_tdtput(3)
	    dt_thor_tdtdelete(3)        -- replaced by dt_thor_tdtremove(3)


THOR RECORD LOCKING

    The THOR server provides clients with a TDT record-locking feature.
    When record-locking is enabled, clients can lock individual records
    for exclusive access, "commit" and "rollback" changes, and unlock
    records.  The following programs and functions are affected:

	dt_thor_tdtlocking(3): new toolkit function
	dt_thor_settdtlocking(3): new toolkit function
	thorchange: see the "-TDTLOCKING ENABLE|DISABLE" option
	sthorman(1): See the "DATABASE CONFIGURATION" menu

    For more information, see the manual pages for:

	    dt_thor_setlocking(3)
	    dt_thor_getlocking(3)
	    dt_thor_tdtlockedby(3)
	    dt_thor_tdtget(3)
	    dt_thor_tdtget_raw(3)
	    dt_thor_tdtput(3)
	    dt_thor_tdtput_raw(3)


MERLIN PARALLELIZED SMARTS SEARCHES

    The Merlin server's superstructure search can now be "parallelized".
    That is, on multi-CPU machines, Merlin has the ability to perform
    superstructure searches using 2 or more CPUs simulataneously.
    To do this, the Merlin server uses a special "assistant" program object,
    merlinsmartstalk(1), to do the actual SMARTS matching.  This program
    is a "program object", and can "fork" itself into many copies that 
    all work simultaneously.

    Generally speaking, SMARTS searches that were fast to begin with will
    not speed up much; searches that were slow will speed up
    considerably.  For example, on a 4-CPU machine, a typical slow
    search might speed up by a factor of 3.5 or more.

    The MERLIN_NPROCS option controls this new feature.  See the 
    merlinserver(1) manual page for more details.


MERLIN PERFORMANCE UNDER HEAVY LOAD

    Merlin's performance for interactive use is MUCH better when the
    Merlin server is heavily loaded.  This is particularly important to
    large sites with many simultaneous users, and to sites working
    across slow networks.  Sites with one or a few users, and working on
    a fast local network, won't notice much difference.  Three changes
    were made:

     1. Client requests are now prioritized -- any client that is in
	the middle of a search or sort gets lower priority.  This means
	that other activities (creating columns and hitlists, updating
	the screen, opening databases) are executed immediately, even
	when many clients are searching.

     2. The Merlin Toolkit's data cache was improved -- when you ask
	for data in a row of the hitlist, the Merlin Toolkit does a
	hidden "look ahead" and caches a number of rows.  This
	dramatically improves screen refresh time for all Merlin client
	programs.  In pre-4.42 releases, the server used 0.5-second
	"time slices" for each client.  For example, when ten clients
	were searching each client got served every 5 seconds, and
	updating a 10-line xvmerlin display took 50 seconds.  Now it
	takes a single client-server transaction to update the whole
	xvmerlin screen, and because of (1) above, it gets higher
	priority than all searches.

    3. A new option, MERLIN_SERVER_TIMESLICE, allows you to adjust the
       length of time Merlin spends on one client's search before
       moving to the next client.  Long tasks such as searching and
       sorting are "time sliced" -- each client's task is processed
       for this length of time, then the client has to wait while
       other clients are serviced.  A half second works for small- and
       medium-sized installations with up to a dozen or so
       simultaneous users; you might want smaller (e.g. 0.2) values
       for heavily-used servers.  Very small values (0.1 second)
       may increase overhead.  Very large values give poor response to
       interactive users.

    Note that the above three changes are "invisible" to client programs,
    in the sense that it is all hidden in the Merlin Toolkit or the
    Merlin server.  The only difference to the client is that
    performance improves.


CLUSTERING/FINGERPRINT TOOLKIT

    New Fingerprint Toolkit Functions:
        dt_fp_bitvalue() gets the value of a bit in a fingerprint object,
        by its bit-number (index).
        dt_fp_setbitvalue() sets the value of a bit in a fingerprint object,
        by its bit-number.
        dt_fp_range() gets the stringvalue of a range of bits in a fingerprint
        object.  This is intended to be used to retrieve arbitrary subsets of
        the bitvalues in a fingerprint.
        dt_fp_setrange() sets a range of bits in a fingerprint object to the
        content of a string.  Can be used to perform arbitrary boolean 
        operations on binary data in fingerprints.

    New Fingerprint size limits:
        Fingerprints can be created up to a size of 2^30 bits (1 Gbit).

    Performance improvements:
        Fingerprint generation is approximately 4-times faster than in 
	version 4.41 for 'normal' fingerprints (dt_fp_fingerprint() and 
	dt_fp_generatefp()).

    New functions to control fingerprint sizes and folding:
        In version 4.41, the global parameters 'size', 'minsize', and 
        'mindensity' are used in only three places (creating an empty 
        fingerprint, generating a fingerprint, and folding a fingerprint).
        With version 4.42, these global parameters are made obsolete, and
        three new functions are added to compensate.
        dt_fp_allocfp() - allocates an empty fingerprint of the given size.
        dt_fp_foldfp() - folds a fingerprint down to the size or density limit
        given,
        dt_fp_generatefp() - creates and fills a fingerprint of the given
        size.  This also has parameters to control the path-length of the 
        generated fingerprint.

    Obsolete functions
        The following functions are obsolete.  The will be supported
        indefinitely, but new programs should not use them:

	    dt_fp_alloc(3)              -- replaced by dt_fp_allocfp(3)
	    dt_fp_fold(3)               -- replaced by dt_fp_foldfp(3)
	    dt_fp_fingerprint(3)        -- replaced by dt_fp_generatefp(3)
	    dt_fp_mindensity(3)         -- replaced by dt_fp_foldfp(3)
	    dt_fp_minsize(3)            -- replaced by dt_fp_foldfp(3)
	    dt_fp_setmindensity(3)      -- replaced by dt_fp_foldfp(3)
	    dt_fp_setminsize(3)         -- replaced by dt_fp_foldfp(3)
	    dt_fp_setsize(3)            -- not needed
	    dt_fp_size(3)               -- not needed

    Clustering Package:
        All programs support large fingerprints (up to 1 Gbit).
        The Fingerprint program has an additional '-s' parameter to control
        minimum and maximum path lengths used for fingerprint generation.


MERLIN: ALTERNATIVE FINGERPRINTS

    Users can write their own "Program Objects" which, when attached to
    the Merlin server, extend Merlin's searching capabilities.

    * New contrib program \$DY_ROOT/contrib/src/tutorial/C/progob/fingertalk.c,
      use as example for different fingerprint techniques.  See its header
      for more details on all this stuff.
    * merlinserver(1) takes -MERLIN_FINGERTALK_PROGRAM option to use
      fingertalk program for computing fingerprints.
    * fingerprint(1) takes "-f path" option to use fingertalk program for
      computing fingerprints.  Uses exact same program object as merlinserver.



========================== 3. BUGS FIXED ==========================

This is not a comprehensive list of all bugs fixed -- we don't keep exact
track of everything we work on.  Rather, it is an informal list of some of the
more significant bugs fixed in the 4.42 release.

    Fingerprint Toolkit - fixed problem with Deuterium and Tritium where 
            different fingerprints were generated than the non-isotopic
            molecules.

    merlinserver - fixed memory leak searching indirect data.

    merlinserver - fixed NULL dereference that caused core dump
            during sort of indirect data.

    Monomer Toolkit - dt_getbond(m, DX_LEFT_BOND, ...) always returned
            NULL, even when there was a neighbor to the left.

    Monomer Toolkit - Underscore in monomer name didn't work if the 
            monomer was part of a MonomerSet (i.e. inside brackets []
            in a CHORTLES).

    Monomer Toolkit - Fixed core dump caused by dt_copy(varimer) when
            varimer had cross-links created via dt_setbond().

    Monomer Toolkit - digits not re-used on SGI.  A CHUCKLES such as
            Aa1.Bb123.Cc21.Dd12.Ee21.Ff123.Gg2 was incorrectly written
            as Aa1.Bb123.Cc24.Dd45.Ee56.Ff673.Gg7 on SGI machines only.
            That is, cross-link digits weren't re-used properly.

    Thor - occasionally corrupted a TDT, issued "badly-formed TDT"
            message even when the TDT was OK.

    Thor - "NOPUNCT" normalization didn't work correctly for quoted
            fields.  Occasional left a dollar-sign in name.

    Thor - Reported "database locked by another server" incorrectly,
           e.g. when user didn't have permission for the database directory.

Misc:
	dt_mer_getroot() didn't work for numeric identifiers
	toggle equiv/restricted hosts didn't work
	"Database locked by another server" was reported any time .LCK failed
	passwords confused in thorfilters


The following are some formally-reported bugs that were fixed:

504     Thorserver:  USMILESANY doesn't work
        status: fixed in 4.42     severity: 3

     The normalization USMILESANY does not cause a smiles to be uniquified.
     It was incorrectly coded as USMILES_ANY.


494     Toolkit - monomer:  dt_getbond() fails for left neighbor
        status: fixed in 4.42     severity: 3

     "dt_getbond(m, DX_LEFT_BOND, ...) always says there is no left neighbor."


483     database - spresi95demo:  Keywords missing.
        status: fixed in 4.42     severity: 2

     "The Patent and Journal Article keyword translations are missing from
     spresi95demo_indirect.  This was fixed for spresi95, but not in time for
     v441."


484     documentation:  Thor help text says ''thorman''.
        status: fixed in 4.42     severity: 1

     "The Thor help text says ''thorman'' instead of ''sthorman'' in
     several places, unclearly."


515     fingerprint:  Isomeric smiles gets different FP.
        status: fixed in 4.42     severity: 3

     "At least in some cases, an isomeric smiles returns a different FP from
     its non-isomeric version.  Example: [2H]C produces a different FP than C,
     its uniquified version."


495     fingerprint toolkit:  dt_fp_fold doesn't stop
        status: fixed in 4.42     severity: 3

     "dt_fp_fold doesn't check the minimum density.  It folds down to the
     minimum size, regardless of the density.  Fixed for 4.42."


473     mcl:  SMILES truncated in tables
        status: fixed in 4.42     severity: 2

     "MCL's Table output truncates long SMILES.  In cases where the truncated
     SMILES is a valid SMILES, this can't be easily detected by someone using
     the table.  We should make it clear they are truncated (e.g. use elipses
     ...), or offer a wrap-around feature."


511     mcl:  MCL can't handle passwords.
        status: fixed in 4.42     severity: 2

     MCL mishandles explicit passwords.  The login fails with correct pass-
     words.


96      merlinserver:  Difficult to reload pool
        status: fixed in 4.42     severity: 0

     "merlinserver will hang on to a pool as long as any one client has the
     pool open.  If a database is updated (e.g. using xvthorman) it might be
     desirable to re-load merlin's pool, but as long as any single client has
     the pool open merlin won't re-read it from the database.  We need a
     forced reload that would re-load a pool even when users already have it
     open."


467     merlinserver:  memory leak
        status: fixed in 4.42     severity: 3

     The merlinserver load/release cycle appears to leak memory.


501     merlinserver or xvmerlin:  Some recursive SMARTS errors.
        status: fixed in 4.42     severity: 4

     "Some recursive SMARTS searches don't work properly, or even work
     sometimes (!) and not others.  Here's one: [$(C=O)]."


380     options:  Options misspelled.
        status: fixed in 4.42     severity: 3

     The option DY_DATABASE_PASSWORDS_FILE is misspelled (p.48 of Admin
     manual) DY_PASSWORDS.


525     remote toolkit:  "dt_converse(ob, NULL_OB) broken"
        status: fixed in 4.42     severity: 3

     "dt_converse(ob, NULL_OB) was mistakenly short-circuited on the remote
     toolkit client so the program object never got the NULL_OB message.
     Fixed."


508     servers:  Server user security not working.
        status: fixed in 4.42     severity: 4

     "If one tried to change the password for a user, the server wouldn't
     delete the previous user/password entry from the security file.  The file
     would end up containing multiple password entries for the same user.
     Only the first entry was valid. (libdbutils/security.c)"


505     sthorman:  Auxilliary NONE fumbled.
        status: fixed in 4.42     severity: 3

     "If you create a database and point to other existing databases for the
     datatypes, then select NONE for the indirect and monomers the name of the
     datatypes db is entered wrongly."


354     thorload:  crash on no input
        status: fixed in 4.42     severity: 4

     "Thorload crashes on no input, loading from an empty file, or stdin of
     ^D."


422     thorserver:  sthorman can't set thorserver's search path
        status: fixed in 4.22     severity: 2

     Setting the search path from sthorman fails for the thorserver (but not
     for merlinserver).


465     thorserver:  No dt_thor_removedb
        status: fixed in 4.42     severity: 3

     "The Thorserver can create databases, but not delete them."


521     toolkit - SMARTS:  Underscores hobble vbinds.
        status: fixed in 4.22     severity: 2

     "Vector-binding names with underscores won't work, although they are
     accepted by dt_alloc_vbind."


304     toolkit - THOR:  More THOR-load modes needed.
        status: fixed in 4.42     severity: 2

     "TDTs with out-of-date or no timestamps sometimes need to be loaded.  In
     general, merge or replace operations should be allowed, and
     independently, standardize or no-standardize loading.  Neither sthor- man
     nor the thorserver presently allows all combinations. "


382     toolkit - THOR:  Merging flips data.
        status: fixed in 4.42     severity: 2

     "Merging data results in reverse-order TDTs.  That is, TDT's merged later
     have their data added at the top of the TDT."


478     toolkit - THOR:  USMILESANY and ASMILESANY normalizations broken
        status: fixed in 4.42a     severity: 4

     "The USMILESANY and ASMILESANY normalizations don't work in 4.41.  The
     toolkit actually looks for USMILES_ANY and ASMILES_ANY.  The fix, added
     in 4.42a, is to look for both forms of the normalization.  As a
     workaround in 4.41, users can put the USMILES_ANY and ASMILES_ANY nor-
     malizations in their databases and they will continue to work in 4.42 and
     beyond.  With 4.42, USMILESANY and ASMILESANY will work as docu- mented.
     The workaround for 4.41 will not be added to the permanent documentation
     as it is only needed for version 4.41."


268     toolkit - Thor:  Can't delete invalid identifiers
        status: fixed in 4.42     severity: 0

     "If a database contains an invalid identifier (perhaps entered via the
     raw load option), it can't be deleted -- the toolkit requires the
     identifier be standardized.  A raw-delete mode needs to be added,
     identical in concept to the raw-load mode."


474     toolkit - fingerprint:  dt_fp_setsize limit is undocumented.
        status: fixed in 4.42     severity: 1

     "dt_fp_setsize((dt_Integer) 8192) fails, returns 2048.  In 4.42, this
     function becomes obsolete.  The limitation no longer applies."


493     xvmerlin:  SMARTS search error.
        status: fixed in 4.42     severity: 4

     A search for SMARTS [OH][C;!$(C=O)] results in some invalid hits.




========================== 4. KNOWN BUGS =========================

406     clogp:  Crasher SMILES.
        status: active     severity: 4

     "The following SMILES cause clogp/pcmodels to crash:
     n1c(OC)nc(OC)nc1OC(=O)C(SCc4ccc(Cc3ccc(CSC(C)C(=O)Oc2nc(OC)nc(OC)n2)cc3)cc4)C,
     n1c(OC)nc(OC)nc1OC(=O)CCSCc4ccc(Cc3ccc(CSCCC(=O)Oc2nc(OC)nc(OC)n2)cc3)cc4"


413     clogp:  Crash SMILES
        status: active     severity: 4

     "clogp crashes with the following SMILES:
     CN(C)c1nc(OCC(F)(F)F)nc(n1)n2nc(nc2c3ccccc3)S(=O)(=O)Cc4c(Cl)cccc4Cl,
     CN(C)c1nc(nc(n1)c2nc(nc(n2)N(C)C)N(C)C)N(C)C."


254     clogp:  Crashed by SMILES...
        status: active     severity: 4

     CLOGP crashes with a core dump on the following SMILES:
     OC(=O)c1nc4c(nc1C(=O)Nc2c(F)c(F)c(F)c(F)c2F)c3nc(C(O)=O)c(nc3c5nc(C(O)=O)c(nc45)C(=O)Nc6c(F)c(F)c(F)c(F)c6F)C(=O)Nc7c(F)c(F)c(F)c(F)c7F


498     clogp:  Frags missing
        status: active     severity: 3

     "The 4.41 fragdb.dat file is the same as the 4.34, which means the
     missing frags in the memo were not included.  The same memo still
     applies, therefore.  These frags should be included!"


398     clogp:  Panic caused by bad option.
        status: active     severity: 3

     "clogp -help causes an error message: Panic: Daylight option manager
     initialization failed.  Behavior with -help is different for other
     programs (see treetops, xvthor)."


497     clogp:  Infinite loop?
        status: active     severity: 2

     The following smiles seems to send clogp into an infinite loop:
     CC1(C)CC(CC(C)(C)N1)N(CCCN2CCOCC2)c3nc(NCCCN(CCN(CCCNc4nc(nc(n4)N(CCCN5CCOCC5)C6CC(C)(C)NC(C)(C)C6)N(CCCN7CCOCC7)C8CC(C)(C)NC(C)(C)C8)c9nc(nc(n9)N(CCCN%10CCOCC%10)C%11CC(C)(C)NC(C)(C)C%11)N(CCCN%12CCOCC%12)C%13CC(C)(C)NC(C)(C)C%13)c%14nc(nc(n%14)N(CCCN%15CCOCC%15)C%16CC(C)(C)NC(C)(C)C%16)N(CCCN%17CCOCC%17)C%18CC(C)(C)NC(C)(C)C%18)nc(n3)N(CCCN%19CCOCC%19)C%20CC(C)(C)NC(C)(C)C%20
     Alberto-6June95


370     clogp and cmr:  Output with high error.
        status: active     severity: 3

     "The clogp and cmr programs should have options to supress output with
     high error.  As is, clogp is unsuitable for adding data to a database, as
     values with high errors (60, 70, etc.) are output."


431     clustering - listclusters:  Listclusters miscounts.
        status: active     severity: 4

     Listclusters counts clusters wrong sometimes (error msg = 1 cluster
     doesn't have expected size).  See Abbott reports.


378     clustering - showclusters:  Faulty counts.
        status: active     severity: 4

     Showclusters displays cluster-count and singleton-count incorrectly.


301     contrib - thorclient program:  Thorclient can't merge non-SMILES TDTs.
        status: active     severity: 4

     "Thorclient invokes dt_thor_str2tdt and dt_thor_tdtput in ''merge on
     create'' mode, not ''merge on load'' mode, which, due to a toolkit bug,
     results in errors on attempts to merge non-SMILES TDTs."


405     database - spresi93:  Ros2smi error on cyclopentadienyls
        status: active     severity: 3

     Spresi93 contains cyclopentadienyl complexes where the rings are
     single-bonded with 3-valent carbons instead of aromatic.  Looks like a
     Ros2smi error.


368     depict:  RS double bonds not drawn.
        status: active     severity: 3

     SMILES C[P@](=N)(N)O is drawn with four single bonds.


407     faststart (demo):  DY_ROOT can't be defined.
        status: active     severity: 4

     "If DY_ROOT is defined, the script objects and says that DY_ROOT should
     look otherwise.  Works if DY_ROOT is not defined."


446     fingerprint:  FPG's collide.
        status: active     severity: 3

     "When two fingerprinted TDT files are loaded into a database, an error
     results when the two FPG data can't both be stored (nonsmi TDT depth
     error)."


445     merlinserver:  Molform sort broken.
        status: active     severity: 4

     "The molform sort doesn't work correctly.  For example, c1ccccc1 comes
     after O=O."


312     merlinserver:  Loaded pool can't be opened...
        status: active     severity: 3

     "If a pool is loaded by Merlin that is not in the search path,  xvmer-
     lin  can't  find  it  or open it, and merlinls and sthorman won't list
     it."


449     merlinserver:  NUMERIC identifiers cause confusion
        status: active     severity: 2

     "If a row's root identifier has  any  numeric  normalization  (any  of
     NUMERIC,  INTEGER16,  INTEGER32, etc.), the merlinserver will return a
     bogus value for dt_mer_getroot().  This, in turn, causes programs like
     xvmerlin  (which uses it to do THOR lookups) to report that the TDT is
     not in the database."


179     merlinserver:  ISM misinterpreted if data
        status: active     severity: 2

     "The isomeric datatype tag dollar-ISM is misinterpreted if  it  occurs
     in  a  dataitem -- merlinserver should only look for it outside of the
     brackets, but it looks inside brackets too.  Customers won't  normally
     encounter this"


489     merlin toolkit:  dt_mer_getdata
        status: active     severity: 4

     dt_mer_getdata()  returns  the  indirect  reference  rather  than  the
     indirect data.


476     printpackage:  Newlines botched.
        status: active     severity: 3

     "Treetops and Tablet both don't handle newlines correctly.  Tablet fields
     spill over, Treetops says oops and crashes."


523     printpackage:  Option -PRINT_LANGUAGE doesn't work.
        status: active     severity: 2

     "The option -PRINT_LANGUAGE should produce PS or EPS output, but there
     is no effect."


518     printpackage:  Printpackage exes require DY_LICENSEDATA.
        status: active     severity: 2

     The Printpackage application programs require the environment variable
     DY_LICENSEDATA to be set; this should not be true for applications.


487     printpackage: prado:  -PRINT_LINEWIDTH only works for first page.
        status: active     severity: 2

     Setting -PRINT_LINEWIDTH to other than default only affects the  first
     page of PS.


472     printpackage: tablet:  Version wrong.
        status: active     severity: 1

     Tablet has a hard coded version number which gets printed at the  bot-
     tom of the page.


303     printpackage: treetops:  EPS must fit on 1 page.
        status: active     severity: 4

     "When the OUTPUT_FORMAT is EPS, and the image is larger than one page,
     the  result  is overlayed images on one page.  Either shrink the image
     to fit, or at least report the error."


415     printpackage: treetops:  Crash and/or weak error msg.
        status: active     severity: 3

     "Treetops crashes after several 'oops' messages when  a  TDT  file  is
     (mistakenly)  used  for  input.   Although  an FDT is needed, Treetops
     should report this error less cryptically and not crash."


526     program object toolkit:  Program object executed multiple times
        status: active     severity: 3

     "When a program object is allocated with arguements, it will get  exe-
     cuted multiple times until it succeeds and runs, with 0 - n arguements
     (not confirmed)."


363     remote toolkit - drawgob (Mac RT demo):  needs polishing
        status: active     severity: 3

     "Two things: (1)  drawgob.c is written with dy_ calls,  it  is  not  a
     toolkit  program,  and  (2)   drawgob  doesn't  run  if the Hosts file
     doesn't list the toolserver correctly."


459     rubicon:  Dot trouble.
        status: active     severity: 4

     Disconnected smiles are skipped without an error or warning.


512     rubicon:  ISM not handled.
        status: active     severity: 2

     Rubicon does not recognize isomeric smiles datatype ISM.  Rubicon will
     only read the $SMI datatype.


460     rubicon:  Count wrong.
        status: active     severity: 2

     "When an input error is reported, the structure number is wrong, as in
     'Can't process structure 268693408'."


522     rubicon:  Rubicon discards data.
        status: active     severity: 1

     "Rubicon should be able to add 3D data to a TDT stream.  Instead,  now
     it deletes data other than smiles and PCN."


514     thorlookup:  Thorlookup adds quotes to datatype TDTs.
        status: active     severity: 2

     Thorlookup adds quotes to datatype TDTs, that is, $D-rooted datatrees.


430     thorserver:  Full disk locks db.
        status: active     severity: 4

     "Trying to open a db on a full disk results in an error ('can't create
     .LCK  file').   But  a  file is created, and this prevents the db from
     being opened after room is made ('db locked by another server').  Note
     that both these error messages are incorrect."


149     thorserver:  Full disk corrupts database
        status: active     severity: 4

     "If a disk runs out of space as a database is being loaded, the  data-
     base  is  usually  corrupted.  The last record in the .DP file will be
     incomplete, causing error messages to be printed  for  database  dumps
     and crunches, and any time that record is accessed.  It is possible to
     dump the database using thordump"


68      thorserver:  thorserver reports hash subsystem error for out-of-date timestamp
        status: active     severity: 1

     "The thorserver reports hash subsystem error and can't write  to  file
     when  an out-of-date timestamp is encountered.  The out-of-date times-
     tamp error is also reported.  The hash subsystem error  reported  nor-
     mally is a serious error, and is therefore printed in the thorserver's
     log file; the log file may fill up with many such errors if a database
     is loaded without the merge option."


119     "thorserver, merlinserver":  servers don't detect duplicate
        entries in search path
        status: active     severity: 1

     "The servers don't detect duplicate entries in the search path.  For
     example, ~cjames and $HOME, or even /tmp and /tmp."


513     toolkit - depict:  "dt_setlabel[12]ga(dep, mol, GA) doesn't work."
        status: active     severity: 2

     You can't set the GA of the title or  subtitle  of  a  depiction  with
     dt_setlabel[12]ga().


458     toolkit - SMARTS:  Bad smarts accepted.
        status: active     severity: 3

     "Smarts [O,[N;v3]] is accepted, though it does not follow  the  rules.
     (Maybe it should be ok.)"


529     toolkit - SMILES:  Rejects its own.
        status: active     severity: 4

     The SMILES toolkit produces but rejects:
     Cn1c(=O)n(C)c2n[nH]c(=O)n(O)c2c1=O.


527     toolkit - SMILES:  Bistable cansmi.
        status: active     severity: 4

     The following smiles are cansmi-ed to one another:
     CC(=C[Si](c1ccccc1)(c2ccccc2)c3ccccc3)[Si](c4ccccc4)(c5ccccc5)c6ccccc6
     and
     CC(=[Si](c1ccccc1)(c2ccccc2)c3ccccc3)C=[Si](c4ccccc4)(c5ccccc5)c6ccccc6.


516     toolkit - SMILES:  Non-unique unique smiles
        status: active     severity: 4

     "CC1(C)COC(CCCCCCC(=O)ON2C(=O)CCC2=O)(CCCCCCC(=O)ON3C(=O)CCC3=O)N1=O and
     CC1(C)COC(CCCCCCC(=O)ON2C(=O)CCC2=O)(CCCCCCC(=O)ON3C(=O)CCC3=O)[N]1=O are
     the same molecule, but both are unique SMILES.
     N#CNC1=NC2=NC(=NC3=NC(=NC(=N1)N23)NC#N)C#N and
     N#CNC1=NC2=NC(=NC3=NC(=NC(=N1)N23)C#N)NC#N are the same molecule, but
     both are unique SMILES."


510     toolkit - SMILES:  para-stereochemistry not understood.
        status: active     severity: 4

     The smiles CN[C@H]1CC[C@H](C(=O)O)CC1 is not recognized as stereo.


502     toolkit - SMILES:  Oscillating SMILES
        status: active     severity: 4

     Try canonicalizing CCCCC(=[Si](C)(C)C)C=CC=[Si](C)(C)C twice.


479     toolkit - SMILES:  Stereo dt_arbsmiles() errors.
        status: active     severity: 4

     "dt_arbsmiles makes chirality errors.  Read N[C@@H](O)C(=O)N with
     dt_smilin.  dt_arbsmiles will be wrong.  If dt_cansmiles is called first,
     dt_arbsmiles will be ok.  (Using dt_cansmiles is not always a workaround;
     see Rohde/Ciba report.)"


477     toolkit - SMILES:  More rejecting your own...
        status: active     severity: 4

     CC1=C(C)[NH]=C(O)[NH]=C1O  canonicalizes   to   Cc1[nH]c(O)[nH]c(O)c1C
     which is then rejected by dt_smilin().


166     toolkit - SMILES:  dt_cansmiles /dt_smilin incompatibility
        status: active     severity: 4

     dt_cansmiles is capable of producing a smiles which  dt_smilin  cannot
     interpret.  See examples (May 1994) from Kodak.


416     toolkit - SMILES:  Bad SMILES.
        status: active     severity: 4

     SMILES  produced  by  dt_cansmi   which   are   not   parseable:   see
     day:/home/jj/tmp/roche/bad_smiles.tdt.


417     toolkit - SMILES:  Bad SMILES.
        status: active     severity: 4

     SMILES  produced  by  dt_cansmi   which   are   not   parseable:   see
     day:/home/jj/tmp/ciba/bad_smiles.tdt.


441     toolkit - SMILES:  Schizo smiles.
        status: active     severity: 4

     "The following two smiles are both produced by cangen for the same
     structure: CC1=C(C)[Se]C(=C2[Se]C(=C(C)[Se]2)C)[Se]1,
     CC1=C(C)[Se]=C([Se]1)C2=[Se]C(=C(C)[Se]2)C."


372     toolkit - SMILES:  Two unique SMILES for one molecule
        status: active     severity: 4

     "The following two SMILES are both 'unique', yet are for the same
     molecule: NP1(=NP(=NP(=N1)(c2ccccc2)c3ccccc3)(N)c4ccccc4)c5ccccc5,
     NP1(=NP(=NP(=N1)(N)c2ccccc2)(c3ccccc3)c4ccccc4)c5ccccc5."


490     toolkit - SMILES:  Extra weird SMILES
        status: active     severity: 3

     [n]532c(c1nc4c(nc1c(c2)N=CC=C3)c(ccc4)NC(=O)C)cccc5  uniquifies  twice
     to a stable smiles!


276     toolkit - SMILES:  Lethal SMILES
        status: active     severity: 3

     "dt_mod_off() crashed when this molecule was created.  GRINS and xvthor
     crashes while it's being drawn.  It is two 5-membered carbon rings which
     sandwich a [W] atom, where all 10 carbons are bonded to the carbon, and
     also, the [W] has two chlorines attached."


471     toolkit - SMILES:  Stereo not recognized.
        status: active     severity: 3

     "The smiles CC(=O)[C@H]1CC[C@@H](CNC)CC1 is not recognized as  chiral,
     that is, it is canonicalized non-chiral."


191     toolkit - SMILES:  cangen generates two SMILES for one molecule
        status: active     severity: 3

     cangen  generates  two  different  unique  SMILES   for   FOTRETAMINE:
     C1CN1P2(=NP(=NP(=N2)(N3CC3)N4CCOCC4)(N5CC5)N6CC6)N7CC7
     C1CN1P2(=NP(=NP(=N2)(N3CC3)N4CC4)(N5CC5)N6CCOCC6)N7CC7


367     toolkit - SMILES:  "dt_stream(bond, TYP_CYCLE) problem"
        status: active     severity: 3

     "If a bond is not in a ring, dt_stream(bond, TYP_CYCLE) should return
     NULL_OB, and instead, returns an empty stream.  Empty stream !?  An
     alternative is dt_count(dt_stream(bond, TYP_CYCLE), TYP_CYCLE), but this
     doesn't always work correctly either.  Some ring bonds will return a
     dt_count() of zero."


383     toolkit - SMILES:  Transition metals confuse aromaticity with N
        status: active     severity: 3

     "The SMILES Cn1cncn1 is accepted, but [Sn]n1cncn1 is not (the [Sn]-n bond
     is considered dative, so the electrons in the aromatic ring don't add
     up).  Furthermore, if the latter structure is built by toolkit calls from
     a connection table, a call to dt_cansmi() will produce the SMILES shown,
     but dt_smilin() can't parse the SMILES back in."


528     toolkit - SMILES:  dt_mod_on() ain't enough.
        status: active     severity: 2

     "In addition to dt_mod_on(), a molecule needs to be  de-aromatized  in
     order to successfully make certain changes, such as charge and H-count
     mods.  Surely mod-on should be as mod-on as possible."


131     toolkit - THOR:  non-SMILES-rooted TDTs not merged correctly
        status: active     severity: 4

     "If a non-SMILES rooted TDT is revised (dt_thor_tdtrevise()), the Toolkit
     attempts to find a SMILES by various means, including looking in the
     cross-references for a SMILES.  However, if one is found by this
     mechanism, the SMILES is not added correctly -- the data from the
     non-SMILES TDT seems to be lost.  To demonstrate this with xvthor, fetch
     a non-existent non-SMILES TDT, then using a second xvthor, create a
     SMILES-rooted TDT with the same non-SMILES identifier as a subtree.
     Store the second xvthor's SMILES-rooted TDT, then the first xvthor's
     non-SMILES TDT."


506     toolkit - THOR:  NTUPLE data handling.
        status: active     severity: 3

     "If a TDT is loaded with explicit Hs in the smiles, NTUPLE  normaliza-
     tions  may crash the client.  For example, Thorload-ing 3D data with a
     few H xyz's -- this should be handled!"


243     toolkit - THOR:  THOR only uses 1st field of identifier
        status: active     severity: 3

     "THOR only uses the 1st field of an identifier  for  lookup  and  com-
     parison.  This means that some identifiers that can have identical 1st
     fields yet still be distinct, could be impossible to  enter  correctly
     with the Toolkit except by str2tdt() functions."


410     toolkit - THOR:  Newline convention needed.
        status: active     severity: 3

     "The Daylight systems needs a way for dealing with newlines within data.
     The present system may ignore them, remove them, or display them in a
     funny way."


338     toolkit - THOR:  mismatched quotes in indirect ref confuse Thor
        status: active     severity: 2

     "If an indirect reference is stored with mismatched quotes (i.e. using
     the 'raw' mode for loading data into the database), then datafields that
     use that indirect reference can't be expanded.  Furthermore, some
     internal caching routines are confused, causing caching of indirect
     expansions to be less efficient.  (look_up_everything() gives up when
     store_cache_entry() fails.)"


507     toolkit - THOR:  NTUPLE data handling
        status: active     severity: 2

     "SMILES_NTUPLE data is poorly handled in many instances.  Also, the
     format should be more clearly documented.  Data for some but not all
     atoms should be supported.  The question of hydrogens, explicit and
     implicit, should be fully addressed.  In particular, the 2D and 3D
     datatypes should be handled and documented very well."


138     toolkit - THOR:  dt_thor_move_item() allows modification to
        read-only TDT
        status: active     severity: 2

     The function dt_thor_move_item() doesn't always report an error when the
     TDT being changed is from a read-only database


423     toolkit - THOR:  can't merge SMILES/non-SMILES TDTs
        status: active     severity: 2

     "The THOR Toolkit manual says that dt_thor_merge() can merge a non-
     SMILES-rooted TDT into a SMILES-rooted TDT, but this isn't imple-
     mented."


272     toolkit - THOR:  The subfield issue.
        status: active     severity: 1

     "Subfields exist in the Pomona databases delimited by tilda's within one
     field.  These subfields are often indirect reference keys, individually,
     though they have no individual identity from the toolkit's view.  So the
     tildas are undocumented delimiters, and partially sup- ported.  This
     should be resolved."


285     widgets - file widget:  double-click crashes on HP
        status: active     severity: 2

     "On the HP 9000/720 only, a double-click in the file widget sometimes
     crashes the application."


424     widgets - file widget:  File widget loses contents
        status: active     severity: 1

     "If a directory is empty and you select it with the file  widget,  the
     'File:' line loses its contents."


391     widgets - GRINS:  GRINS/stereo/MacX crash
        status: active     severity: 4

     "From MacX, invoke  xvmerlin  GRINS  and  draw  and  select  a  chiral
     molecule.   Then  press the GRINS button.  xvmerlin crashes.  (Doesn't
     happen from other terminals.)"


399     widgets - GRINS:  Save-SMARTS dysfunctional.
        status: active     severity: 4

     "A Save-SMARTS-to-file writes a SMILES with wild-cards instead.  Not a
     reasonable behavior, so turn off or make it work and save the SMARTS."


328     widgets - GRINS:  GRINS loses hydrogens.
        status: active     severity: 3

     Enter SMILES C1C=[nH2+]2cccc3c1c23 into  xvthor.   Press  GRINS.   The
     nitrogen has no H's.


310     widgets - GRINS:  GRINS can't read list-style TDTS.
        status: active     severity: 3

     "GRINS can only read dump-style TDTs; when the same TDT with 2D data is
     in list format, no depiction is input, and *no* *error* *message* is
     reported."


443     widgets - GRINS:  xvmerlin/GRINS rejects valid SMARTS.
        status: active     severity: 3

     Enter [Cv3] into the xvmerlin search panel and press the GRINS button:
     it won't be displayed.  Nor can you specify an atom as [Cv3] in GRINS.


332     widgets - GRINS (documentation):  BSTY datatype undefined.
        status: active     severity: 4

     "GRINS writes a datatype BSTY when a chiral structure is saved by the
     ''save'' command.  The datatype is not documented.  Also, if there is no
     SMILES_BOND_NTUPLE normalization, these data could be corrupted in the
     future if/when cansmiles changes, and the order of the bonds changes in a
     USMILES."


386     "widgets - GRINS, xvmerlin":  Search-panel SMARTS are not accepted by GRINS.
        status: active     severity: 4

     "If you specify a SMARTS on the xvmerlin search panel, and press GRINS,
     the SMARTS will not be accepted.  If it is a valid SMILES, the SMILES
     will be depicted.  If not a valid SMILES, no depiction, no error or
     warning."


317     widgets - GRINS, xvthor:  Chiral H's not understood by GRINS.
        status: active     severity: 4

     "If you enter N[C@@H](O)Cl with xvthor, then invoke GRINS, the bond to
     hydrogen is not drawn, and as a result, GRINS won't save the molecule as
     isomeric."


454     widgets - GRINS, xvthor:  GRINS adds charge.
        status: active     severity: 4

     Enter C[N]1=CCCC=C1 into xvthor.  Press GRINS.  A (+) charge is added to
     the N.


376     widgets - TDT:  H-less conformations screwy.
        status: active     severity: 4

     D3D data without hydrogen coordinates are not displayed correctly by the
     TDT widget.


420     widgets - TDT:  Properties (datatypes) don't persist.
        status: active     severity: 3

     "Selecting datatypes for display doesn't persist if a new TDT is
     displayed on the TDT widget.  In addition, datatype-selection should be a
     pre-configurable option."


250     widgets - TDT:  TDT widget gets permanently confused
        status: active     severity: 3

     "The TDT widget sometimes comes up blank (i.e. pure foreground color, no
     text, scrollbar greyed out).  In at least one case, this condition was
     permanent -- no amount of diddling would make it work again.  This
     occured using xvmerlin on spresi93, after doing a search for struc- tures
     similar to C1C(O)C(O)C(O)C1C(O)CCN12.  After generating the hitlist,
     poking around in the hitlist with the Show TDT feature causes the bug to
     show up."


265     widgets - TDT:  TDT widget turns white
        status: active     severity: 3

     "The TDT widget doesn't automatically go to the top of the canvas when a
     new TDT is given to it, sometimes resulting in the scroll position being
     off the bottom of the canvas.  The result is a blank TDT widget.  To see
     this using xvthor, open two databases and select a SMILES which is in
     both, but for which one database has a much longer TDT than the other
     database.  Scroll to the bottom of the longer TDT, then switch to the
     database with the shorter TDT."


231     widgets - TDT:  Show Empty Fields should be default in Add mode
        status: active     severity: 2

     "When you switch to Add mode, the widget should force the Show Empty
     Fields property."


364     widgets - TDT:  Splitting canvas crashes TDT widget
        status: active     severity: 2

     "If you split the canvas of the TDT widget, the depiction does not get
     refreshed.  If you then rejoin the split canvas, close the widget, and
     then reinvoke it, the application bombs wiht an X error, unknown object,
     or some such."


481     xvmerlin:  Read hitlist broken.
        status: active     severity: 4

     "Read hitlist doesn't work; it says 0/0 found for non-unique smiles, and
     0/15 found for unique smiles."


307     xvmerlin:  Merlin search panel truncates SMILES.
        status: active     severity: 4

     The Merlin search panel truncates SMILES longer than 513 characters.


468     xvmerlin:  save state coredump
        status: active     severity: 4

     "When xvmerlin asks for a password to save the state file, if the users
     types it in, then deletes it, xvmerlin will coredump."


475     xvmerlin:  Print-hitlist can't deal with newlines.
        status: active     severity: 4

     Print-hitlist can't handle newlines; the text appears in additional
     columns.  Same problem with save-as-tab and tablet.


488     xvmerlin:  Save state password hangs xvmerlin
        status: active     severity: 3

     "If you have a saved state for xvmerlin, and run xvmerlin in the back-
     ground, xvmerlin blocks waiting for /dev/tty input of the password.  You
     have to put xvmerlin in the foreground and type the password to get it to
     continue.  This means that anyone who runs xvmerlin from a shell script
     can potentially get in trouble.  A workaround is to do 'xterm -e xvmerlin
     &' which will prompt for the password in a new xterm window.  xvmerlin
     *should* prompt for the password in a dialog box."


461     xvmerlin:  Can't set non-SMILES rows from SMILES file.
        status: active     severity: 3

     "It is not possible to turn on all the rows for a given list of smiles,
     if some rows are non-smiles 'breakout' rows.  Example: all supplier-rows
     in ACD from a smiles file."


418     xvmerlin:  Special chars not displayed.
        status: active     severity: 3

     "If a text field contains special character vertical bar, xvmerlin will
     not display it (maybe Merlinserver doesn't load it)."


427     xvmerlin:  xvmerlin confused by killed server.
        status: active     severity: 3

     "If a Merlinserver is killed while xvmerlin has a pool open, xvmerlin
     will be confused.  If a scan is performed, there will be no pool to
     close, though it will seem to remain open."


434     xvmerlin:  Long _V crash.
        status: active     severity: 3

     If _V is long (650 chars) 'delete n/a' crashes xvmerlin.


451     xvmerlin:  Search string disappears
        status: active     severity: 3

     "If you switch from superstructure to substructure or similarity search,
     the smiles in the search panel goes away."


450     xvmerlin:  xvmerlin requires 'thorinfo' user
        status: active     severity: 3

     "xvmerlin uses the 'thorinfo' pseudo-user during the 'Scan for data-
     bases' operation.  This is true even if a full server specification is
     given, e.g. '@host:merlin:user'.  Thus, the 'thorinfo' pseudo-user must
     always be present and have no password when xvmerlin is in use."


232     xvmerlin:  xvmerlin discards path for identical databases
        status: active     severity: 3

     "If two databases have the same name but are in different directories in
     the server's search path, xvmerlin confuses them.  It discards all path
     information regardless of whether or not two databases have the same
     name."


440     xvmerlin:  TDT widget option doesn't work.
        status: active     severity: 3

     "The option TDT_GRAPHICS_PREFS doesn't work for xvmerlin, though it is a
     Thor client and TDT widget user.  Also, it would be nice to have a
     smiles-length threshold for TDT widget depictions, just like xvmerlin's
     MERLIN_DEPICT_MAXSMI."


455     xvmerlin:  Column number limit
        status: active     severity: 3

     MERLIN_COLS_MAXINIT is hard coded to be no greater than 10.  Users
     request more.


414     xvmerlin:  Read hitlist message not enough.
        status: active     severity: 3

     "If you read-hitlist from a SMI file, there is no complaint, though this
     isn't allowed in 4.34 (4.32 yes).  No complaint, but not read either."


394     xvmerlin:  Non-id SMILES not handled well.
        status: active     severity: 3

     Non-id SMILES should be depictable and perhaps searchable.


453     xvmerlin:  MERLIN_DEPICT_MAXSMI=0 doesn't work.
        status: active     severity: 3

     MERLIN_DEPICT_MAXSMI=0 doesn't work (should mean no limit); all are text.


444     xvmerlin:  Full host:server:user spec not handled correctly.
        status: active     severity: 3

     "If you specify a merlinserver with the server panel in the form
     host:merlin:fred, and fred is a registered user and you're not, the
     available pools will appear but cannot be opened due to security."


401     xvmerlin:  Can't pre-specify non-1st field columns.
        status: active     severity: 3

     Option MERLIN_INIT_COLUMNS can only specify first-fields.


311     xvmerlin:  Hit-atom highlighting errors.
        status: active     severity: 3

     "If you search for SMARTS [!dollar-sign(*#*)] on SMILES CC#N, all three
     atoms are highlighted.  (Only the terminal C should be.)  The SMARTS
     search hits the correct SMILES; only the highlighting seems to be wrong."


466     xvmerlin:  Save hits fails.
        status: active     severity: 3

     "If the directory is not writeable, 'save hits as tdt' fails without any
     warning message."


503     xvmerlin:  -MERLIN_INIT_COLS broken in 4.41.
        status: active     severity: 2

     The option -MERLIN_INIT_COLS is broken... only the first datatype is
     used.


486     xvmerlin:  Save file error
        status: active     severity: 2

     "When one tries to write a .tab or .tdt file into an empty directory, the
     directory spec is lost on the File: text input line and any filename
     selected is written in the user's home directory."


334     xvmerlin:  Zooming gets garbage for long text
        status: active     severity: 2

     "Using the Show Text feature on a text item longer than 1000 characters
     produces garbage past the 1000th character. There is a fixed- sized
     buffer in xvmerlin (dy_merlin_zoom.c, line 74) that is the prob- lem."


426     xvmerlin:  xvmerlin rotates drawings
        status: active     severity: 2

     "xvmerlin rotates drawings 90 degrees each time they are redrawn and
     draws over the top of the previous drawing, ultimately resulting in an
     unreadable mess.  The depict widget does this too, but erases before each
     redraw, so you don't notice it as much."


174     xvmerlin:  Merlin keypad disappears with each use
        status: active     severity: 2

     "If xvmerlin is started with -iconic, the keypad sometimes disappears
     each time you use it, making it fairly useless."


261     xvmerlin:  xvmerlin crashes if canvas less than 1 row high
        status: active     severity: 2

     "If you make xvmerlin's canvas very short, then set Lines per row to more
     lines than the canvas has, xvmerlin will crash."


428     xvmerlin:  function on RowID column confuses xvmerlin
        status: active     severity: 2

     "If you try to apply and column-creation function except FIRST to a RowID
     column, you end up with a non-existant column, but xvmerlin still has a
     button up, with all of the menus greyed out.  The Toolkit is not supposed
     to let you apply functions to RowID columns, but xvmerlin doesn't know
     this."


520     xvmerlin:  Small REALs look zero-like.
        status: active     severity: 1

     Small real numbers (<=.00001) are displayed as zero by xvmerlin.


293     xvmerlin:  possible memory leak
        status: active     severity: 1

     xvmerlin may leak memory (its process size may grow) due to column's
     Datatypes pull-right menu not being deallocated as databases are opened
     and closed.


403     xvmerlin - EDGAR:  EDGAR coloration fails
        status: active     severity: 4

     EDGAR fails to modify element colors on canvas.


241     xvpcmodels:  CLOGP freezes
        status: active     severity: 4

     "FC(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)F
     (15 carbons) is handled by CLOGP ok.  However, adding one carbon freezes
     the program:
     FC(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)F."


226     xvpcmodels:  clogp (4.2 or 3.55 or 3.4) ??
        status: active     severity: 1

     "PCModels 4.2 writes clogp output CLOGP355 ... and then in the table,
     v43.4.  Is this ok ? Is it (4.2 or 3.4 or 3.55) ?"


309     xvthor:  Isomeric SMILES handling
        status: active     severity: 4

     "Draw an isomeric SMILES with GRINS.  Press select.  The isomeric info is
     lost.  The structure displayed in xvthor is the non-isomeric SMILES.
     However, if an isomeric SMILES is chosen with the depict widget, the
     SMILES displayed is isomeric."


193     xvthor:  Can't modify or delete SMILES.
        status: active     severity: 3

     "If a SMILES is entered incorrectly, it can't be modified or deleted.  A
     DELETE TDT button is needed!"


369     xvthor:  Can't write SMILES only.
        status: active     severity: 3

     "xvthor can't write a SMILES by itself to a database.  Look up a new
     SMILES (TDT created), then press Save button.  No message, but the TDT is
     not saved.  If other data is added it works."


225     xvthor:  File SMILES #65 is skipped!
        status: active     severity: 3

     "If reading from a SMILES file w/ g.t. 64 SMILES, first 64 appear in the
     Depict widget.  If then the command More from last file is given, #65 is
     skipped."


379     xvthor:  Undefined datatype persists.
        status: active     severity: 3

     "When a new database is opened, the current identifier datatype and datum
     persists, even if the datatype is not defined for the new data- base.
     This causes an error message."


500     xvthor:  TDT widget must show fields to edit.
        status: active     severity: 2

     "With the TDT widget in Modify mode, you still can't see an empty field
     if the default TDT_TEXT_PREFS NOSHOWEMPTY is in force."


263     xvthor:  no error reported for invalid identifiers
        status: active     severity: 2

     "If you try to look up a bad identifier (e.g.  a CAS number with a wrong
     checksum digit, or an invalid SMILES), xvthor doesn't give any error
     message."


189     xvthor:  SMILES warnings keep popping up!
        status: active     severity: 2

     SMILES with unusual valences can't be handled without the error widget
     constantly popping up whenever the SMILES is reinterpreted.  Here is one
     (this is a real structure from the Cambridge crystallographic files):
     CC1=O[Rh]2([CH2]=C32=[CH2][Rh]43(O=C(=[CH]=C(=O4)C)C)C#O)(O=C(=C1)C)C#O


224     xvthor - TDT Widget:  crash on delete SMILES attempt
        status: active     severity: 3

     "If you use the TDT Widget in delete mode, and click on the SMILES,
     xvthor will crash."


======================= 5. RELEASE HISTORY =======================

Daylight releases are numbered using the following scheme:

   The "system number" (e.g. 3.xx, 4.xx) indicates completely different
   systems.  Each system is a complete new design and coding.

   Major releases (e.g. 4.1x, 4.2x, 4.3x) contain new features and
   enhancements.  Often, programs and databases from one major release
   aren't compatible with those from another.

   Minor releases, or "updates" (e.g. 4.32, 4.33) are for bug fixes and
   minor additional features.  They are also occasionally for adding
   new platforms (computers and/or operating-system version).

The first two releases of system 4 were called "4.1" and "4.2"; under the
above-described scheme they would have been called "4.11" and "4.21".
There were two additional releases of the "demo" tape, which would have
been "4.22" and "4.23".  Release 4.24 (October '92) was the first to use
this new version-numbering scheme.


4.1    20 Dec 1991   First 4.x release: SunOS only

4.21   20 Mar 1992   Second release: bug fixes, added SGI platform

4.22   ??            Demo Tape update (applics and toolkits not affected).
                     Updated the demo database: added clustering data to
                     illustrate Daylight's clustering product.

4.23   22 Sep 1992   Demo Tape update (applics and toolkits not affected)
                     Same as 4.22, but added workaround for a bug in the
                     SGI X window system.

4.24   02 Oct 1992   Update: many bug fixes, some added features.

4.25   13 Nov 1992   SGI Toolkit Tape only; corrects incompatibility between
                     versions of SGI IRIX Operating system.  All other 4.24
                     SGI and Sun tapes are unaffected.

4.31   01 May 1993   Added Print Package, Merlin Toolkit.  Many bug fixes
                     and enhancements.  Added support for VAX/VMS (Toolkits,
                     servers, and some non-X-Windows programs).  Added Thor
                     and Merlin management utilities.

4.32   01 Jul 1993   Added Rubicon program and Rubicon Toolkit.  Added
                     support for HPUX on HP9000/7xx series, and for
                     Solaris on Sun machines.  Improved "man" pages and
                     help-widget text files.  A number of minor bug fixes.

4.33   28 Jan 1994   Improved merlinserver, thorserver, and Merlin and
                     Thor Toolkits.  Improved printing.  A number of minor
                     bug fixes.  Restructured & added to "contrib" programs.

4.34   25 Feb 1994   Revamped clustering programs.  Partial molecular
                     fingerprint generation.  Fixed bugs introduced in 4.33.

4.40   Nov 23 1994   Preliminary "beta-test" versions of 4.41.  
4.40b  Feb 12 1995   Preliminary "beta-test" versions of 4.41.  

4.41   Mar 17 1995   Databases of mixtures, "monomer" toolkit (CHUCKLES,
                     CHORTLES, & CHARTS), Program-Object Toolkit, parallel-
                     ized (multi-CPU) version of clustering, MCL.

4.42   Feb 02 1996   HTML Documentation, CGI application programs, record
		     locking, thordestroy(1), Thor/Merlin messages,
		     Thor/Merlin eviction, faster TDT merging, Merlin
		     parallel SMARTS searches, better Merlin performance
		     under heavy load, Merlin program objects.

Back to 4.42 Release Notes.