All the display objects decribed above are depth shaded to black, i.e. the further form the viewer the darker that object, or part of the object. The dynamic range of this shading is user definable and is relative to the object or part of the object closest to the viewer. Note that the range can be independently altered for each display form. GRASP also incorporates clipping planes which may be set statically to the origin of the viewing frame, or dynamically to some set of atoms or vertices. Translucency is also provided for all display objects for which it is appropriate (e.g. surface, spherical atoms, worms, etc.). User control over many physical characteristics of display forms is also provided, e.g. width of worms, bonds, resolution of atom spheres, length of field vectors, line thickness of line contours etc.
Colors can be assigned to display objects as discrete or continuous sets. For instance, the simplest example is that of atom representations. Once atoms have some associated scalar property, e.g. potential, one can set up a color scheme to encode this property within the display color. For instance, all atoms with potentials less than some negative value are colored red, from that value to zero the color is linearly ramped from red to white, and then from white to blue for some positive value. All three values and colors are user alterable. Discrete color sets are assigned by selecting the set of atoms within some potential range and assigning a particular color index to that set via a typed command. The color index points to one of ninety nine possible colors, each of which may be altered via a color palette tool. Note that in GRASP an assigned color index becomes an object property, distinct from the displayed color, i.e. an atom which is assigned yellow, typically color index seven, may not appear yellow if a red-white-blue continuous color scheme is current active for atom objects.
As indicated above for atoms, objects can be "selected" based upon their properties, in this case potential, for certain "actions", in this case assignment of color. GRASP supports selection by a wide range of properties, which may be concatenated to form increasingly more highly resolved subsets, i.e. one may select using the Boolean operator AND against many properties simultaneously. The list of such properties for atoms includes atom name, residue name, residue number, chain name, atom and molecule number, absolute and relative position, distance to another set of atoms, potential, charge, radius, solvent accessibility, two derived or externally generated scalar fields, assigned color index and formal subset name (see later). Scalar quantities can be entered as an equality, a conditional or a range. So, for example, we could select all lysine atoms with a positive potential, which are solvent inaccessible.
There is a similar list of properties for surface vertices, and for most other display forms via property inheritence. Note that once a color index is assigned to an atom it becomes a property of that atom. This is useful in building up more complicated selection operations. Examples of operations other than coloring for atoms includes selecting the set of atoms to surface, to calculate the exposed area of, to list to the screen, to export to a file, to associate with a "formal" subset name, to generate ellipsoidal representations etc. Note to select a subset of objects to be hidden from view GRASP uses the convention that the assigned color index is set to zero. This also allows the state of visual display to be used as a selection property since assigned color may be used for such a purpose.
In general GRASP does not allow forms of objects to be mixed within a view, i.e. one can not have atoms as spheres and flat circles at the same time. This was partly aethetical, and partly a coding decision. There are exceptions to this rule, for instance it is possible to mix different display forms of surfaces i.e. have part of a surface translucent and part solid. There is also the facility to generate split-screen views within GRASP, i.e. views are duplicated and split apart on the screen. Left and right view forms may then be altered independently. This can be particularly useful in comparing distributions of of different properties. Also, by moving the left and right views independently one can generate stereo pairs (GRASP also supports the CrystalEyes Stereo View system).
There are extensive features for the manipulation of data structures, i.e. one can perform simple arithmetic on fields. For instance one can calculate averages of properties for sets of atoms or vertices. One can also create new property fields through manipulation of current fields. For example one could multiply the potential at each atom by the charge at each atom to generate an "energy" field. GRASP provides two generic data fields for vertices and atoms for this purpose. Arithmetic operations on potential maps is also supported.
GRASP includes several surface specific operations which include surface inversion, local smoothing, connectivity analysis and the calculation area, volume, distances and of local accessibility. This latter quantity was developed by the author as part of a recent effort to recast hydrophobicity as microscopic surface tension. A brief synopsis of the work is that a water molecule brought up to an oil/water interface is deprived contact with other water molecules and that this energy penalty is synonymous with surface tension. When the "oil" at the interface is not macroscopic but microscopic, i.e. an organic molecule, then the "interface" is on average convex, i.e. less water contact is lost for each surface water. Hence the accessible area of a water probe up against a molecule (and hence defining part of the molecule surface) is thus taken as a measure of that non-aqueous contact. Accessibilities greater than 50% (planar) occur at convex parts of the surface, while concave portions, or closely spaced convex regions are subplanar. Because of the strong coupling between curvature and probe accessibility the two will be used interchangably later in this paper.
GRASP also contains standard algorithms for superposition of two sets of atom based upon minimal r.m.s. deviation. Ancillary to this is the facility to calculate "consensus" volumes, i.e. to generate maps of where two or more molecules overlap. Isovolumetric contours can then illustrate this volume and estimate its area and volume.
Images from GRASP can be saved as rgb (SGI format) files. While GRASP does many text features currently, it is assumed users have access to such programs as "showcase" from SGI to add such if desired. GRASP provides several features to aid in picture construction, in addition to obvious (but often overlooked) operations such as displaying all objects at their highest resolution setting. It provides antialiasing for lines and also multipass antialiasing for polygons, i.e. rendered surfaces or atoms. Also GRASP allows the user to switch to single buffer mode to obtain the maximum color definition allowed by the hardware (in normal "animated" mode only half the display buffer is actually used for drawing so that the construction of the image can be done in the back, unseen, half of the buffer and then swapped seemlessly to the front, displayed, half. However, with the exception of high end, double buffered, graphical engines this reduces the available color set significantly).
Although written in FORTRAN the program has a dynamic memory space and hence is only limited in the size of the data sets it can analyze by available swop space. It also supports an external history record which can be used to replay sessions. This file is ascii and readable and is also intended for the proficient user to encapsulate functionality into external macros. This can also be done at run time from within the program, i.e. sequences of operations can be stored and recalled as a user declared menu function. These macros or history files can also operate GRASP in a nongraphical mode, and hence can allow the user to apply GRASP derived functionality to analyse large databases of structures noninteractively. Finally GRASP also allows "state" saves wherein all internal variables are dumped to file for later resurrection or analysis.