ChangeLog 1



[08/10/93]    RS    molecule.c
        Solved problem with protein hydrogen bonding, in PDB files
        containing both protein and nucleic acid sequences.

[07/10/93]    RS    outfile.c
        Corrected problem with compressed postscript output using
        "colour" instead of "color" resulting in monochrome output.

[06/10/93]    RS    abstree.c rasmol.c render.c
        Moved #include <stdlib.h> inside the #ifdef IBMPC to avoid
        compilation errors on SUN 386is without stdlib.h!

[05/10/93]    RS    command.c abstree.c
        Added support for negative residue numbers when specifing
        single residue numbers and ranges of residues, and allow the
        use of negative numbers in RasMol conditional expressions.

[05/10/93]    RS    rasmol.c molecule.h
        Altered the main loop of RasMol and the way char arrays are
        initialised in molecule.h to avoid compilation warnings with
        SGI's cc compiler. Thanks to Lachlan Bell (lhb@seqnet.dl..).

[04/10/93]    RS    Makefile Imakefile
        Added a comment to the Makefile to the effect that the Xinput
        library is linked using -lXi instead of -lXinput on SGIs.

[01/10/93]    RS    molecule.c render.c
        Modified bug in molecule.c that only created new groups or
        chains at changes in PDB residue serial numbers. This caused
        ribbon problems on some GAP3.pdb. Thanks to Andrew Coulson.

[29/09/93]    RS    molecule.c
        Changed method for determining hydrogen bond offests for the
        RasMol "colour hbond type" command to not use the residue
        serial numbers found in the PDB file.

[29/09/93]    RS    molecule.c molecule.h render.c
        Recorded breaks in protein backbone caused by large alpha
        carbon separation to avoid drawing ribbon over chain breaks.

