LANL Home  |  Phone

Introduction to SOLVE

What SOLVE does

SOLVE is a program that can carry out all the steps of structure determination for MAD and MIR, starting with raw intensities (e.g., Scalepack output), and ending with phases and a NEWEZD electron density map that you can read right into "O". SOLVE can make all the decisions in this process and come up with a map all by itself if you want. On the other hand, if you know something about your system that SOLVE doesn't seem to realize, you can guide it through the process by editing script files that SOLVE writes out and continuing in the fashion that you choose.

To use SOLVE on your data, first read the rest of this introduction and the Getting Started section that follows. Then go right on to Automated structure determination to solve your structure.

To get an idea of what SOLVE does, you might want to have a look at some examples of MAD and MIR structure solutions using SOLVE.

Then you might want to try SOLVE out on some test data in your space group using the GENERATE feature. This allows you to create a MAD or MIR dataset with any heavy atom sites you want and then run SOLVE on it. If you start with a PDB coordinate file, you can generate a dataset, solve it, and use "O" to display the EZD electron density map that SOLVE creates along with the correct structure.

Getting Started

[Scripts | Useful commands | Symmetry files | Data files ]

[ Your license |SOLVEDIR, SOLVETMPDIR, CCP4_OPEN environmental variables| More help]


This manual is set up to provide you with short scripts that you can edit to carry out MIR and MAD structure determinations and to carry out any of the other functions of SOLVE.

If you want, you can put the standard information for your dataset in to a file "solve.setup":

!------------------ solve.setup: standard setup for a dataset --------------
SYMFILE /usr/local/lib/solve/c2.sym     ! symmetry file for this space group
                                        !  (most common space groups should be in
                                        !   this directory)
CELL  76.08 27.97 42.08 90 103.2 90     ! a, b, c, alpha, beta, gamma
RESOLUTION 3 20                         ! Resolution limits in A.  
Now each time you start up SOLVE, just type:@solve.setup and the program will read in this information. You can put any keywords or commands into script files that you can type at the terminal. You can also put this information right into your scripts for running SOLVE if you prefer.

Useful commands and information about running SOLVE

The "solve.status" file

SOLVE continuously updates a file called "solve.status" in your working directory. The tail end of the file shows the current status of your SOLVE job. You may find it convenient in unix to open a window, get in this directory, and type "tail -30f solve.status". This will continuously update your screen with the current status of SOLVE. In general, good datasets take a lot less time than poor ones because SOLVE recognizes a correct partial solution very early in a good dataset and can just follow it until all the sites are found.

The "solve.control" file

SOLVE will read a file called "solve.control" in your working directory while it is running. This file can be used to tell SOLVE to finish up as soon as practical if you think it has found the best solution already and you don't want it to keep looking any longer. Once SOLVE has read the file it writes the keyword IGNORE at the end of the file. This tells it not to read the file again (until you delete or comment out the keyword IGNORE). The most useful commands that can be read from this file are:

!-------- solve.control: control solve operation in real time--------------
FINISH         ! finish up cleanly as soon as possible
                 (do not look for any new solutions)
NTOPSOLVE  n   ! only consider n solutions at a time
NSEEDSOLVE  n  ! only use n seeds as starting points for SOLVE
NTOPDERIV n    ! only try out up to n peaks from a difference Fourier when adding
                             ! on new sites to a solution
Useful commands

Some commands that you might find useful right away are "Help", "?" "@" and "History".

HELP will print out a list of available commands.

? [keyword or command]

?ALL will print out a list of all keywords applying to each command and the keyword values.

? followed by a command will print out a list of all keywords that apply to that command and their values. Example: "?maps" will list all keywords that apply to "MAPS".

? followed by a keyword will print out the value of that keyword. Example: "?cell" will print out the current cell constants a, b, c, alpha, beta, gamma. This is useful for making sure that the values are what you think they are and for finding out what the defaults are.

@ filename

The "@" symbol is used to read in the contents of a file as commands. In the above example, "filename" will be opened and interpreted as keywords and commands just as if they were entered from the terminal.


This command will print out a list of the most recent commands and keywords input. The number listed is controlled by the keyword NLIST. Example:

nlist 100

will print out the 100 most recent commands and keywords.

Abbreviating commands

You can abbreviate commands as long as what you type is unique. That is, you can type "hist" and SOLVE will recognize this as "history". Any text appearing after a "!" or a "[" on a keyword or command line is ignored. This lets you enter comments in your script files. SOLVE reads commands one line at a time. This means any information for a keyword has to appear on the same line as the keyword. Also you can only enter one keyword per line. You can end the program by typing "stop".


