Ethan's X-PLOR scripts
for solvent models and structure refinement
I have collected here several XPLOR scripts that I routinely use for
scripts illustrate the use of both a discrete solvent model constructed
on the fly and a bulk solvent model using Babinet's principle.
They also illustrate the use of an overall anisotropic B correction during
refinement. Note that in all cases the Fobs values are left
untouched, unlike the examples in the XPLOR manual.
The scripts are
- This script adds a discrete solvent model to your refinement,
built by looking for H2O residues in a file current.solvent.
Since the model is built on the fly from inside the refinement
script, you can modify your solvent model at any time without
having to alter your base protein structure file (generate.psf).
If you have no discrete solvent model, just put the single word
"END" in current.solvent.
- This script adds a bulk solvent correction to your refinement
using a method suggested by Dale Tronrud. It is the same approach
to handling bulk solvent as is used in TNT and in SHELXL.
Fcalc is corrected by a factor
Fc´ = Fc *
(1. - Ksol exp(-Bsol *
where s = sin()
This correction allows you to use all low-resolution data for
refinement (i.e. set your low-resolution cutoff to 100Å).
- This pair of scripts helps to find the optimal values of
Ksol and Bsol for your bulk solvent model.
Each script takes a fixed value for one of the parameters and
tests a range of corresponding values for the other. Generally
two passes through the pair of scripts should yield an optimal
set of Ksol and Bsol. For example:
Each run of one of these scripts produces a data file
which may be plotted using gnuplot.
Here is a sample plot generated by a simple
- Set Ksol to 0.70 and run bsolref.inp to
estimate the optimal value of Bsol.
- Set Bsol to your new estimate and run ksolref.inp
to estimate a better value of Ksol.
- Iterate once more through the pair of routines to refine these
- This script loops over a range of values for the parameter
Bsol to help you choose appropriate values for the
parameters in your bulk solvent model. Output is to several
data files that can then be viewed using gnuplot.
The idea is to choose values for Ksol and Bsol
which yield the flattest Luzzati plot.
- This script calculates an overall anisotropic B correction, and
adds it to the existing contents of Fpartial.
Both Fobs and Fc are left unchanged on exit
(unlike the example scripts provided with the XPLOR tutorial).
- This is my main script for crystallographic refinement.
- Reads in your current model from generate.psf and
- Constructs a discrete solvent model from any water molecules
it finds in current.solvent
- Optionally adds a bulk solvent correction on top of that
by invoking the bulksol.inp script
- Optionally calculates an overall anisotropic B correction
by invoking the anisob.inp script
- Optionally optimizes hydrogen postions before doing anything
else (XPLOR is notoriously bad at initial placement of hydrogens).
- Cycles $NCYCLES times doing first positional refinement,
then optionally doing B refinement, and
writing out cycle.protein and cycle.solvent
at the end of each cycle. These files contain REMARKS in the header
describing the current R factor, Rfree, geometry ideality, etc.
- Performs a final calculation of
rms B values
- All my refinement scripts invoke a file by this name to
establish the XPLOR force field, refinement parameters,
specify the unit cell, scattering factors, etc. This one is not
very different from the sample in the XPLOR tutorial, but it does
make a few choices that are influenced by what my other scripts
I have a script that prepares Ramachandran plots for gnuplot, with
the prefered regions contoured to reflect the analysis recently
performed by Kleywegt and Jones (Structure 4:1395-1400, 1997).
You will have to edit the script slightly to properly describe your
protein. You will also have to edit the eventual PostScript file
slightly to correct the placement and font of the title.
Transfer of Rfree flags from one data set to another
There are many cases in which it is appropriate to replicate
the set of reserved reflections used to track Rfree so that the
same set is used for multiple data sets.
As always, I welcome any suggestions or corrections to these scripts or
the description of them.
Ethan A Merritt