Minimize protein-ligand complex with AMBER

From DISI
Revision as of 13:09, 6 April 2018 by TBalius (Talk | contribs)

Jump to: navigation, search

Written on 2018/04/02

This tutorial is for Shoichet Lab group members but we hope that it might be useful to the community.

Outlined below are five steps to minimize a complex.

This is helpful for preparing for a docking calculation (or perhaps, for minimizing a docked pose).


Step 1. Break up the complex into ligand (small molecule) and receptor.

You can do this in a number of ways. You can use your favorite molecular visualization software like UCSF Chimera. Or, you can use your favorite text editor like VIM to do it.

Here is a script that does it automatically:

Create a script called "run.001.be_balsti_reduce.csh". Put the following lines into the script using your favorite text editor like VIM.

#!/bin/csh 

set path = ( /nfs/home/tbalius/zzz.programs/msms $path )

  ln -s /nfs/home/tbalius/zzz.programs/msms/atmtypenumbers .
  #python ~/zzz.scripts/be_blasti.py --pdbcode $pdbname nocarbohydrate renumber | tee -a pdbinfo_using_biopython.log
  python ~/zzz.scripts/be_blasti.py --pdbfile complex.pdb nocarbohydrate original_numbers | tee -a pdbinfo_using_biopython.log


  if !(-s rec.pdb) then
      echo "rec.pdb is not found"
  endif

  mv rec.pdb temp.pdb
  grep -v TER temp.pdb | grep -v END  > rec.pdb

  rm temp.pdb

  if (-s lig.pdb) then
     sed -e "s/HETATM/ATOM  /g" lig.pdb > xtal-lig.pdb
  else if (-s pep.pdb) then ## if no ligand and peptide
     sed -e "s/HETATM/ATOM  /g" pep.pdb > xtal-lig.pdb
  else
     echo "Warning: No ligand or peptid."
  endif

run the script as follows:

 csh run.001.be_balsti_reduce.csh

Step 2. Prepare ligand charges and force field.

Here is a script that calls antechamber to prepare ligand charges and force field. The flag "-nc" specifies the net charge of the small molecule be sure to replace this with the correct value. The ligand must have hydrogen's added. Also, the atom typing is dependent on the 3D coordinates.

You can call openbabel to calculate charges, for example:

# add GASTEIGER charges 
obabel -ipdb lig.pdb -omol2 -O lig.gast.mol2 -charge
cat lig.gast.mol2 | awk 'BEGIN{sum=0};{if(NF==9){print $9;sum=sum+$9}};END{printf"\nsum=%6.2f\n\n",sum}'
set chrg = `cat lig.gast.mol2 | awk 'BEGIN{sum=0};{if(NF==9){sum=sum+$9}};END{printf"%6.2f\n",sum}'`


Create a script called "run.002.ligprep.antechamber.csh".

#! /bin/tcsh


set workdir = `pwd`
cd $workdir


 setenv AMBERHOME /nfs/soft/amber/amber14

rm lig; mkdir lig; cd lig

#cp $workdir/xtal-lig.pdb lig.pdb
cp $workdir/33443.pdb lig.pdb
#sed -i 's/<0> /LIG/g' lig1.mol2

$AMBERHOME/bin/antechamber -i lig.pdb -fi pdb -o lig.ante.mol2 -fo mol2 

$AMBERHOME/bin/antechamber -i lig.ante.mol2 -fi mol2 -o lig.ante.charge.mol2 -fo mol2 -c bcc -at sybyl -nc 1
$AMBERHOME/bin/antechamber -i lig.ante.mol2 -fi mol2  -o lig.ante.pdb  -fo pdb
$AMBERHOME/bin/antechamber -i lig.ante.charge.mol2 -fi mol2  -o lig.ante.charge.prep -fo prepi
$AMBERHOME/bin/parmchk -i lig.ante.charge.prep -f  prepi -o lig.ante.charge.frcmod

Step 3. Prepare the coordinate file and topology-and-parameter files for amber.

Create a script called "run.003.tleap.csh".

setenv AMBERHOME /nfs/soft/amber/amber14

#grep -v 'H$' receptor.pdb > rec.pdb

cat << EOF >! tleap.in
set default PBradii mbondi2
# load the protein force field
source leaprc.ff12SB
# load in GAFF
source leaprc.gaff

# load ligand and covalent parameters.  
loadamberparams lig/lig.ante.charge.frcmod
loadamberprep lig/lig.ante.charge.prep

# load pdb file 
REC = loadpdb rec.pdb
LIG = loadpdb lig/lig.ante.pdb 
COM  = combine {REC LIG}

saveamberparm REC rec.leap.prm7 rec.leap.rst7
saveamberparm LIG lig.leap.prm7 lig.leap.rst7
saveamberparm COM com.leap.prm7 com.leap.rst7

quit
EOF

#$AMBERHOME/bin/tleap 
$AMBERHOME/bin/tleap -s -f tleap.in > ! tleap.out

