\section{\MODELLER\ updates}\index{program updates}

\subsection{Major changes in Releases 5 and 6}

The last generally released academic version of MODELLER was version 4. 
MODELLER~5 has not been generally released. The current version is
MODELLER~6.

The major changes relative to version 4 include (this is a very incomplete list):

\begin{itemize}
\item New TOP loop modeling routine \Z{loop} significantly improves the 
accuracy of loop modeling (Section~\ref{SECTION:loops}). It can also be 
used in modeling of sidechains or other parts of the structure.

\item Several new statistical atomic distance-dependent potentials
can typically be used for loop modeling and model evaluation.

\item The ENERGY \K{OUTPUT} = '\V{ENERGY\_PROFILE}' allows construction
of energy profiles for model evaluation, based on any combination 
of MODELLER energy terms. It replaces the \C{ENERGY\_PROFILE} command.

\item New functional form and parameters for the binormal $\Phi, \Psi$ 
restraints improve their numerical stability and accuracy.

\item New TOP command \C{SEGMENT\_MATCHING} facilitates exploring many 
different alignments in the difficult comparative modeling cases.

\item New dynamic memory allocation makes MODELLER more memory efficient.

\item Many bug fixes.

\item Many new arguments, changed naming/meaning of arguments, and several 
new commands.

\item Conversion from Fortran 77 to Fortran 90 was the main culprit for
a very long delay before the latest release.
\end{itemize}


\subsection{Detailed chronological listing of some changes since 
\MODELLER-4 release on 17 June, 1997}

For an incomplete list of the changes from 17 March 1994 to the release 
of \MODELLER-4, see file \Z{doc/modeller4-changes}.

\begin{itemize}
\item 6/23/97, A\v{S}: Added \K{ALIGNMENT\_FORMAT} = \Z{FASTA} format 
to the \C{WRITE\_ALIGNMENT} command (routines \V{rdaln} and \V{rdpir}).

\item 6/24/97, A\v{S}: Corrected the bug in \C{OPERATE} which
sometimes caused errors in using the result variable (\eg, with
\C{WRITE} \K{OBJECTS} = \K{RESULT}) that has been defined by 
the user and not assigned a scalar value before the call to
\C{OPERATE} (routine \V{act13}).

\item 6/25/97, A\v{S}: Incorporated several minor code changes
suggested by Andrzej Sawaryn to allow compilation with f90 on Ultra 2
running Solaris 2.5.1 (routine \V{ran6}, file \Z{Makefile}).

\item 6/27/97, A\v{S}: Changed \C{BUILD} \K{BUILD\_METHOD} =
\Z{3D\_INTERPOLATION} so that the new ``line'' of atoms is a little 
randomized to prevent numerical problems with energy calculations 
(linear impropers, angles, \etc.) (routine \V{insxyz}).

\item 6/27/97, A\v{S}: Upgraded \C{TRANSFER\_XYZ} by adding
\K{CLUSTER\_METHOD}, which selects how are the template--template
comparisons done at each residue position 
(\Z{RMSD} or \Z{MAXIMAL\_DISTANCE}) (routine \V{trfxyz}).

\item 7/11/97, A\v{S}: Changed the format of the representation of
spline restraints in the \V{.rsr} files (MODELLER12 format
changes to MODELLER5 format). The specs now contain only the $y$
values, the derivatives are calculated on the fly. The same
for the non-bonded MODELLER restraints in the parameter file.

\item 7/13/97, A\v{S}: Added arguments \K{SIGNIF\_CUTOFF} and
\K{SEARCH\_GROUP\_LIST} to the \C{SEQUENCE\_SEARCH} command. All 
members of the groups that have \V{SIGNIF} larger than 
\K{SIGNIF\_CUTOFF}[1] and are not more than 
\K{SIGNIF\_CUTOFF}[2] units worse than the best hit
are put into the alignment arrays.

\item 7/13/97, A\v{S}: Added structure resolution to the code in
the output pairwise distance matrix produced by the \C{ID\_TABLE}
and \C{SEQUENCE\_COMPARISON} commands.