[27/09/93]    RS    x11win.c
        Improved the scroll bars to allow the `button' to be dragged
        by moving the mouse whilst a button is depressed.

[27/09/93]    RS    molecule.c
        Added a flag to indicate the source of the current secondary
        structure assignment used by the program, i.e PDB vs DSSP.

[27/09/93]    RS    rasmol.c raswin.c raswin.rc raswin.idm command.c transfor.c
        Replaced "Ball & Wire" with "Ribbons" on the display menu
        and improved the way representations are enabled and disabled.

[24/09/93]    RS    molecule.c tokens.h command.c
        Modified LoadPDBMolecule to read the secondary structure
        assignment records (HELIX and SHEET) and use these as default
        secondary structure assignments when they are present. Added
        the command "structure" to force the use of DSSP definitions.

[24/09/93]    RS    molecule.c
        Optimised Implementation of Kabsch and Sander's algorithm to
        determine beta sheet secondary structures, reducing time to
        analyse GLS2 from over two hours to 7mins on a sun4.

[23/09/93]    RS    abstree.c
        Modified EvaluateProperty to test amino acid properties by
        using an array containing a bitvector of properties for each
        amino acid. This is both faster and easier to maintain.

[23/09/93]    RS    molecule.c command.c tokens.h abstree.c abstree.h
        Completed prototype beta sheet secondary structure
        determination based upon the Kabsch and Sander's algorithm.
        Added the predicate "sheet" for amino acids in ladders.

[23/09/93]    RS    molecule.c molecule.h transfor.c abstree.c
        Added pyrrolidine carboxylic acid and hydroxyproline (and
        ASX and GLX) to the list of recognised amino acids for
        determining hydrogen bonding and structure determination.

[22/09/93]    RS    molecule.c molecule.h tokens.h command.c render.c
        Corrected bug with RasMol that caused proteins with actyl
        N-terminii not to be recognised as amino acid sequences.
        Added the predicate "protein" which is the set "amino" and
        the n-terminal acetic acid. Thanks to Andrew Coulson.

[21/09/93]    RS    transfor.c transfor.h
        Solved remaining problems with huge proteins in RasWin.

[21/09/93]    RS    molecule.c
        Improved the performance of (helix) secondary structure
        determination, by ordering the h-bonds to reduce searching.

[21/09/93]    RS    molecule.c render.c render.h transfor.c command.c
        Modified altered the "Boxing" algorithm used to determine
        bonding to use the Shadow tracing hash table. This both
        reduces memory and dramatically increases performance
        (halving the time to read 2GLS from 43s to 21s on a sun4).

[17/09/93]    RS    molecule.c molecule.h command.c raswin.c
        Solved (some) problems caused by reading in huge proteins
        with more than 32767 atoms and bonds, and larger in diameter
        than can be represented by 16 bit integers.

[17/09/93]    RS    render.c
        Corrected more problems caused by integer overflow and the
        division by zero errors when zooming Ribbon models in RasWin.

[15/09/93]    RS    command.c
        Extended expression syntax to include numbers as primitive
        expressions to specify a given residue sequence number. Hence
        the "select 5,6" is equiavalent to "select resno=5,resno=6"
        and "select 10-20" means "select (resno>=10) and (resno<=20)".

[14/09/93]    RS    render.c
        Corrected problems caused by integer overflow and integral
        type conversion warnings with Spline code when zooming.

[13/09/93]    RS    x11win.c rasmol.h
        Added check to the X Window System MIT shared memory extension
        to test if server is on the same host (bug in XShm?) and hence
        made MITSHM enabled as the default option.

[13/09/93]    RS    render.c pixutils.c pixutils.h
        Completed implementation of ribbons using a MolScript-like
        Hermite spline through Carson's control points. Optimized
        fixed point implementation and improved ribbon clipping.

[12/09/93]    RS    render.c transfor.c transfor.h command.c molecule.h
        Added an optional width parameter to the "ribbons" command
        to allow the user to define ribbon width at each residue
        independently, allowing for example wider ribbons in helix.

[12/09/93]    RS    pixutils.c pixutils.h command.c tokens.h
        Added the command "set strands <number>" to allow the user to
        globally modify the number strands in ribbon representations.

[29/08/93]    RS    pixutils.c render.c command.c tokens.h transfor.c
        Added prototype support for the RasMol ribbon representation
        based on a fixed number of straight strands through Carson's
        control points (peptide plane miday between alpha carbons).

[26/08/93]    RS    raswin.c rasmol.c command.c
        Changed the default colour scheme to CPK.

[26/08/93]    RS    molecule.c
        Added support for saving the currently selected atoms and
        their connectivity information in an alchemy format file.

[26/08/93]    RS    x11win.c
        Increased the minimum width of the screen to avoid bug in
        the X Scroll bar range checking and limit XRange to word
        boundaries to solve shared memory bug on some machines.

[25/08/93]    RS    transfor.c
        Changed type of OrigCX, OrigCY and OrigCZ to type Long to
        prevent RasWin crashing when loading PDB files centered a
        long way from the co-ordinate origin.

[25/08/93]    RS    x11win.c
        Improved code for using MIT's shared memory extension. The
        code now uses the XShmCreateImage call and destroys the shmid
        to ensure that the shared memory is reclaimed when RasMol is
        terminated. Thanks to Andre Beck.

[24/08/93]    RS    abstree.c
        Extended the syntax of primitive atom expressions to allow
        the user to select residues (groups) whose names contain non
        alphabetic characters, such as digits. Hence the new syntax
        allows expressions of the form [SO4]20 and [+U]*P

[24/08/93]    RS    molecule.c molecule.h render.c transfor.c abstree.c
        Added code to determine hydrogen bonding between nucleic
        acid residues in distrinct chains. Modified "set hbond
        backbone" code, to only draw a single bond between sugar
        phosphate backbones for each pair of nucleotides.

[23/08/93]    RS    transfor.c
        Modified the way in which ScaleColourAttrib tries to allocate
        the colour map. Now if there are no free shades, it attempts
        to allocate as many close matches as possible.

[23/08/93]    RS    x11win.c
        Improved the XInput extensions dials box handling code, to
        explicitly check the number of Dials and LEDs present. This
        avoids problems on some SGI dials boxes. Thanks to Nick Blom.

[20/08/93]    RS    molecule.c molecule.h
        Added a backbone representation for nucleic acid structures
        by connecting sugar phosphate P atoms of consecutive residues.

[20/08/93]    RS    command.c
        Fixed bug caused by "UpdateScrollBars" being called by the
        `rotate' command, even when not running interactively.

[20/08/93]    RS    molecule.c molecule.h tokens.h command.c abstree.c
        Added complete code for Kabsch and Sander secondary structure
        determination of alpha helices. Added predefined set "HELIX"
        that contains all atoms contained in a alpha helix structure.

[19/08/93]    RS    command.c
        Fixed bug in LoadScriptFile that assumed that it was being
        called after parsing a command line, causing RasMol to crash
        SGI machines that had ".rasmolrc" initialisation files. Thanks
        to Peter Murray-Rust and special thanks to Tom Smith!

