A.9 Pair-Wise Interaction
(Matrix) Energy File
1 -
Introduction (By Anthony Nicholls)
Grasp came about because I wanted to
visualize electrostatic potentials at surfaces, in particular the
surface of biological molecules. Barry Honig's lab is well known for
the program DelPhi which calculates electrostatic potentials from the
PoissonBoltzmann equation, and has the led the way in applying
this equation in structural biology. The program can be used to get
productive quantitative numbers for a variety of biochemical phenomena
but qualitative visualization had been limited to isopotential
contouring, typically with a program such as Insight from Biosym
Technologies. The limitation of such an approach is that such contours
do not capture local topology or shape. They often extend significant
distances away from the molecule while one would expect most of the
'action' to be close to the molecule, in fact at the surface of
molecules. So I decided it was time to attempt a graphics program which
emphasizes surfaces and electrostatics.
I would not have been so confident in
starting this project had it not been for considerable groundwork laid
by others, in particular Kim Sharp. He and Mike Gilson had devised a
novel algorithm some years ago for calculating the molecular volume
(i.e. water inaccessible volume) using a cubic lattice. This method,
though not efficient when the lattice spacing is small relative to
atomic radii, can be made rapid at lower resolution. Given the
molecular volume, Kim had also reinvented a technique commonly known as
the "Marching Cubes" algorithm to produce a surface
tessellation. Putting these together in an optimized form produced a
rough and ready surface description which could be easily visualized on
a Silicon Graphics Iris (SGI) computer. The potentials at surface
points could then be interpolated from the 3D map produced by
Delphi and color coded to indicate the result.
The initial results were surprisingly good,
both in terms of aesthetics and usefulness. The large difference in
dielectric between water and the interior of proteins modeled by DelPhi
means that local electrostatic effects can dominate global ones. So,
for instance, an active site can be negative even when the protein
total net charge is very positive. This is seldom seen if Coulomb's Law
is used to calculate potentials because of the long range nature of
(1/r). Grasp was immediately able to display this consequence of
electrostatic screening, for instance showing the deeply negative
binding site of the catalytic magnesium of RNAse H, crystallized
without that ion by Yang and Hendrickson.
So it was clear that this approach held some
merit. The combination of surface shape and electrostatic potential was
synergistic. Moreover I began to see that just having a rapid surfacing
and visualization algorithm was useful. For instance it was simple
using surface connectivity to display only the internal cavities of
proteins. Here the initial use was the bacteriorhodopsin structure of
Henderson which has numerous "holes" surrounding the retinal
moiety.
It was also instructive to
"project" properties of the underlying atoms onto the surface
and color code them, an example being the B values normally
accompanying crystallographic structures. So I began to see the surface
itself as useful construct, regardless of electrostatics. This became a
central tenet of Grasp, that surfaces and atoms should be treated with
equal importance.
There was still a need for other
electrostatic representations, such as isopotential contours,
projection planes, field lines, etc. Also, since typical use of the
program was visualization of large molecules with thousands of atoms, I
devised a simple representation for those atoms that was fast to
display and could be colored by property. This led to other
representations of atoms and groups of atoms.
The program grew beyond my initial plans.
Hopefully, however, the program maintains a coherent philosophy. For
instance the use of surfaces both for displaying properties and as
objects in their own right, the visualization of electrostatic
properties, and more lately the generalization of the idea of an object
representing both a set of atoms (as the surface does) and a property
(such as electrostatic potential). An example of the latter is the DNA
representational project of Rex Bharadwaj. Here DNA bases can be
represented as elongated boxes whose width can represent a property
associated with that base, such as base twisting, sliding or rolling.
The program has achieved most of the goals I
had concerning the development of these ideas. Of course in their
actualization they have spawned many more. But hopefully the present
version is at least complete enough to be useful.
Comments as always are much appreciated.
Anthony Nicholls
October 1992
2 - Features
Grasp uses a perspective-based view, which
means things farther away from the eye are smaller. To enlarge a view,
one simply moves it closer to the eye. Manipulations are by mouse or by
dials. Molecules are mapped to a "unit box" which can be
displayed with the front side removed. There are also embedded
crosshairs to remind the user of any rotations and translations
they have applied. The default clipping planes are very close to the
"eye" position and very far away. These can be altered via a
slice control tool (section xxx). The background is either black or
that produced by the unit box. The default window size may be changed
in the usual window resizing manner. There is also a fullscreen option
where the entire screen is used by the display. All functions are
accessed by hierarchical menus via the right mouse button, or via the
command line (section 5). Commands may also be read in from a script
file (section A.7). All display objects (surfaces, atoms etc.) are
independent - they can all appear at the same time or be individually
hidden from view.
2.1 -
Subsetting
A central feature of Grasp is the ability to
specify a subset of atoms, surface vertices, bonds, objects, etc.,
based upon a very wide range of properties.
The first method of selecting a subset is by
typing property subsetting codes on the command line or in response to
a menu query. Properties which can be used for atoms are atom name,
atom number, residue name, residue number, residue projection, chain
name, charge, radius, potential, original coordinates, screen
coordinates, general properties 1 and 2 (which can be assigned any
number desired), molecule number, accessible area, distance, formal
subset name, and discrete atom color. Properties for surfaces are
potential, original coordinates, screen coordinates, general properties
1 and 2, distance, formal subset name, surface number, curvature,
vertex number, and discrete vertex color. There is a deliberate
similarity between these two lists based on the program philosophy of
equality between surfaces and atoms.
The general property fields can be used in a
variety of ways. For instance any atom property can be mapped to a
surface and stored (and hence displayed) as general property 1 or 2. Or
the user can produce a new quantity out of others by the simple
property mathematics utility. Or properties can be imported.
Variables are either characters or numbers.
The latter may be specified as ranges, for instance one can select all
atoms which have a residue number between 5 and 10 or a charge greater
than zero. Character variables (except formal subset names) may include
wild cards, so one can select all carbon atoms or all carbon atoms
which have the character "1" in the third position of the
atom name. There are also short cut names for atoms in a protein
backbone or in side chains, and for residues which are ionizable,
hydrophobic or hydrophilic. All specifications can also be negated, so
that one can select all atoms that are NOT carbon atoms.
The purpose of subsetting depends upon the
context. One of the simplest uses is to alter the display color of a
subset. For instance, one might want to employ a color scheme which
displays all positively charged atoms one color and all negatively
charged atoms another, or all hydrophobic residues yellow and all
hydrophilic purple, etc. Colors are specified by the index number
(099) assigned to each color in Grasp.
Another use of subsetting is creating a
formal subset. Formal subsets are assigned names, either by the
program, in which case a hierarchical naming convention is used, or by
the user. Formal subsets may be spatially manipulated independently of
the rest of the surfaces/atoms. They can also be referred to by name in
all subsequent operations. Formal subsets may be sets of atoms or
portions or collections of surfaces, or may have mixed character - a
surface may be associated with a set of atoms, or a set of atoms
associated with a surface. For instance, as well as selecting an active
site surface one might want to associate all atoms which are in contact
with that surface.
Most other subsetting uses depend on the
action being undertaken. For instance, when the surfacing subprogram is
activated the user has the option to enter a subset of atoms. One could
surface a single helix in a protein.
Most subsetting codes are exclusively AND
based - subsetting by progressive refinement based upon properties. The
reason for this is that one of the most useful applications of Grasp is
using it to look for correlation. So one might want find all residues
which are a certain distance from the molecular surface AND charged.
The second method of selecting a subset is
"scribing" the surface. This is under menu control and allows
the user to "draw" upon a surface the border of a region of
interest with the mouse cursor in much the same way in which one might
with a Macintoshlike draw program.
2.2 - Color
Coding
Grasp supports two different modes of color
coding.
The first color coding mode, 3 color
continuous, requires three numerical values, called "control"
values, along with three colors, one color per value (colors are
defined by RGB triplets, or by an index into a list of colors). Color
coding is then implemented as follows: If a number is less than the
minimum of the three control values it is assigned the color associated
with that minimum value. If it is greater than the maximum value it is
assigned that value's color. If it is between the minimum and middle
values the assigned color is found by linearly interpolating between
the minimum and middle colors, and if it is between the middle and
maximum values by linearly interpolating between the middle and maximum
colors. By linearly interpolating is meant the following: Colors are
made up of red, green and blue components, each component having a
strength of 0.0 to 1.0. If a number is, for example, halfway between
one value and another, then its interpolated color is similarly halfway
between the two colors assigned to those values, i.e. its red, blue and
green components are half those of one color and half of the other.
Grasp also supports 2 color continuous mode
which is equivalent to 3 color continuous mode but with the middle
value and color set to be the same as that of the minimum value and
color.
Continuous color maximum, minimum and middle
values may also be adjusted via a mouse activated widget. This is
useful in rescaling the color code to bring out particular features on
the fly. Independent widgets appear for each continuous property
displayed. These also offer access to other features via drop-down
menus.
The second color coding mode is zonal
coloring, wherein a certain range of values is assigned a certain
color. The color boundaries between different zones are sharp. This is
also referred to as discrete coloring. Default colors are provided for
all properties - for electrostatic potentials they are red, white and
blue, with red for the minimum value (typically negative), white at
zero, and blue for the maximum value (typically positive). However
these colors may be also set by the user. Default maximum and minimum
control values are taken as the maximum and minimum values of the
property being represented (surface potential, atom distances, etc).
The middle value is set to zero unless the maximum and minimum are both
greater than or less than zero, in which case it is set to the average
of those two values. These control values can also be explicitly
altered.
2.3 - Surfaces
Grasp supports two types of surfaces,
molecular and accessible. The molecular surface is defined as the
boundary of that volume within any probe sphere (meant to represent a
water molecule) of given radius sharing no volume with the hard sphere
atoms which make up the molecule. The accessible surface can be defined
as the locus of the centers of all possible such probes described above
in contact with the hard sphere atoms. Alternatively it can be defined
as the hard sphere surface if each atomic radius is increased by the
probe radius. The default probe radius for each type of surface is 1.4
Angstroms. This can be changed by the user.
Everything which can be done with molecular
surfaces can be done with accessible surfaces. Therefore except where
differentiated they will both be referred to as molecular surfaces. The
surfacing resolution, the lattice spacing used to generate the surface,
is determined automatically. The lattice spacing used in the process is
scaled relative to the largest dimension of the molecule, hence coarser
lattices are used for larger molecules. This scaling has the advantage
that the surface of very large molecules can be as easy to manipulate
as that of small molecules. Though the surface of larger molecules will
then be less accurate, one is often interested in coarser features of
such molecules.
If the molecule has only a few atoms, this
method can lead to a lattice spacing at which the method Grasp uses is
inefficient, hence there is a minimum allowed lattice spacing. This
parameter can be set by the user to force use of a coarser grid (as
might be preferred to improve draw speed or to overcome memory
limitations).
Surfaces can be constructed for all atoms or
for subsets of atoms. The process takes a few seconds at most and
results in a smooth tessellation of the surface which is colored white
but shaded by the SGI lighting routines. This can be quite slow on some
machines as there may typically be 20,000 triangles. To enhance drawing
speed there are three other draw modes. The first is a rendered surface
(the triangles are filled in) but the lighting calculations are
simplified (pseudolit) and done in software rather than by using
the SGI hardware calls. The second is a mesh representation, where the
triangles are not filled in. The third is a pointsonly
representation. The default surface produced by the program can be
preset in the .init_Grasp file (see appendix B).
All displays of surfaces (and also contours,
atoms and bonds) are depth shaded. This means that the farther away a
part of the surface the darker the color. Its color is interpolated to
black based on the distance from the viewer. Grasp uses a dynamic depth
range, where the front edge, where interpolation begins, is determined
by the nearest point on the structure to the viewer, and the back edge,
the depth at which the color is set to black, is a fixed distance
behind this point. Depth cueing makes a dramatic difference to the mesh
representation, and to a lesser extent to other representations. Depth
cueing parameters can be set by the user.
For the lit and pseudolit surfaces the
direction of the incident light may be changed. Other material
properties of the surface such as reflectivity, transparency, etc., are
not currently userconfigurable.
Surfaces are colored by assigning colors to
each vertex. This can be done according to any value associated with
that vertex. Alternatively, surfaces can be colored by selecting a
subset and assigning a discrete color. There are many ways of selecting
a surface subset based on vertex properties, associated atom
properties, or by scribing. Any surface or subset can be
"uncolored" i.e. undisplayed. Hence one can remove portions
of surfaces to create "windows" into the underlying molecule.
Any surface property can be interrogated using the mouse buttons -
placing the mouse at any given point and clicking returns a value or
values associated with the nearest surface vertex. Which property
values are returned, and by which mouse button, can be set by the user.
Surface properties can be classified as
those which can be used for subsetting and displayed, and those which
can be used for subsetting but not displayed. Surface properties which
can be displayed are generally calculated within the program and
include electrostatic potential, curvature, distance (to another
surface or set of atoms), and the two general property fields. The
general property fields can be assigned other property values to make
possible the display of properties which would otherwise be
undisplayable. Surface properties which cannot be displayed are
original coordinates, screen coordinates, discrete vertex color,
surface number, formal subset name, and vertex number.
Surface potentials are interpolated from
potential maps. Distances as a surface property are calculated either
from another surface or surface subset, or from a set of atoms, and in
each case are the minimum such distances. Curvature is as defined in
Nicholls et al and is derived from a concept of local hydrophobicity.
Briefly, each possible placement of a water "sphere" against
the surface of the molecule reduces the accessibility of that water to
other waters. Against a concave surface this accessibility is less than
against a convex surface, and a formal correspondence can be made
between contact to an arbitrarily complicated surface to contact with a
sphere of a certain curvature. Curvature thus defined is a property of
the accessible surface, but can be uniquely mapped to the molecular
surface. When color coded it reinforces the effect of SGI lighting in
that surface hollows are made distinct from surface projections, and so
is useful in visualizing patterns of surface shape.
Surface data (which means vertex
coordinates, connections, and normals), and any properties, calculated
or assigned, of any surface or subset of surfaces can be written to a
data file. These data files can be read in during program execution or
at startup. Surface data can be appended to other files to make surface
"libraries". Since subsets of surfaces can be saved one
could, for instance, make a library of the surfaces of the active sites
of different enzymes.
The property data of a surface or subset can
also be saved as an ascii file for analysis, or for temporary storage.
This file can also be read back in as a user-generated function mapped
to a particular surface.
Surfaces or subsets of surfaces can have
their surface normals inverted. In this way one can look at molecules
from the inside. One can also do likewithlike comparisons
of two surfaces which might form complexes by inverting one surface of
the pair. Surface properties can also be inverted, for instance
positive turned to negative and vice versa through the simple property
mathematics utility.
Along with cavity surfaces (which can be
thought of as a surface subset) and contour surfaces, one can calculate
the area of any molecular surface or subset of a molecular surface, and
similarly the volume enclosed (noting that the volume is not meaningful
if the surface is not closed). The surface area for an accessible
surface gives a measure which has often been associated with
hydrophobicity, since it is related to the number of water molecules in
contact with the molecule. Grasp also has a more accurate surface area
subroutine for atom by atom accessible area.
Any surface or subset can also be attached
to the rotation and translation dials alone. This creation of a formal
subset can then be manipulated independently. This allows for parts of
surfaces to be removed, compared, docked, etc.
2.4 -
Electrostatics
Grasp includes a PoissonBoltzmann (PB)
solver which is a similar but simpler version of that used by DelPhi.
The fields calculated by it are for qualitative use only. For
quantitative use there is full support for the output from DelPhi, in
terms of potential maps, dielectric maps, modified pdb files, charge
files, size files, etc. Grasp does not yet contain an interface to
DelPhi, hence that program has to be run separately.
The Grasp PB solver uses two 33 cubed grids,
one nested within the other. The inner grid dimension is set to be
larger, by the diameter of one water molecule, than the maximum x, y or
z dimension of the collection of atoms used in the calculation. The
second grid is twice the size of the first, with the same center. The
potentials on the outer grid are solved for first, then interpolated
and refined further on the inner grid. Potentials are then interpolated
to a 65 cubed grid the same size as the outer grid. This final grid, or
"map" as it is referred to, is then used in all subsequent
calculations. It may also be written out in DelPhi form.
Although there is no choice in the sizing of
these grids, the user has control of the inner and outer dielectric
constants, the probe radius used to determine water inaccessibility,
the salt concentration, and the ion exclusion radius. There is no
support for the nonlinear equation, for periodic boundary conditions,
membrane slabs and holes, or any other DelPhi features.
Once a map is calculated, it can be
evaluated in several ways. Isopotential (also referred to as
"through space") contours may be calculated at any value,
given any color, and displayed as solid surfaces, meshes or points.
Potentials may be interpolated at any molecular surface, and at any set
of atoms (trilinear interpolation is used throughout). The electric
fields may be calculated at a set of points and represented in
magnitude and direction as three dimensional arrows. Molecular dipoles
may be calculated and similarly displayed. Field lines can be
calculated from a set of points, colored and displayed in 1D or
3D (lines or tubes). The potential may also be interpolated at a
slice plane perpendicular to the Z direction (parallel with the
screen). This latter display is updated as the map/molecule is moved,
or alternatively as the position of the slice plane is altered.
Values at surfaces and atoms may be colored
by 2 or 3 color continuous or by discrete colors. The Z plane will only
show the former. Field vectors may have their magnitude encoded in
their length. Field lines can be assigned directionality and color when
calculated.
2.5 -
Distance Calculations
Grasp will calculate minimal distances from
surfaces to surfaces, from surfaces to atoms, from atoms to surfaces
and from atoms to atoms. In the case of atoms there is also the option
to subtract the assigned van der Waals radii from the distance.
An example of a novel use of distances in
Grasp is to calculate a "depth" map, i.e. the depth of atoms
from the surface to every atom. Distance maps are also useful in
defining interfaces between domains, either surfacewise or
atomwise.
2.6 - Maps
Grasp contains room for two internal
"maps", i.e. 65 cubed, cubic lattices. Internally generated
maps are stored in the first of these arrays. Maps read in are put in
the second array. Simple operations are allowed on and between maps,
such as differences, sums, etc. Maps can also be swapped so that both
can be internally generated or both externally generated by DelPhi.
Difference maps are particularly useful to highlight the effects of
changing parameters such as charge, radii, salt concentration,
dielectrics, etc.
As one of the three primary external data
files supported by Grasp (the other two being protein data bank (.pdb)
files for atoms and surface representation files (.srf) for surfaces),
maps may be read at startup, so that one can analyse maps without any
atom data or surface data. Although maps are usually associated with
electric potential, they can be used quite generally for any 3D
data, though at present Grasp requires the grid to be 65 cubed. For
example, the consensus volume option in Grasp, finding the common
volume between a set of molecules, results in values assigned to a 65
cubed grid which can then be manipulated and displayed as a potential
map (e.g. Zplane projection, isopotential contours). The
dielectric boundary map or salt exclusion map from DelPhi can also be
read in as this form.
2.7 - Atoms
Atomic coordinates are the fundamental data
structure from which everything else is derived. Grasp does not contain
any "build" utility and hence is dependent on external files
for this data. Primary support is for PDB files, the standard
crystallographic format, along with certain variants.
Atoms can be displayed in several ways. The
traditional method, which is included in Grasp, is as spheres of a
given radius. This is often referred to as CPK modelling. In Grasp the
surfaces of the spheres are lit. CPK can be demanding on the graphics
resources for large molecules. An efficient alternative is to represent
the atom as a circle of the correct radius always oriented flat with
respect to the viewer. With a little differential coloring these flat
circles can be given an apparent threedimensionality. There is
also an option to color these circles with patterns. There is another
representation which gives small, uniformly sized circles for use with
bond representations. Spheres may also be drawn with lines or dots.
Atoms can be colored discretely - any subset
of atoms can be assigned any color, or continuous color colding may be
used. The properties supported for this are potential, distance,
charge, and general properties 1 and 2. Atoms can be uncolored to
remove them from view. Atom colors are depth shaded.
Upon reading a PDB file, radii are set to
default values from an external file (which the user may edit). This
file is in the same format as the control file for atom size used by
DelPhi. Similar files may be read during program execution. Charges are
0 by default when a structure is read, but Grasp can read DelPhi charge
files and assign charges based on the descriptions therein. Some sample
files are provided, such as those to assign charges to each ionizable
residue of a protein. Radii and charges may also be assigned via the
command line by specifying a radius/charge and the subset of atoms to
have this radius/charge. Keyboard commands also support intrinsic
operations such as multiplication of radii/charges by constants, or
addition of constants.
Since charges are only of importance for
electrostatic purposes and since charge is also a display property, it
may be utilized as a "dummy" variable, and actually represent
another physical property. This becomes particularly useful when
combined with the DelPhi control file format. For instance if one is
interested in a perresidue property, say helixforming
propensity, a control file can be constructed with one line for each
residue and its property value. This can then be read into Grasp, the
atoms of each residue will be assigned a "charge" equal to
that residue's helixforming propensity, which can then be color
coded and displayed.
Grasp also supports three variants on the
standard PDB file which involve the fields to the right of the atom
coordinates. These typically contain occupancy and Bvalues. One
option is to read this information in as general properties 1 and 2.
There is also an option to read these fields in as the radius and
charge of each atom because this is what they are used for in DelPhi
modified PDB files. Finally, for higher precision, the entire field to
the right of the coordinates can be read, in free format, as general
properties 1 and 2. Files in the these formats can all be written from
within Grasp.
Separate molecules will be recognized from
within a single PDB file if separated by "TER" statements.
Each will be assigned an index, i.e. a molecule number, which as a
property is analogous to "surface number" in Grasp. Molecules
can be superimposed using the Kabsch algorithm, which gives the best
rotation and translation (RMSwise) between molecules or parts of
molecules. The only restriction is that the same number of atoms from
each molecule must be used to determine the minimum RMS difference.
Grasp will not yet superimpose surfaces.
Grasp contains algorithms for calculating
both the volume and surface area of molecules or subsets of atoms.
Surface area can be either accessible area or that of the van der Waals
surface. Control is given to the user over the precision of these
calculations.
Grasp does not contain methods to alter
structures such as torsional rotations, minimization, etc., with one
key exception. Grasp allows independent rotations and translations of
defined subsets, which may then be "fixed" relative to each
other. For instance, a substrate may be selected and moved relative to
an active site. Upon making the transformations, new surfaces,
distances, electrostatic fields, etc., can be calculated based on the
new coordinates. One can undo transformations which have not yet been
"fixed".
Atom properties can be queried in the same
way as surface properties, i.e. point and click. Atom properties can
even be queried when covered by surfaces. The "atom picking"
function can also be set to report geometric parameters such as
distance, angle, and torsion angle between picked pairs, triplets, and
quadruplets of atoms.
2.8 - Bonds
Bonding patterns are calculated upon reading
in a pdb file. Bonds may be represented in three ways: lines, sticks,
and cylinders. Lines are the traditional line drawings used by most
programs. Cylinders are a three dimensional variant of this, the
diameter of which can be set by the user. Sticks follow the method of
Kuznetsov and Lim in which bonds are represented by quadrilateral
tubes. The advantages of this approach are that the bonds are made
significantly more three dimensional, inter bond angles are well
brought out, and the display is relatively quick to draw.
Bonds can be colored based upon a preset
pattern, upon transferring the discrete colors of the underlying atoms,
or by subsetting based on the properties of those atoms. They can also
be selectively undisplayed by being "uncolored". Bond colors
are depth shaded. Properties of atoms can be queried by picking at bond
ends.
2.9 - Contours
Isopotential contour surfaces can be
constructed at any potential value for either internal map. Contours
can be displayed in all the surface modes available to molecular
surfaces: lit, pseudolit, mesh and points. They are also
independently depth-shaded. Contours are not automatically recalculated
if the parent map changes, though contours can be deleted and
recalculated. Volume and surface areas may be calculated for any
contour.
2.10 - Colors
Grasp supports 99 independent indexed
colors. These can be set during program execution using a color
palette, or in an external file as RGB triplets. All changes to colors
are automatically saved (except for colors 91-99, which are always
equal to the default colors 19), thus the user can design their
own set of colors or use those provided. Color 0 is always black and is
also used as a flag to prevent display of that an object - an atom
colored 0 is hidden. This "uncoloring" applies to surfaces,
bonds, backbone boxes and matrix strands. Grasp also has undo and
restore commands for atoms and vertices. Undo removes the previous
coloring, while restore acts on objects colored 0 by giving them the
color previously assigned. Once a color is assigned to an object it
becomes a property which can be used in subsequent subsetting
selections.
The use of assigned color as a property
allows for some quite flexible subsetting. For example it can act as a
bridge between atomic and surface properties. Suppose we want to find
all vertices of a surface which are concave (have a calculated
curvature less than zero)and which are formed by hydrophobic residues.
One way to do this is to color all hydrophobic residues one color,
transfer that color to the surface, then select all vertices which have
that color AND which have curvature less than zero.
Color can be used to build up subsets based
upon disparate properties which could not be specified in a single
command. For instance we can select all atoms which are in a region of
positive potential and belong to negatively charged residues plus all
those atoms which are negative but belong to positively charged
residues. This is a way to include an OR statement in Grasp's
subsetting vocabulary.
2.11
- Simple Property Mathematics
Sometimes the properties calculated or
imported into Grasp are not exactly what one is interested in. For
instance one might be interested in not the surface potential
interpolated from map one or that from map two, but some average of
them (for instance weighted by the average ionization state of two
residues). The same might be true of the maps themselves and one might
like a combination of the two maps. Simple property mathematics
addresses this by providing for arithmetic on one or two fields,
putting the result in another or in the same field.
The operations available for maps include
addition or division of two maps, along with multiplication by a
constant and swapping the two maps. The operations for atom and surface
properties include addition, subtraction, division and multiplication
of two properties, as well as addition or multiplication of a single
property by a constant. Also supported are special functions on a
single field including square root, reciprocal, exponentiation,
logarithm, cosine, sine, and hyperbolic functions.
More useful to some extent are the
contraction operations which take a field and return a single value,
maximum, minimum, average and sum. These can be combined with
subsetting so that only portions of the selected fields are acted upon.
For instance, one can find the accessible area of all lysines, or all
charged groups, or all charged groups of a particular helix, etc.
Fields can be shifted around. For instance,
one can multiply a field by 1.0 and place the result in a second field.
This can be useful if one field is to be used as a dummy field. For
instance, if charges were assigned to represent helix forming potential
via a DelPhi charge file format they can then be passed on to one of
the general property fields.
Properties can be inverted. One can invert
the normals of a surface to make it appear similar to its complement.
One can also or invert its electrostatic potentials since one might
expect a complementary surface to also be complementary in potential.
This is simply achieved by selecting the surface of interest and
multiplying its surface potential by 1.0.
Also included is a facility to map an atomic
parameter directly to the surface. One advantage of this is that a
surface is to some extent simpler than the collection of underlying
atoms and as such is often a better vehicle for displaying properties.
One further advantage is that by using the accessible surface one can
project these properties into space away from the molecule.
2.12 - Objects
An object is an abstraction which represents
both the shape and a property of a set of atoms. There are two for
proteins and three for DNA.
The first protein object is a backbone trace
called a "backbone worm". It consists of a set of cylinders
forming a tubular Bspline though atom positions. When the command
is made to build a backbone worm, the user is given the default option
of using all alpha carbons of the protein backbone or entering a
different set. This latter option might be used to select only a subset
of all alpha carbons, or to select a totally different set of atoms
like amide nitrogens.
If the user has previously constructed one
or more worms, the user has the option of replacing all of these or
adding to them. There may be up to one hundred disjoint splines
constructed.
If two sequential atoms in the selection are
more than a certain distance apart the spline is terminated and a new
one begun. Hence, if constructing a backbone worm when the protein has
more than one chain, there will be one spline per chain. The distance
used to determine spline breakage can be set by the user. If set
sufficiently large, this will force the construction of a single spline
through disjoint chains. It can also be useful in judging patterns of
distances of a certain subclass of atoms - spline breakage contains
local distance information.
A Bspline segment is constructed from
each set of four consecutive atoms in the selection list. Each segment
is made of four subsegments by default. This can also be adjusted by
the user. Note that this change in resolution only takes effect when a
worm is built and does not alter the segment density in chains already
constructed. Each subsegment is a tube of polygonal crosssection.
The default number of sides to this polygon is ten, and this too may be
altered by the user. Finally, the user may alter the radius of the
cross section of the worm, i.e. the worm thickness. Changes made to
these two parameters are reflected immediately in any worm already
built.
One limitation to the subsegment density
described above is that the number of subsegments per segment must be
even. This arises from the method of assigning atoms to each
subsegment. The procedure used is that the first half of the segment is
assigned to the second atom in the defining four atom sequence and the
second half to the third atom. Hence to be able to equally distribute
subsegments there must be an even number of such per segment. Note that
this method of subsegment distribution results in no segments assigned
to the first and last atoms in a sequence, and only half segments to
the second and second-to-last atoms.
The second protein object is a peptide plane
representation called a "backbone box". As is well known, the
peptide bond has double bond character and so is stiff to torsional
rotations. As a consequence the set of backbone atoms
CA(n)C(n)N(n+1)CA(n+1) lie in a plane. This can be
represented as a quadrilateral with corners at carbon alphas (CA) and
at the oxygen and hydrogen of carbon (C) and nitrogen (N) respectively.
This is given a little width for display purposes to make a
quadrilateral box. These boxes can be colored in several ways. The
default color scheme is white at the alpha carbons, red at the oxygen,
blue at the hydrogen. In this mode it is easy to see, for instance,
where backbone loops have all carbonyls or all amide hydrogens aligned
in one direction (which can be significant electrostatically). It is
also makes secondary structures particularly clear. Boxes can also be
colored by subsetting based on the underlying atoms, or uncolored to
display only parts of chains.
The 3 DNA objects are the phosphate
backbone, the pentose sugars, and the DNA bases themselves. The
backbone can be represented as a thick ribbon smoothly splined through
backbone phosphates. The pentose sugars are represented either as rings
or line pentagons. The pentagons are color coded by the endo or
exo nature of the sugar carbon. The bases are represented as
rectangular slabs colored by base type. Base representation can also be
made to widthencode a DNA base pair parameter. Support is
provided for the output from the program CURVES which describes 38 such
parameters. These can also be mapped to a helical sheet and color coded.
2.13 -
Pair-Wise Interaction (Matrix) Representations
One quantity which is difficult to represent
by conventional means is pairwise interactions. This is because
the variable has a value and two positions instead of just one
position. For this reason this is like attempting to display a matrix,
as opposed to a vector. Such variables occur in electrostatics as the
interaction energy between each charge in a set of charged sites.
Another example is effective interresidue forces which some have
developed to model protein stability. Since both these uses are
essentially residue-based, the formulation of the pairwise
interaction representation is residue-based in Grasp - it acts between
residues, not atoms.
In Grasp these forces are represented by
means of lines running between pairs of sites. These lines have as
properties the interaction strength and those properties of both
interaction residues themselves. Hence lines may be colored (or
"uncolored") by standard subsetting commands.
Interactions also have the property of
"rank" - since sites may have several interactions, each
interaction also has a rank amongst those assigned to that site. Thus
one can subset by rank, and only show the strongest interaction for
each site. Since interactions can be strong by being very attractive or
very repulsive, the interaction strength very negative or very
positive, support is provided for ranking by either criteria. This can
be useful in determining 'zones' of interactions - patches of residues
which interact mostly amongst themselves.
Grasp goes one step further than merely
representing forces with lines by expanding the lines into cylinders.
As well as being visually striking, this allows the width of the
cylinder to act as an indicator of the absolute strength of
interaction. By default, Grasp sets the maximum width to represent the
maximum absolute interaction, but this can be set to be larger or
smaller by the user. All other coloring operations still apply. Grasp
also allows for the cylinder representation without width encoding.
The ends of these lines or cylinders are by
default set to the average position of all atoms in the residue. This
can be altered to any subset within the residue. For instance, in some
cases the position of the residue charge might be more appropriate, in
others the alpha carbon, or center of the side chain, etc.
Since interactions are be distance
dependent, the user can explore this dependence by multiplying or
dividing each value by the distance between its two sites. This scaling
can help the user determine which interactions are unusually strong or
weak.
Matrix values are not calculated at by
Grasp. They must be imported via a data file, the format of which is
described in appendix A.
2.14 -
Stereo/Split Screen Operations
Stereo viewing has traditionally been
achieved by duplicating the view, separating the views by a certain
distance so that there is no overlap, and then giving the
rightmost view a twist of about 8 degrees about the vertical
direction. Grasp follows this approach and extends it to a
'splitscreen' capability.
The stereo separation and twist are under
user control (tests within our labs showed conclusively that everyone
has their own preferential stereo twist). Separation and twist are
under mouse and dial control and twist may also be entered explicitly.
The duplicate view can be treated as
completely independent, so that nearly all display possibilities can be
used either on the left or the right. This allows the user to display
alternate views side by side. For instance, one might want to view the
surface color coded by potential and also by curvature at the same
time. The left and right views can also be superimposed. One can also
manipulate either view independently. For instance, one can display the
front and back of a molecule simultaneously. Formal subsets in each
view are also independent, so different arrangements of such subsets
can be portrayed in right and left views.
3 - Getting Started
3.1 - Grasp
Environment
There are a few things one should check
before running Grasp.
First is to ensure that one has write
privileges in the directory the command is issued from, which can often
be a problem if working from someone else's directory. Grasp needs this
permission to enable it to write temporary files, which are removed
upon exiting the program, and some permanent data files, such as a
color map if the user alters those provided, and also "error"
files if it detects odd situations (such as finding too many bonds for
an atom when reading a pdb file, or fractionally charged residues upon
reading a charge control file).
Second, Grasp reads in a few data files upon
startup. It needs to know what directory these files are in. To do
this, it reads the environment variable GRASP (note capitals)
which should be set to the directory with all the files with the
extensions ".dat" or ".crg" or ".siz" or
".gs". For those not familiar with Unix, the command to do
this is
setenv GRASP dirnam
where dirnam is the directory name. One
should place this command in the file .login in one's home
directory so it is read and executed when the user logs in. One can
check the value of this variable by entering,
echo $GRASP
Grasp also has a directory of "last
resort" if it can not find the directory defined by $GRASP.
The backup directory it looks for is ./aakdat, i.e. in a
directory one lower than the user is in called aakdat. These
data files are listed in the appendix and involve such things as
default radii for atoms, default charge sets, and information used in
surfacing molecules.
Third, Grasp will check for a file called .init_Grasp.
This file can contain commands which set variables within Grasp, such
as default display modes. These commands are listed in Appendix B.
Grasp searches for this file in three places. First it checks the
directory defined by $GRASP, second it checks the user's home
directory, and last it checks the local directory from whence the
command was issued to start the program. The purpose of having it check
all three locations is to allow for hierarchical control of Grasp
settings. For instance, one might want to set some parameters for all
users, in which case they are set in the $GRASP directory.
Individual users might want different parameters for their own work,
and so alter the file in their home directory. Finally, the individual
user might find that for some projects different parameters are better
- small molecules might want one set of display parameters, large
molecules others, in which case control should be via the file in each
particular directory. The order the files are read is important because
if two files set the same parameter, preference is given to the later
file.
3.2 - Running
Grasp
Now you can start Grasp simply by typing
"grasp". Once this command is issued, and the appropriate
files searched for and read, the default graphics window opens and
shows a set of axes or crosshairs in the X, Y and Z directions.
The Z direction is towards the viewer with positive nearer and negative
farther away, the X direction is left to right, with right positive and
left negative, and the Y direction is up and down with up positive and
down negative. The cross hairs run between +/-1 in Grasp internal
coordinates. To help visualize this domain one can view the Grasp box.
This is done by pressing Control O.
3.3 - Dial and
Mouse Movement
One moves the view by using either a dial
box or the mouse. The dials work accordingly:
The mouse moves the view by depressing the
left or middle buttons or both and moving the mouse:
Left button:
Rotations about the axis perpendicular to
the direction of mouse motion.Hence there is a sense of
"rolling" the molecule as if the molecule where resting on a
solid surface in the XY plane and the cursor was the user finger.
Middle Button:
Up and down moves the molecule away and
towards the viewer respectively. Note that this is NOT a scaling, but
an actual motion in the Zdirection and hence corresponds to
pulling the molecule towards or pushing it away from the user. Left or
right motion rotates the molecule about the Z axis.
Left and Middle Buttons Together:
Translates the molecule in the XY plane in
the direction of mouse movement.
This implementation of dials via the mouse
(mousedials) is a little different from some programs since only
two mouse buttons are used. This is partly because only two are
actually required to allow the six independent rotations and
translations, but more importantly because the third button, the right
button, is reserved exclusively for the menu interface.
One further convention adhered to in Grasp
is that where appropriate, the middle button adds and the left button
subtracts. For instance when adjusting the indexed colors in Grasp the
middle button increases a color component, the left button decreases it.
The rate of rotation or translation, the
sensitivity to mouse or dials, can be set via the menus. It is also
possible to assign different functions to the mouse, such as surface
scribing, or projection plane position. These are accessed via menus.
Note that the box does not rotate with the
the cross hairs. The significance of this is that box represents a
space which is invariant with respect to the user. Rotations and
translations do not actually affect the molecule coordinates, only the
viewing of them. One way to think of this is that it is not the
molecule which is moving but actually the user and the box (since both
move the box appears stationary). The language used in Grasp is of
"original" coordinates, which "belong" to the
molecule, and "box" coordinates which belong to the user (and
hence the box). One can change molecules into the users frame of
reference, i.e. make rotations "real", via formal subsetting
and some options for file export.
3.4 - Data
Files
One can now read in one of three type of
data files, atom files, surface files or maps (3D grids). Note
that instead of reading in a file once the program has executed one can
give the name of a data file:
grasp lys.pdb
which will load in coordinates from the pdb
file lys.pdb. Other than pdb files one can also give the names
of maps, with the extension ".phi", or surface files with
".srf". If the name of the file does not have one of these
three extension then the program will prompt the user as to which type
of file it is.
Reading a data file from within Grasp
involves using the menu system. Clicking the right mouse button, then
clicking on Read and then on one of the primary data file types
will prompt the user to enter the file name, select a default file, or
see a list of files. The list will be all files in the initial
directory which have the correct extension for that file type.
3.5 - The
Textport
When character input is requested in Grasp,
it is via what is called the textport, which is the character based
window from which Grasp is initially launched. To enter information to
the textport the cursor has to be positioned over this window. If Grasp
is expecting information, e.g. expecting a file name, it tries to make
this easy for the user both by automatically positioning the textport
over all other windows, and by automatically placing the cursor over
this window. And when the information input is complete and return has
been hit, the cursor will automatically jump back to the spot on the
graphics window it was before the request for information. Similarly if
the user wants to type a command, the cursor will automatically place
itself over the textport when the user begins to type, jumping back
when return is hit.
Note that in both these examples the cursor
starts over the graphics window and ends there too. The user should NOT
attempt to move the cursor onto the textport except in the following
two cases. Sometimes the user may have moved the textport, or resized
it, and as a consequence the cursor may miss it when made to
"jump" by the program. Also possible is that the cursor will
come to rest upon the textport when instructions are not being entered.
This causes a "change in input focus" for the program i.e. it
expects input from the textport rather than from the graphics window.
When this happens, for instance, the molecule will not rotate when the
dials are twiddled because the program is not "listening".
This question of "focus" can often give beginners the most
problems in getting started with Grasp, so when in doubt check the
cursor position.
Hitting return when the cursor is over the
graphics window causes the textport to alternate between background and
foreground, i.e. being behind all other windows or on top of them. If
the user has resized the textport, for instance made it bigger to
review more information, or repositioned it, hitting return will also
resize and reposition the textport. Another use of this is that pushing
the textport and then bringing it back will usually force a redraw. If
for any reason the graphics look funny, for instance 'damaged' by the
movement of some other window or some other program, or if the initial
view upon starting the program looks strange, this is a simple way to
redraw the view.
If one has read in a pdb file or a srf file
there should now be something displayed from within Grasp, either a
molecule or a surface. The default display of either of these can be
altered as described later. Upon reading a structure (i.e. atoms or
surfaces) a scale is assigned to the unit box, i.e. the width in
Angstroms is calculated (and written to the textport). This is
calculated such that the structure will fill up two thirds of the the
box in its longest dimension. If the user instead has initially read a
potential map the scale is such that the potential map will fill the
unit box exactly, i.e. the boundaries of the potential map are at
+/1 in each direction. This scale is now set for the duration of
the Grasp session as there is as yet no facility for altering global
scaling. The view can now be manipulated, quantities calculated,
structures built, etc.
3.6 - Exit
Exiting the program can be done three ways.
The first is NOT recommended except in emergencies (the program has
inexplicably locked up) and that is to put the cursor over the textport
and hit Control C. The normal way to exit is either through the main
menu or via Control Q. If the program is correctly exited one should
notice that the cursor is no longer yellow, which it is during normal
Grasp operation, unless of course this is the user's normal color for
the cursor.
4 - Menus
Menus carry most of the functionality of
Grasp. All menus are accessed via the right mouse button. All
selections within a menu must also be chosen with the right mouse
button. Menus appear when this button is depressed and remain when the
button is released. Note this first release of the right mouse button
does NOT select an item. The program is essentially frozen until the
right mouse button is depressed and released AGAIN.
If the cursor lies over a menu entry when
the button is released the second time, then that menu item is chosen.
If the user "clicks away", i.e. releases the button when the
cursor does not lie on a menu entry, function will abort or in some
cases will continue with a default value. For instance, when altering
the molecular surface, first the user will get a submenu for the
quantity displayed on the surface (potential, distance, color, etc.)
and then a submenu for the draw mode (mesh, lit, points, etc.) of the
surface. If one does not want to change the quantity displayed, one
clicks away from the quantitiy menu and continues on to the draw mode
menu. On the other hand, if the user chooses the Build entry in the
main menu and then clicks away the program exits from the menu
altogether.
Some parts of some widgets, such as the
color scale, are sensitive to the right mouse button. This means if the
right mouse button is depressed while on this area, the normal main
menu will not appear and instead the user will get a menu associated
with that widget. Clicking anywhere else in the graphics window will
bring up the main menu.
For ease of description, this document will
use the following notation to describe a sequence of menu operations: "Display:
Stereo/Split Screen: Dials to Both" means choose Display
from the main menu, then Stereo/Split Screen from the Display
menu, then Dials to Both from the Stereo/Split Screen
menu.
The menu options will be described in the
order they appear in the main menu, starting with Display.
Submenus will be described where they apppear.
4.1 - Display
Menu
Show
Alter
Hide
Hide ALL
Stereo/Split On
Show displays a structure, Alter changes the
display of a structure, and Hide causes a structure to disappear
from view (this is not the same as causing a structure to disappear by
coloring it 0 - when a structure is hidden in this manner, it retains
all its characteristics including color). All of these options produce
a submenu which allows the user to choose from the following
structures: Molecular Surface, Atoms, Bonds, Cavities, Objects,
Contours, Vectors, and Interaction Matrix.
For Molecular Surface, the user may choose
from several coloring schemes: potential, curvature, discrete colors,
distances, general property #1, and general property #2. Surface draw
modes are rendered, rendered but not lit (pseudo-lit), mesh no
rendering, points, transparent, solid/mesh mix, and solid/trans. mix.
For Atoms, the color options are atom type,
charge, potential, distances, property #1, and property #2. Atom draw
modes are flat circles, full spheres (CPK), flat patterns, little
bond-atoms, line spheres, and point spheres.
For Bonds, the coloring choices are user
defined, which lets the user set them (default color=1), atom colors,
which adopts the underlying atom colors, and saved set, which applies
an internal color scheme. Bond draw modes are lines, sticks, and rods.
Rods are very slow to draw.
For Cavities, one has the option of coloring
as the molecular surfaces, coloring by number, or coloring by number
patches.
For Objects, the user must first select the
type of object: backbone worm, backbone boxes, DNA bases, DNA backbone,
DNA sugars, DNA axis, ellipsoids, DNA H-bonds, or distance line. DNA
objects come with several possible options. Most of these are only
appropriate if data in the form of a Curves file has been read in,
because the options refer to which of the many Curves parameters are to
be displayed.
For Contours, colors as well as values are
set when contours are built. Contour draw modes are the same as surface
draw modes. Control of depth cueing for contours is controlled by "Set
Parameters: Depth Cueing".
For Vectors, the possible types are electric
dipole, which is a large 3D arrow of length 0.3 box units,
electric field vectors, which can be drawn of constant length or with
length dependent on the field strength, and electric field lines, which
can be drawn as lines or tubes. The user selects a color for the
molecular dipole vector when calculated. For field vectors the user can
specify the maximum vector length and the field strength this should
correspond to, but only when these quantities have been calculated.
Note that it is necessary to calculate a vector quantity before
displaying it. The cylinder mode for field lines can be very slow to
draw.
For Interaction Matrix, the choices are
lines, cylinders, width-encoded cylinders, and extras. The width of the
widthencoded cylinders depends upon the absolute value of the
interaction. This value is divided by a "maximum strength"
value which can be changed, rounded off to unity if greater than one,
and multiplied by an internal width to give the resultant cylinder
thickness.
The extras option presents a submenu with
several entries. One is to refine residue centers, which alters the
exact coordinates of the point within each residue each strand emanates
from. Upon choosing this option, the user is prompted for a selection
on the command line. The user could then input the command
"a=ca" whereupon the strands would begin on each residue's
alpha carbon. If more than one atom is selected for a residue, the
strand begins at the average position of those atoms. Another option is
to set the maximum interaction strength for widthencoding as
described above. Also included are options to multiply or divide the
interactions by the distance between interaction sites. The new maximum
and minimum values are written to the textport upon each use of these
options. Note that if the draw mode is set to variable widths then this
can affect the relative widths of the strand cylinders. To maintain a
similar spread of widths the following process of rescaling the maximum
cylinder width value is enacted. The ratio of the largest (absolute)
interaction value (before distance scaling) to the value set for the
maximum width is found. Then the largest (absolute) value is found
after distance scaling, and the value for maximum cylinder width set so
the ratio just calculated is maintained.
Hide ALL clears the view completely.
The Stereo/Split On controls the
stereo display options. It produces a submenu with entries Dials to
Both, Dials to Right, Dials to Left, RightHand Twist, Stereo
Parameters, and Stereo/Split Off. This menu can be accessed directly
with Control S. The first three entries decide which side is going to
be "attached" to the rotations and translations as entered by
the mouse or dial box. The default entry for this menu is Dials to Both
- both views are moved equally. In this mode, the two views differ only
by an imposed separation of 0.5 box units in the X direction, although
the views may not appear identical due to the perspective automatically
included in all Grasp views. Choosing Dials to Right or Dials to Left
allows one view to be spatially manipulated independently of the
other. Note that if the user has defined one or more formal subsets,
only the views of the subsets on the side for which the dials are
attached can be moved.
RightHand Twist causes the right hand
view to be twisted in an axis running through the center of its world
coordinate system in the Y direction (vertical) by a certain angle This
twist is set to 8 degrees by default. This value can be altered in
several ways. If the user has a dial box, the left bottom dial will
alter the stereo twist. The user can also fix the Zrotation
function to stereo twist via "Mouse Functions: Alternative
ZTrans. Alternative".
Stereo Parameters presents a submenu to
allow the user to restore twist to the default value, enter a twist
value, enter a separation value, or remove twist and stereo separation
altogether and superimpose the left and right views.
Even if the user is in "twist"
mode the user can still independently manipulate the two views
spatially. This is not recommended since the purpose of twist mode is
to allow stereo viewing which requires the two views to be essentially
identical except for the vertical twist.
If while in split screen mode, the user
attempts to change display properties, Grasp will prompt the user on
which "side" the changes should be made. For instance, if the
user attempts to hide the bonding display the choice is left, right or
both. Thus the display on the left can be representing one facet of a
molecule (such as electrostatic potential on a surface) while the right
represents another (such as atomic Bvalue).
Stereo/Split Off quits stereo/split screen
mode. The lefthand orientations (world and subset) are the ones
retained for the singlescreen view. All differential display
characteristics the user may have applied to the right view are lost.
However, the stereo twist value is still stored and may be retained
throughout a session.
4.2 - Build Menu
Molecular Surface
Accessible Surface
Backbone Worm
Backbone Boxes
Cavities/Connectivities
DNA Boxes
Contours
Consensus Volume
Ellipsoidal Objects
The build and calculate menu options are
easy to confuse. For instance, does one build a contour or calculate a
contour? Are field lines built or calculated? In general, build deals
with calculating the data intrinsic to a display structure, such as a
surface or backbone representation or internal cavities, whereas
calculate provides numbers which may or may not be related to such
structures, such as potential maps or volumes of surfaces.
A Molecular Surface or an Accessible
Surface is made by essentially the same algorithm. When choosing
whether to construct one or the other, the user has to consider two
options. The first is which atoms to use in forming the surface, and
the second is whether to add this surface to previously constructed
surfaces, or to overwrite them. Note that this is the only way to
delete a surface within Grasp. The menu for selecting a subset of atoms
is: All Atoms, A Molecule, A Format Subset, and Enter String. All Atoms
selects all stoms, A Molecule presents a menu containing all molecule
numbers, A Formal Subset presents a menu with the names of all
atombased subsets, and Enter String will cause the cursor to jump
to the textport and wait for the user to enter a subsetting command. If
no atoms are chosen at the end of this procedure, the routine aborts.
The process of constructing the molecular
surface occurs via the construction of a temporary accessible surface.
A correspondence between the vertices of this intermediate surface and
the underlying atoms improves the accuracy of the final surface. It
also allows for a unique mapping between atoms and molecular surface
such that each accessible surface vertex is assigned an underlying
atom, and each molecular surface point is assigned an accessible
surface point. The combination of these two assignments leads to the
association of each molecular surface point with an atom, an
association which is termed "contact" within the program.
The process of surface formation will cause
plenty of information to be written to the screen, including the scale
at which the surface is constructed and the number of vertices and
triangles in the completed product. The information here can be useful
in debugging (for example the total number of vertices might exceed the
maximum allowed number).
Surfaces should appear automatically after
being calculated. They will not be colored however. This must be done
by the user via whatever method chosen, by calculating potentials at
the surface, calculating curvature, etc.
The Backbone Worm and Backbone
Boxes are built for all current molecules. The only options
associated with these objects are for the backbone worm, which allows
the worm to be built for all CA atoms or a subset. If these objects
fail to appear after construction, go through the Display menu
explicitly. The backbone worm can be slow to display. Sometimes this
can be put to good use. For instance, if the user switches to single
buffer mode (Control R) while the worm is being drawn, the path of the
chain from N terminus to C terminus is nicely illustrated. The backbone
worm only requires the carbon alpha positions to be correctly produced,
while the backbone boxes require also the carbonyl oxygen and amide
nitrogen positions to successfully complete construction.
Building Cavities/Connectivity causes
the program to check all vertices for connectivity. The first point, or
seed point, is chosen at an extrema, and so can not belong to a cavity.
All points associated with it, those which can be reached by travelling
along triangle edges, are deemed the "noncavity
surface". All others belong to cavities. Note that this will give
an incorrect assessment if there is more than one disconnected
constructed convex surface. For this reason the user should calculate
cavities on the surface of the whole molecule, not subsets. Printed to
the screen are the number of triangles that make up each cavity found.
Cavities are automatically displayed in the same display mode as the
molecular surface. They can be sequentially colored.
Building DNA Boxes requires that a
DNA PDB file has been read in. (Note that mixed files containing DNA
and protein are fine.) Display should be automatic. Grasp can handle
structures with up to four independent backbone strands.
Contours can be made in 3-D, 2-D with an interpolation
plane, or 2-D with a molecular surface. These all require two inputs by
the user: the isopotential value, and the color to be assigned to that
contour. The latter should be a color index, an integer between 1 and
99. One can enter more than one isopotential value to create more than
one contour at a time, as long as one enters the same number of colors.
For instance:
enter 3-D contour value
>> 1.0,2.0,3.0
enter 3-D contour color(s)
>>2,3,4
will create contours at one, two and three
kt, and give them colors 1, 2, and 3 (red, green, and blue). To delete
a contour (which may be necessary to make room for new ones), one goes
through the same procedure as making a contour of the same isopotential
value, one gives it color 0. Note that this remove is NOT the same as
hide or uncolor, as it actually removes the contour data from the
program.
Although the usual use of building contours
will be isopotential contours, it can be used for more varied purposes,
since the actual contents of the map are irrelevant to the contour
facility. For example, one can contour a DelPhi "eps" map if
one has read one in, or one can contour a consensus volume map (see
below) if one is calculated. One should remember that there are two
internal maps in Grasp. The contouring proceeds on whichever map is
"current". This is usually map 1, but will be map 2 if one
has just read in a map. Set the current map with "Miscellaneous:
Change Current Map".
Consensus Volume produces a map - a 3D lattice of values. It is
calculated by adding the value 1.0 to each grid point which lies within
the Van der Waals volume of each molecule. Thus if there are five
molecules and a grid point lies within all five, it will be assigned a
value of 5.0. Some points will fall within only some molecules. This
map can then be contoured at any level desired. For instance contouring
at the level of the number of molecules will give the surface of the
volume common to all molecules. At present there are no options to this
facility and all atoms are included in the calculation. The map is
stored as map 2.
Ellipsoidal Objects constructs ellipsoids enclosing the Van der
Waals surface of the atoms, residues, or surfaces selected. This
selection can be all residues, an atom subset with one ellipsoid, an
atom subset with many ellipsoids, a surface subset with one ellipsoid,
and a surface subset with many ellipsoids. For the atom options, the
user is given the choice of all atoms, a molecule, a formal subset, or
entering a subsetting string. For surfaces, the choices are all
surfaces, a single constructed surface, a surface formal subset, the
currently scribed surface, or entering a subsetting string. If
ellipsoids have already been constructed, the user has the option of
adding to the current set or replacing them.
4.3 -
Calculate Menu
New Potential Map
Pot. via Map at Surfaces/Atoms
Surface Curvature (+Display)
Simple Property Math
Dipole Moment
Field Lines
Field Vectors
Volume of a Surface/Molecule
Area of a Surface/Molecule
Distance Array
H-Bonds (DNA Bases Only)
The calculate option does much that is
unique in Grasp. It allows the user to quickly calculate electrostatic
quantities like maps, fields, and site potentials, as well as
curvatures, distances and volumes, and manipulate fields of information
previously calculated or imported to the program.
Calculating a New Potential Map
causes the program to execute its internal PoissonBoltzmann
solver. The size (in Angstroms) of the map produced is automatically
determined. Only the linearized PoissonBoltzmann equation is
solved. Such parameters as the probe radius, ion exclusion radius, salt
concentration and inner and outer dielectric values can all be set via "Set
Parameter :Electrostatic Parameters". The map produced is
stored in internal map 1. If no charges are assigned, then the
procedure will inform the user and abort rather than calculate a null
map.
It is important to realize that by default
all atoms and therefore all charges are used in the calculation. If the
user wants to perform a calculation on a subset of atoms, those atoms
not required must have their radii and charges set to 0. The algorithm
will ignore any atoms with radius 0 so that they will not contribute to
the water exclusion (=low dielectric) volume, however, it will NOT
ignore the charges on these atoms. Therefore one needs to neutralize
the charges on the unwanted atoms as well. Since changing radii to 0
also causes atoms not to be displayed, the user ought to remember to
reset those atoms to their correct radius after the calculation, for
instance by reading in a default size file.
A typical use of the above procedure for
removing some atoms from an electrostatics calculation is one where the
original crystallographic coordinates are included for several water
molecules. It is always an interesting question as to whether such
waters should be treated as low dielectric, and constrained in their
motion, or high dielectric, and bulk water. A good rule to use is that
if a water is highly coordinated to the protein, so that it makes two
or more hydrogen bonds, a case can be made for low dielectric,
otherwise set it as high by setting its radius to 0 in the calculation
and turning off any assigned charges.
As with building surfaces, much information
is written to the screen during the calculation, some of which is
useful to the user in verifying the accuracy of the calculation, that
it has converged, that the correct total charge has been assigned, that
the scale of the final map is approximately correct, etc. A typical
calculation should take about five seconds on a Personal Iris.
Pot. via Map at Surfaces/Atoms calculates the potential at all surface vertices
and all atoms from the current map. If one has just calculated a new
potential map, this is map 1. The algorithm uses trilinear
interpolation from the eight grid points which make up the map grid
cube which an atom center or surface vertex falls within. If it lies
outside the map, a 0 value is assigned. Note that this process will
overwrite any previous potentials. If this is a problem, the user
should first store the previous array in one of the other variables, as
described under Simple Property Math.
Surface Curvature (+Display) will cause the program to calculate the
curvature, as defined in Nicholls et al., for a set of surface points
and a set of atoms. As our definition of curvature is related to
accessibility of water to a single water placed in contact with a
particular surface point, the set of atoms chosen is crucial, since the
hard sphere radii of these atoms will determine this accessibility
(note that a 0 radius atom does not affect accessibility). Thus, for
instance, if one wants to compare the curvature of two surfaces which
make up an interface, one should choose surface 1 and the atoms which
made surface 1 for the first calculation of curvature, then choose
surface 2 and its atoms for a second calculation.
Curvature calculations can sometimes take a
long time. This is due to the choice of test sphere used to determine
accessibility - more points take more time. The choice of this density
is made automatically relative to the scale employed in the surface
creation. Because Grasp has only a fixed number of test densities, the
time taken in calculation will vary considerably.
Upon completion of a curvature calculation,
the display should automatically switch to displaying this quantity.
The values are scaled to +/ 100, such that 100 would imply that
the surface point is completely accessible, which will never happen
since this would imply that one could put a water molecule anywhere in
contact with the original water molecule touching the surface. However
100 implies that the surface water is completely isolated from
other water molecules, which is quite possible, for instance in a deep
cleft or if the surface is enclosed inside the molecule or is part of a
molecular cavity.
Simple Property Math is one the most useful options in Grasp. Its
submenu gives the user these choices: Potential Maps, Atom Properties,
Surface Properties, and Map Atom Value to Surface, and Map Atom Value
to Worm.
Potential Maps allows the user to perform an
operation (add, subtract, multiply, divide) between maps and store the
result in either map , to add or multiply by a scalar value, to perform
a function on a map (square root, reciprocal, raise to a power,
exponentiate, absolute value, natural log, sine, cosine, hyperbolic
cosine, hyperbolic sine), or to swap maps (put map 1 into map 2 and map
2 into map 1).
One of the scalar map options is to apply a
"convex" correction. This was added after it was noticed that
potential maps generated on the the Convex used for most of our DelPhi
calculations where misread if transferred onto an Iris. To be more
precise, all real numbers (but not integers) were exactly four times
too large. This includes the potential map center and scale as well as
the potential values. This option then will rescale all those values to
their correct value. In addition, if the Grasp box scale has been
derived from a potential map, then the user is prompted as whether to
reduce the box scale by one quarter as well.
One should note in "map math" that
no checking is done to see if the grids actually have the same center
and scale, i.e. whether they refer to the same part of physical space.
The values of corresponding grid points are just added, multiplied,
etc. The inclusion of a division operation was prompted by the desire
to calculate effective dielectrics, the ratio of the potential
calculated with Coulombs Law to that via the PoissonBoltzmann
equation. If 0 is found in the denominator of a division, then the new
grid value is set to 0.
Math on Atom Properties and Surface
Properties are the same in that the same basic operations can be
applied to either. These operations are add, subtract, multiply,
divide, multiply by a constant, add a constant, maximum, minimum,
average, sum, and special functions (square root, reciprocal, raise to
a power, exponentiation, absolute value, natural log, sine, cosine,
hyperbolic sine and hyperbolic cosine).
Add, subtract, multiply, and divide require
selecting three properties (two properties for calculation and a third
to store the result). Multiplying by a constant, adding a constant, and
special functions require two selections (the property acted upon and
storage). Maximum, minimum, average, and sum return a single value
printed to the textport. Maximum and minimum also print the atom or
vertex number with with the value is associated.
Properties for each step of the math
calculation are selected from a property list for either atoms or
surfaces. The user is also prompted for a subset of all atoms or
vertices to do the math upon, which is then common to each array. The
user should take some care in using this simple math facility to ensure
that the property arrays are entered in the correct sequence.
Map Atom Values to Surface requires that the
user select a surface, a set of atoms, an atom property, and surface
property. The connection between surface and atoms is via the original
construction process, i.e. which atom is responsible for which part of
the surface. If the responsible atom for a particular vertex in the
surface selection is not included in the selection of atoms made, then
no value is set in the property array for that vertex. Most typically
the user will apply an atomic property universally, i.e. choose all
atoms and all vertices, to the surface.
Map Atom Values to Worm requires that the
user select a surface, a set of atoms, an atom property, and surface
property. The connection between surface and atoms is via the original
construction process, i.e. which atom is responsible for which part of
the surface. If the responsible atom for a particular vertex in the
surface selection is not included in the selection of atoms made, then
no value is set in the property array for that vertex. Most typically
the user will apply an atomic property universally, i.e. choose all
atoms and all vertices, to the surface.
The flexibility of operations on atoms and
vertices greatly exceeds that of maps, which is mainly because the uses
so far imagined for the former greatly exceed those for the latter. In
time it is hoped that Grasp will support a math interpreter rather than
use the menu system which should more fully realize the potential for
on-the-fly analysis it is hoped this function makes possible.
Dipole Moment takes all the charges on all atoms and
calculates a dipole and, if necessary, monopole. The latter is
necessary if the total charge is not zero. The procedure is to find the
sum and charge weighted average position of all positive charges and
the similar quantities for the negative charges. If the two sums are
not the same, then there is a monopole equal to the sum of the sums
acting at the charge weighted average position of the larger (in
absolute terms) of the sums, plus a dipole of magnitude determined by
the smaller (in absolute terms) sum multiplied by the distance between
chargeweighted centers. These values are printed to the screen,
plus once calculated the user can display a dipole "arrow"
centered at the average of the charge weighted centers, and of length
0.3 box units. This is displayed via "Display: Show:
Vectors".
There is as yet no option to display or
calculate multiple dipole vectors.
Field Lines are a difficult quantity to visualize. This is
mainly because they are infinite in number and it is difficult to
visualize an infinite number of lines. In a "correct"
implementation the number of lines within a given volume is
proportional to the average field strength. Hence one could imagine
discretizing this concept so that there are a finite number of such
lines. However this is NOT the approach followed in Grasp. Instead one
chooses a set of starting points, or seed points, and projects the
direction a positive or negative charge would take from each such
point, the field direction, as found from the current potential map. A
line segment is drawn a certain distance in this direction and then the
field at the end of this segment calculated. This process is repeated
up to a fixed number of times to give a field "line".
Typically one hundred segments are calculated. If the length of each
segment is small enough, the line appears smooth.
Seed points are determined by the first
submenu of this selection. The choices are: Center of Atom Set,
Surface, Atom Set, Origin, and Enter Coordinate. Center of Atom Set
will prompt the user for a set of atoms. The average of these
coordinates will then be found. If the number of lines chosen in a
later menu is greater than one, then that number of random positions
within half an Angstrom of this position are found and used as seed
positions for field lines.
In selecting Surface, one can obviously
choose all surface vertices, but often a more useful selection is some
patch of surface selected by surface scribing. Once chosen, a number of
points equal to the number of lines chosen are found at random over the
selected surface as seed points.
Choosing Atom Set will cause the center of
each atom selected to be initial seed points. If more than one field
line is selected, that number of seeds will be formed within 0.5
Angstroms of each atom center. The user should note that there is a
maximum of 100 field lines and should be careful not to exceed this
limit or the process will not run to completion.
Choosing Origin causes the initial seed
point to be at the center of the Grasp box. This number of seed points
can be multiplied in the same random manner as described above.
Finally, Enter Coordinates allows one to
enter the absolute coordinates for the initial seed. Again this can be
multiplied by random scatter about this point.
The next menu deals with field line
directionality. Clearly one has a choice of whether to use a positive
or a negative "test" charge when plotting the field line.
Traditional electrostatic lines begin on positive charges and end on
negative charges (or infinity). In Grasp they can go either way
depending on the sign of the test charge, or go both ways! Note that by
choosing bidirectional lines one actually creates two field lines, one
in each direction. If one has chosen to create the field line seeds
from a surface then one has yet another choice, whether one would like
to force the direction of the field line into or away from the
molecular surface.
Next one can choose the number, or
multiplicity, of field lines. As mentioned above, this will multiply
the initial seed positions by finding random positions in the vicinity
of the initial seed point(s). The default value is one. As mentioned
above, bidirectional lines count as two. Thus if one chooses the atom
centers of 20 atoms, with a multiplicity of 2 and choose bidirectional
lines one actually gets 80 field lines.
Finally, the user gets a choice of colors
for the field lines, the default being white. If one has previously
created some field lines, then one has the choice of adding to those
already created, or replacing them (Note the 100 field line limit
applies to the total number of field lines). Field lines can be drawn
as lines or as cylinders. The latter display is more dramatic than the
former but is very slow to draw.
Currently in Grasp the line segment length
of the field line is constant. This means that sometimes the lines will
exit the potential map i.e. for which there is no interpolated field.
Lines will then terminate. Another problem is that around charges field
lines will not actually terminate, rather they oscillate. This is due
to the nature of the field around a charge mapped onto a grid. There is
also no method of illustrating the field strength at any point along a
field line. These shortcomings will be addressed in future releases.
Field vectors can be calculated at up to 100 sites. Sites of
interest are chosen as either a set of atoms (each atom center), the
center of a set of atoms, at a random selection of points from a
surface, or from a point whose coordinates are entered by the user.
Once the points of interest are selected, the magnitudes and directions
are calculated from the current potential map. Each result is displayed
as a field arrow similar to that for the molecular dipole, originating
from each chosen point.
The user is given the option of giving each
field vector either a constant length, which is then entered in
Angstroms by the user, or a variable length, where the user enters both
the maximum vector length in Angstroms and the maximum field strength
to which this corresponds. In the latter case field vectors of strength
less than the maximum representable field strength are assigned a
proportionally smaller vector and those greater than the maximum the
maximum length. Note that these lengths can not be altered once set and
neither can the color for which the user is prompted for each set of
vectors. As with field lines, one can delete current vectors when
making new ones or one can add them, with the same maximum of 100 total
vectors.
One should note that, as with field lines
near charges, field vectors may be less than reliable. One should bear
in mind the scale of the grid used in calculating the potential map.
Fields are calculated by first estimating the fields at the eight
corners of the grid cube that encloses the chosen point and then using
trilinear interpolation on that set of vectors. The relative error of
the field when a point is near a charge is greater than that of the
potential because it involves quantities closer to the charge (i.e.
higher order derivatives). For this reason one should be very careful
in interpreting field strengths quantitatively from any such
interpolation when near atomic charges.
The Volume of a Surface/Molecule is
relatively simple to calculate, given a tessellation of the surface.
One merely chooses a point, preferably close to the surface or
molecule, and then calculates the volume of each pyramid formed by this
point and the three points of each triangle in the tessellation, being
careful to have the order of the points in the triangle base consistent
with the surface normal. One can calculate the volume of any closed
surface, such as a contour, a cavity, a molecular surface, or an
accessible surface. The volume of a set of atoms may also be calculated
this way, by tessellating the Van der Waals surface of that set of
atoms and calculating the volume of that closed surface. Alternatively,
one can map the atoms onto a fine grid, find which grid points are
outside and which inside, and form a lattice approximation that way.
Since both are simple, Grasp does both and answers are written to the
textport.
An Area of a Surface/Molecule is also
simple given a tessellation, since it is just the sum of the areas of
all triangles. The area may be of any subset of surface one can
categorize. The area of a set of atoms is calculated using the surface
area algorithm of Grasp which is an efficient version of "Shrake
and Rupley", which places points on a test sphere about each atom
and finds which are inside and which outside. The density of points,
and hence the accuracy used in the calculation, can be altered by the
user via "Set Parameters: System Miscellaneous: Surface Area
Probe Density". The user also has the choice of whether to
calculate the accessible area, as if the radius of each atom is
increased by the diameter of a probe, or the Van der Waals surface,
with probe radius 0. This probe radius may be set by the user via "Set
Parameters: Probe Radii Values", the default being 1.4
Angstroms.
When a subset of atoms is used, the area is
calculated as if other atoms do not exist. As with curvature
calculations, other atoms are not used to determine accessibility. All
results from the calculation are placed in the accessible area array,
which can be manipulated via the simple math options. Hence if one
wants to know the total accessible area of all lysines in a protein one
does not want to select just lysines, rather choose all atoms, then go
through "simple math" to calculate the sum of the accessible
areas of that subset of atoms. On the other hand one might want to know
the total accessible area of a subunit of a quaternary molecule if it
were isolated from the total structure. Then it would be appropriate to
select just this set of atoms.
A Distance Array can be calculated
for any subset of atoms or vertices to any other set of atoms or
vertices. It represents the minimum distance for a "from" set
to a "to" set. Since atoms have radii, it is often useful to
take account of this in the "distance" quantity and subtract
it so that the distance calculated is the distance to or from the Van
der Waals surface of the atom. Note that this can result in negative
distances.
The results of the calculation enter the
atom or surface array for distance only for the "from" subset
selected, not for both. For instance, if one wishes to calculate the
distance map between two surfaces, one should choose this function for
the first surface against the second and then repeat it for the second
surface against the first. Note the user should be careful that the
second set does not contain some of the same points as the first set or
the minimum distance will clearly be 0 for these points (or negative if
Van der Waals radii are being subtracted).
Distance calculations are quite slow if many
points are being checked against many points. At this stage of the
program, these calculations have not been optimized. A rough estimate
of the time taken for a calculation to complete is to multiply the
number of points in each set (the "to" and "from"
sets), divide by one million and multiply by two. This is then an
estimate in seconds of CPU time. If one is calculating for a 10,000
vertex surface to a 15,000 vertex surface, sit back and wait!
Note: if one wishes to remove the Van der
Waals radius from the "to" set, the set of atoms not having
distance calculated for, then strictly each distance comparison should
involve a square root. Because this is very slow on the Iris, and
because this is already a slow calculation, Grasp actually calculates
the minimum center-to-center distance first and then subtracts the Van
der Waals radius of the atom found closest. This is not strictly
correct and may result in inaccuracy at small distances (i.e. of the
order of a few radii). This limitation will be removed when more
efficient distance algorithms are installed.
Calculating H-Bonds (DNA Bases Only)
requires that a DNA PDB file has been read in.
4.4 - Mouse
Functions Menu
Atom Information
Surface Information
Measure
Scribing
Command Line Mouse
ZTrans. Alternatives
There are three different ways information
can be sent from the mouse to the program, namely holding a button down
and releasing it without moving the mouse ("picking"), which
usually returns information on the underlying object, holding a button
or buttons, down and moving the mouse, which typically causes rotations
or translations, and moving the mouse without any buttons depressed,
which usually in Grasp has no effect. These methods can be affected
with the menu options within this menu.
Atom Information and Surface Information allow the user to
choose whether the left or the middle button is associated with
returning surface information or atom information when either an atom
or vertex is "picked". The default arrangement is that the
left button gives atom information, the middle button returns surface
information.
Measure allows the user to associate certain measurement
functions with the picking mode of either the left or right buttons
which are set as described above. The measures for atoms are InterAtom
Distances, Interbond Angles, and Interbond Torsions. These measurements
require two, three and four atoms respectively as data. As an example,
suppose the user links InterAtom Distances to the left button. The user
then "picks" an atom. The next atom picked by this button
will cause the distance to be calculated between the first atom and
this atom, and the result written to the textport. The next atom chosen
after that will cause the distance between it and the second atom to be
calculated and presented. This "chaining" of distance
calculations continues until the user either double-clicks on the last
atom or "clicks away" (clicks on empty screen). This resets
the "memory" of atoms so that the next atom picked does not
cause a distance calculation but acts as the first atom chosen for a
new chain of distances. The same procedure is followed for Interbond
Angles and Interbond Torsions, except that the angle calculation occurs
for the last three atoms picked, and torsion for the last four.
Clearing the "memory" is done as before. Note that atom
information is still written to the textport with each individual pick.
The measurments for surfaces are
Surface-Surface Distance, Surface-Surface Angle, and Surface-Surface
Torsion. These work similarly to the above measurements for atoms. One
can turn off the measurement function for the chosen button by
reassigning it to Atom Information or Surface Information.
Scribing turns on the "scribing" function. This
is a way to select parts of a surface by drawing the outline of an area
onto the surface. Selecting this option turns the mode on and disables
other functions of either button while the cursor lies over a molecular
or accessible surface. When either the left or the middle button is
held down while the cursor is over such a surface, and the mouse moved,
the triangles under the cursor that make up that surface should
"respond" by changing color to bright blue. Upon releasing
the cursor, the "track" of the cursor should remain visible
as a chain of bright blue triangles. Note that to move the surface
while in scribing mode, one has to either use a dial box or position
the mouse off of any surface before attempting to move the view by
mouse.
When the user has outlined an area of
interest with a blue border, the area can be "filled" by
doubleclicking anywhere inside the area. This will cause the
initial triangle under the cursor to turn green, then the triangles
adjacent to that triangle turn green, then those adjacent to those turn
green, etc. Thus a green "wave" expands outward from the
initial point. However, a blue triangle previously selected as part of
the border will not turn green. Hence if the blue triangles form a
complete circle about the selected area, the green expansion will halt
inside the circle. If the border is not "watertight",
the green triangles will "spill" out and eventually cover the
entire surface.
If the user clicks with either the left or
middle mouse button while the wave is still expanding, it will
immediately stop "growing". This can be used to highlight a
region by doubleclicking on the approximate center of the region,
waiting for the wave to cover the desired area, then clicking again to
make it stop.
The surface selection is now all the
triangles colored green. This selection is referred to as the
"Currently Scribed Surface" in all menus which prompt the
user for a surface selection. For instance, "Calculate: Surface
Area: Molecular Surface" path will give the user a menu with
this option, which will result in the calculation of the surface area
of the selection. The user can make this selection permanent by making
it a formal subset. It will then be assigned a name which can be used
to refer to it at any future time. This is described in detail under
the Formal Subsets menu.
There are further options available if the
user selects the Scribing option while scribing mode is already
on: Initiate Fill, Undo Fill, Add Contiguous Border to Fill, Change All
Border to Fill, Clear All Marks, and Turn Scribing Off. Undo Fill
removes all green markings but leaves the blue ones. Add Contiguous
Border to Fill changes to green only those blue areas which are next to
green areas. Change All Border to Fill changes to green all blue areas.
Clear All Marks removes all green and blue markings from the surface.
Turn Scribing Off also removes all green and blue markings and also
exits scribing mode.
One should exercise a little care when
scribing for several reasons. First, if the cursor starts on the
surface when a button is depressed but ends up off the surface before
it is released (which should not really happen when scribing), one can
get unexpected results (e.g. the mouse is "locked" into a
rotational mode). Second, if the surface is at a coarse scale, e.g. a
large molecule has been surfaced, then one should not scribe too fast
because occasionally the program may get confused as to where it is on
such a surface. Furthermore, if one is trying to trace a boundary on a
complicated surface one may have to rotate the molecule to get over
some surface features with the border intact.
Note that scribing does not work if the
surface is rotated by dial while holding a mouse button down with the
cursor on the surface. Also note that clicking on the same triangle
twice causes the "greening" to begin, so be careful not to
accidentally start this process by starting at the same site twice in a
row. Finally, remember that, other than a well formed blue border, only
a further mouse click will halt the expansion of the green triangles.
Command Line Mouse means the user can fix a certain written command
to be automatically enacted when an atom is "picked". These
commands can only refer to atoms at present. For instance, if the user
enters "c=2" after selecting this item, then every atom
picked after that will be colored 2. This procedure works by finding
the atom number of the atom picked and then appending this to the
entered command and sending it to the command interpreter. So if the
user clicks on atom 55 then the command actually sent to the
inperpreter is "c=2, an=55". Note this will not work with the
projection command ("c=2 >r,an=55" will not color 2 the
residue containing atom 55). One use of this function is to assign
charges to a picked atom, or to remove certain atoms from view using
"c=0" or "alt(r=0)". Choosing this entry again
turns off the automatic command function.
ZTrans. Alternatives affixes alternate functions to the
Zdisplacement mouse function, which is holding the middle mouse
button down while moving the mouse up or down. There are three such
functions: Z-Translate (Default), Z-Value of Pot. Plane, and Stereo
Split/Twist. Z-Translate (Default) is the default and is used to reset
this function. Z-Value of Pot. Plane alters the position of the
projection plane, which is the plane colored coded by the potential
from the current map. Stereo Split/Twist alters the separation of a
stereo pair. This latter function is normally taken care of via the
dial box, but is included since not all users will have one. Also in
the latter case the stereo twist is fixed to the leftright motion
of the mouse. This menu also returns the button to its usual functions.
4.5 - Read Menu
GRASP Surface File
DelPhi Potential Map
DelPhi Epsmap
GRASP Property File
PDB File
GRASP Script File
Radius/ Charge File (+Assign)
Curves File (.lis)
Pair Wise Interactions
Grasp .init File
Grasp Macro File
This menu deals with the input of data to
Grasp, and the operations performed on it as a consequence. Formats for
many of these files are described in Appendix A.
Upon choosing one of these options, the user
will get up to three choices: a default file name, a menu list, or the
option to enter a file name. When a file name is entered, Grasp checks
first to see whether that file exists in the current directory. If it
does not, then it then checks all the directories in the user's $PATH.
If the file is not found, this will be reported in the texport and the
read aborted.
To check the $PATH, type "echo $PATH".
Grasp only checks $PATH at startup. The user can use this
variable to point to any direcories which contain desired files. Some
people have complained that Grasp has a hard time "seeing"
certain files, claiming they don't exist when they do. If you have this
problem, you may have $PATH set incorrectly. Even if Grasp is
able to list (on a menu) files in your current directory, it will not
be able to open them unless the first two characters of your $PATH
are ".:" (dot-colon). If they are not, type
"setenv PATH .:{$PATH}", or else type in
all filenames in your current directory and prefix them with "./"
(dot-slash). For example, a file in your current directory called lys.pdb
would be typed as ./lys.pdb.
A Grasp Surface File contains the
information necessary to reconstruct a surface. It is an unformatted,
or binary, file and can not be read as an ascii file. It contains the
surface scale and midpoint, plus a list of vertex coordinates, vertex
normals, accessible surface points and a list of triangles, which are
vertex numbers of each triangle. Also, any surface variable which has
been calculated or assigned is also written to this file: surface
potential, distance, curvature, and general properties 1 and 2. Upon
reading this file, the surface is automatically displayed in the
default surface mode. The surface display quantity is usually set for
potentials. Since there are memory limits on the number of vertices and
triangles current in the program at any one time, the program checks to
see whether there is space for the new surface and the input is halted
if there is not.
The program will write to the textport the
number of vertices and triangles read, as well as which properties were
also included in the file. Surface files may contain more than one
distinct set of surface points, in analogy to a PDB file containing
more than one molecule. Each surface read in is assigned a sequential
integer, as if each had just been constructed anew - if the user has
built two surfaces and two more are read in they are assigned surface
numbers 3 and 4. These numbers can be used in surface subsetting. These
numbers also appear in menu lists of constructed surfaces.
Grasp surface files should have the
extension ".srf". They are one of the three primary data
files for Grasp, by which is meant that the program can set the view
center and scale, and can display the structure upon input.
A DelPhi Potential Map file, or phi
map, can be produced by DelPhi or by Grasp. It is also an unformatted
file and one of the three primary data files for Grasp and should have
the extension ".phi". The program keeps a menu list of all
such files in the current directory, which is accessible to the user
when choosing a file. As well as containing the potential at every
point of a 65 cubed lattice, phi maps contain a scalle (lattice
spacing), and a midpoint (the absolute coordinates of grid point
(33,33,33)). Extended phi maps may also contain a rotation matrix. A
phi map is read into internal map 2, overwriting any resident map. This
map is set to be the current map, and so is the one automatically used
for such operations as contouring. If no scale and midpoint has been
set for the Grasp unit box, it is set from the scale and midpoint of
the phi map, so the map exactly fits the Grasp box.
A DelPhi Epsmap file (default
extension ".eps") is the final unformatted file type Grasp
will read and contains the information on the dielectric map used in a
DelPhi calculation (eps is short for epsilon, the symbol for the
dielectric value at each point in space). The dielectric map is defined
at the grid midpoints, i.e. the points half way between every
grid point and its six nearest neighbors. There are 3*65 cubed of
these. Eps maps have a center and scale associated with them, though
they can not be used as primary data files for Grasp. They also contain
a list of which grid points were assigned as being in salt, which is
referred to as the "Debye" map. When reading in an eps file,
the user can choose to read in just the X or Y or Z component of the
eps map, since these are each individually 65 cubed maps. The grid
values are either set to one or zero, one if inside the low dielectric,
zero if outside. The user can also opt to make a composite map of these
three components, where the values of the eps map at each of the six
midpoints associated with a grid point are added together and assigned
to that grid point. Finally the user can select to read only the Debye
map from the epsmap. Here the values assigned to each grid point are
one if in salt and zero otherwise.
These maps can be used to check the actual
surface used in a calculation, relative to the underlying atoms. They
can also be useful in calculations. For instance, one can use the eps
map to set all potentials inside the molecule to zero, or the Debye map
can be used to calculate excess salt concentration from a DelPhi phi
map.
A Grasp Property File is an ascii
file which contains a list of values to be assigned to either atoms or
vertices. The format of the file is especially simple, namely a number
of comment lines, then a line with the letters "surface=property"
if the values belong on a surface, or "atoms=property"
if they belong to atoms, where property can be
"potential", "distance", "curvature",
"gproperty1", "gproperty2", "accessible",
or "charge", followed by a list, one value per line, of the
values to be assigned to vertices or atoms in sequential order - value
1 goes to atom 1 or vertex 1. When this file is read in, the maximum
and minimum values for that property array are recalculated and the
color coding altered if necessary if currently displayed. These files
can be created by Grasp, or by the user via external programs.
A PDB File is the final primary data
file for Grasp. The correct extension is ".pdb", and a list
of all such files in the current directory is maintained in menu form.
Grasp supports several variations on the format laid down by the
Brookhaven Protein Data Bank, in that the field after the coordinates
can be used to contain Grasp atomic property information. The original
such variant was the "modified" PDB file output by DelPhi.
This substituted the occupancy and Bfactor information with
radius and charge for that atom, since this is information was
necessary and sufficient for a DelPhi calculation. Grasp supports this
type of file and will recognize the format when the file is read and
assign the values in these fields to the radius and charge of each
atom. Grasp also supports files where this information is actually
meant for general atom properties 1 and 2 (for instance if the values
really do represent occupancy and B values), and where these properties
are written in higher precision. To alert the program to the correct
interpretation of these fields the user should insert the correct
headers to these files, as described in section A.5. All of these file
types are written by Grasp, in which case the correct header is
automatically inserted.
Upon reading a PDB file, Grasp automatically
constructs a bonding pattern for those atoms based upon proximity and
atom type. This procedure is not always perfect but works well for high
resolution structures. The exception to this is if the file contains
alternate atoms, such as if some atoms are multiply represented in the
file due to ambiguities in the original electron density map. The
program will not at present take account of this in bond formation and
inappropriate bonds will probably be made due to proximity
considerations. Multiple structures can be entered within one file if
they are separated by "TER" lines. Otherwise the same problem
of inappropriate bonding patterns may occur. If Grasp detects what it
thinks is such a pattern, like a carbon bonded to five atoms, it writes
out that atom's information field, plus the number of bonds being made,
to a file called bonding.dat. This can help the user check the
validity of the assumed bonding by viewing this file after a structure
has been read. Grasp will also write to the textport the number of
atoms and molecules read.
Radii are assigned from the data file default.siz
unless the file type has embedded radius information. Charges are not
assigned automatically, unless they are also embedded in the file. If
charges are assigned within the file the maximum and minimum charge
values are (re)calculated for use in color coding of this variable. If
no scale has been calculated, Grasp calculates the maximum X, Y or Z
dimension and makes the Grasp box size 50% greater so that the molecule
fills at most two thirds of the box. (Note that Grasp includes the atom
radii in this assessment so that small molecules do not appear too
large).
To do operations on DNA, it is necessary to
read in a PDB file which contains DNA information. Mixed files with
proteins and DNA are fine.
A Grasp Script File is an ascii file
where that each line is read and sent to the command interpreter as if
the lines were typed on the command line. As the file is read , each
line is written to the textport at the same time it is processed. Lines
which begin with the symbol "!" are treated as comment lines
and written to the screen but not acted upon. An example of the use of
such a file is to enact a default color scheme for atoms the user
favors, or as an alternative method of setting radii or charges from
DelPhi control files. The user has the option of writing all textport
commands entered, via the Write menu, to an external file history.dat,
which is often a good starting point in constructing a script file.
A Radius/Charge File deals with the
input and processing of DelPhi style control files for these variables.
Several such files are located in the Grasp data directory, and the
user may place their own there too if they wish them to appear in the Radius/Charge
File menu. These files should have the correct file extension:
radisu size files are ".siz", charge files ".crg".
Alternatively, the user can input the name of a file, which will be
processed according to the file extension. Upon reading a charge file,
the total assigned charge will be reported and the maximum and minimum
values found, which may alter the display if charge is a current
display variable. Upon reading a radius file, the program reports the
number of distinct radii amongst all atoms. This value may not exceed
100.
A Curves File contains information on
DNA parameters, and at present must be in the same format as that put
out by the program "Curves", (which must have extension
".lis"). Future versions of Grasp will support other DNA
structure program output.
A Pair Wise Interactions file is an
ascii file which can come in two formats as described in Appendix A.
These files contain information on which two residues each matrix
interaction is between, and the strength of the interaction. If the
program can not assign the given value to a pair and cannot find one or
both of the described residues, that line of the file is written to a
file called int.pair.not.assigned.dat. That there have been such
failures is written to the textport after the file has been read in.
There can be at most 10,000 interactions in the program at any one
time. Note that reading in a new file will overwrite old values.
A Grasp .init File is an ascii file
that contains one or more of the commands described in appendix B.
A Grasp Macro File is an ascii file
that contains a series of definitions of commonly-used functions as
described in section A.8.
4.6 - Write Menu
Grasp Surface File
Atom (PDB) File
Potential Map
GRASP Property File
History File
Surface Points as PDB
Macro to File
RGB/Snapshot File
Grasp can export most of its internal data
structures to external files. The format of some of these files can be
found in Appendix A. Files are written to the current directory (unless
the file name specifies otherwise). If the file exists, the user will
be prompted as to whether to overwrite the file or not. In some cases,
the user may have the option to append to a file of the same name.
A Grasp Surface File contains
information sufficient to display and manipulate a surface. Any
property array which differs from zero in any of its entries is also
written automatically to the same file. One can append surface files to
other surface files when writing. When this is done the equivalent of a
"TER" line is inserted so that upon subsequent input,
different surfaces remain distinct, just as different molecules would
from a properly constructed multiplemolecule PDB file.
When writing a surface file, the user is
given the same choice of surface subsetting as in any other operation
involving surfaces, so that one is not restricted to exporting whole
surfaces. For instance, the user may wish to save only the part of a
surface involved in making an interface with another surface. Note that
the user can immediately read a surface just written, which provides a
mechanism to duplicate a surface subset.
An Atom (PDB) File is a PDB file but
with the four different possible formats mentioned in the Read
menu section: no extra data, radius and charge data in the occupancy
fields, another pair of properties in these fields, or a pair of
properties to higher precision. In the latter two cases, the user is
prompted as to which atom properties to export. As with surface files,
the user may select any subset of atoms to be exported rather than all
atoms, and the user has the choice of four different coordinate frames.
As with surface files, the user can export a molecule or part of a
molecule and then read it in as a way to duplicate those atoms.
For both surface and atom files, the user
has four choices for the frame of reference used to calculate the
coordinates written to file. These appear on a menu which has the
entries: Absolute Centering, And Rotated, Box Centered, and And Rotated.
Absolute Centering, which is the default, is
to write out the coordinates unchanged from the original PDB file. Box
Centered writes out the coordinates after adjusting them so that the
center of the molecule is (0,0,0). If a molecule has center (average)
coordinates (4.203, 3.123, 5.011) and this is the first file Grasp
reads in, it will set the scale of the Grasp box by it and also make it
the center of the box. The box centered option subtracts 4.203 from
each X coordinate, 3.123 from each Y coordinate, and 5.011 from each Z
coordinate. The two And Rotated entries apply the current
rotation/translation matrix to the original coordinates before writing.
The first rotation entry applies just the rotation matrix, and the
second applies the matrix and then centers the molecule at (0,0,0).
These options can be used to compare
surfaces or molecules, or parts thereof, which have radically different
centers and/or orientations. They can also be used to restore an
orientation so that the exact same view can be examined again.
For Potential Map, Grasp will write
out either internal map in DelPhi form. This file will contain the
values at each grid point, along with the grid spacing and coordinates
of the central point. Such files can not be concatenated. A default
file name of fort.14 is provided because that is the default
Fortran unit to which potential maps are written by DelPhi.
For a Grasp Property File, the user
is given the choice of surface or atom property, and then the
particular property to be written (if the user wishes to add comment
lines to this file this must at present be done by hand - editing the
file externally). One should note that the user does not get to choose
which vertices and which atoms have their properties exported as all
such are exported in Grasp property files. The reasoning behind this is
that since the files do not contain any atom or vertex information
other than the sequential position in the file, selecting a subset of,
for instance, atoms, would not necessarily be sequential. Writing a
property file for such a selection would create a file almost
impossible to interpret, and which certainly could not be read back in.
If a subset of properties is required, the user should export a
property in a PDB file, or list the properties to to the textport with
the "list" command and capture them using the cut and paste
feature of the window manager.
The History File option will write
all the commands processed by the program via the textport to the file history.dat.
Note that only commands will be written, not selections passed to the
program via the textport in the context of a menu request. The user can
then edit this file and add comment lines by making the first character
of that line a "!".
Cavity Surface Points as PDB will write a list of accessible surface points
which belong to cavity surfaces (assuming these have been calculated)
as if each such point was an atom, i.e. in PDB file format. The file is
always named cav.pdb. One use of this file has been to add these
pseudoatoms to a pdb file and prevent this volume from being
assumed high dielectric by DelPhi. (Note this is not assured of
achieving this goal if the cavity could accommodate a sphere of
diameter twice that of a water, but this rarely ever occurs).
Macro to File writes the definition of an already exisiting
macro to a file. The user is asked for a filename and then to pick an
entry from the Macros menu.
RGB/Snapshot File writes the currently displayed picture to an
Iris "ipaste" rgb file.
4.7 - Formal
Subsets Menu
Fix Dials to World
Fix Dials to a Subset
Make a Formal Subset
Remove a Formal Subset
Remove a Subset Rotation
Fix a Subset Rotation
Formal subsets may be a selection of atoms
or surface vertices or both. If both, we refer to the subset as being
of mixed type. Mixed type subsets come in two flavors - those where
atoms were selected on the basis of proximity to a set of surface
vertices, or those where surface vertices were selected on the basis of
proximity to a set of atoms. Up to 100 formal subsets may be created.
Upon creation, each subset is given a unique name by Grasp, or the user
may provide a name. Formal subsets are formed to enable independent
rotations and translations of a subset of a structure or to provide a
unique label for a certain set of atoms and/or vertices.
The "world" has one transformation
matrix associated with it and each formal subset has an additional
unique such matrix. By "world" is meant the entire view
including all atoms and vertices. The total transformation matrix for a
subset is the product of these matrices. All subset rotations and
translations of a formal subset change the subset's own private matrix,
but have no effect on the world matrix. If newly defined subset is
itself part of a formal subset which has been moved relative to the
world, then the new subset will inherit the matrix of the previous
subset.
Fix Dials to World and Fix Dials to a Subset allow the user
to attach dials either to the world or to any formal subset. Once a
formal subset is created and named, the dials are automatically
assigned to that subset to the exclusion of all other atoms and/or
vertices. If the user opts to connect the dials to another formal
subset, the user is presented with a list of the subsets created so
far. If active formal subset rotation mode (Control A) is in effect,
the dials are still automatically attached to any new subset, however
this is no longer significant, unless the user quits the mode
immediately, since manipulations are only applied to what the cursor
first lies upon. Note that choosing the world or a formal subset for
the dials turns off the this mode.
Make a Formal Subset creates a formal subset. Grasp will prompt the
user with the standard options for selecting a subset: command line
selection, a particular molecule, a scribed surface, etc. These atoms
or vertices then become the new formal subset. If the user want to make
a mixed subset, the criteria used in associating surface with atoms or
atoms with surface is distance. This can be distance in terms of atom
center to vertex distance, atom center to vertex distance minus the Van
der Waals radius of the atom, or "contact", which means that
the surface and atom are related in that the atom was used in the
creation of that bit of surface.
The names of formal subsets are derived from
the constructed surface number of the surface, or the molecule number
of the atoms, and any previously named subsets. For instance, if the
user has selected atoms from the molecule 2, and it is the first such
subset, then the name suggested would be "m2:a",
"m" for molecule, "2" for molecule number, and
"a" for the first such subset. If it was the second subset
from molecule 2 and at least one atom in this selection is not
contained within "m2:a", then the name suggested is
"m2:b". If it is totally contained within "m2:a"
then the naming becomes hierarchical and the name is
"m2:a:a". If the atoms make up exactly all of one molecule
then everything from the colon to the right is dropped, so that a
subset containing all of molecule 2 is simply "m2". Note that
molecules are not automatically formal subsets, they have to be defined
as such. If the atoms are from more than one molecule then the
"m" number is set to 0, so that the first such subset would
be "m0:a", the second, if not included in m0:a, would be
"m0:b", etc. The same rules apply to surfaces, where the
surface number substitutes for molecule number. For mixed subsets, the
rules for atoms with associated surface are applied as if there were
only atoms, except the "m" becomes an "ms", making
it "ms1:a" for the first set of atoms from molecule 1 with
associated surface. For mixed subsets where the surface is the primary
selection, and atoms are associated, the "ms" changes to
"sm", so that the set of some vertices from surface 2 with
all atoms within five Angstroms would be "sm2:a".
This somewhat complicated naming system was
designed to enable the user to keep track of complicated subsetting
operations. If the user is not going to require such sophistication,
choosing an arbitrary name may be preferable. Note also that if the
subset created contains elements of a previously created formal subset,
those elements are reassigned to the new subset.
One can also Remove a Formal Subset.
When this is done, the atoms and/or vertices formally associated with
that subset are returned to the world - its own private transformation
matrix is wiped clean, and the formal subset name is removed from the
name list. This may cause the subset to "jump" if this subset
has been moved relative to the world. If a surface subset has been made
which does not consist of a complete surface, for instance the user
scribed a patch of a complete subset and made this a subset, then
deleting a subset does not return the internal representation
completely to its original state. This is because forming such a subset
will cause the duplication of some vertices, specifically those at the
border of the subset where vertices are originally shared with the rest
of the surface. This may cause problems if the user later attempts to
scribe across this region into another, or in any other Grasp function
where vertex connectivity is important.
Remove a Subset Rotation allows selective "undo" operations on
rotations and translations applied to subsets. One of the intentions of
formal subsetting was to allow the user to rearrange the positions of
two molecules, or parts of molecules - for instance to explore new
configurations of an enzyme and an inhibitor. The menu options for
removing and fixing subset rotations are designed to help this process.
After selecting a subset, the user has three
choices: That Subset Whole Rotation, Since World Last Moved, and Since
Another Subset Moved. That Subset Whole Rotation will remove all the
"differential" manipulations on the chosen subset and resets
the subset's own matrix to the identity matrix. Hence the subset is
moved to the position it would have had if it had never been selected
as a formal subset. Since World Last Moved removes partial rotation and
translation operations applied to the subset since the world was last
moved, and Since Another Subset Moved removes all operations such since
some other formal subset was moved. These last two options reset the
subset's matrix to previously saved values, e.g. that matrix when the
world was last moved.
Fix a Subset Rotation means that the subset's own transformation
matrix, the matrix which represents the differential manipulations
relative to the rotations and translations applied to the world view,
is applied to the subset's internal coordinates. Its values are then
reset to the identity matrix. Remember that moving an object via mouse
or dials does not affect an object's internal coordinates - just the
view. This option allows the user to "fix" the apparent
rotation, make the change of view apparent in the objects coordinate's,
and reset the view. This application of a transformation is described
in Write menu under PDB File. Note that if the user chooses to
fix the world, then all coordinates are recalculated, and world
transformation is set to its initial value, the identity matrix.
If the user is in stereo or split screen
mode, subset manipulations can become very complicated. Grasp allows
the user to manipulate the left and right views independently. This
facility carries over to formal subsets, so that one can manipulate the
righthand view of a formal subset independently of the
lefthand view. To do this, merely set the dials to the
righthand view ("Display: Alter Stereo/Split: Dials to
Right") and attach the dials to the desired formal subset with Fix
Dials to a Subset. To switch to the same subset on the left, do the
same thing for the lefthand view. Note that being in active
subset rotation mode does not help here, since the side which is
manipulated is NOT decided by which side the cursor initially resides
upon. Furthermore, not all features are fully implemented, for instance
the "undo" features of Remove Subset Rotations only
apply to the lefthand subset. This limitation also applies to Fix
Subset Rotations. It is unlikely this will present many problems to
most users. This will be resolved better in later versions.
4.8 -
Programs Menu
Superimpose
This menu is intended to allow the user to
access auxiliary programs via Grasp. At present the only such program
is superimpose, which uses the Kabsch algorithm to calculate the r.m.s
between sets of atoms.
Superimpose requires two set of atoms as its
input. The user can supply these in the usual manner, formal subset
name, command line selection, complete molecule, etc. These two sets
MUST have the same number of atoms. Once given, the algorithm
calculates the rotation and translation which will minimize the root
mean square difference between these two sets, the differences being
calculated between each atom in each list sequentially, atom one of
list one with atom one of list two, etc. This r.ms. value is reported
via the textport.
The user is then given the option of
actually superimposing the two sets of atoms or larger subsets of atoms
based upon the same rotation and translation. For instance, suppose one
is interested in the similarity of two helices within a protein. First,
select an equal number of residues within each helix. Since the
residues of each helix may not be exactly the same, the residues can
not be automatically compared or superimposed. So select just the
backbone alpha carbons from each helix. An r.m.s is then calculated and
reported for these two subsets.
The user is then presented with a submenu to
apply the rotation matrix. No quits the superimpose program. Apply
Forward to 1st Selection rotates and translates the atoms of the first
set onto the second via the optimal matrix calculated. Apply Backward
to 2nd Selection will do the same but with the second set onto the
first. In the example above, this is not a very useful operation in
either direction - one wants to compare entire helices, not just the
alpha carbons. Apply Forward to New Selection and Apply Backward to New
Selection both apply the calculated matrix to a new selection. Choosing
the whole of the first helix and apply forward to new selection,
or the second helix and apply backward to new selection, will
superimpose the complete helices.
4.9 - Set
Parameters Menu
Rotation Rate
Translation Rate
Probe Radii Values
Electrostatic Parameters
Depth Cueing
Material Transparency
Worm Parameters
System Miscellaneous
DNA H-Bond Parameters
This set of menus gives the user access to
many of the internal parameters of Grasp. The menu contains entries for
parameters often altered and submenus for parameters which can be
grouped together.
Rotation Rate and Translation Rate alter the rate at
which the view is rotated and translated by the dials or the mouse. The
user enters new values via the textport. To leave the value unchanged,
hit return without typing anything. Rotation rates are in angles per
redraw, while translation rates are in Angstroms per redraw. The
default values in Grasp are set high to allow for rapid initial
manipulations, after which the values can be set smaller for fine
control.
Probe Radii Values brings up a submenu which accesses the radii of
the different probes used in Grasp, namely those used in calculating
surface area of atoms, making a molecular surface, and in a
PoissonBoltzmann calculation (the latter can also be set by Electrostatic
Parameters). The same probe is used for both molecular surface
and accessible surfaces.
Electrostatic Parameters allows the user to alter the values which are
used in the PoissonBoltzmann calculation when the user selects "Calculation:
New Potential Map". Those parameters are the inner and outer
relative dielectrics, the water probe radius used to estimate water
inaccessibility, the probe size used to account for ionic radius, which
is how close an ion may come to the surface of a molecule, and the
ionic or salt concentration. The default values for these parameters
are:
interior dielectric 2.0
exterior dielectric 80.0
water probe radius 1.4
ionic probe radius 2.0
salt concentration 0.0
Depth Cueing allows the user to control the apparent depth of
a view by having parts of a view further away appear darker than parts
closer. In theory one does not have to interpolate colors to black, but
that is the automatic choice in Grasp. Colors are recalculated based
upon a front distance f and a back distance k (f
> k). If a vertex has Grasp Zcoordinate of z
and a color of (r,g,b) its depth-cued color (r',g',b')
is found from:
r'=r*F, g'=g*F, b'=b*F
where F=(Zk)/(fk), (fk)=max(0.1, fk),
and (F=1.0 if F> 1.0) and (F=0.0 if F<0.0).
In Grasp, f is taken from the front
of the object and k is defined relative to it as a multiple of
the distance from the front to the back of the object. So if an object
has a front to back distance of 0.8 box units and a depth factor of
0.5, the back of the object has its colors half-interpolated to black.
If the depth factor is 0.0 then the back distance is infinity and depth
cueing is turned off. A depth factor greater than 1 will result in some
of the object being colored completely black (the element is not
uncolored, it's black). The front and back of the object in question,
whether a surface such as a contour or molecule surface, or for bonds
or atoms, is calculated dynamically and changes as the molecule is
moved. Note that the last condition specified above, (fk)=max(0.1, fk),
is included so that depth cueing does not become too excessive for
small molecules. In general the larger the molecule the more depth
cueing is needed, the smaller the molecule the less is needed. Another
way of stating this is that the degree of depth cueing should be
proportional to the complexity of the object.
The user gets the option of entering a new
depth cueing value which is the inverse of k, or turning the
depth cueing off for atoms, bonds, molecular surfaces, contours, or all
structures. Depth shading is highly recommended for surfaces drawn in a
mesh representation.
Material Transparency allows the user to set the material transparency
for a molecular surface, contour, worm, interpolation plane, or all of
these. The transparency options are 3/4 solid, 1/2 solid, 1/4 solid, or
opaque (default).
Worm Parameters changes the parameters used in constructing a
backbone worm. These options are Worm Thickness, Spline Resolution,
Cross Section Resolution, and Allowed Spline Gap. Spline Resolution
alters the number of subsegments used for each Bspline segment.
Each segment is constructed from each set of four consecutive atoms in
the selection list, and the default number of subsegments per segment
is four. Note that this change only takes effect when a worm is built
and does not alter the segment density in chains already constructed.
Cross Section Resolution alters the number
of sides of the cross-section of the polygonal tube used to construct
each segment. The default number of sides is ten.
Worm Thickness alters the radius of the
cross-section of the worm. Note that changes made to thickness and
segment resolution are reflected immediately in any worm already built.
Allowed Spline Gap is the distance used to
determine spline breakage. If two sequential atoms in a worm selection
are more than a certain distance apart, the spline is terminated and a
new one begun. Hence, if constructing a backbone worm when the protein
has more than one chain, there will be one spline per chain. If this
distance is set sufficiently large, this will force the construction of
a single spline through disjoint chains. It can also be useful in
judging patterns of distances of a certain subclass of atoms - spline
breakage contains local distance information.
System Miscellaneous brings up a submenu with the entries: CPK Level,
Surface Area Probe Density, Bond Cylinder Diameter, and Maximum Surface
Resolution. CPK Level allows the user to select the resolution used to
draw the solid spheres used to represent atoms. The different levels
represent hierarchical decimations of an octahedron.
Surface Area Probe Density controls the
number of points on the probe sphere used to calculate surface area in
Grasp implementation of Shrake and Rupley's algorithm, where points on
a sphere of radius=(Van der Waals of atom)+(radius of water) are tested
as to whether they lie within the similarly expanded radius of any
other atom. The fraction of such points which do not is the fractional
accessibility of that atom from which the accessible area is derived by
multiplying by the area of that atom's expanded sphere. The point
densities are based upon decimation of an icosahedron. On choosing a
level, the number of points in the test sphere is written to the
textport.
Bond Cylinder Diameter is the thickness of
the cylindrical bond representation in Angstroms. The user can enter
any value between 0.0 and 1.0. Default is 0.2 Angstroms.
Maximum Surface Resolution corresponds to
the minimum lattice spacing allowed for the lattice used in creating
surfaces. The smaller this number, the finer the grid spacing, the
higher the resolution allowed. This number is not allowed below 1/3
Angstrom. Making this number larger forces a coarser grid to be used,
which results in fewer triangles and surfaces which are quicker to
spatially manipulate in real time.
DNA H-Bond Parameters allows the user to set the DNA H-bond parameters.
4.10 -
Miscellaneous Menu
Toggle Cross Hairs On And Off
Toggle Color Bar On And Off
Release/Reconnect All Dials
Fullscreen/Normal Toggle
Set And Save Colors
Smooth Property
Z-Slice Tool
Invert Normals
Change Current Map
Reset World Rotations
This menu has functions which do not quite
fit anywhere else. Some of these entries can be accessed via control
keys. Most entries are selfexplanatory and so we shall describe
only those which are not.
Smooth Property smooths the interpolation of surfaces.
Z-Slice Tool invokes a special tool which allows the user to
control the clipping planes for the view. These clipping planes apply
to all structures, including the display box. The tool appears as an
independent window, i.e. it can be placed anywhere, resized at will and
quit like any other Iris window. However the implementation is not
perfect and at this time it is recommended that the tool is NOT resized
and that the user be VERY careful not to quit the entire program when
exiting a ZSlice window (there are two options here,
"close" and "quit", always choose
"close").
The tool appears as having four colored
squares surrounded by a white border. This border will change to red if
the cursor is placed over the tool. Each square controls one aspect of
the slice plane, namely either the width, the mid point, the front
plane position or the back plane position. Each square has its function
inscribed along with the current value. These values are in Angstroms.
By clicking and releasing either the left or the middle mouse button in
a square the value associated with that box is altered. Clicking to the
left of the center of a box decreases the value, to the right increases
it. The closer to the center a click the smaller the increment. The
right most mouse button brings up the windows control menu. When the
tool is first activated, the clipping planes are +/1.0, i.e the
front and back of the Grasp box. It is recommended that the user have
this box displayed (Control O) while using the ZSlice tool since
this clarifies the clipping planes' position.
Invert Normals inverts the surface normals of a surface
selection, which is a way to make a surface appear "inverted"
or "inside out".
Change Current Map swaps the pointer to the current internal map.
This can also be accessed via Control C.
Reset World Rotations erases all "world" rotations and
translations and returns the view to when the first structure was read
into Grasp.
4.11 - Help Menu
The help menu has two entries, Command Line
Syntax and Control Keys. Command Line Syntax displays a list of Grasp
commands, each with a short description. Control Keys displays a list
of control Keys and their functions. Selecting an entry in the Control
Keys menu causes that function to execute.
4.12 - Macros
Menu
This menu displays the defined names of all
macros which have been read in with "Read: Grasp Macro
File". Selecting an entry on this menu cuases that macro to
execute.
4.13 - Quit GRASP
"It's Miller time".
5 -
Command Line
Most menu commands can be entered from the
keyboard instead. When entering commands from the keyboard, the cursor
should initially be over the graphics window. The user then just begins
to type the command. The cursor will then jump to the textport where
the characters will appear. Upon completion of the command, hit
'return' and the command will be executed and the cursor will return to
the graphics screen.
(The textport may originally not be in the
foreground and has to jump from the background. This usually takes a
finite length of time to complete and if the user types particularly
fast the second character entered may get lost in the transition and
will not appear in the typed command. If the textport is in the
foreground this usually does not occur. Also if the user tries to
backspace over the first letter of the command they will find they can
not! Simply reenter the command in this case.)
Commands that can be entered via the
keyboard are color assignments for all structures, precise rotations
and translations, radii and charges of atoms, listing of atom
properties to the screen, information for atoms and surfaces, and
subsetting codes for commands and for menudriven functions. Note
that Grasp is case insensitive for character variables, such as atom
names, but not for subsetting codes.
To simplify the description, the following
notations will be observed for variables:
n,m
any integer
x,y
any real number
a,b,c,d any character
5.1 -
Subsetting Codes
Commands usually include subsetting codes.
One can subset by many properties of atoms, surfaces, and other objects.
5.1.1 -
Negation, Ranges, and Concatenation in Subsetting Codes
Subsetting codes are negated by putting a
minus sign right after the equals sign:
r=-lys selects all residues which are NOT
lysine.
If the variable to be negated is a number,
put parentheses around it to avoid confusion:
q=-(1.0) selects all atoms which do NOT have
a charge of 1.0.
q=-1.0 selects all atoms with a charge of
-1.0.
Ranges are selected by separating range
values with commas and putting them in parentheses:
p=(1,2) selects all atoms whose potential is
in the range 1.0 kt to 2.0 kt.
Subsetting codes are concatenated by
separating them with commas:
r=lys, q=-(0.0), X=<0.0 selects all atoms
which are in lysines AND have nonzero charge AND are in the left
hand side of the screen.
5.1.2 - Atom
Subsetting Codes
Atom Name: a=abcd
a=oe1 selects all atoms with the name
"oe1" or "OE1" or Oe1" or "oE1".
There are up to 4 characters read for each
atom name.
Question marks act as wild cards:
a=oe? selects all atoms with names
"OE1" and "OE2".
"_" indicates an intentional blank:
a=o_1 all atoms with names "o 1"
or "O 1".
There are a couple of short cut names for
backbone atoms and for side chain atoms:
a=ba selects atoms C, CA, N, O, HA, and HN.
a=sch equivalent to a=-ba.
Atom Number: an=n, an=(n,m),
an=>n, an=<m
an=(1,500) selects the first five hundred
atoms.
Atom number refers to the internal numbering
scheme - atom 256 is the 256th atom to be read in, NOT atom 256 in the
pdb file.
Residue Name: r=abc
r=lys selects all atoms in all lysines.
There are 3 characters read for each residue
name.
There are several short cut names for
residues based upon their hydrophilicity:
r=crg selects all residues which are
normally assigned formal charges - lysine, arginine, glutamate,
aspartate.
r=pol selects all the residues formally
polar - serine, threonine, tyrosine, histidine, cystine, asparagine,
glutamine, tryptophan.
r=hyd selects all hydrophobic residues -
alanine, valine, leucine, isoleucine, methionine, phenylalanine,
proline.
Residue Number: rn=n, rn=(n,m),
rn=>n, rn=<m
rn=(1,25) selects all residues which have
residue numbers between 1 and 25.
Unlike atom numbers, residue numbers are the
same as in the pdb file. A consequence of this is that while every atom
has a unique number, different residues (e.g. on different chains)
could have the same number. If a residue number is not assigned in the
pdb file it is assigned the number 1 for internal purposes.
Residue Projection: >r
Projection allows selection of a residue
based upon whether an atom of that residue has been selected. Suppose
one wants to select all residues which have atoms within five Angstroms
of a certain cofactor with residue name CYT. First, one calculates a
distance map for all atoms to this cofactor. One would then select all
atoms which are within five Angstroms of the cofactor and
"project" this onto the parent residues:
d=<5.0,r=-cyt >r selects all residues
with atoms within 5 Angstroms of residue CYT.
Chain Name: ch=a
ch=-B selects all atoms NOT in chain B.
If there is no chain specifier in the pdb
file, it is assigned the letter "A".
Charge: q=x, q=(x,y),
q=>x, q=<y
q=>0.0 selects all atoms which have been
assigned a positive charge.
Radius: R=x, R=(x,y),
R=>x, R=<y
R=-(0.0) selects all atoms which have been
assigned a non-zero radius.
Potential: p=x, p=(x,y),
p=>x, p=<y
p=>10.0 selects all atoms at whose center
the calculated potential is less than 10.
Potentials are in kt, (1 kt = 0.6 kcals).
Original Coordinates: x=x,
y=(x,y), z=>x, z=<y
x=(50.0,60.0),y=>45.0 selects all atoms
whose original x coordinate is from 50 to 60 Angstroms and whose
original y coordinate is => 45.
These are the coordinates as they appear in
the pdb file, in Angstroms. These are unchanged by any user applied
rotations or translations.
Screen Coordinates: X=x,
Y=(x,y), Z=>x, Z=<y
X=>0.5 selects all atoms whose current
screen x coordinate is => 0.5.
These coordinates are relative to the screen
and in box coordinates. They alter as the molecule is moved. The
coordinates here are relative to the unit box, i.e. which runs from
plus to minus one, so the example given above will pick all atoms which
are in the right most quarter of the screen.
General Property 1: p1=x,
p1=(x,y), p1=>x, p1=<y
General Property 2: p2=x,
p2=(x,y), p2=>x, p2=<y
p1=(5.5,6.5) selects all atoms whose general
property 1 is from 5.5 to 6.5.
Molecule Number: m=n, m=(n,m),
m=>n, m=<m
m=1 selects the first molecule that was read
in.
Molecule number refers to the order in which
molecules are read in, i.e. the first structure read in is assigned the
number 1, the second 2 and so on. If more than one molecule is read
from a single file, the molecule numbers are sequentially assigned.
Accessible Area: S=x, S=(x,y),
S=>x, S=<y
S=0.0 selects all buried atoms.
One should first do an accessible area
calculation to be able to select on it.
Distance: d=x, d=(x,y),
d=>x, d=<y
d=<3.0 selects all atoms 3 Angstroms or
less from some set of points.
One must have calculated a distance map to
select on this property.
Formal Subset Name: sub=abcd
. . .
sub=m1:a selects the formal subset
"m1:a".
If you choose your own formal subset names,
rather than accept those produced for you by Grasp, try not to start
the name with a "-", since this will be interpreted as a NOT
symbol. Subset numbers can also be substituted for formal subset names
(i.e. if m1:a was the first subset created, then sub=1 will have the
same affect as sub=m1:a).
Discrete Atom Color: cd=n
cd=7 selects all atoms assigned to color 7.
5.1.3 - Surface
Subsetting Codes
Many of the subsetting codes for surface
properties are the same as those for atoms. In context there should be
no danger of nonuniqueness. When using the vertex coloring
command "vc=n, p=n" it is clear that the
potentials being specified by the "p=n" code refer to
vertices and not atoms. Similarly any requests for subsetting via the
menus will entail a similar understanding. The following codes are
identical for both atoms and vertices (they both refer to the same
property but for atoms in one case and vertices in the other):
p= potential
x=,y=,z= orginal coordinates
X=,Y=,Z= screen coordinates
p1=,p2= general properties 1and 2
d= distance
sub= formal subset name
Surface Number: s=n, s=(n,m),
s=>n, s=<m
s=(1,3) selects the first three surfaces
read in or constructed.
Surface number refers to the order in which
surfaces are read in or constructed, i.e. the first surface read in is
assigned the number 1, the second 2 and so on. If more than one surface
is read from a single file, the surface numbers are sequentially
assigned.
Curvature: C=x, C=(x,y),
C=>x, C=<y
C=>0.0 selects all parts of the
calculated surface which are concave.
One must first calculate the curvature to
select on this property.
Vertex Number: vn=n, vn=(n,m),
vn=>n, vn=<m
vn=15677 selects vertex number 15677.
Vertex number is assigned serially upon
being imported or constructed. Vertex number might not seem a useful
variable, but for example if one calculates the maximum potential on a
surface, or portion of a surface, the vertex number of that point is
also returned. Hence a "vn" code along with a "vc"
(vertex color) command can be used to locate this point.
Discrete Vertex Color: vcd=n
vcd=2 selects all parts of the surface
currently assigned color 2.
5.1.4 - Bond
Subsetting Codes
One selects bonds on the basis of the atoms
they originate from, or the atom they are ending on. Note that although
bonds conceptually go between pairs of atoms, in Grasp they go halfway
- each bond object goes from the center of an atom halfway to the other
atom of the bond pair. Each half-bond is then uniquely associated with
an atom. So when a bond is colored, actually only half the bond is
colored.
Bond colors can be automatically mapped from
underlying atoms via the appropriate menu command. There is also an
internal color scheme for bonds which can be selected from the menu.
Bond Projection: >p
a=sch >p selects all bonds ending at side
chain atoms.
Usually one selects bonds by selecting a
subset of atoms. The bonds which originate from those atoms are then
selected. Bond projection is used to "project" to a subset of
atoms the bond is ending on:
Discrete Bond Color: bcd=n
r=pro,bcd=3 selects all bonds in any proline
currently assigned color 3.
5.1.5 - Backbone
Box Subsetting Codes
One selects backbone boxes by selecting a
subset of atoms. The backbone boxes are constructed out of four atoms:
the alpha carbon of the first residue, the carboxyl oxygen of the first
residue, the amine nitrogen of the next residue and the alpha carbon of
the next residue. If any of these atoms are colored, the backbone box
that uses that atom is assigned that color.
The only unique property backbone boxes
possess is the color they have been assigned:
Discrete Box Color: kcd=n
rn=(8,33), kcd=3 selects all backbone boxes
which are part of residues 8 to 33 which are currently assigned the
color 3.
5.1.6 -
Pair-Wise Interaction (Matrix) Strand Subsetting Codes
Matrix strands are residue-based but they
can be subsetted using any atom codes. If then any atom of a residue is
selected then that residue is selected. Both ends of the strand are
checked for and ORed to determine selection. There is no direct way to
select on the basis of both ends of the strand, for example only
strands which go between lysines and glutamate (this can be done
indirectly using the icd code). This is an exception to the usual Grasp
philosophy of commands always being AND based and reflects the
twosite nature of matrix strands.
All other matrix strand operations, such as
scaling by distance, deciding upon the display mode, and the maximum
interaction strengths used in width encoding, are under menu control.
Strand Strength: ip=x,
ip=(x,y), ip=>x, ip=<y
ip=>0.0 selects all strands with positive
interactions.
Strand Strength Rank: ip=n
ip=2 selects all strands which are the most
positive or second most positive for that residue.
ip=-1 selects only those strands which are
the most negative for that residue.
Discrete Strand Color: icd=n
icd=2 selects all strands currently colored
2.
This code can be used to do the
"double" selection mentioned above - select all strands
running between lysines and glutamates. The following set of commands
will color only these 2:
ic=0 uncolors all strands
ic=3,r=lys colors 3 all strands originating
or ending on lysines.
ic=2,icd=3,r=glu colors 2 all strands
originating or ending on glutamates which are already colored 3.
ic=0,icd=3 uncolors all strands which are
still colored 3.
5.2 - Coloring
The commands for coloring are:
c=n change atom to color n
vc=n change vertex to color n
bc=n change bond to color n
kc=n change backbone box to color n
ic=n change matrix strand to color n
wc=n change backbone worm segment to
color n
where n can be between 0 and 99 and
indexes the Grasp color set. Color 0 is always black and coloring
anything 0 will cause it to disappear.
The default color for atoms and bonds is 1
(white). The default color for surfaces is 91. The color 1 is not used
because it is usually altered to be less than pure white, which
although is okay visually for atoms, looks awful on surfaces, whereas
color 91 is always unaltered white. The default color scheme for
backbone boxes is white at the alpha carbons, red at the oxygen, blue
at the hydrogen to indicate the electrostatic character of the peptide
plane.
There are several exceptions to the color
argument being an integer n:
c=u "undo" the last atom color
command.
vc=u "undo" the last vertex color
command.
These commands will change the color of each
atom/vertex changed in the last command to what it was before. Whenever
atom or vertex colors are changed, a backup copy is made of the
original array and this is retrieved if an "undo" is entered.
c=r "restore" the last set of
atoms.
vc=r "restore" the last set of
vertices.
These commands act upon the atoms/vertices
which have most recently been set to color 0 (hidden), and restores
their color to what it was before they were hidden. While
"undo" will only undo the last coloring command,
"restore" will keep restoring until all colors are changed
back from 0. Although these commands are often used without selecting a
subset, they can also be subsetted to "undo" only part of a
color command or "restore" only part of a hidden subset.
vc=a transfer atom colors to associated
vertices.
This command transfers atom colors to the
associated vertices. By "associated" is meant the
atomtovertex mapping provided by the intermediate
accessible surface. This can be subsetted only by atom codes. This is
the only exception to a general "likewithlike"
rule for atoms and surfaces - that only atom properties can subset
atoms and only surface properties surfaces.
kc=d reset backbone boxes to their original
default colors.
This command restores the coloring of the
selected backbone boxes to the default - corners white, red, or blue
depending on the atom.
ic=c work out the connectedness of all
visible strands.
This command causes Grasp to work out the
connectedness of all visible strands. That is to say if two
strands will be assigned to the same group if they are connected to the
same residue, or if it is possible to go from one to the other via
other visible strands. Grasp will then report the number of such
patches and color each differently. (Only nine different colors are
used so if there are more than nine patches the colors repeat). Note
that there is no restriction applicable to this command - one can not
restrict this command to certain residues. Instead one would first
color all strands which are greater than a certain strength, then issue
the 'ic=c' command. This will then show how far "webs" of
that interaction threshold spread.
Examples of coloring commands:
c=7 colors all atoms 7.
bc=2,r=pro,bcd=3 colors 2 all bonds in any
proline which are currently colored 3.
bc=4,a=n??? colors 4 all half-bonds
originating from any nitrogen atom.
kc=4,rn=(8,33),kcd=3 colors 4 all backbone
boxes which are part of residues 8 to 33 which are currently colored 3.
ic=0 makes all matrix strands disappear.
vc=a, ch=b maps the atom colors associated
with chain b onto the associated surface.
ic=0, icd=2 undisplays all matrix strands
currently colored 2.
ic=2, ip=>0.0, a=oe1 colors 2 all strands
which have positive strength and originate (or end) on a glutamate or
glutamine since these are the only residues with atoms labelled 'oe1'.
ic=2, ip=1, r=lys colors 2 all strands which
are the most positive strand coming out of either residue it connects,
and for which either of these residues is a lysine.
wc=2,rn=(8,33) colors 2 all backbone worm
segments belonging to residues 8 to 33.
wc=0,q=-(0)>r undisplays all worm
segments which belong to residues which have at least one atom charged.
5.3 - Precise
Rotation and Translation
Sometimes it is necessary to move objects by
exact distances or angles of rotation. These commands can be
supplemented only by formal subset names. For example, "xr=90,
sub=m1:a" will rotate the atoms and/or vertices of formal subset
"m1:a".
xt=x translate in the x direction by x
Angstroms
yt=x translate in the y direction by x
Angstroms
zt=x translate in the z direction by x
Angstroms
xr=x rotate about the x axis by x
degrees
yr=x rotate about the y axis by x
degrees
zr=x rotate about the z axis by x
degrees
Xt=x translate in the x direction by x
box units
Yt=x translate in the y direction by x
box units
Zt=x translate in the z direction by x
box units
5.4 - Listing Atom
Properties
The list command prints atom properties to
the textport for each atom selected. Without subsetting, this command
will list properties for all atoms. If there are more than 4 atoms
selected, Grasp will automatically expand the textport to list up to 20
atoms at a time. If there are more than 20 atoms in the requested list,
hitting the space bar will give the next 20 atoms, while hitting return
lists the next 1 atom. The output can be terminated by hitting any key
other than the space bar or return. Upon completion of the listing,
hitting return reduces the textport to its original size and position.
list, r=lys,a=nz lists information for all
terminal zeta nitrogen of lysines.
The properties listed are controlled by the
information parameter list. The default properties for atoms are atom
name, residue name, residue number and chain name, while for surface
vertices it is potential. Every possible property for surfaces and
atoms is assigned a single letter code:
Atom Code Surface Code
default atom information a original
coordinates x
original coordinates x surface potential p
screen coordinates X curvature C
distance d screen coordinates X
radius r distance d
charge q surface number s
potential p formal subset name b
molecule number m cavity number V
general property 1 1 general property 1 1
general property 2 2 general property 2 2
formal subset name b
One can alter the list by adding properties,
removing properties, or resetting the whole list:
si=pC reset surface list to ONLY potential
and curvature.
ai=qr reset the atom list to charges and
radii, but do not remove default atom information if it is on the list
already.
ai=+b add formal subset name to the atom
list.
ai=-a remove default atom information from
atom list.
si=+xd add absolute coordinates and distance
to the surface list.
Note that the order of the parameters
entered does not change the order in which the parameters are written
to the textport. That order is determined by the position in the above
table of properties from top to bottom, which corresponds to left to
right output.
5.5 - Altering
Radii and Charges
The commands to change radii and charges are:
alt(r=x) change radius to x
alt(q=x) change charge to x
Commands to modify existing radii and
charges are:
alt(r=r+x) modify radius to x
plus existing radius
alt(r=r*x) modify radius to x
times existing radius
alt(q=q+x) modify charge to x
plus existing charge
alt(q=q*x) modify charge to x
times existing charge
alt(q=1.0), a=nz, r=lys will assign a plus
one charge to all zeta nitrogens of lysine.
Charge is a display property for atoms, so
if the charge distribution is altered, it will cause a recalculation of
the maximum and minimum values used for color scaling.
One can use these commands in an external
file as an alternative method of assigning charges and radii to the
DelPhi control files. Simply edit a file to contain the list of
commands to assign charges or radii, or both, and then read in the file
as a Grasp script file (section A.7).
Atoms of zero radii are not displayed or
used in calculations of curvature, accessible area, or low dielectric
volume.
5.6 - History and
! Commands
History commands print selections of the
history list, which is a list of all commands entered via the text
window.
history n (or his n) causes
the last n commands to be written to the textport.
The default value of n is 10, so that
if n is not entered, the last 10 commands are written to the
textport. History commands are NOT added to the history list. Only
commands which are sent directly to the command interpreter appear on
the history list. Selections typed during menu-driven actions do not
appear.
! commands allow the user to reexecute
previous commands stored in the history list.
!! (or !) causes the last command to be
reexecuted.
!n causes the nth command to
be reexecuted.
!n causes the nth
previous command to be reexecuted.
!1 causes the previous command to be
reexecuted.
All reexecuted commands are added to the
history list. An example of the use of such commands would be to
incrementally rotate a molecule about an axis:
xr=2.0 rotates about the x axis by 2 degrees.
! rotates about the x axis by another 2
degrees.
! does it again.
Adding the characters ":p" to a !
command causes that command to be printed but not reexecuted or added
to the history list. For instance,
!1:p prints the previous command but
does not reexecute or add it to the history list.
Editing history commands is not yet
implemented.
6 - Control Keys
A control key in Grasp means any
alphabetical character depressed while the "Ctrl" key is
depressed. To activate control keys, the cursor must be on the graphics
window. They are included because people (for instance me) find them
useful to have as an alternative to menudriven functions. Most
control key functions can also be found in menus.
Control A - Toggle Active Subset
Rotations On/Off
If Grasp is manipulating more than one
formal subset object independently, only one such object can be
"attached" to the dials or mousedials at one time. This
can be set via the menus. However, if one wants to switch back and
forth between different subsets continuously this can be frustratingly
slow. Switching to active subset rotation mode means that when the user
is using the mouse to enact translation or rotations the object moved
is that upon which the cursor lies when the mouse button is first
depressed. Essentially the object is "picked", then moved. If
the cursor lies over no object at the beginning of the motion, then the
mousedials are attached to the world and everything is moved
together. If dials are used instead of the mouse then the object moved
is either the one last moved by the mouse or the one initially
"attached" to the dials when the active mode was invoked.
Turning active subset rotation mode off (pressing control A again)
leaves the dials permanently attached to the last moved object. Note
that this mode is turned off when the world or a formal subset is
chosen via the Formal Subsets menu.
Control B - Toggle Color Scale
Widgets On/Off
Color scales should automatically pop up
when a continuous coloring scheme is being displayed. If they do not,
or if the user wants to remove them from view, they can be turned on
and off with control B. The color scale has two components, the title
space, from which a menu may be accessed by the right mouse button, and
the rest, which controls the color coding.
The color coding part should consist mostly
of a colored section and a small white section, with the symbol
"><" on it, at the righthand end. The
colors should be the colors in use for that property and structure,
e.g. red, white and blue for electrostatics, and should vary
continuously from right to left. If the coloring mode is three color
continuous, the colors will vary from the first to second to third
colors, if two color continuous, they will vary from the first to third
color. Printed on this colored strip should be five equally spaced
numbers which increase from left to right. The left, middle and right
numbers are those used in the color coding. If the cursor is placed
over any of these three numbers and the left mouse button pressed and
held down, that number will decrease and continue to decrease while the
button is held down. If the middle button is used, the number will
increase. When the button is released, it causes the display to update
colors based upon this new number.
If the scale is in three color mode and the
value being altered is the lowest value, the rate of increase or
decrease depends upon the difference between the lower value and the
middle value - it increases by a constant fraction (10%) of that
difference. Similarly the upper value changes based on the difference
between the upper and middle values. The middle value changes based on
the difference between it and the value towards which it is being
altered. In two color mode only the left and right values change, and
they do so based on their difference.
The "><" part of this
widget allows compression and expansion of the color scale range.
Depressing the left mouse button and holding it on this symbol is
equivalent to increasing the left number while simultaneously
decreasing the right number. The middle button will expand the range by
decreasing the lowest number and increasing the highest number. This is
often useful in viewing electrostatics since the range of potentials is
usually much wider than is useful for distinguishing positive and
negative parts of a surface, so compressing the range will improve the
picture.
The color scale menu allows the user to
enter new values for the control (i.e. minimum, middle, maximum)
numbers, also RGB triplets for the colors used. It also allows the user
to reset the control numbers to their original values. There is also
support for changing the draw mode and property displayed. Two color
continuous is invoked by setting the middle value to the lowest value,
and since values can only be altered by fractions of a difference, one
must use this menu to so set the control values, and to reset to three
color continuous. The color bar menu also allows the user to alter the
colors used for display, the draw mode for the surface or atoms, and
the property being displayed. These last two options produce menus
identical to those which appear in regular menu use for these features.
One color bar should appear for each
different quantity displayed - if the user is displaying atom
potentials and surface potentials, two bars will appear. If the user is
using the split screen mode and different properties in the left view
and right view, one scale will appear for each.
Control C - Change Current Map
The current map is the 65 cubed set of grid
values which are used to build contours, interpolate potentials at a
slice plane, interpolate potentials at a surface etc. There are two
such maps in Grasp, the first of which is the default space for all
internally generated maps, and the second for all maps read into Grasp.
Hitting Control C produces a menu so the user can choose which is
"current". The user should beware of hitting Control C when
the cursor is NOT over the graphics window, since if it is over the
textport the program will terminate.
Control F - Toggle Full Screen
View On/Off
This expands the Grasp graphics window to
fill up the entire screen and returns it to the window view.
Control L - Free/Fix Light Source
The direction from which the light source
produces lighting effects on rendered surfaces can be altered after
hitting Control L. Moving the mouse (without depressing any button)
will then move the light source in that direction. (The source is set
at infinity and so only the direction of the light source is altered)
Hitting Control L a second time fixes the light source's new direction.
Note that this will affect the lighting of ALL surfaces, including
those pseudolit and those which make up the surface of
"CPK" atoms. The user should experiment since different
lighting angles often bring out different features of surfaces.
Control M - Toggle Textport Depth
This will pop the textport to the front if
it is lower down, and push it to the back if it is in front.
Control O - Toggle Grasp Box
On/On/Off
The Grasp box represents a box of +/1,
in screen coordinates, in each direction. The first Control O produces
a box which is depth shaded, i.e. the box sides get darker the further
from the viewer. The edges are also outlined in black. One advantage of
this view is that because it has simulated depth it can fool the the
eye into expecting any other object in view to have depth. Hence it
"trains" the eye to see the objects in the box as three
dimensional. Pressing Control O again removes the depth shading of the
cube, leaving all sides white. This is provided in case the user is
capturing pictures to send to a postscript printer (it makes a
difference). Hitting Control O once more removes the box.
Control P - Bring Up The Color
Palette
The Color Palette is the tool with which
users may alter color from within the program. What should appear when
Control P is hit are nine colored squares, each one with a quadrangle
of white, red, green and blue attached to the lower, left, upper and
right sides respectively. The colors shown inside the squares are the
first 9 of the 99 indexed colors of Grasp. The index number of each
color is written in the center of each square.
When the tool is first invoked, the colors
displayed are:
index
color
red
green
blue
1
white
255
255
255
2
red
255
0
0
3
green
0
255
0
4
blue
0
0
255
5
magenta
255
0
255
6
cyan
0
255
255
7
yellow
255
255
0
8
grey
125
125
125
9
orange
200
100
50
The next nine colors are accessed by hitting
the space bar, and the next nine after that by hitting it once more,
and so on. After colors 91 to 99, it returns to colors 1 to 9. Colors
10 to 89 are left intentionally blank for the user to create their own.
Colors 91 to 99 repeat colors 1 to 9.
To alter a color, the user positions the
cursor over one of the side quadrilaterals of that color, then either
the left or middle button is depressed. The middle button increases
that component, the left button decreases that component. If the cursor
is on the white component it increases/decreases all components. Colors
are updated within the squares as the button is held down, as are the
red, blue or green component values. The user will probably find that
uniformly decreasing the red/green/blue components of colors 1 through
9 from their above given values will give richer display colors.
Altered colors have their RGB triplets
automatically stored in the file "defcol.dat" in the current
directory. This file is automatically read in the next time Grasp is
started within the same directory. When colors 91 to 99 are changed,
their new values are not saved, so these are always the same as the
default colors 1 to 9.
When the user is finished, hitting any key
other than the space bar, will remove the palette from the screen. Any
structure colored by a color which has been altered will automatically
update its color.
Control Q - Quit
Control R - Toggle between
Single and Double Buffered Mode
Animation is achieved on an Iris by drawing
a view into a secondary or "back" buffer, then switching it
into the primary or "front" buffer only when the drawing is
complete. In this way none of the actual drawing process is seen. Iris
machines come with a limited amount of hardware for these two buffers.
Power series machines have two 24bit buffers allowing
"full" color mode for animation. Most lower level machines
come with one 24bit buffer which is split into two 12bit
buffers for animation. Having 12 bits for three colors means that there
are only 4 bits per color, rather than 8 in full mode. Hence the same
variety of colors are not available for animation. If the user has such
a system and wants to get a 24bit picture they should switch to
single buffer mode. Then all 24bits are used for coloring, but
one "sees" the drawing as the view is constructed. The best
use of this is then to enhance a view the user is not going to change,
e.g. if one is going to take a photograph from the screen. And
occasionally it may be instructive to see how a view is drawn.
Control S - Stereo/Split Screen
Mode Menu
This menu is described in section 4.1.
Control U - Unhook Dials
If the dials are used extensively, the user
may find one suddenly ceases to work. It has come to the end of its
range. If this happens, Control U will turn off the dials so that the
useless dial can be rewound without moving the view. Pressing Control U
again turns the dials back on.
Control V - Repair Surface
Occasionally upon construction of a
molecular surface there may occur "defects" in the structure
- holes in the rendered surface. These can usually be fixed by hitting
Control V once or twice. This is best done before another structure is
constructed or imported.
Control W - Swap buffers
Swap the current front buffer for the back
buffer (see Control R).
Control X - Toggle
CrossHairs On/Off
Sometimes the crosshairs are not
useful. This turns them off (and back on again).
Control Y - Toggle Projection
Plane
The projection plane is like having a
molecular surface stretched across the Z=0 plane from X=(1,1) and
Y=(1,1). The potential at any point in this plane is calculated
from whichever potential map is current (although, of course, the
values in the maps do not have to be potentials) by the usual trilinear
interpolation. Because the plane is linked to the Grasp box, it does
not move when the view is rotated, hence the map position of each point
on the plane will change, since maps are rotated with the view. Hence
the potentials are recalculated upon every time the view is moved. The
color coding is calculated as if each point in the plane indeed
belonged to a molecular surface, i.e. using the same colors and control
values. Hence they may be altered the same way, via the color scale
menu. One advantage of the projection plane is that by moving the
molecule back and forth in the Z direction, one can see patterns of
potentials within the molecule. It is also possible to move the
projection plane rather than the molecule, by altering the Z value from
the default of 0. This is achieved via the "ZTrans.
Alternatives" option on the "Mouse Functions" menu.
Control Z - Unix Shell
This launches a new Unix shell so that the
user can issue any unix command, edit files, change current directory,
etc. Of course the user can always do these things from another window,
but sometimes it's just more convenient to hit Control Z. To exit the
shell, type "quit" or "exit" or "logout".
Grasp is "frozen" until the shell is successfully exited.
This temporary shell does not have access to any of user's login
aliases, nor will it understand the "~" symbol, or other
shortcuts which are set up for the user's usual shell.
7 - Worked Examples
In all the examples described below it is
assumed a PDB file or other primary data file has been read in and is
currently displayed.
7.1 - Color a
molecular surface by electrostatic potential
First assign charges. When PDB files are
read in, the charge on each atom is set to 0, unless charge information
and the correct header were included in the file (section A.5). The
default charge set for proteins is be found in the file full.crg.
Read this in and assign charges with "Read: Radius/Charge File
(+Assign): full.crg". The total charge assigned is reported in
the textport. Note that histidines are uncharged. Atoms can be charged
by hand with the "alt(q=x)" command. If a "partial"
charge set is employed, where atoms other than ionizables are charged,
then there is often a problem of incomplete charging due to
inconsistent naming conventions of atoms. If a residue has a
noninteger charge after a charge assignment from a file, this is
reported to the textport and the file charging_data is written
to the current directory with information on such residues. Remember
that you can write pdblike files with the charge and radii
information for any subset of atoms (section A.5).
Having charged the protein, consider if the
default values for an electrostatic calculation are what you want.
These are changed by "Set Parameters: Electrostatic
Parameters" and the default values are listed in section 4.9.
Next proceed to launch the PoissonBoltzmann solver with "Calculate:
New Potential Map". This should take a few seconds to
complete, upon which you have filled map 1 with potential values.
Next construct a molecular surface with "Build:
Molecular Surface". At the completion of this procedure, a
white molecular surface should appear. The surface will appear in the
default display mode which is a fully lit surface unless otherwise set
in the file .init_Grasp. Change the surface display mode with "Display:
Alter: Molecular Surface: (Color Surface by): (Surface Display
Mode)" (the ( ) indicate that no choice was made from
these menus and the existing or default coloring is being used). Note
that the atoms are still being displayed, although this may not be
apparent if the surface is opaque. Since the display of the atoms will
slow the draw speed and make the surface appear to have
"lines" in it, you might want to get rid of them with "Display:
Hide: Atoms".
"Calculate: Pot. via Map at
Surfaces/Atoms" will
calculate the potential values at all atoms and all surface vertices
from map 1. This will produce faint colors (red and blue) on the white
surface. Also the color scale should appear in the top part of the box.
If it does not, hit Control B. Use this to alter the color coding. The
most useful action will probably be to place the cursor over the
"><" part of the color bar and hold down the left
button until the right and left numbers are less than 10 in absolute
values. The color saturations will then be stronger.
7.2 - Display
surface potential and curvature side by side
Having calculated the surface potential in
the previous example, now calculate the curvature. Do this with "Calculate:
Surface Curvature (+Display)". A menu will ask you two
questions: which surface and what atoms. Since there is only one
surface, that part is easy. As to what atoms should be chosen, this
depends upon the set of atoms used in the construction of the surface.
As a good general rule, use the same set of atoms in calculating the
curvature.
Upon completion of this calculation (note
that this is NOT the fastest calculation in Grasp), the surface
quantity will switch to curvature. This should be obvious since the
default color scheme for curvature is green/grey instead of red/blue.
Also the title of the color scale will change from
"Potential" to "Curvature". Adjust color coding to
the desired intensity.
Next change to split screen mode with "Display:
Stereo/Split On: Dials to Both". There should now be two
surfaces color coded by curvature. Move these apart a suitable distance
if necessary (use the bottom right dial OR use "Mouse Function:
ZTrans. Alternatives: Stereo Split/Twist"). Then do "Display:
Alter: Molecular Surface: Potential: (Surface Display Mode): Left".
This last will change the display of the left-hand surface to be by
potential. Note that two color scales are now visible, one for
potential, linked to the left view, and one for curvature, linked to
the right view.
7.3 - Surface two
interacting parts of a molecule and select the interface
Create two formal subsets from two sections
of the molecule with "Formal Subsets: Make a Formal Subset:
Atoms: Enter Specifications" and select any subset of atoms
you wish according to the rules in section 5.1. Accept the suggested
subset names "m1" and "m2". Surface each subset
individually with "Build: Molecular Surface: A Formal Subset:
m1", then "Build: Molecular Surface: A Formal Subset:
m2: Yes" (the second surfacing will ask you whether to add to
or overwrite the first). Having built two surfaces, we want to display,
or color, only those parts of the two surfaces which are proximal to
each other. To do this, select "Calculate: Distance Array: A
Surface to a Surface: A Constructed Surface: Surface 1: A Constructed
Surface: Surface 2". Note that this calculation is the slowest
in Grasp so be patient! This will calculate the minimum distances from
each vertex of the first surface constructed to any vertex on the
second surface. This calculation only results in values being
calculated for the first surface and so the reverse calculation also
has to be done with "Calculate: Distance Array: A Surface to a
Surface: A Constructed Surface: Surface 2: A Constructed Surface:
Surface 1" to find minimum distance values for the second
surface.
Now that distance is a property for both
surfaces, you can remove all but the interfacial regions by giving the
color command "vc=0,d=>x", where x is
whatever you want. For instance, if x=5.0, then only parts of the
surfaces which are within 5 Angstroms of the other surface will remain
visible. You can make distance the display property of the remaining
portions of the surfaces with "Display: Alter: Molecular
Surface: Distance: (Surface Display Mode)". To bring back
parts of the surface that are hidden, type "vc=1".
7.4 - Calculate
the occluded accessible surface area between these parts
Following from the previous example, select "Calculate:
Area of a Surface/Molecule: Molecule: Accessible Area: A Formal Subset:
m1". This will result in various text appearing in the
textport. At the end of this will be a number, the total accessible
area for that set of atoms. Write this down. Now "Calculate:
Area of a Surface/Molecule: Molecule: Accessible Area: A Formal Subset:
m2". This will give the accessible area of the second set.
Write this down too.
Now we want to calculate the accessible area
of subsets m1 and m2 in the context of each other. The difference
between this area and the sum of the areas for m1 and m2 separately
will give the occluded accessible area between m1 and m2. It may not be
simple to select the set "m1 and m2". One way to do this is
with the series of commands: "c=1", "c=2,sub=m1",
"c=2,sub=m2". Now all atoms are colored 1, except in subsets
m1 and m2 where all atoms are colored 2. Now the code "cd=-1"
will select all atoms that are NOT colored 1.
Now "Calculate: Area of a
Surface/Molecule: Molecule: Accessible Area: Enter String" and
type "cd=-1". The number in the textport at the end of this
is the area. Add together the numbers you obtained from the first two
calculations and subtract the third number from the sum. This is the
occluded acessible area between m1 and m2.
7.5 - Display
atomic Bvalues on the surface
Edit a PDB file containing Bvalue
information such that the first two lines read:
GRASP PDB FILE
FORMAT NUMBER= 3
This tells Grasp to read columns 55-60 and
61-67 and store them in general properties 1 and 2. Upon reading this
modified file, the Bvalues will be stored in general property 2.
To see the atoms displayed such that they are color coded by
Bvalue, select "Display: Alter: Atoms: Property #2: (Atom
Drawing Mode)". A color scale should appear which you can use
to improve the color coding, alter colors etc.
Now build a molecular surface for the whole
molecule or some interesting subset of it. After you have done this,
select "Calculate: Simple Property Math: Map Atom Value to
Surface: All Surfaces: All Atoms: General Property #2: Potentials".
This will project the B values into the surface potential array of
Grasp, which can then be colored and displayed independently of the
underlying atoms. Note that if instead of "All Atoms", you
select a subset which does not include all the atoms used in creating
the surface, some of the surface vertices will not be assigned a value.
Values are only transferred from atoms in "contact" with the
surface.
7.6 - Calculate
and display effective dielectric from a single charge site
The "effective" dielectric at a
site is defined, for our purposes, as the ratio of the potential at the
site due to a charge at a second site when there are two dielectric
values, as opposed to when there is just one - it is the ratio of
potential for a 2/80 PoissonBoltzmann calculation to that for
Coulombs Law for a dielectric of 2.
First we have to charge a single site.
Instead of using an "alt" command we will illustrate the use
of the "mouse command line" function. Select "Mouse
Functions: Command Line Mouse", then enter
"alt(q=1.0)". This connects the function of assigning the
charge of +1 to the act of picking an atom. You can now select an atom
on the molecule and charge it instantly. To remove this function,
repeat "Mouse Functions: Command Line Mouse".
Next calculate a new potential map with "Calculate:
New Potential Map". Then store this map in map 2 with "Simple
Property Math: Potential Maps: Map1 <-> Map2". Next set
the external dielectric to the internal dielectric by selecting "Set
Parameters: Electrostatic Parameters: Outer Dielectric" and
entering "2.0". Then calculate the potential map again. Now
the uniform dielectric results are in map 1 and the two dielectric
results are in map 2. We want to divide map 1 by map 2, which we do
with "Calculate: Simple Property Math: Potential Maps: (Map) op
(Map) = (Map): Divide Maps: Map1: Map2: Map1"., which divides
map1 by map2 and puts the results in map 1. Map 1 now contains
"effective" dielectric values for all its grid points.
Selecting "Calculate: Pot. via Map at Surfaces/Atoms"
then interpolates these values at every atom and vertex. These can
then be displayed as usual.
Note that we are using a uniform dielectric
grid calculation to estimate the Coulombic potential at every
atom/vertex. Since there is only one charge this could also be done by
calculating a distance map and then using the "simple math"
utility a couple times, along with the fact that a charge in dielectric
of two produces a potential of 280.5 kt one Angstrom away. Considering
the inaccuracy involved in the two dielectric calculations, this is
hardly worth it. The values calculated should definitely be treated
with caution for this reason, especially close to the charge where grid
effects will be largest. However this is a calculation worth doing at
least once to get a feel of the effect of two dielectrics on the
potential distribution, i.e. of the distance at which solvent screening
takes effect.
7.7 - Calculate
surface area by hydro-phobic and -philic residue
First calculate the total surface area of
all atoms with "Calculate: Area of a Surface/Molecule:
Molecule: Accessible Area: All Atoms". This fills the internal
atom array for accessible area. Next choose "Calculate: Simple
Property Math: Atom Properties: Enter String", enter
"r=hyd", then "Sum of Values: Accessible Area".
The will result in the printing of the total area of all hydrophobic
residues. Repeat the above and type "r=pol" for hydrophilic
residues. Note that we do not want to choose "Average Value"
here because the average is over atoms, not residues. To find how many
hydrophobic residues there are, try coloring the alpha carbons of each
residue with enter "c=1,a=ca,r=hyd". The number of atoms
colored will be the number of such residues. Similarly for hydrophobic
residues. The residues defined as "hydrophobic" or
"hydrophilic" are described in section 5.1.2 under Residue
Name.
7.8 - Find and
display all residues within 3 Angstroms of an active site
The cleanest way of selecting an
"active site" is to scribe it. This method is described in
section 4.4 under Scribing. Once you have done this, the surface of the
active site is green. The next step is to create a distance map for all
the atoms with "Calculate: Distance Array: Atoms to Surface:
VdW Surface to Surface: All atoms: Currently Scribed Surface".
This will calculate the nearest surface vertex of the bright green
subset to each atom, and subtract from this distance the atom's radius.
Once this calculation is complete, we want
all residues within three Angstroms. Since we only have atom
information, we want to use the residue projection code described in
section 5.1.2 under Residue Projection, so type
"c=2,d=<3.0>r" so that all atoms of all residues
fulfilling this criteria are colored 2 (red). Now hide the surface to
see the red atoms around the active site.
Note the command c=0,d=>3.0>r"
will "uncolor" all atoms of all residues which have at least
one atom at a distance greater than three Angstroms, which is NOT the
complement of the previous command.
7.9 - Find the
common volume between two superimposed molecules
This example requires that you have loaded
two fairly similar molecules. Section 4.8 describes how to successfully
superimpose two molecules. To find the common volume after this, select "Build:
Consensus Volume". This creates a grid map where a value of 0
means outside of both molecules, 1 means inside of either molecule but
not both, and 2 means inside of both. This map is stored in map 2. We
want to contour this map, so we need to ensure map 2 is the current
map. Do this with "Miscellaneous: Change Current Map: Inputted
Delphi Map (Map2)". Next choose "Build: Contour:
3-D", and enter "2.0", then "4". This
should produce a blue contour which represents the boundary of the
"consensus" volume. The final step is to calculate the volume
of this contour with "Calculate: Volume of a Surface/Molecule:
Contour Surface: Value= 2.0" which returns the volume of this
contour in cubic Angstroms.
7.10 - Form a
six-helix bundle from a single helix
First select a helix of sufficient length
from a larger molecule. Write these atoms to an external file, exit
Grasp and restart it with this new file. We want to reproduce this
helix. The simplest way is to read in the file five more times. This
results in six identical helices, all exactly on top of each other, but
with different molecule numbers. Align these helices so that the long
axis is along the Z axis, into the screen.
To manipulate the helices independently of
each other, we need to make a formal subset of each one. A quick way to
so this is with "Formal Subsets: Make a Formal Subset: Atoms:
Make All Molecules Subsets". The program will then prompt you
with its suggested names, which will be "m1",
"m2"..etc. The helices are now formal subsets. The dials are
attached to helix 6, since this was the last subset created. Move this
helix to the right until it is clear of the other helices. Then attach
the dials to the world with menus "Formal Subsets:Fix Dials to
World" and rotate the view about the Z axis by 60 degrees.
This might be more easily accomplished by the rotation command
"zr=60".
Then attach the dials to helix 5 with "Formal
Subsets: Fix Dials to a Subset: m5", move it to the right
until clear of the other helices, then fix the dials to the world,
rotate 60 degrees about the Z axis, fix the dials to helix 4 etc. The
end result should be that all six helices are separated and roughly at
the corners of a hexagon.
Next change to active subset rotation mode
by hitting Control A. Now helix moved will be the one the cursor lies
upon. Adjust each helix to a "comfortable" position relative
to the other helices in this mode. Remember that the world view can be
moved by starting with the cursor off of all molecules.
When you are happy with the arrangement, the
relative positions of the helices should be "fixed" so that
the arrangement is not lost. Remember that the internal coordinates of
the molecules have not been changed yet, and it is these that most
functions within the program use, such as surfacing and the
PoissonBoltzmann solver. To fix the coordinates, select "Formal
Subsets: Fix a Subset Rotation: m1", then "Formal
Subsets: Fix a Subset Rotation: m2", etc., until all are
fixed. Note that all the helices are still formal subsets. You might
want to remove each subset after fixing it, with "Formal
Subsets: Remove a Formal Subset: m1", and so on. This only
removes the name of the subsets and rejoins them to the
"world" object. This prevents a user from spoiling a careful
arrangement by accidentally moving a subset.
At this point you can perform any Grasp
operation as if the assembly has just been read into the program, for
instance create a molecular surface, do an electrostatics calculation,
write the new coordinates to a PDB file, etc.
8 - Future Developments
8.1 - General
Improvements
The following is a digression into what I
hope is installed within the program in the next six months, even
though software completion is unpredictable.
The drawing of surfaces in Grasp is done in
a per triangle basis, i.e. one triangle at a time. While this approach
simplifies the drawing of partial surfaces, it is not as efficient as
the per mesh approach. This means that collections of connected
triangles are drawn together, taking advantage of the SGI mesh
subroutine calls. S. Sridharan has produced general meshing algorithms
which increase drawing rates by a factor of 2.7 compared to a
theoretical maximum of 3.0. This will speed the drawing of any complex
surface, i.e. molecular, contour etc.
Rex Bharadwaj has been responsible for the
DNA objects within Grasp. At the moment it relies upon external
programs to calculate DNA parameters. It would be easier to generate
some parameters internally, i.e. the ones most often used like base
pair twist and tilt. There will also be support for other DNA parameter
scales than those provided by CURVES. An interface will be constructed
which allows the user to display the results of dynamical simulations
in object form. Reference forms of DNA will be included for comparison
purposes. The ability to deal with multiple structures,
"pick" objects and return values plus access to Grasp tools
such as the color scale will also be included.
Residues will be given a more independent
status, i.e. similar to that atoms and surface vertices have at
present, e.g. having properties distinct, though usually derivable,
from the underlying atoms. Instances of such properties might be
residue dipole, residue area, residue volume, distance to other
residues, phi and psi angles etc. This will facilitate mapping of
residue properties onto residue objects, i.e. color coding by property,
and onto surfaces. It will also allow the user to write and read
residue property files.
Local averaging and differencing of
properties will be introduced for surfaces and atoms and maps. This
will allow for smoothing of properties and also the calculation of new
ones, e.g. field strength for maps. Crosssurface distances, i.e.
as opposed to Cartesian distances, will be added as a property.
A "math" interpreter will be
written which will allow for more complex mathematics on surface and
atomic properties. This will allow for conditional operations on sets
of data which are hard to perform within the program at present. A
simple graphing utility may be added.
Hydrogen bond representation and calculation
will be added. As an object these will have intrinsic properties, e.g.
angular and distance differences from "ideal" structures, as
well as inheriting the properties of the atoms forming the bond. As
with matrix representations, the user will be able visualize hydrogen
bonding networks, i.e. hydrogen bonds which share atoms, or residues,
or chains.
S. Sridharan has written much more efficient
algorithms for the calculation of surface areas and also the curvature
of those area elements. These will be interfaced to Grasp. He also has
algorithms for the prediction of ion binding sites based upon
electrostatics. These will be improved with desolvation and
hydrophobicity penalties and added to the program.
Generic objects will be introduced to
represent sets of atoms, e.g. cylinders, spheres. These may also be
included as low dielectric volumes in PoissonBoltzmann
calculations. Properties of underlying atoms and residues may then be
inherited by these objects and displayed thereon. Map properties may
also be interpolated at the surface of such objects. These objects can
be thought of as tertiary structure representations in analogy with
those for secondary structures.
Reduced representations of surfaces will be
introduced. Atoms and groups of atoms can be represented as spheres,
worm lines, backbone boxes etc. In keeping with the duality within
Grasp of vertices and atoms similar simplifications will be made for
groups of vertices.
Grasp originally had animation facility i.e.
the ability to display successive frames of a simulation based upon
Discover (molecular dynamics from Biosym Technologies) output. It was
removed until a better interface for this feature may be developed.
This may include animation of reduced representations in analogy with
that for DNA structures.
The secondary structure type of each residue
will be assessed, either by previously published criteria or by
internally adjustable constraints (e.g. hydrogen bonding patterns, phi
and psi angles etc).
Material surface properties will be
adjustable. The number of properties accessible to .init_Grasp will be
greatly increased. A global rescale will be included. Previous commands
will be accessible via a "history" command as in Unix. Text
labelling will be added.
Bugs will be fixed.
8.2 - Intelligent
Delphi
Intelligent DelPhi
(Id) will automate many of the tasks performed by DelPhi, taking unto
itself the task of organizing multiple runs and collating relevant
data. Parameters such as dielectrics, salt concentration etc. would be
set in a "DelPhi Panel", independent of the particular use.
Those uses are outlined below.
The question of accuracy, where appropriate,
would be settled via an option for "high", "medium"
or "low" precision. These range would refer to accuracy
ranges of roughly 0.1 kt, 0.25 kt and 1.0 kt for the particular
quantities required.
Obviously more accurate calculations would
require more time. Id would indicate the expected duration of the
calculation before running, provide regular (visual) updates on the
progress of the calculation, as well as options to abort the
calculation.
Delphi is not always necessary or sufficient
for all functions. For example there is a requirement for algorithms
for Van der Waals energies, surface area, and molecular volume. Hence
Id is also a superset of DelPhi functionality.
All functions which produce single number
answers, such as total solvation energy, will produce break downs of
these numbers to include, for instance, the effect of salt, if present
in the calculation, and any other subsets which go into a composite
calculation.
The user will have the option of saving
results at various levels of detail to files. Also log files and files
used temporarily by ID will be available for the user to track if they
wish, or in the unlikely case of a crash, to find out what went wrong.
Functions
1) Find potentials in a cubic box.
This would be similar to what is done now in
Grasp except that the user could specify the size, orientation and
position of the box.
This box would be visualized in Grasp and
its parameters altered by a widget. Alternatively these parameters
could be entered explicitly.
The size could be via the molecules size
(i.e. percent fill), or absolute size (e.g. 100 Angstroms). The
molecules size can be defined either by the maximum dimension in the X,
Y or Z direction, by the maximum length of the principal axis of the
molecule, or to the largest separation between any two atoms.
Orientation can be determined relative to
the principle axes of the molecule, or determined by the direction of
maximum separation of any two atoms, or by any two points the user
cares to define.
The central position could be by atom set or
surface set, or entered explicitly. If the DelPhi box boundaries are
too near the molecule focussing runs would be automatically queued.
All other DelPhi parameters, such as salt
concentration, dielectrics, etc. would be entered explicitly, with
defaults for all values.
2) Find the potentials at a given set of
points given a certain charge set.
These points would usually, though not
exclusively, be at atom coordinates. This charge set could be the
charges of all atoms or a subset of atoms.
Results can be incorporated into Grasp, or
exported to external files. Potentials can be broken down into
contributions from permanent charges, polarization and from mobile
ions, or given as total electrostatic potentials.
3) Find the interaction between two sets
of charges.
To some extent this is a subset of 2), i.e.
given a set of charges find the potential at a second set of sites. The
work of extracting the interaction energy from this type of calculation
is done for the user. One of the uses of this would be to find the
effect of one ionizable residue upon another. Another would be the
electrostatic interaction between two molecules.
4) Total solvation energy.
By this is meant the total electrostatic
energy involved in the creation of a dielectric discontinuity between
molecule and solvent.
Because of the nature of the algorithms used
it is often much less computationally expensive to find the difference
in solvation energy for two or more molecules, or conformations of a
single molecule, than to calculate the individual values for each.
Hence the user will have the option to specify a set of structures and
take advantage of the improved speed of these difference calculations.
5) Construct an Interaction Matrix.
Use function 3) repeatedly to find the
interaction between all members of a set of residues. Then use 4) to
find the energy of charging a residue on its own. The former produce
the offdiagonal and latter the diagonal elements of an
interaction matrix which can be used in ancillary algorithms to
estimate effective PK's of residues.
6) Total transfer free energy.
The total electrostatic energy of
transferring between solvents, plus a contribution from volume effects,
plus a contribution due to hydrophobicity.
7) Total Binding Energy.
Total electrostatic energy between two sets
of atoms plus a contribution from Van der Waals energy and
hydrophobicity.
8) Helix / Membrane Affinity.
Membrane affinity based upon an approximate
desolvation penalty, plus hydrophobicity, per residue in the context of
the primary sequence as an alpha helix.
9) Surface Area, Curved Surface Area, Van
der Waals energy, Coulombic Energy.
This can be used individually on any
molecule or subset of a molecule. Output can be contracted to give
totals, or assigned as properties within Grasp.
Programs and Grasp Features
1) Facilities to make changing and
applying charge sets easier.
This is often the most time consuming part
of DelPhi, as currently implemented, because of nonstandard
naming conventions for atoms.
2) De novo charge sets.
For new structures, e.g. drug molecules, it
will be important to have a charge set of some kind. Doree Sikoff has
Scheraga's program implemented which will act as a first step in this
direction.
3) Proton placement.
Marilyn Gunner's program to assign positions
of protons based upon geometric constraints.
4) PK analysis.
Programs from Gunner and Yang to estimate
effective pK's of ionizable residues.
5) Solids.
Facility to include geometric shapes in the
dielectric calculation.
8.3 - Secondary
Structure Display
Why another secondary structure program?
After all there are some excellent representation programs available,
e.g. RIBBONS by Mike Carson. Specifically because I think there is a
lack of emphasis in such programs on secondary structure representation
representing anything except structure. Grasps philosophy of
representation is that as well as representing structure, objects must
also be able to represent properties of the underlying atoms or
vertices, and may also have intrinsic properties. Hence elements of a
secondary structure representation should also be able to have their
shape and/or color altered by underlying properties such as
hydrophobicity, potential, and Bvalues as well as intrinsic ones
such as twist, curvature, and strain. The following is the envisioned
implementation of Grasp's secondary structure package.
Each residue will have a position and a
direction associated with it. The position, or point, might be the atom
center of the alpha carbon, or the average backbone position, or the
middle of the side chain. It might also be the the closest point on the
axis of a "perfect" helix defined relative to this residue.
The direction might be the along the CC beta bond, i.e. pointing
towards the side chain, or might be the direction to the next residue,
or to the nearest nonneighboring residues. Both the point and
direction definitions can be user implemented with a considerable
degree of flexibility.
Given a set of points, i.e. those belonging
to a set of residues along a chain, a smooth line can always be drawn.
Popular "splines" are the Bspline because of its
inherent smoothness, and "Cardinal" splines which pass
through control points. Each residue can then be assigned a line
"segment". (In essence this is a property of the difference
in positions of the points belonging to sequential residues before and
after each residue). This line segment has dimension one as opposed to
that of the point for that residue which has dimension zero.
The residue line can be expanded into a
sheet, or ribbon, of two dimensions given a direction. This direction
could be that assigned to the residue, or could be derived from
properties of the line itself, i.e. the second derivative of the line
at each point.
Given a direction associated with each line
segment one can also define a twist, i.e. the variation of this vector
as a function of distance along the line. The variation of this
quantity is an interesting property in its own right. It should be
constant for perfect sheets and helices, and random for true random
coil.
The residue line can also be expanded to
three dimensions into a tube. This is the most common representation
seen today. The tube can be circular in crosssection, i.e. having
no directional character, or be ellipsoidal in which case there is
directionality in the long axis. This latter can again be correlated
with the intrinsic residue direction or with that from the line
segment. Circular tubes have one quantity i.e. thickness, ellipsoidal
tubes have two, i.e. the lengths of the minor and major axis.
As described above we have four logical
values we can assign to each segment, namely it can be a line, a
ribbon, a circular tube or an ellipsoidal tube. For instance we can
assign lines to random coil segments, circular tubes to helices and
ellipsoidal tubes to beta sheets. Furthermore the ellipsoidal tube and
the ribbon can display directional properties of a residue and, along
with the circular tube can represent at least one property by via its
size. Each element has as intrinsic properties of direction, a rate of
change of direction, a twist and a rate of change of twist (higher
derivatives may or may not be meaningful) either from the form of the
line or from the intrinsic residue direction. Each element also
inherits all the properties of the underlying residue. Any such scalar
variable can be represented as the width of the line structure or as a
color as with surface or atom colors. Any vector property can be set to
be the intrinsic residue direction.
Hence this approach will give each residue
an object i.e. the line segment, which comes in several flavors and
which can represent both vector and scalar properties as well as having
intrinsic properties.
One interesting example of the intrinsic
properties is the variation from ideality of a helix or sheet along its
length. This is often a difficult property to visualize but, as
occurred with curvature, the quantification and color coding of this
property will probably be highly instructive.
8.4 - Docking with
Realistic Energies
The docking of molecules, either by hand or
by some automatic procedure, is of particular interest because of the
importance of shape (i.e. surface) complementarity. As has been
described earlier Grasp allows the user to "invert" a
surface. When this is used for interacting surfaces it allow the user
to match "likewithlike" rather than
"knobswithholes". However, the physical docking
of surfaces or molecules is hard to do manually. One project for Grasp
is to improve the visual aids to a user attempting to do just that, and
also to provide numerical feedback, for instance distance calculations
and energy analysis in as close to real time as possible.
Graphically many of the tools are already
present, for instance the independent manipulations of objects and the
split screen capability. However these can be greatly enhanced with
some additional features. One example would be "proximity
strands". Given a certain set of points on one subset one might
want to know the nearest set of points on the subset being moved
relative to it. This can then be graphically illustrated by drawing
strands between the pairs of points. These could then be dynamically
updated as the user moves the subsets relative to each other. The split
screen functionality can be used to great affect here. If the subsets
are arranged on the right in an orientation such that the interface
regions of both are clearly visible, while the dials are attached to
the left view, the strand positions could be updated based upon the
apparent left view arrangement, but displayed on the right, were they
may be more clearly seen. The clarity of view can be further enhanced
beyond just a different relative arrangement on the righthand
view. If one is looking at a "deep" binding site, e.g. a
small molecule into a deep cleft, then on the righthand view the
user could split the cleft into two parts along its axis and
"peel" each part back, i.e. exposing the
"interior". This then further avoids any loss of visual
information due to local topology, i.e. the small molecule obscuring
the cleft.
Another approach which would help in docking
molecules is to allow rotations and translations to be preformed in a
"local" coordinate frame, i.e. one linked to the molecular
shape, rather than the XYZ system of the screen. For instance in
docking of an elongated molecule into a deep pocket of another one
might want to assign one axis pointing into the axis. Such local
coordinate frames can be confusing in general and so a good compromise
would be to allow the user to switch back and forth between a
"local" and a "global" frame.
Speeding up distance calculations to the
point where they can be done in real time would also have a useful
graphical impact. At the moment such algorithms in Grasp are quite slow
but by using certain grid techniques it ought to be possible to speed
this approach greatly. Similar comments would then apply as for
proximity strands to the uses of a split screen approach.
Energy analysis can be split into four
classes of energies, namely Coulombic, Van der Waals, Hydrophobic and
Desolvation. The first two terms are traditional in the sense that they
are included in packages available elsewhere.
The hydrophobic contributions can be
assessed, at least according to theories developed in this lab, as
being proportional to the excluded accessible area, where elements of
this area are weighted by their accessibility to water (aka curvature).
This is time consuming to calculate for large molecules, however once
the calculations are performed for two such, the differential occlusion
between them is easier to calculate. In short we hope to have an
immediate estimate of the buried area as two molecules are moved
relative to each other. The final energy term, desolvation, is the
hardest to calculate precisely. Typically it involves numerous DelPhi
calculations each of which takes up to a minute on a lowend Iris.
However, there are certain short cuts which can be taken when the
problem is to calculate the relative change of solvation for the
arrangements of two otherwise static molecules. These revolve around
reformulating desolvation as a surface term akin to accessible area.
For both the hydrophobic and the desolvation
penalty the approach that will be taken is to "prepare"
certain sets of data for each molecule before attempting to
"dock" them. This approach will also be taken to improve the
speed of calculating the Van der Waals and Coulombic terms. This is
especially important in the case of the Coulombic term because of the
long range nature of the force precludes continuous direct (i.e. exact)
calculation except where a small number of charges are involved (i.e.
typically a hundred for each subset).
The resultant energies will only be
"approximate" in that they will not exactly reproduce the
numbers that would be obtained from a precise application of each
theoretical model. But since we should remember that each theoretical
model term is only a model of physical reality the more important
question is as to whether these approximations will still accurately
reflect enough of the underlying physics to be useful. For instance,
providing a sufficiently large penalty for burying two oppositely
charged groups together compared to the favorable Coulombic energy.
This will probably only be truly tested by extensive use.
The energies calculated could be displayed
both numerically and graphically as the molecules are arranged. In some
cases where the contributions can be made local (e.g. Coulombic) these
can be displayed as an atom or surface property.
Using reduced surface representations it
might be possible to automatically dock molecules together based upon
their shape and local properties. One such promising method is to use
geometric hashing to check all such matches. Such approaches will be
investigated.
Appendix A - File Formats
A.1 - Grasp
Surface File
This unformatted file starts with five lines
of 80 characters each. Line 1 contains the words "format=1"
(there are no other formats at this time). Line 2 contains key words
for the information contained within: "vertices" for vertex
positions, "accessibles" for associated accessible surface
point coordinates, "normals" for the normal vector (of length
unity) for each vertex, and "triangles" for the triangle
index list (which is a list of integers such that entries i2,
i1 and i, where mod(i,3)=0, give the vertices which make up
triangle i/3). Line 3 contains keywords for variables also written to
this file: "potentials", "curvature",
"distances", "gproperty1", and
"gproperty2". Line 4 contains the number of vertices, the
number of triangles, the grid size of the lattice used to create the
surface (the number of points along one edge of the cube, always 65),
and the reciprocal lattice spacing. Line 5 contains the midpoint of the
coordinate system from which the vertices were derived (the midpoint of
the Grasp box).
The data then follows in the order of the
keywords. These are all REAL*4 except for the triangle indices which
are INTEGER*2.
A.2 - DelPhi
Potential Map
This file is unformatted. Its contents
follow the order:
character*20 uplbl
character*10 nxtlbl, character*60 toplbl
real*4 phi(65,65,65)
character*16 botlbl
real*4 scale, mid(3)
Here phi contains the map
information, scale the reciprocal grid spacing, and mid
the grid midpoint. The rest are just character strings containing
nonGrasp information.
A.3 - DelPhi
Charge File
This file can have any number of comment
lines in the header. After the last comment line should appear the
following "keyword" line
atom__resnumbc_charge_
Any comments after this line must be to the
right of character 22, since this part of the line is not interpreted
as an assignment.
To make an assignment statement, the user
places the atom name specification under the four characters
"atom" in the above line, the three characters of the residue
name under "res", the residue number under "numb",
the chain designator under "c", and the charge value under
"charge". If a descriptor field left totally blank it is
treated as wild, so if the chain specifier is blank the assignments
spelled out by the other fields in that line are applied to all chains
in the molecule. However, blank spaces within a field are treated as
true blanks, so "c " in the atom field will not apply to a
"ca " atom. This is different from how DelPhi radii files are
dealt with.
Individual assignment statements are
interpreted identically in both Grasp and DelPhi. However, the method
of eventual assignment differs. In DelPhi each such specification is
entered in a hash table and after all lines are read, the charge
assigned to a particular atom is that which is most specifically
declared in the assignment statements. On the other hand, the method
Grasp uses to assign charges from a DelPhi charge file is that each
line is interpreted individually before the next is read.
As an example of the different approaches,
the file
atom__resnumbc_charge_
nz lys 25 A 0.0
nz lys 1.0
will charge all zeta nitrogens of the
molecule in Grasp, and all BUT lysine 25 on chain A in DelPhi. If the
line order were reversed, the charging would be identical since Grasp
would change the charge on lysine 25 on chain A back to zero after
first setting it to 1.0. Hence when using DelPhi charge files in Grasp
be sure that the more general charge assignments precede the more
specific.
A.4 - DelPhi
Radius File
Radius assignment files in DelPhi are
similar to, but simpler than, charge assignment files. There may
comment lines before the initial "key word" line, which in
this case is
atom__res_radius
Size files only contain room for atom name,
residue name, and radius.
There is one further difference between
DelPhi charge files and radius files, namely that in size files empty
spaces within a descriptor field are treated as wild cards. Thus
"c " under the "atom" header in a size file
applies to all atoms whose names begin with "c".
The same difference in mode of assignment
between DelPhi and Grasp occurs as is described above for charge files
- the user should be careful to put more general assignments first if
the same assignment is to be made by both programs.
Both charge and size files are supported by
Grasp for DelPhi users' convenience. However, the Grasp user might want
to consider using neither and instead using Grasp "alt"
commands in a Grasp script file to assign radii and charges.
A.5 - Protein Data
Bank (PDB) File and Grasp Variants
The complete specification for these files
is quite complex. Grasp only uses information on lines beginning with
"ATOM", "HETATM", or "TER". These lines
are expected to have the Fortran format (a6, 5x, a5, 1x, a3, 1x, a1,
a4, 4x, 3f8.3) in the first 54 characters (columns), where a6 is
"ATOM " or "HETATM", a5 is the atom name (only four
of which are used in Grasp), a3 the residue name, a1 the chain name, a4
the residue number, and 3f8.3 the xyz atom coordinates in Angstroms.
In some files columns 55-80 are also used to
store information. In standard PDB format columns 5560 are used
for occupancy (f6.2) and columns 6167 for Bvalue (f7.3).
Grasp uses these fields as follows.
If the first two lines of the file are
GRASP PDB FILE
FORMAT NUMBER=1
columns 55-60 will be read as the radius and
61-67 as the charge of the atom.
If the first two lines of the file are
GRASP PDB FILE
FORMAT NUMBER=3
columns 55-60 will be read as general
property 1 and 61-67 as general property 2 of the atom.
If the first two lines of the file are
GRASP PDB FILE
FORMAT NUMBER=2
columns 55-80 are read in free format as
general properties 1 and 2 of the atom. This allows the user to store
values to much higher accuracy.
Note that in using any of these formats
there MUST be two numbers in some format in this space or an error may
occur.
"TER" lines should occur after
each molecule in a PDB file for Grasp to treat each as an independent
molecule.
A.6 - Grasp
Property File
This file contains a listing of a single
property for either all atoms or all surface vertices. The user include
as many comment lines as desired before a line which has the key word
"surface=" or "atoms=" (so be careful not to
include these in comment lines). All lines after that are assumed by
the program to be numerical values (in any format). On the same line as
the above key words the user should have one of the following:
"potential", "distance", "curvature",
"gproperty1", "gproperty2", "accessible",
or "charge". For example, "surface=distance" will
inform the program that the list of values should be placed in the
distance array for surface vertices.
A.7 - Grasp Script
File
This is a file where the user can store
commands to be executed together, for instance a set of coloring
commands for atoms. The extension for a script file is usually
".his" or ".gs". The first line must be "GRASP
HISTORY FILE". Commands can be any valid command as defined in
section 5. Any line beginning with an exclamation mark (!) is
considered a comment. All other lines are sent to the command
interpreter to be acted upon. There are examples of Grasp script files
in the directory $GRASP/example_scripts_and_macros.
A script file can be written by Grasp. This
file is a history file of all textport commands entered during a
session. Note this does not include textport responses to menu-driven
operations. This is a good place to start when constructing a script
file, or it can be used to replay a session if the system crashed or
just to get back to a particular situation.
Scripts are really just history replays and
as such they expect a certain state of affairs to exist when they are
started. If things are not as expected, a script will not perform
properly. An example would be a script to create a molecular surface.
If a surface has already been created, the program will normally prompt
the user as to whether to replace the previous surface. If this was not
a surface present when the script was created, it will not supply the
answer to this question and so will get out of sequence. Therefore
scripts should typically be run with a blank slate, i.e. immediately
after starting the program. This does not apply to ".gs"
files which are too simple to crash.
A.8 - Grasp Macro
File
This a a file which contains a collection of
commands which are given a name. Macro files generally are given the
extension ".mac". The $GRASP directory contains the
file default_macros which contains simple examples to do such
things as surface a molecule or make a backbone worm. These can be used
as models to create your own macros. There are other macro examples in
the directory $GRASP/scripts_and_macros.
A macro can be run by selecting it on the Macros.
A macro cannot be run unless its file has been read in. This is done
with "Read: Grasp Macro File" and the user is prompted
for a file name. The macros defined in the file will then appear by
their assigned name on the Macros menu and selecting one will
execute it.
Macros are designed to be run often and in
many different circumstances. Therefore they are not as dependent on
prgram state as scripts. If a macro encounters an unusual situation, it
will query the user on how to proceed.
Some macros or scripts may expect entries
from a file as opposed to the command line. Be sure to have such files
if needed. If files are not found, the user is typically prompted for
input.
A.9 - Pair-Wise
Interaction (Matrix) Energy File
This file should have as its first line the
words "GRASP RESIDUE INTERACTION". The next line should
either be
FORMAT=1
or
FORMAT=2
The first format is more complete and
expects lines in Fortran format (a3, 3x, i3, 10x, a3, 3x, i3, 10x,
12g). Here a3 is the first residue name, i3 the residue number, a3 the
next residue name, i3 the next residue number, and 12g the interaction
energy.
The second format contains only the residue
numbers and the interaction strength (i5, 1x, i5, 4x, 12g).
There can be at most 10,000 lines of such
descriptions. There is no provision for comments. Reading in a file
automatically replaces all previous interaction values.
Appendix B -
.init_Grasp Commands
One can set certain initial parameters for
Grasp in a file named .init_Grasp. This file can be in the
directory the user launches Grasp from, the user's home directory, or
the data directory pointed to in the environment variable $GRASP.
Commands have precedence in the same order - local over home over data
directory. The commands are not case or spacing sensitive but they must
contain the exact specifier words as listed below to the left of an
equals sign, and similarly for the words or values to the right of the
equals sign. Any line beginning with a "!" or a "#"
is ignored as a comment. Lines which can not be interpreted as comments
or commands are written to the textport as errors.
INITIAL DISPLAY=BONDS Set default molecule
display to bonds
INITIAL DISPLAY=ATOMS Set default molecule
display to atoms
DEFAULT ATOM DISPLAY=CHARGE Color atoms by
charge
DEFAULT ATOM DISPLAY=POTENTIAL Color atoms
by potential
DEFAULT ATOM DISPLAY=DISTANCE Color atoms by
distance
DEFAULT ATOM DISPLAY=GPROPERTY1 Color atoms
by general property 1
DEFAULT ATOM DISPLAY=GPROPERTY2 Color atoms
by general property 2
DEFAULT ATOM DISPLAY=DISCRETE Color atoms
via command line
DEFAULT SURFACE DISPLAY=CURVATURE Color
surface by curvature
DEFAULT SURFACE DISPLAY=POTENTIAL Color
surface by potential
DEFAULT SURFACE DISPLAY=DISTANCE Color
surface by distance
DEFAULT SURFACE DISPLAY=GPROPERTY1 Color
surface by general property 1
DEFAULT SURFACE DISPLAY=GPROPERTY2 Color
surface by general property 2
DEFAULT SURFACE DISPLAY=DISCRETE Color
surface via command line
DEFAULT SURFACE DISPLAY=LIT Surface is
rendered and lit by SGI calls
DEFAULT SURFACE DISPLAY=PSEUDO Surface is
rendered and lit by Grasp calls
DEFAULT SURFACE DISPLAY=MESH Surface is
displayed as mesh
DEFAULT SURFACE DISPLAY=POINTS Surface is
displayed as dots
Appendix C - Grasp
Data Files
Grasp comes with certain data files which
need to be installed in a known data directory.
The following two files are vital and Grasp
will not function correctly without them:
default.siz is a DelPhi control file which assigns radii
when a pdb file is read by the program. It may be edited by the user to
include more specific radii assignments, such as different radii for
different carbons, or to alter the radius values therein, for example
setting hydrogen radii to zero. The format of these specifications is
described in Appendix A.
v3.dat is an unformatted file which contains
information necessary to the program to perform marching cubes surface
construction.
The following five DelPhi charge files are
nonessential, but they should nevertheless be installed for ease
of use:
full.crg describes the charge assignments to each
normally ionizable residue, i.e. aspartate, glutamate, lysine,
arginine. (Histidines must be charged by the user.). This is a default
charge set for most proteins.
full+backbone.crg adds charges to the atoms N, HN, CA, C and O of
the backbone. These "partial" charges are taken from the
CHARMM charge set. If no hydrogens are present, the user should use
first full.crg, then back_no_h.crg.
back_no_h.crg compresses the hydrogen charge onto the nitrogen.
amber.crg contains assignments from the AMBER charge set
developed by Kolmann, which is a complete partial charge set which will
assign charges to nearly all atoms.
dnarna.crg contains partial charges for DNA and RNA taken
from Tung, Harvey and McCammon, 1984, Biopolymers 23, 21732193.
Note that because of the variability of atom
names in pdb files few guarantees can be made that the protein or DNA
will correctly charge. The user should read the section on charging
molecules for ways to check this procedure.
Remember that reading charge files does not
necessarily wipe out old assignments, i.e. one should not attempt to
change charge sets merely by reading in a different charge set without
being sure that all previous assignments are overwritten. The user can
set all charges to zero prior to reading a new charge file with the
command "alt(q=0.0)".
The following two files are also included:
defcol.dat contains a set of default colors the user may
wish to use. This will be read in upon program startup if it is in the
current directory.
atom.col is a Grasp Script which will color atoms by a
certain color scheme. This has to be read in via the menu selections "Read:
Grasp Script File".
Both of the above files can be edited to the
user's satisfaction.
References
Curvature
Nicholls, A., Sharp, K. A., and Honig, B.
(1991) Protein folding and association: insights from the interfacial
and thermodynamic properties of hydrocarbons. Proteins Struct.
Funct. Gen. 11, 282.
Superposition
W.Kabsch (1976) Acta Cryst. A32,
922.
Bonds as Sticks
Kuznetsov, D. A., and Lim, H. A. (1992)
VisiCoor: a simple program for visualization of proteins. J. Mol.
Graphics 10, 25-28.
Small Molecule Solvation
Jean-Charles, A., Nicholls, A., Sharp, K.,
Honig, B., Tempczyk, A., Hendrickson, T. H., and Still, W. C. (1991)
Electrostatic contributions to solvation energies: comparisons of free
energy perturbation and continuum calculations. J. Am. Chem. Soc.
113, 1454.
pKa Shifts
Yang, A.-S., Gunner, M. R., Sampogna, R.,
Sharp, K., and Honig, B. (1993) On the Calculations of pKas in
Proteins. Proteins 15, 252265.
SiteSite Interactions
Friedman, R. A., and Honig, B. (1992) The
electrostatic contributions to DNA basestacking interactions. Biopolymers 32,
145159.
Redox Potentials
Gunner, M. R., and Honig, B. (1991)
Electrostatic control of midpoint potentials in the cytochrome subunit
of the Rhodopseudomonas viridis reaction center. Proc. Natl. Acad.
Sci. 88, 91519155.
Potentials and Fields Around a Protein
Sharp, K, Fine, R., and Honig, B. (1987)
Computer simulations of the diffusion of a substrate to an active site
of an enzyme. Science 236, 14601463.
The DelPhi Algorithm
Nicholls, A., and Honig, B. (1991) A rapid
finite difference algorithm, utilizing successive overrelaxation
to solve the PoissonBoltzmann equation. J. Comp. Chem. 12,
435445.