If you don't like a command name SOLVE uses, you can create an alias of your choice. For example, if you tell SOLVE:

alias quit stop
then any time you type "quit", SOLVE will interpret this as "stop" (and it will stop). If you want to know what the current aliases are, type,

and SOLVE will list them for you.

Running more than one SOLVE job at a time.

You can run more than one SOLVE job on your computer at one time, but they must be in separate directories. This is because SOLVE writes out lots of temporary files with standard names and they would be mixed up if two jobs were running simultaneously in one directory.

Symmetry files

You need to tell SOLVE about your space group symmetry with a symmetry file using the information in the International Tables. The directory /usr/local/lib/solve (or else the directory named if you type "echo $SOLVEDIR") on your computer should contain the most common space groups as they are supplied with the installation of SOLVE.

Here is the symmetry file for space group C2 which you would find in "/usr/local/lib/solve/c2.sym":

4          !  Line 1 of the file is the number of symmetry elements to follow

Enter the identity "x,y,z" as the first operation always. For centered cells, enter the members of the centered sets in the same order for each centering operation.

NOTE: dashes (-) and underscores (_) in the space group file name have meanings. Don't confuse r3.sym with r-3.sym!

For space groups like P2/m that contain slashes, the space group file name has an underscore instead of the slash (p2_m.sym is P2/m). Similarly, for space groups like P1-bar, the file name for the space group has a dash (p-1.sym is p1-bar)

Data Files

The data files used by SOLVE are binary. To look at one, you can use the keywords "INFILE", "NLIST", and "VIEW". Here is a script to look at the file "data.drg":

! script file to VIEW a .drg file
INFILE data.drg

If you want to convert SOLVE datafiles to another format, then you can use the IMPORT and EXPORT commands. See the "Importing and Exporting data" section for details on this and for details on converting binary maps to other formats.

If you want to look at all occurrences of the reflection "-1 3 6" and its symmetry equivalents, you can use the keyword "HKL_VIEW" with "NLIST -1":

! script file to VIEW a reflection and sym equivalents in  .drg file
INFILE data.drg
HKL -1 3 6

For automated analysis of MAD and MIR data, you can start with Scalepack output or other formatted data. If you used mosflm and have an .mtz file with your data, you can read that right into SOLVE as well.

For other operations of SOLVE, you will need to IMPORT your data into "dorgbn-style" files. See the description of "IMPORT" later in this documentation. Missing data is represented by either "-1.0" or "0.0" in this package.

Your license

Users of SOLVE are issued an "solve2.access" license file that looks like:

License for SOLVE expiring 3-jan-1999

You should name your license file "solve2.access" and put it in the directory named in the environmental variable "SOLVEDIR" (see below). That is, if you type "echo $SOLVEDIR" and your computer responds "/usr/local/lib/solve" then your license file should be located in "/usr/local/lib/solve/solve2.access".


The SOLVEDIR, SOLVETMPDIR and CCP4_OPEN environmental variables

SOLVE expects to find the file "solve2.access" and your symmetry files (e.g., c2.sym) in your working directory or else in the directory named by the environmental variable "SOLVEDIR". If you put these files in the directory "/usr/local/lib/solve" then you should add a line something like the following to your .cshrc or .cshrc_custom login file (or the corresponding files if you use another shell):

setenv SOLVEDIR /usr/local/lib/solve

You should then be able to check that the variable is set by typing


and your computer should respond


By default, SOLVE writes temporary files in your working directory.  If you are running on one machine and your directories are on another, this can slow SOLVE down. SOLVE now allows you to set a SOLVETMPDIR environmental variable that specifies where these files are written. You can set it to a directory on your local machine to speed up SOLVE.  (If the directory does not exist, SOLVE will stop.)

setenv SOLVETMPDIR /var/tmp

SOLVE now uses ccp4 library routines. To allow overwriting of existing files, you need to set the CCP4_OPEN environmental variable:


Getting more help

You can get more help with this program and report bugs by emailing the SOLVE/Resolve mailing list. You can also email the author at "". Before you do this, however, please check that you have the most recent version of the program and documentation as your bug may already have been corrected.


Operated by Los Alamos National Security, LLC for the U.S. Department of Energy's NNSA

Inside | © Copyright 2006 Los Alamos National Security, LLC All rights reserved | Disclaimer/Privacy | Web Contact