[19/08/93]    RS    transfor.c command.c
        The restrict command (and hydrogen/hetero menu options) now
        removes bonds connected to any removed atom ignoring the
        bondmode setting. Isabelle Phan (

[19/08/93]    RS    raswin.c
        Added Alchemy file type to the RasWin FileOpen dialog box.

[19/08/93]    RS    molecule.c
        Imposed maximum backbone bond length of 7.00 Angstroms.

[18/08/93]    RS    rasmol.c raswin.c
        Modified the actions performed by ReDrawFlag when no
        molecule is loaded. This allows the background colour
        to be changed before loading a molecule.

[18/08/93]    RS    x11win.c
        Corrected a memory deallocation problem, caused by the
        XDestroyImage freeing the current frame buffer. This has
        caused numerous untracable errors in previous versions.

[18/08/93]    RS    abstree.c molecule.c
        Added support for IUPAC hydrogen names "1H", "2H" etc...

[10/08/93]    RS    command.c transfor.c transfor.h molecule.c molecule.h
        Added the "colour hbond type" command to enable hydrogen
        bonds to be drawn in colours associated with their offsets.

[09/08/93]    RS    abstree.c abstree.h command.c tokens.h
        Completely reorganised the classification of amino acids into
        predefined sets. Added sets for "surface" and "buried", for
        "small", "medium" and "large" and synonyms "positive" and
        "negative" for "acidic" and "basic", the "charged" sets.

[05/08/93]    RS    molecule.c molecule.h command.c tokens.h
        Added support for reading in Alchemy format data files, as
        used by the popular PC and Mac program. Thanks to Steve Ludtke.

[05/08/93]    RS    rasmol.c raswin.c x11win.c mswin31.c command.c
        Changed default value of ReDrawFlag to initially be zero
        until the molecule is loaded. This corrects bug when the
        dispatcher doesn't check stdin when no molecule loaded.

[03/08/93]    RS    raswin.c mswin31.c
        Added Print option to the RasWin file menu to allow the
        current image to be printed out using the MS Windows
        printer drivers. Tested for Mono & Colour PostScript.

[03/08/93]    RS    abstree.c
        Changed definition of the sets "hydrophobic" and "polar".
        Glycine (GLY) is now considered a polar amino acid residue.

[03/08/93]    RS    rasmol.c x11win.c
        Improved dispatch of pending X11 events [RasMol now processes
        all X Events until quiescent]. Holding down scroll bar arrow
        spins until mouse button released. Fixed server colour search
        bug when not running interactively. Thanks to Doug Phillips.

[03/08/93]    RS    molecule.c
        Modified the order in which molecules are internally stored
        so saving PDB files preserves the correct atom ordering. Also
        solved output chirality problems when INVERT is defined.

[03/08/93]    RS    outfile.c
        Fixed bugs and improved performance of writing output files
        under MS Windows caused by rounding when INVERT is defined.

[29/07/93]    RS    outfile.c
        Fixed bug when generating 24bit Run Length Encoded sun
        rasterfile format images, thanks to Doug Phillips. Fixed
        Monochrome RLE PostScript bug, thanks to Andrew Coulson. Also
        changed "64 idiv" to "-6 bitshift" to speed up PostScript.

[28/07/93]    RS    outfile.c outfile.h command.c rasmol.c raswin.c
        Modified the PostScript output routines to include a run
        length encoding (RLE) compression option (as default). This
        has significantly reduced the size of output files from
        several megabytes to a few hundred kilobytes per image.

[27/07/93]    RS    tokens.h command.c molecule.c molecule.h
        Added functions to write out currently selected atoms to a
        PDB file as viewed from the current rotation matrix. This
        command doesn't output CONNECT, SSBOND or MASTER records
        yet. May also add HELIX, TURN and SHEET records in future.

[27/07/93]    RS    mswin31.c
        Corrected bug that resulted in the PixMap image of a molecule
        persisting (being redrawn after expose events) after the
        molecule has been `closed' or `zapped!'.

[26/07/93]    RS    !Defined macro "Long" in rasmol.h to be the 32bit
        integer type on the current architecture. This should be
        defined as long on all architectures except the 64bit
        DEC Alpha.

[23/07/93]    RS    Imakefile
        Created Imakefile to allow easy compilation on local machines
        using the `xmkmf' command to generate Makefiles with the
        appropriate parameters.

[21/07/93]    RS    bitmaps.h graphics.h transfor.c
        Corrected compilation warnings generated by the Solaris v2.0
        C Compiler due to default signed chars and ANSI C division.

[08/07/93]    RS    command.c tokens.h
        Changed the way keywords are identified from searching a table
        of binary search trees ordered by frequency, to binary search
        of an initialised array by token length. This should reduce
        both memory and processing time.

[08/07/93]    RS    abstree.h
        Altered the syntax of primitive atom expressions to provide
        better support for numeric chain identifiers using optional
        colon before chain. CYS11:1 can be distinguished from CYS111!

[03/07/93]    RS    rasmol.h raswin.c rasmol.c render.c molecule.c
        Added support for Dynamic Data Exchange (DDE) of RasMol
        parameters and valuation data under MS Windows 3.1.

[02/07/93]    RS    molecule.c
        Corrected a typographical error resulting in molecules being
        drawn back to front. This produced images of molecules with
        the wrong chirality. Thanks to Pedro Coutinho and Tom Smith.

[01/07/93]    RS    command.c molecule.c
        Solved problems when reading in PDB files that contain no
        atoms such as the documentation files cpk.pdb and shapely.pdb.
        This allows colour masks to be stored in a separate PDB file
        and preloaded before the main molecule. Thanks to Bob Strunz.

[01/07/93]    RS    graphics.h x11win.c
        Added much better support for 24bit and 32bit XVisual display
        types. This now permits the 8bit RasMol to run find an
        appropriate visual on 24bit and 32bit screens. This solves
        problems with obscure default visuals. Special thanks to
        Jenny Barna.

[30/06/93]    RS    command.c abstree.c abstree.c
        Implemented the "WITHIN" function in atom expressions. This
        selects all atoms within a specified radius of a given set
        of atoms (defined by an atom expression). This even permits
        the WITHIN command to be used recursively.

[29/06/93]    RS    x11win.c
        Improved the local colour map support for 8bit displays. The
        program no detects if the entire global colour map is already
        allocated and forces the use of a local colour map. This gets
        around the problems of black on black menu bottons and scroll

[27/06/93]    RS    command.c transfor.c transfor.h
        Implemented the "colour [atom] amino" command that colours
        amino acid residues by their properties. These colours are
        more intuitive (conventional) than shapely colours and better
        for a range of displays. Thanks to Andrew Coulson.

[27/06/93]    RS    molecule.c transfor.c abstree.h abstree.c
        Added much better support for a wide variety of element
        types by introducing element handles. Van der Waals radii
        and CPK colours are now maintained for a much larger number
        of atom types.

[27/06/93]    RS    command.c render.c render.h transfor.c transfor.h
        Implemented the "ssbond <value>" and "hbond <value>" commands
        to represent hydrogen bonds and disulphide bridges as thick
        cylinders as well as dashed vectors. Significantly altered
        the dynamics of RasMol by making backbone, hbond and ssbond
        selection lazy. All these modes always clip vectors and
        cylinders. This'll speed up transformation and selection.

[27/06/93]    RS    rasmol.c raswin.c abstree.c abstree.h
        Added predicates for "aliphatic" and "aromatic" predefined
        sets. Separated expression handling from molecule.c

[27/06/93]    RS    command.c graphics.h x11win.c mswin31.c
        Added the "hourglass" variable to rasmol, that enables and
        disables the use of the hou glass cursor whilst RasMol is
        busy drawing and image. This was infuriating during DDE.

[27/06/93]    RS    render.c pixutils.c
        Implemented the section slabmode to draw only a two a cross
        section on the current clipping plane. Modified the atom
        picking to accept this mode, and fixed a minor bug in the
        "half" and "solid" slabmodes for drawing and picking. Removed
        clipping code from the shadowing scanline routine.

[24/06/93]    RS    outfile.c
        Corrected problem when outputing postscript files. A rounding
        error when shrinking a picture to fit a page resulted in an
        axis being scaled by zero. Thanks to Ian Morrison.

[23/06/93]    RS    !RasMol and RasWin added to the EMBL file server and
        anonymous FTP server in Heidelberg, in the directories
        /pub/software/dos and /pub/software/unix of

[22/06/93]    RS    x11win.c
        Fixed problem in selecting the required visual class that
        caused RasMol to crash when running the OpenWin3 server.

[22/06/93]    RS    rasmol.h
        Added warning messages to the RasMol banner to describe
        current visual depth and if not displaying interactively.

[21/06/93]    RS    molecule.h molecule.c
        Added short radius and irad fields to HBond structure
        to allow for `thick' hydrogen and disulphide bonds.

[21/06/93]    RS    pixutils.c command.c render.c outfile.c
        Ensured all function prototypes were surrounded by #if
        defined(__STDC__) || defined(IBMPC) to avoid errors with
        non ANSI C compilers and MS DOS compilers.

[20/06/93]    RS    Makefile
        Added the "-systype bsd43" and "-signed" options to the mips
        entry for sysv and bsd43 domains E&S ESV workstations thanks
        to Andy Sheppard (

[18/06/93]    RS    !RasMol version 2.1 added to the Frequently Asked
        Questions (FAQ) list of in the section on
        molecular visualization stuff. A RasMol entry ias also
        added to the molecular graphics menu of the John Hopkins
        University Medical Library Gopher system.

[18/06/93]    RS    !Announced first public release of RasMol and RasWin
        version 2.1, available by anonymous FTP from
        [] in the directory /pub/rasmol. The announcement
        was made in both and newsgroups.