Step 4. Run minimization using the amber program PMEMD.cuda on a GPU machine

Create a script called "run.004.pmemd_cuda_min.csh"

#setenv AMBERHOME /nfs/soft/amber/amber14

setenv AMBERHOME /nfs/soft/amber/amber14
setenv LD_LIBRARY_PATH ""
setenv LD_LIBRARY_PATH "/usr/local/cuda-6.0/lib64/:$LD_LIBRARY_PATH"

cat << EOF1 > ! 01mi.in
01mi.in: minimization with GB
&cntrl
 imin = 1, maxcyc = 10000, ncyc = 500,  ntmin = 1,
 igb=1,
 ntx = 1, ntc = 1, ntf = 1,
 ntb = 0, ntp = 0,
 ntwx = 1000, ntwe = 0, ntpr = 1000,
 cut = 999.9,
 ntr = 1,
 restraintmask = '!@H=', 
 restraint_wt = 0.1,
/
EOF1


#$AMBERHOME/bin/pmemd.cuda -O -i 01mi.in -o 01mi.out -p com.leap.prm7 -c com.leap.rst7 -ref com.leap.rst7 -x 01mi.mdcrd -inf 01mi.info -r 01mi.rst7
#$AMBERHOME/bin/sander -O -i 01mi.in -o 01mi.out -p com.leap.prm7 -c com.leap.rst7 -ref com.leap.rst7 -x 01mi.mdcrd -inf 01mi.info -r 01mi.rst7

set pwd = `pwd`
#cd $pwd
 
cat << EOF > ! qsub.sander.csh
#\$ -S /bin/csh
#\$ -cwd
#\$ -q gpu.q
#\$ -o stdout
#\$ -e stderr

  cd $pwd
  
  $AMBERHOME/bin/pmemd.cuda -O -i 01mi.in -o 01mi.out -p com.leap.prm7 -c com.leap.rst7 -ref com.leap.rst7 -x 01mi.mdcrd -inf 01mi.info -r 01mi.rst7

EOF

  qsub qsub.sander.csh 

You might want to also minimize the ligand on its own:

Create a script called "run.004.pmemd_cuda_min.lig.csh".

#setenv AMBERHOME /nfs/soft/amber/amber14

setenv AMBERHOME /nfs/soft/amber/amber14
setenv LD_LIBRARY_PATH ""
setenv LD_LIBRARY_PATH "/usr/local/cuda-6.0/lib64/:$LD_LIBRARY_PATH"

cat << EOF1 > ! 01mi.lig.in
01mi.in: minimization with GB
&cntrl
 imin = 1, maxcyc = 10000, ncyc = 500,  ntmin = 1,
 igb=1,
 ntx = 1, ntc = 1, ntf = 1,
 ntb = 0, ntp = 0,
 ntwx = 1000, ntwe = 0, ntpr = 1000,
 cut = 999.9,
 ntr = 0,
/
EOF1
#restraintmask = '!@H=', 
#restraint_wt = 0.1,


#$AMBERHOME/bin/pmemd.cuda -O -i 01mi.in -o 01mi.out -p com.leap.prm7 -c com.leap.rst7 -ref com.leap.rst7 -x 01mi.mdcrd -inf 01mi.info -r 01mi.rst7
#$AMBERHOME/bin/sander -O -i 01mi.lig.in -o 01mi.lig.out -p lig.leap.prm7 -c lig.leap.rst7 -ref lig.leap.rst7 -x 01mi.lig.mdcrd -inf 01mi.lig.info -r 01mi.lig.rst7 

set pwd = `pwd`
#cd $pwd

cat << EOF > ! qsub.sander.lig.csh
#\$ -S /bin/csh
#\$ -cwd
#\$ -q gpu.q
#\$ -o stdout
#\$ -e stderr

  cd $pwd
  $AMBERHOME/bin/pmemd.cuda -O -i 01mi.lig.in -o 01mi.lig.out -p lig.leap.prm7 -c lig.leap.rst7 -ref lig.leap.rst7 -x 01mi.lig.mdcrd -inf 01mi.lig.info -r 01mi.lig.rst7
   
EOF

  qsub qsub.sander.lig.csh

Step 5. Convert to pdb for easy visualization.

cat run.005.mkpdb.csh | awk '{print " " $0}'

#setenv AMBERHOME /nfs/soft/amber/amber14

setenv AMBERHOME /nfs/soft/amber/amber14
setenv LD_LIBRARY_PATH ""
setenv LD_LIBRARY_PATH "/usr/local/cuda-6.0/lib64/:$LD_LIBRARY_PATH"

  
   $AMBERHOME/bin/ambpdb -p com.leap.prm7 < 01mi.rst7 > 01mi.pdb
#   $AMBERHOME/bin/ambpdb -p lig.leap.prm7 < 01mi.lig.rst7 > 01mi.lig.pdb