\item 7/19/97, A\v{S}: Added a check for sufficient overlap
in \C{MALIGN3D}; not a stop, but a return in that case now.

\item 7/22/97, A\v{S}: Added the \C{READ\_RESTYP\_LIB} command
for reading new residue type definitions, and the corresponding
\K{RESTYP\_LIB\_FILE} variable for specifying the library name.

\item 7/22/97, A\v{S}: Simplification of the \Z{mod5} script.

\item 7/22/97, A\v{S}: Added automatic recognition of the \V{R}, 
\V{E}, and \V{P} entries to the \C{ADD\_RESTRAINT} command (it was 
impossible to add the excluded pairs and pseudo atom definitions 
before this modification).

\item 7/30/97, A\v{S}: Added keyword \K{SWAP\_ATOMS\_IN\_RES}
to \C{SUPERPOSE}. This allows swapping atoms in residues
`DEFHLNQRVY' (as selected) to minimize sidechain \RMS\ deviation 
between MODEL and MODEL2 that have exactly the same atoms in the
same order (\V{match.F}).

\item 8/8/97, A\v{S}: Changed the \V{\_\_model.top} script so that 
the \K{FINAL\_MALIGN3D} option works for alignments that
use the \V{.} option for segment specification.

\item 8/9/97, A\v{S}: Renamed the \K{KEEP\_RESTRAINTS} string variable to 
the \K{RESTRAINT\_SEL\_ATOMS} integer variable and generalized its meaning
(see below). Old \K{KEEP\_RESTRAINTS} of \V{ONE\_ATOM} (default) is equal 
to the new \K{RESTRAINT\_SEL\_ATOMS} of 1; and the old \K{KEEP\_RESTRAINTS} 
of \V{ALL\_ATOMS} is equal to the new \K{RESTRAINT\_SEL\_ATOMS} of 9999.
Impacts \C{MAKE\_RESTRAINTS} and \C{PICK\_RESTRAINTS}.

\item 8/9/97, A\v{S}: Renamed the \K{DYNAMIC\_FLAG} variable to 
\K{NONBONDED\_SEL\_ATOMS} and modified its meaning in order to make 
it consistent with the new variable \K{RESTRAINT\_SEL\_ATOMS}.
Old \K{DYNAMIC\_FLAG} of 0 (default) is equal to the new
\K{NONBONDED\_SEL\_ATOMS} of 2; and the old \K{DYNAMIC\_FLAG} of 1 
is equal to the new \K{NONBONDED\_SEL\_ATOMS} of 1. Impacts
\C{MAKE\_RESTRAINTS} and \C{OPTIMIZE}.

\item 8/9/97, A\v{S}: Added \K{RESTRAINT\_SEL\_ATOMS} and modified the 
\C{MAKE\_RESTRAINTS} command so that the stereochemical, MRFP stereochemical, 
dihedral angle, and bi-dihedral angle restraints are calculated only when a 
sufficiently large number of atoms in a possible restraint are selected (set 
1): For a given possible restraint, only when all restraint atoms or at least 
\K{RESTRAINT\_SEL\_ATOMS} are selected (set 1), is the restraint calculated. 
An exactly equivalent role for the `static' non-bonded restraints (and also 
for the `dynamic' non-bonded restraints calculated during \C{OPTIMIZE}) 
is played by \K{NONBONDED\_SEL\_ATOMS} (the new \TOP\ variable that
replaces and modifies the meaning of the old, deleted \TOP\ variable
\K{DYNAMIC\_FLAG}). This now makes it possible to restrict the calculation 
of all new restraints to the selected atoms only (atom--atom distance 
restraints already depended on selected atom sets 2 and 3; secondary structure 
restraints are calculated for explicitly defined chain segments only).

\item 8/9/97, A\v{S}: Modified the \C{MAKE\_RESTRAINTS} command
so that the calculation of the `static' non-bonded restraints now 
takes into account \K{RESIDUE\_SPAN\_RANGE} and \K{RESIDUE\_SPAN\_SIGN}. 

