Known Errors in all Releases of TNT
This page contains descriptions of all the errors ever discovered in released
versions of TNT. The current release is 5F
but there are no known problems with it (yet).
Table of Contents
A problem is known to exist in ADERIV when calculating B gradients for
heavy atoms (ZN, etc.) with low B values. In extreme cases the gradient
can be of the wrong sign and the B value will attempt to drop to negative
infinity. SHIFT can prevent the B's from dropping below 1.0. There are
two possible patches to avoid this problem until I figure out how to fix
it properly. The first is to prevent such atoms from dropping below about
5.0 or so where the problem first becomes bad. This can be done with a
RANGE card in SHIFT (which will affect all atoms) or the equivalent effect
can be achieved with a special purpose program to affect only the required
atoms. The second solution is to use the SHIFTS card in ADERIV and not
the GRADIENT card. This does not correct the problem but prevents the oscillations
that cause large atoms to temporarily drop to low B values.
If the map extent is longer than the unit cell edge in any direction the
program will always exit with an error message saying that not enough map
has been given. This can only be averted by a program modification in the
The atomic coordinate shifts are calculated wrong when rigid body (COMBINE
XYZ) refinement is being done. Release 01 works but does not converge to
the answer as rapidly as it could.
The problem mentioned for Release 1 persists. It seems to be caused by
the failure of the Agarwal method to consider series termination in it's
calculation and affects the B gradients more than the other types of gradients
because the modified electron density for the B gradients is more strongly
affected by the high resolution terms that should not be there. A work-around
has been created by writing a program that uses the original Aragwal method
which is not as seriously affected by the problem. This program only calculates
B gradients and is called BDERIV. It requires a modified difference map,
calculated using difference coefficients generated by RFACTOR using that
program's BGRAD option. The command files in EXAMPLES: demonstrate this
This program will not handle REMARK cards within a coordinate file properly.
The program closes the section within the map file that contains the remarks
before reading the coordinates. When it reaches the comments it places
them in the map file and this corrupts the file. To avoid the problem don't
put comments in coordinate files. To fix the problem remove the line in
MODEL that writes the coordinate file remark into the map file.
This program will bomb when either Fo or Fc is zero and that reflection
is to be used. To avoid the problem set a reflection rejection limit for
Fo and Fc that is at least very small. This limit will cause the zero reflections
to be ignored, which is a better behavior anyway.
An error occurs when a perfect plane is discovered whose normal does not
lie parallel to a cell axis. If this problem arrises move one of the atoms
slightly out of the plane to make that plane imperfect.
When doing a REPORT GEOMETRY with a multichain structure the values for
the number of occurrences of each residue, or linkage type is incorrect.
This has been fixed for the next release.
One garbage structure factor is produced for each scratch file in the initial
sort. This introduced a variable error around 0.1% in the maps the program
produced. There is no known work-around except to fix the program.
The average weights applied to Fo and Fc that is published in the log file
is calculated incorrectly. The weights themselves are correct only the
averages are in error. This problem has been fixed for the next release.
This program does not work. It will work in the next release.
This program does not work. It handles Friedel's law incorrectly and required
extensive modification to the routine DEAL SF to correct. This problem
has been fixed for the next release.
The statistics printed into the log file describing the map are incorrect.
The map produced is correct. This problem arrises only for VMS 4.0. The
FORTRAN complier constructs incorrect code when the optimizer is on. To
correct the problem compile the library TRICLIB with the FORTRAN flag /NOOPTIMIZE.
The PUNCH LABELS command will enter an infinite loop. The variable "j"
must be changed to "rss1" in the LABELS code of PUNCRD.
Under VMS 4.0 this program will infinite loop when calculating gradients
unless compiled with /NOOPTOMIZE.
In the calculation of gradients of planarity a term was left out. This
omission causes the gradients to be inaccurate but not totally wrong. To
correct multiply each gradient by the variable PART1 as it is calculated
in routine DOPLAN.
The program will occasionally fail when calculating gradients for a perfect
plane when the coordinates for the atoms in that plane have not been entered
on ATOMC cards. To avoid the problem reformat the coordinates as ATOMC
P21ZSF, P3221SF, P6122SF
Under VMS 4.0 this program will access violate if it is not compiled /NOOPTIMIZE.
These programs will only function correctly when the map contains the same
number of grid points in both the X and Y direction. The error is in the
code of routine READ MP T of TRICLIB.FLX. This routine checks the extent
of the map incorrectly.
All large programs written in Flecs must be compiled /NOOPTIMIZE when using
the VAX FORTRAN compilers of version 4.0 and 4.1.
The curvature calculation routine is incorrect and will produce only zeros
for the curvature for all parameters. The variables A, B, C must be replaced
by CELL(1), CELL(2), CELL(3) in the routine GENHX.
The B gradient calculation was missing several terms that are nonzero only
when the coordinate system has non-90 degree angles. This oversight has
If a portion of the map along a cell axis is all that is required and all
of the map along that direction is given the program will bomb with an
inappropriate error message.
An access violation will occur when a FIX card is given a residue range.
The problem lies in the FIXCRD routine. Replace the line "J = RSGRSS(RSG)"
with "J = RSGRSS(RSSCHS(J), RSG)".
RFACTOR will not reject reflections with no phase when calculating difference
coefficients. These reflections will be placed in the difference coef-
ficient file with a phase of 1000.
When an atom has a bad contact with more than one symmetry image of another
atom, and that contact is EXCLUDEd, only one (or maybe two) of the contacts
will be ignored. The other contacts will be restrained regardless.
When calculating only the function value for the present model with NEWGEO
the CONTACT term is always zero. As a work-around the GRADIENT card should
be used even in short loops. The error occurs in the routine CONCRD where
a variable is called both FNCVAL and FUNCVAL. This problem is corrected
by changing all references in this routine to either one name or the other.
I prefer FUNCVAL.
If a collection of atoms are being restrained to a plane whose normal is
perpendicular to the Y axis, the gradients will be incorrectly calculated
and will be too large by many orders of magnitude. A fix has been incorporated
into the new release.
A message will not be printed if an atom has a bad contact with a symmetry
related image of itself and it has bonds to something. The contact is properly
ignored. If an atom has a bad contact with the symmetry image of an atom
to which it is bonded that contact is improperly ignored and no message
is printed. This problem has been fixed in release 3A.
If too few sections are given to these programs an incorrect error message
is produced. This problem has been fixed.
An error in the calculation of the gradient of the planarity function was
discovered. This error affects the rate of convergence. It has been corrected.
The RENAME command will not operate when the "chain with no name" is renamed
and then the newly named chain is renamed again. The first renaming does
work. The problem has been corrected.
The handling of linkage definitions on CHAIN cards is incorrect. This error
causes a failure in all cases. It can be corrected by editing the file
ATOMS:ATOMS.FLX and changing "g1" to "g" in the line: chltyp(i) = g1
Also "c1nam" must be changed to "cs1nam" in line:
r1 = ABS(GETRSS(cs1nam, r1nam)) ! We don't care if the node
Both of these lines are the the routine CHNCRD. When you have made the
change all programs which read and use atoms must be recompiled.
Contrary to the documentation, this program will not work for space groups:
P4122, P41212, P4322, and P43212. Also any space group which reduces to
one of these space groups will also fail.
A TRANSLATION card must be preceeded by a MATRIX card for the transformation
to be valid. This restriction has been removed.
An error in the main program caused all keywords longer than 4 letters
to be unrecognizable. This problem can be corrected by replacing CHARACTER*4
This program does not use the proper convention for Psi angles. It used
the carbonyl oxygen of residue i instead of the nitrogen of residue i+1.
The program has been corrected.
Occasionally when given a low symmetry space group based on P21 or P21A
GENERALSF will decide to sample the model map along the Z direction a number
of times which is not divisible by 4. This causes the program to crash.
The data set written for space groups P312, P3112, and P3212 is incomplete.
It is missing the data where h=k and l<0.
Occasionally EXPANDER will lose all coefficients with H equal to HMAX.
When this occurs it will also fail to delete the last of it's scratch files.
---> (OLDSTP) SOLD = OLDSTP (T)
There is an error in the routine NEWSTP which degrades convergence of the
short loops when the program encounters the "inverted parabola" condition.
(FUNCZER) SOLD = 0.0
SOLD = S
---> (OLDVAL) SOLD = OLDSTP (T)
should be replaced by:
(FUNCZER) SOLD = 0.0
This program will generate incorrect results for any space group which
contains a direct 3 or 4 fold and has perpen- dicular two folds. This class
of space groups includes P321, P422, P622, and P6322. It also includes
any space group which contains one of these space groups as a subgroup.
This program failed to properly expand the coefficients with h=k in space
groups P312, P3112, and P3212, causing these data to be corrupted.
When the option INTENSITY is set, the reflection rejection counts are still
printed in resolution shells.
Because this program does not have access to the sigmas for the F's the
curvature calculation cannot be calculated correctly when the data are
to be weighted by sigmas. When weighting by sigmas you either must not
use the gradient/curvature method, or accept the extra short loops is will
take for the cycle to converge.
The limit on the number of atomic matches between the target and the overlay
object is not checked. If too many matches are found the data structure
will be corrupted and the results unpredictable.
If more than 30 atoms are listed on SELECT cards an array will overflow
and data will be corrupted. No error messages will be produced.
If a residue range is being traced and a residue linked to itself is encountered,
OVERLAY will continue adding atom matches until something bad happens (see
above) and SHIFT will go into an infinite loop.
If the space group is P1 and the coefficients given to one of these programs
contain data to a higher resolution limit than the limit given to the program,
the program will bomb with a 'REFLECTION OUT OF ORDER' error. The work-around
is to always ensure that the data do not extend beyond the resolution limits
given to the program.
Non-bonded contacts are incorrectly handled. Only one atom of each bad
contact pair is actually moved because of the contact.
The program will bomb with an "integer overflow" error whenever a space
group with a 2 or 21 axis is along k and there are reflections with negative
The structure factors are not properly multiplied by the number of centering
operators in this space group. If the map was calculated by ignoring the
centering operators the structure factors will be too small by this factor.
When there is a two-fold along the Z axis the program internally generates
an extra row of map points for each section. This problem has no effect
unless the map sections almost exactly fill the transform buffer (X). In
that case the program will bomb with an "access violation" message.
The program would produce incorrect results for any space group which contained
a translation in x or y not 0 or 1/2. This only occurs for space groups
in their standard settings for P4132 and P4332.
If NX is much larger than NY an inappropriate "symmetry expansion" error
could be generated. This problem is caused by a typo in the code for checking
the symmetry expanded coefficients against the array bounds of the transform
GENERALSF and GENERALFS
This library will not work correctly on systems where the byte order is
swapped relative to a VAX, or when the varables of a subroutine are not
saved between calls. The type of the symbols defined in CNSYMBOLS.INC must
be changed to BYTE and the varable START in NXTCON must be SAVEd to correct
GENERALSF, GENERALFS, and MAPREADSF
The common block /SpaceGroup/ was not SAVEd in the main program of either
of these programs. This would cause serious errors on non-VAX computers.
When one of these programs is given the symmetry operator for P622 in the
order given in the International tables it will incorrectly analyse the
space group and generate completely incorrect results. Even the asymmetric
unit of data will be incorrect. The workaround is to use the order:
x, y, z; -x, -y, z; x-y, x, z; -y, x-y, z; y-x, -x, z; y, y-x,
x-y, -y, -z; y-x, y, -z; -y, -x, -z; -x, y-x, -z; y, x, -z; x, x-y,
The temperature factor components of the form factor approximation can
not be negative. The parameters listed for U+4 contain a negative number.
If the sum of your blur factor and the B of the uranium atom is less than
this number any program using form factors will bomb. By the way, the form
factor parameters for U+4 were also incorrect and should never have contained
a negative number to begin with.
The scale factors are not applied to the first solvent structure factor
in the file. SHIFT The logical function NXTATM was not declared as such
in the routine FIXCRD. This error did not affect the routine under VMS
but did cause serious problems under UNIX.
If the coefficient file illegally contains reflections with negative h
an "Internal Error" will be flagged, not a sorting error.
An "Access violation" error will occur whenever a potential bad contant
is found but no standard minimum distance has been given for those two
atom types. To avoid the problem include the required CONNECT cards and
prevent the TNT error message from being printed.
GENERALSF and MAPREADSF
These programs print out an unnessasary line of diagonstic information.
The line describes the progress of the program during the final transform.
This data is of no interest to the general user.
When either Alpha or Beta are not 90 degrees the PDB file produced by the
PUNCH BROOKHAVEN command or read by the BROOKHAVEN command will be incorrect.
The Z value will be corrupted. In addition PUNCHing out a file and reading
it back in are not inverse operations.
Rotation Function Module
The parameter DEGRAD is incorrectly defined as type integer. It should
be real. This error causes the phases of the HKL file produced to be slightly
The space group symmetry is incorrectly handled in this module. It does
not work for any space group execpt P1, where it is useless anyway. If
you need to perform rotation function refinement contact me for a prerelease
of the next version of TNT.
The values for the minimum and maximum density values of the map sections,
which is written to the log file, are often in error. The map sections
themselves are correct.
When a curvature method is used for refinement and COMBINE cards are issued
the resulting shifts are too small in magnitude and many short loops are
required to find the best stepsize. The direction of shift is also affected.
The form factor approximations for CA++ and MN++ are incorrect. The order
of the entries in FORMB defined in FORMFACTOR.FOR need to be switched.
If the peptide chain cannot be traced from the source to the destination
of either the target or 'overlay' chain the error message will not write
out the name of the residue at the site of the problem. Only blanks will
A COMBINE card with one of its atom codes specifying a single atom will
be misinterpreted as implying that all atoms in that residue are to be
combined. The word WILD must be replaced with RS2N in the call to NXTATM
in the routine COMCRD.
All TNT programs
These programs will produce incorrect results when presented with a space
group which contains a center of symmetry or a mirror.
Incorrect results will occur when the symmetry operators of the space group
are INCLUDEd twice (or more times). The identity operator is ignored the
second time but the others are not.
The SCALE and BLUR options on FILE cards are nonfunctional.
The curvature for an atom on a special position is incorrectly calculated.
The shift for a parameter unaffected by the axis of symmetry is overshifted
by the multiplicity of the axis while a parameter affected by the axis
is undershifted. The code has been corrected but because of the lack of
consideration of the off-diagonal elements these atoms remain illbehaved
A fatal error (Access violation) occurs when a PDB or RDI file is being
read and one atom in a residue has a different residue type than other's
in that same group. The error occurs while the warning message is being
In space groups with a C3i point group symmetry (P3, P31, and P32 most
notably) the (100) and (010) reflections are lost when calculating maps
from fourier coefficients.
All attempts to add links on CHAIN cards will fail. One must add the definition
Character*4 atmnam, grpnam
TRANSFORM (Affects Rfactor, Fourier, Solvent)
All page references in the index are too large by 4 pages. To find the
topic of interest look up the keyword in the index and subtract 4.
One entry in the geometry definition for BME is called BMD by mistake.
Change the BMD to BME to correct the problem.
When reading DSN2 format coordinates a warning message is generated if
the first letter of the atom name does not match the atom type. In the
message the name of the atom is omitted.
The GRADIENT command produces a file which causes the B correlation restraints
to be ignored.
RFACTOR, FOURIER, SOLVENT
When calculating a map from coefficients it is possible that the input
routine could attempt to read the coef- ficents twice. This causes the
routine to fail with an error message indicating that the coefficients
are not sorted properly. Since this is a low probability error the simplest
correction is to increase the size of the parameter SIZE in FFT_BUFFER.INC
and recompile with TNT_COMMAND:RECOMPILE.
When using the CORRECT option under Unix Fourier will fail. To correct
this error you should edit the file tnt/util/fourier.flx. Find every instance
of the line
Save rsqrsq, rsqloh, rsqhih, rsq mz, rsqnhk, rsqlol
and add this line right after it.
Save buf1, buf2
There will be two places where this has to be done. Once in the routine
NORMALIZE SF and again in SORT SF.
You will then have to compile Fourier. cd to $tntbin and type "make
Convert will write several junk records when PUNCHing a BROOKHAVEN file
on a MIPS processor system. This is caused by an error in the MIPS compiler.
The workaround is to replace the line in tnt/util/convert.flx subroutine
DO (chs = 1, chscnt)
chs = 0
WHILE (chs .lt. chscnt)
chs = chs + 1
This problem will occur on older DECstations, SGI's, and ESV's.
Convert will bomb when reading a PDB file with the mes- sage "Too many
generic chains". To correct the problem find the lines in subroutine SETATM
Data rsgusd / rsgmax*.FALSE. /
Data rsgflg / rsgmax*.FALSE. /
and insert the line
Save cnamold, rnamold, rsgusd, rsgflg
directly afterwards. Then recompile Convert by cd'ing to $tntbin and
typing 'make convert'.
This problem will occur only of SGI machines with IRIX 5.<something>.
On IRIX 4.0.5 on SGI computers the CORRECT operator will fail (sometimes)
in that it will only return a fraction of the data on the input file. To
correct the problem edit the file tnt/util/fourier.flx and find the routine
SYM EXPAND. After the line
Save rsqsig, rsqfom, rsqf , rsqrsq, rsqhkl, rsqop
insert the line
If one has an overall temperature factor correction (B) which is negative
curvatures will be calculated incorrectly. Since B should always be zero
in refinement this should not be a big problem.
To correct the problem replace the lines
IF (Expon1 .ne. 0.0)
I3 = MIN(1 + NINT(100.0*S2*Expon1), GauSiz)
Solvent = Solvent*GAUSS(I3)
IF (Expon1 .ne. 0.0) Solvent = Solvent*EXP(-Expon1*S2)
The change will have to be made in two places.
PUBLIC.FLX (All programs reading HKL format files)
RFACTOR, FOURIER, SOLVENT (TRANSFORM,FLX)
Structure factors which have their phase set to 1000 will not be recognized
as not having a valid phase. Such phases should also have their FOM set
from_pdb (Unix command)
Fourier maps will be incorrectly calculated in space groups I41 and I4132.
This command will not work unless a TNT control file exists in the current
directory. The file does not need to contain anything, it simply must exist.
The "install" identifier will not work with the GNU make program used at
some sites. The identifier refroot must be defined twice with GNU make.
NCS does not work on Unix systems. To correct the problem edit the file
tnt/ncs/ncs.flx and add the variable "currtyp" to the line
Save currng, curjflg, currnam, curanam
Convert will not properly read PDB format files which contain disordered
atoms whose atom names are one letter long. The name written to the ATOMC
file will contain a blank, which is illegal. To correct the problem
replace the lines in tnt/util/convert.flx
C TNT does not allow embedded blanks in
names but PDB does. Here
C we remove any such blanks. Any
gap must occur in the first
C four letters because of the special
nature to the last two.
C This operation also left justifies
IF (anam(i:i) .eq. ' ')
anam(i:ATMLEN-1) = anam(i+1:ATMLEN)
anam(ATMLEN:ATMLEN) = ' '
C TNT does not allow embedded blanks in names
but PDB does. Here
C we remove any such blanks. Any
gap must occur in the first
C four letters because of the special
nature to the last two.
C This operation also left justifies
i = 1
IF (anam(i:i) .eq. ' ')
i2 = i
WHILE (i2.le.4 .and. anam(i2:i2).eq.'
') i2 = i2 + 1
anam(i:ATMLEN-(i2-i)) = anam(i2:ATMLEN)
anam(ATMLEN-(i2-i)+1:ATMLEN) = '
i = i + 1
Then cd to $tntbin and "make convert".
Geometry will not recognize an atom with a disorder indicator which is
a number. For example, CB.1 will not be recognized as a CB atom while CB.A
Geometry will not issue a warning when the center of mass of the atoms
in the model is more than one unit cell from the origin. A warning is needed
because the symmetry related bad contact finder will sometimes fail to
find all such contacts when the molecule is far from the origin.
When you have a reflection whose resolution is EXACTLY equal to the outer
resolution limit the HISTOGRAM command will fail with an obscure error
If you are using REPORT RFACTOR with option INTENSITY set and you have
a reflection whose amplitude is less than 10 the statistics reported will
be incorrect. The overall R factor and highest amplitude bin will
be affected the worst.
RMSTEP B and RMSTEP OCC are confused. If you want to specify the rms step
for B you should use the RMSTEP OCC statement.
tnt_cycle_ncs (Unix only)
The "from_pdb" command will not correctly identify the atom types of two
specific kinds of atoms. One is the AO5* atom of Coenzyme A and the other
is the AP atom of NAD. In both cases, the affected atom will end up as
atom type A, which is illegal.
From_PDB, From_DSN2 ($tntdata/connect.dat)
This refinement script confuses the conjguate gradient (cg) and gradient/curvature
(gc) methods of minimization. To use one method specify the other on the
"tnt" command. Most of the time one should use the conjugate direction
(cd) method, which is the default and works properly.
These commands generate sequence files for DNA which end with a d5'END
linkage instead of a d3'END. You should edit your DNA sequence files to
correct the problem. An example sequence file for DNA is given in tnt/doc/examples/bdna/bdna.seq.
The file p32.dat incorrectly contains the equivalent positions for space
group p31.dat. The correct contents are
NOTE P32 TRIGONAL PAT SYM: P3B NEQ=3 S.G.NO:145
ANGLE 109.5 3
AO1*, AP2*, AOP2
The definition of NDP has one incorrect line and is missing another.
should be changed to
ANGLE 109.5 3
AOP1*, AP2*, AOP2
and the line
ANGLE 109.5 3
AOP3*, AP2*, AOP2
should be added.
Contrary to the statement in tnt/doc/release_5f.txt,
this script does not use the NO_HYD option to discard
hydrogen atoms in the PDB file. You will have to set
this option in your control file, which means you have
to have a control file. Oh well... Convert the
coordinate file from pdb, edit the prototype tnt control
file to fill in the blanks and set the option, and then
convert the pdb file again. The second time the hydrogen
atoms will go away.
rfactor, fourier, gather_map
On a CLUSTER statement the name of the cluster must be
unique when considering only the first three letters.
The intention was to require uniqueness over the first
When one of these programs is requested to produce a
DSN6 format map file and a particular grid and layout
is specificed by the user (as opposed to asking for an
asymmetric unit or molecular volume) the program will
err and not produce the correct layout.
To correct this problem go to the file
tnt/library/transform/transform.flx. Find the routine
Copy DSN6 (they are alphabetical). You will find a snippet of code
DO (i=1,6) lay(i) = datlay(i,dat)
Replace it with
DO (i=1,6) lay(i) = rsqlay(i,rsq)
Now cd to $tntbin and type "make"