Peter Briggs: mapslice - a map viewer for CCP4i
User Requirements
The basic list of requirements from a user perspective is:
- Colour contours or level
- Specifying contour levels either absolute or rms
- Info about the map - rms and mean of density
- Dispaly PDB files (peaks or atoms)
- need to be able to alter slab search distance & label atoms
- Scaleable (ie must be able to resize window)
- Plottable (ie must be able to print out)
- All harker sections
- Cursor position in fractional and/or absolute coordinates
- Choosing actual section and/or axis
This list is not in any order of importance.
Programming Issues
The basic mapslice program will consist of Tcl/Tk code interacting
with external (non-Tcl) code of some description. The purpose is to
perform the following basic functions:
- Read in an arbitrary map section
- Generate contour lines
- Display the contours
My present thinking is that steps 1 and 2 should be performed by non-Tcl
code, producing a set of Tcl drawing commands which are then executed by
the Tcl code (step 3). Some possible ways of achieving this are:
- Use an external program to read sections from a map directly
each time a section is required. Call mapmask to reorder
the map axes if sections along other axes are required.
Issues:
a. Requires calls to two programs (speed)
b. Requires creating external temporary map files
- Use an external program to read in a whole map each time a
section is required. Any axis reordering can be done inside the
program before generating the contours.
Issues:
a. Reading in a whole map is slower than reading in a single
section
- As (2) above, but: the external program runs "interactively"
with the Tcl code. Each map is read into memory only once.
Issues:
a. Difficulties with extracting Tcl information from the
interactive output.
Beyond this are options (?) which involving interfacing the
Tcl directly with compiled Fortran (or C/Fortran) subroutines to
read in and contour the sections. I really have no idea at this
stage how feasible this would be, and how easy it would be to
maintain.
[Back to home page]