\item 8/9/97, A\v{S}: Corrected a bug in \C{MAKE\_RESTRAINTS} (\Z{mkdyn.F}) 
that resulted in an incorrect use of \K{DYNAMIC\_FLAG} during calculation 
of the `static' non-bonded restraints.

\item 8/9/97, A\v{S}: Optimized speed of \C{MAKE\_RESTRAINTS} for
non-bonded restraints by considering the selected atoms (set 1) instead
of all atoms.

\item 8/9/97, A\v{S}: Optimized speed of \C{PICK\_RESTRAINTS} by
using the \Z{picatm} array instead of the \Z{cnsin1} and \Z{cnsin2}
functions.

\item 8/9/97, A\v{S}: Corrected a bug in \Z{preppdf.F} that sometimes
resulted in a loss of explicitly excluded non-bonded pairs when
these were not defined or read in before each call to \Z{preppdf.F}.

\item 9/7/97, A\v{S}: Initialized the \Z{ialn()} array for the 
\V{PAP}, \V{INSIGHT}, and \V{QUANTA} formats (\Z{rdaln.F}). This
bug may have caused some problems when a short protein is added
to the alignment that contained a longer protein (framework) in 
its place (\eg, with \C{READ\_ALIGNMENT} after \C{MALIGN3D}).

\item 9/13/97, A\v{S}: Renamed \TOP\ variable \K{MODELLER\_STATUS}
into \K{ERROR\_STATUS} and moved it within the \V{top.ini} file.

\item 9/16/97, A\v{S}: Modified \V{protsize.cst} and \V{Makefile}
to allow more flexibility in defining the sizes of the most important
arrays.

\item 9/20/97, A\v{S}: Introduced the \K{ALIGN\_BLOCK} argument
for the \C{MALIGN} command.

\item 9/28/97, AB: New parameters:\K{ASGL\_2D\_TYPE} -- controls the
way 2D arrays are output by the \C{ENERGY\_PROFILE} command.
\K{PROFILE\_2D\_PHYS} -- selects physical type to be presented as a 
2D energy profile.
\K{NORMALIZE} -- selects normalization for \C{ENERGY\_PROFILE}.
\K{ASGL\_2D\_OUTPUT} -- whether or not to write 2D output for \ASGL.
Command names changed: \C{PATCH\_DISULFIDES} to \C{PATCH\_SS\_MODEL}.
\C{INHERIT\_DISULFIDES} -- to \C{PATCH\_SS\_TEMPLATES}.
\C{ENERGY\_PROFILE} now outputs 2D profiles. \K{OUTPUT} can contain 
the type of energy you output by \C{ENERGY\_PROFILE}: \K{ENERGY} or 
\K{IDEAL\_ENERGY1}, and \K{NORMALIZE} specifies the type of normalization.
Removed the error in calculation of the spline non-bonded terms.

\item 10/28/97, AB: the bug in rsr9 (tmps size) fixed. 
Restored output of the objective function to the output PDB file.

\item 1/2/98, AB: version 5f-ab: 
Introduced 32-nd physical restraint type and 7-th feature type 
(accessible surface in $\Ang^2$). Libraries \Z{sched.lib}, \Z{feats.lib}, 
and \Z{top.ini} are changed to reflect this. New logical variable 
\K{DYNAMIC\_ACCESS} was introduced. Limitation, each time before you 
want to use the 32-nd feature in \C{ENERGY} etc., you have to 
calculate solvent accessibility by \C{WRITE\_DATA} \K{OUTPUT}=\V{PSA}.
               
\item 1/5/98, A\v{S}: A bug (causing a crash) in seqsearch.F is fixed.

\item 1/20/98, AB: version5g = merge (5f-ab, 5f-as). To use solvent 
      accessibility: \C{READ\_PARAMETERS} \K{FILE} = \V{\${LIB}/par-32.lib}

\item 2/6/98, AB: version5g/doc: Improved the html version of the manual.
Changes in Makefile. latex2html was patched to properly handle the macros 
containing sectioning commands.
                                   
\item 1/5/98, A\v{S}: Added keyword \K{DIH\_LIB\_ONLY} to \C{MAKE\_RESTRAINTS},
to allow forcing the calculation of the ``homology-derived'' mainchain
and sidechain dihedral angle restraints (single and binormal) from the 
residue type dependent libraries only (templates ignored).

\item 1/25/98, A\v{S}: changed default \K{BUILD\_METHOD} back to 
\V{INTERNAL\_COORDINATES}.

\item 2/19/98, A\v{S}: corrected a bug in distdp3.inc which sometimes caused
incorrect C-terminal overhang treatment, possibly incorrect alignment as
a whole.

\item 2/27/98, A\v{S}: MNCH2\_LIB moved to MNCH\_LIB.

\item 3/05/98, A\v{S}: Changed the algorithm for calculating the
mainchain curvature. Now using least-squares lines instead of 
simple \Calpha -- \Calpha vectors.

\item 3/12/98, A\v{S}: added option \K{SIGNIF\_CUTOFF} to \C{SEQUENCE\_SEARCH}.

\item 3/23/98, A\v{S}: changed \K{ALIGN\_CODES} to \K{ALIGN\_CODES2} 
for \C{READ\_ALIGNMENT2}.

\item found a workaround for a nasty compiler bug in mod2ali (for SGI, 
make opts) that caused naln=1.

\item 4/28/98, A\v{S}: added \K{MNCH?\_LIB} libraries to allow for 
i-1,i,i+1 mainchain conformation restraints.

\item 4/30/98, AB: in \Z{model/build.F}: all DISU stuff was deleted.
atom classes are assigned based on the iss array, resnam does not change. 

\item 4/30/98, AB: In energy calculations, "slow" character parameters 
were replaced by "fast" integer ones. 


\item 6/6/98,  A\v{S}:  Created new command \C{SEGMENT\_MATCHING}
for enumerating the alignments.

\item 6/6/98,  A\v{S}:  Removed \K{SELECTION\_STEP} from \MODELLER.

\item 6/6/98,  A\v{S}:  Expanded options to \C{PICK\_ATOMS} by 
allowing for automated selection of loops; a special value
for \K{SELECTION\_SEGMENT} of 'LOOPS' '' and new variable
\K{GAP\_EXTENSION} were introduced.

\item 6/6/98,  A\v{S}:  Modified the loop modeling scripts and
other scripts so that robust loop modeling can be done automatically.

There are at least 43 such arrays with a dozen diffrent character length. 
\item 6/6/98,  A\v{S}:  Added the single mutant modeling script.

%In order to overcome this problem in every place where these arrays could pass, 
% they have to be passed explicitly with their size.  
% Have all F90 changes in one place:
%
% \item 6/6/98,  AB: all the command blocks of TOP variables removed and 
%                    the application common blocks are left in main/top*.F 
%                    TOP routines and in application-specific act routines.
%                    Version: 5i-ab

%\item 6/17/98: AB: version 5j changes: several *.cst files were transformed
%                   to a*.cmn files which consist of a*.cst file and global
%                   variables declarations
%
%selection\_step removed;
%selection\_segment = 'LOOPS' introduced

%\item 6/20/98: AB: allocation routines were written. COunting routines were written. 
%               There is a huge problem, because there is no possibility to pass
%              The problem is that pointer arrays have to be declared assumed shape. 
%              These character pointer arrays have to pass sometimes to such everywhere  
%              routines as ifind* or strgin. Those routines in turn require assumed length  
%              formal arguments. 
%              Due to major bug in Fortran this information is lost somewhere during the call. 

%\item 7/2/98: AB: new routines introduced: upd.F (nicely embracing all needed clumsy calls
%              to amax* routines), allocated.F (routine mallocated(1) calculating memory used
%              by dynamic arrays CONTROL_OUTPUT . 25 . . switches it ON for calculating memory in 
%              topappl1. 

%  Those xxx.cst files were broken into axxx.cst (contaning constants that remained constants
%  and new overhead constants) and axxx.cmn files (containing constants that became variables):
%              ../include/atmcls.cst
%              ../include/hash.cst
%              ../include/mod.cst
%              ../include/pdbnam.cst
%              ../include/protsize.cst
%              ../include/segaln.cst
%              ../include/seqsearch.cst
%
%  Ideology of code changes:
%          in the beginning of each act\d+ routine
%             new necesary memory reshuffling was calculated
%             using count*, max*2max* routines and
%             upd*'ed if necessary...  
%          DONOT's:
%              - calls to amax*
%
%  Miscellanious changes in the text:
%     
%          Those changes are related to the non-standard (strict) interaction of 
%            explicit interface declaration and ASEA mechanism
%              array(max) -> array(:)
%              huge automatic 1D array in seqsearch -> huge automatic 2D array
%              call routine(x(1,n))-> routine(x(1:,n)) and likes...
%            a bug in modeller... (the routine was called with differenct sizes len)
%              character char*(len) -> char(*)
%              
%-------------------------------------------------
% AB: end of dynamic memory allocation changes   
%-------------------------------------------------
\item 7/1/98, A\v{S}: Added the missing \K{ALIGN\_ALIGNMENT} top \Z{top.ini}.

\item 7/1/98, A\v{S}: Removed undefined entries from \V{top.ini}. Changed the
meaning of \K{RENUMBER\_RESIDUES} so that it corresponds to the first
residue index in renumbering.

\item 7/1/98, A\v{S}: removed \V{sdch.lib} for sidechain classes 1--2 
from all parts, including \C{COMPARE}.

\item 7/1/98, A\v{S}: changed format of \V{mnch.lib}, removed class weights
from this library because they occur in \V{mnch?.lib}.

\item 7/7/98, AB: the multimple binormal restraints were debugged:
                  1) detection of most relevant phase of phi/psi angles
                  2) removal of the bug in calculation of the derivatives

\item 7/8/98, A\v{S}: increased flexibility of \C{ALIGN2D} so that it needs
only at least one structure for the first block of sequences.
                  
% \item 7/7/98, AB: calls tp featpdf3 were replaced by featpdf2
% \item 7/7/98, AB: new scripts in scripts:
%               alif-lam-mim.modeller - updates .int files to new directory
%               top2rad - extracts radii data from top*.lib (<>) and puts it
%                         and updates $RADII_LIB and $RADII14_LIB
%               top2models - updates $MODELS_LIB using top*.lib (<>)
%               mend_schedule - updates schedule file (input <> output <STDOUT>) 
%                               using $FEATS_LIB
%               make_topology_model - makes top_*.lib from top.lib using  
%                                     $MODELS_LIB using modeller command
%                                     MAKE_TOPOLOGY_MODEL

\item 7/9/98, AB: CA-only warning in READ\_MODEL and other routines using rdpdb

\item 7/11/98, AB: New kind of error message is introduced: \_B - to inform about bugs.
               Now used for former "Increase MAX..." and similar messages only.
               Scan\_errors modified respectively.

\item 7/18/98, A\v{S} and AB: \K{BUILD\_METHOD} for \C{BUILD\_MODEL} 
can continue to be 
\V{3D\_INTERPOLATION}, \V{INTERNAL\_COORDINATES}, but can now also assume
\V{ONE\_STICK} and \V{TWO\_STICKS} values to generate different initial
structures for inserted atoms.

\item 7/20/98, A\v{S}: biperiodic is now used

\item 7/24/98, A\v{S}: not using schedule in \C{PICK\_RESTRAINTS} at all.

\item 8/24/98, A\v{S}: introduced \K{EXPAND\_CONTROL} to allow more 
control for the \C{EXPAND\_ALIGNMENT} command.

\item 8/24/98, A\v{S}: made a vector out of \K{RENUMBER\_SEGMENTS}.

\item 8/24/98, A\v{S}: introduced \K{NO\_TER}.

\item 9/10/98, A\v{S}: updated \C{COMPARE\_SEQUENCES} so that variability
of the first sequence in the alignment is written to the Biso column
of MODEL.

\item 9/15/98, A\v{S}: changed default \K{NONBONDED\_SEL\_ATOMS} from 2 to 1,
in \V{top.ini}.

\item 98--00, A\v{S}: too numerous changes to list here, conversion from f77 to f90.

\end{itemize}
