SEAM with Amber
Getting transition-state geometries and energies from force field
calculations.
The SEAM method is described in the following references:
- F. Jensen "Locating Minima on
Seams of Intersecting Potential Energy Surfaces. An Application to
Transition Structure Modeling." J. Am. Chem. Soc. 114 (1992) 1596-1603.
- F. Jensen "Transition Structure
Modeling by Intersecting Potential Energy Surfaces." J. Comp. Chem. 15
(1994) 1199-1216.
- P. T. Olsen, F. Jensen
"Modelling Chemical Reactions for Conformationally Mobile Systems with
Force Field Methods." J. Chem. Phys. 118 (2003) 3523-3531.
- F. Jensen "Using Force Field
Methods for Locating Transition Structures." J. Chem. Phys. 119 (2003)
8804-8808.
This page describes a new implementation for Amber (rather than
Macromodel) by Patrik Rydberg, , Jan. 2007
All files and scripts needed are in /home/bio/SEAM/
The source code is in /home/bio/SEAM/Source. Reading this might be
necessary to understand all available options (most are not needed
though).
The source code is compiled with the comp.csh script in the same
directory.
The program involves library routines from both Blas, Lapack, and Atlas.
The nmode program of Amber need to be slightly modified to write out
the Hessian to a file, see below.
To run an optimisation with SEAM some input is needed. Here follows
first a list of preparations needed before you start and then an
explanation of how to run the SEAM
program.
Preparing the input
- Create a force field for the start and end structures of the
reaction.
Q2MM
(PON parametrisation) is a very useful method if you have
non-standard structures.
- Create two input files for tleap, one for the start and for the
end force fields, both with the same pdb coordinates. Name these X.leap
and Y.leap (X and Y can be anything as long as
they are the same at all occasions in this document). See the sample file below.
The two files should generate prmtop and prmcrd files, called X.prmtop
and X.prmcrd, and similar for Y.
The numbering of the atoms in both leap outputs (i.e. the prmtop and
prmcrd files) have to be exactly the same.
Otherwise SEAM will not work.
The following two commands gives you output pdb-files to check.
tleap -f X.leap
ambpdb -p X.prmtop <X.mdrest >test.pdb
- Copy the nmode input files from /home/bio/SEAM to your working
directory. These are named nmode.in and nmode_seam.in.
cp /home/bio/SEAM/nmode*in .
- Copy the seam input file (seam.dat) from /home/bio/SEAM to your
working directory.
cp /home/bio/SEAM/seam.dat .
- Edit the seam.dat file for your needs.
! at the beginning of a line indicates a comment that will be ignored.
All available options are in the file but only those needed are
un-commented in the default file.
The most important options are described here (those that you should
consider to modify). Some more are described in the default
seam.dat file, whereas the other ones are only described in the
source code, rddata.f
- MAXSTEP - the number of iterations to run before giving
finding a minima
- INPFILE - should be AMBER if you are not using another
program and then you are in the wrong web page
- OPTALGO - NRTS is best, it is a Newton-Raphson Transition
State optimiser.
- FUNCTION - LAGRANGE is default, other options are availabe if
this doesn't work.
- VDVMOD - exchange the Lennard-Jones non-bonded function with
a Buckingham potential. This is recommended. It should only be used
together with STRMOD
- STRMOD - exchange the regular energy function for bonds with
a Morse-type potential. This is recommended. It should only be
used together with VDWMOD
- HESS - ANAL is the option to choose to get the best results.
It reads the Hessian from nmodeh.
- PRINT - The amount of output data, 0 to 4 is available. 0 is
only what you really need, 4 is huge amounts of data.
- GEOMETRY - The geometry of your starting input. PRODUCT,
REACTANT or AVERAGE.
- If you want to fix the coordinates of some atoms, create the file
"fixatoms" and list
the atom
numbers, one on each row.
- To get better energies, you can replace the bond dissociation
energies
of the Morse bond function (used when STRMOD is ON) by creating the
file "morsepar" in the
following way:
It should be in four column format with variables
atomtype1 atomtype2
bond_order energy
where atom types are Macromodel atom type ids (see extern.f in the
source code for transfer from amber types)
bond_order is 1, 2, or 3
energy is bond-dissociation energy in kJ/mole.
- Using non-standard atom types:
Atom types in the program are handled using Macromodel types and all
the standard atom types from the amber FF99 and gaff force fields have
been implemented. To include new atom types, you have to edit the
source code in extern.f
You find the functions atmnamechange (atom type change) and ambbondtype
(bond type determination) at the bottom of the file.
Preferably, an external file could be created from which one could
import this data, but this has not been implemented yet.
Running the program
Run the command:
/home/bio/SEAM/seamamber X Y
It will run the calculation until converged (or fail) and give a
message when it finishes telling if it has converged or not.
Final energy is available in seam.out together with more data
Final geometry is in X.mdrest and Y.mdrest, both should
be the same.
The history of the calculation showing energy convergence, etc. is in
the file fort.30
Sample leap input file for X
source leaprc.ff03
loadAmberPrep prep.in
loadAmberParams frcmod.file
x=loadpdb startstructure.pdb
check x
saveamberparm x X.prmtop X.prmcrd
quit
Modifications of Amber
nmode
Three files are modified: inpdat.h, rdinp.f, and nmode.f.
Note that PON parametrisation uses the massweighted hessian (iulf=1)
whereas SEAM uses the unweighted Hessian (iulf1=1
diff inpdat.h~ inpdat.h
10c10
<
ipol,i3bod,ismem
---
>
ipol,i3bod,ismem,iulf,iulf1
diff rdinp.f~ rdinp.f
38c38
<
ipol,i3bod,ismem
---
>
ipol,i3bod,ismem,iulf,iulf1
91a92
> iulf=0
diff nmode.f~ nmode.f
181a182
> if
((iulf.eq.0).and.(iulf1.eq.0)) then
182a184
> endif
184a187,206
>
! ----- Dump coordinates force and
Hessian
>
! ----- Added by Ulf Ryde, 20/9-06
> if (iulf1.gt.0) then
> write(6,*)' '
>
write(6,*)mx,mf,mh
>
open(73,file='hessian',status='unknown',form='formatted')
>
write(73,'(i9)')natom
>
write(73,'(a)')'Coordinates'
>
write(73,'(3f16.8)')(x(mx+i),i=0,3*natom-1)
>
write(73,'(a)')'Forces (not mass weighted)'
>
write(73,'(3e16.8)')(x(mf+i),i=0,3*natom-1)
>
write(73,'(a)')'Hessian (not mass weighted)'
> k=0
> do
i=1,natom*3
>
write(73,'(6e16.8)')(x(mh+k+j),j=0,i-1)
>
k=k+i
> enddo
> close(73)
> endif
>
189a212,230
>
! ----- Dump coordinates force and
Hessian
>
! ----- Added by Ulf Ryde, 28/11-05
> if (iulf.gt.0) then
>
write(6,*)mx,mf,mh
>
open(73,file='hessian',status='unknown',form='formatted')
>
write(73,'(i9)')natom
>
write(73,'(a)')'Coordinates'
>
write(73,'(3f16.8)')(x(mx+i),i=0,3*natom-1)
>
write(73,'(a)')'Forces (mass weighted)'
>
write(73,'(3e16.8)')(x(mf+i),i=0,3*natom-1)
>
write(73,'(a)')'Hessian (mass weighted)'
> k=0
> do
i=1,natom*3
>
write(73,'(6e16.8)')(x(mh+k+j),j=0,i-1)
>
k=k+i
> enddo
> close(73)
> endif
>