Questions and problems?

Torsion driving

I would like to use Amber to force a torsion to rotate, calculating the energy at points along the way, in order to generate an energy versus torsion profile. I can't find anything in the manual about doing this. Does anyone know if it can be done?

Yes, it can be done, and easily, using the Interface front end scripting language. Below I've included the entire script required to generate an energy versus torsion profile. This script restrains the torsion to different values, then minimizes the structure. The final energy at each point is logged to a specified file, so at the end you are left with a file containing the total energy versus torsion angle.

Interface script to do torsional driving



! Interface script to do torsional driving. 

!  assign run number

   assign vr = 1

!  assign parm and starting coord files

   assign param  = "/disk1/amber/try/parm1.prm"
   assign coord  = "/disk1/amber/try/parm1.crd"

!  assign the file to contain the energy vs angle data:
 
   assign logname = "/disk1/amber/try/run/min.nrg"

!  assign initial & final values of torsion, and number of intervals

   assign tori =   0.0
   assign torf = 360.0
   assign numinc = 36

   assign torinc = (torf-tori)/float(numinc)

   do i = 0,numinc

     sander
     assign angle = mod(tori+i*torinc,360.0)

!    set up the minimization 
 
     info_off
     minimize /steep=100 /steps=9999 /rms_energy=0.05
     dielectric = 1r
     read /formatted
     title = "torsion fixed at  degrees"
     pairlist /update=99999 /cutoff=99.0
     report /steps=99999

!    define restraint (system dependent) 

     restraint \
        /at1=1:N2 /at2=1:C12 /at3=1:C23 /at4=1:C22        \
        /r1=angle-40.0 /r2=angle /r3=angle /r4=angle+40.0 \
        /k2=50.0 /k3=50.0

     generate /output = minxx_vac.inp

!    do the minimization

     if (i.eq.0) then
        assign inpcrd = ""
     else
        assign inpcrd = "minxx_vac_old.rst"
     end if

     run / mdin   = minxx_vac.inp   \
         / mdout  = minxx_vac.out   \
         / prmtop = ""           \
         / inpcrd = ""          \
         / restrt = minxx_vac.rst   \
         / program = "/disk1/amber4.1/exe/sander"
  
!    log the final energy in a separate file

     logenergy / infile = minxx_vac.out  \
               / logfile = ""       \
               / sequence = angle

!    cleanup unneeded files:

     delete minxx_vac.out , minxx_vac.inp 

!    move the restart file so that it'll be available 
!    as input for next iteration

     external "\mv minxx_vac.rst minxx_vac_old.rst"

     clear

   end do

!  final cleanup

   delete minxx_vac_old.rst

Web Masters <webadmin@www.amber.ucsf.edu>
Last modified: Tue Nov 15 18:50:23 1994