The first half of the script is the long loop. The program for each term is run to calculate the function value and gradient using the parameters in init.cor. If you want to run steepest descent or conjugate gradient this is all the information you need, and you would use the GRADIENT command. If you wish to use gradient/curvature or preconditioned conjugate gradient, which are the preferred methods, you would use the CURVATURE command instead.
Therefore each program is provided with the observations to which the model is to be restrained, the coordinate file ( init.cor), and finally given the CURVATURE command. (I suggest you read $tntbin/tnt_cycle at this point.)
The control program, Shift, is given the files produced by each
module as well as init.cor and olddir.dat. The
flow of data in a long loop is shown diagrammatically in
Figure .
If you do not have an old shift vector or do not want to use one of the conjugate gradient methods you should still INCLUDE olddir.dat and simply supply an empty one. Having Shift read an olddir.dat regardless of whether one is there allows you to switch between conjugate and non-conjugate methods without editing the script. Switching between a gradient and a curvature method simply requires that the GRADIENT command be replaced with a CURVATURE command.
In the long loop Shift should be instructed how to vary the parameters. The definition of which parameters are to be held constant, such as occupancies, and which parameters are to be treated as collected groups, as in rigid body refinement or when portions of the model are to have single overall B factors, must be given to Shift. Since these definitions are usually given in the control file Shift should read this file as well.
In the short loop each module is ran once again
(Figure ). This time they are given the
coordinate file shifted.cor and execute the FUNCTION
command. Their output files are all read by Shift. The flow
of control in the short loop can be seen in the standard script
$tntbin/tnt_cycle.