(Note: These tutorials are meant to provide illustrative examples of how to use the AMBER software suite to carry out simulations that can be run on a simple workstation in a reasonable period of time. They do not necessarily provide the optimal choice of parameters or methods for the particular application area.)
Copyright Ross Walker 2004

TUTORIAL 3 - SECTION 4

Examining the pKa's of Asp and Glu Residues

By Ross Walker

RETURN TO SECTION 3

Energies of the Protonated Residues in Solution

In order to obtain our reference states for glutamic acid and aspartic acid in solution we will need to run 4 minimisations. Once for GLU, once for GLH, once for ASP and once for ASH.

Now, running these residues on their own in solution is not really correct so what we will do is cap each one with ACE and NME residues. E.g our GLU will look as follows:

So, the question that arises is how can we quickly create such starting structures for our minimisations. Well, there are a huge number of ways in which we can do this but in this example we will stick to using the tools that come with Amber. One very neat trick that xleap has is that it can automatically add atoms that are missing from residues that it has templates for. This we will use to our advantage to quickly create the starting structures we need. We will start by cutting out the GLU and ASP residues from our FBP1_noH_min.pdb. This will give us reasonable starting structures for glutamic acid and aspartic acid. We will create 4 new pdb files in total, one for GLU, one for GLH, one for ASP and one for ASH.

So, for FBP1_noH_min.pdb we open it in an editor and cut out all of residue 7 (GLU).

ATOM     71  N   GLU     7      -3.473  -8.991  -6.525
ATOM     72  H   GLU     7      -3.580  -9.974  -6.761
ATOM     73  CA  GLU     7      -2.188  -8.352  -6.892
ATOM     74  HA  GLU     7      -1.575  -9.134  -7.340
ATOM     75  CB  GLU     7      -2.380  -7.273  -7.977
ATOM     76 2HB  GLU     7      -3.083  -6.518  -7.625
ATOM     77 3HB  GLU     7      -1.418  -6.790  -8.149
ATOM     78  CG  GLU     7      -2.867  -7.854  -9.314
ATOM     79 2HG  GLU     7      -2.122  -8.568  -9.673
ATOM     80 3HG  GLU     7      -3.798  -8.400  -9.142
ATOM     81  CD  GLU     7      -3.106  -6.785 -10.403
ATOM     82  OE1 GLU     7      -2.607  -5.639 -10.295
ATOM     83  OE2 GLU     7      -3.798  -7.101 -11.403
ATOM     84  C   GLU     7      -1.321  -7.810  -5.738
ATOM     85  O   GLU     7      -0.100  -7.730  -5.893

Now, we want to cap this with ACE at the nitrogen end and NME at the carbon end. However, we don't know the 3D coordinates for our ACE and NME caps. No worry we will get xleap to add these for us. What we can do therefore is just add the C of ACE and N of NME to the file. Leap will add the rest. Thus our new pdb file looks like this:

ATOM     70  C   ACE     6
ATOM     71  N   GLU     7      -3.473  -8.991  -6.525
ATOM     72  H   GLU     7      -3.580  -9.974  -6.761
ATOM     73  CA  GLU     7      -2.188  -8.352  -6.892
ATOM     74  HA  GLU     7      -1.575  -9.134  -7.340
ATOM     75  CB  GLU     7      -2.380  -7.273  -7.977
ATOM     76 2HB  GLU     7      -3.083  -6.518  -7.625
ATOM     77 3HB  GLU     7      -1.418  -6.790  -8.149
ATOM     78  CG  GLU     7      -2.867  -7.854  -9.314
ATOM     79 2HG  GLU     7      -2.122  -8.568  -9.673
ATOM     80 3HG  GLU     7      -3.798  -8.400  -9.142
ATOM     81  CD  GLU     7      -3.106  -6.785 -10.403
ATOM     82  OE1 GLU     7      -2.607  -5.639 -10.295
ATOM     83  OE2 GLU     7      -3.798  -7.101 -11.403
ATOM     84  C   GLU     7      -1.321  -7.810  -5.738
ATOM     85  O   GLU     7      -0.100  -7.730  -5.893
ATOM     86  N   NME     8

So, what I have done here is added a new residue, residue 6, called ACE before the glutamic acid and a new residue, residue 8, called NME after the glutamic acid. I have not specified any coordinates, however, leap will add these for us. We save this file as GLU_capped.pdb. We now still need GLH, ASP and ASH. So, for the GLH we simply change all the GLU's above to read GLH. Leap will again add the missing ACE and NME atoms as well as the missing GLH proton. Repeat the above process for the ASP and ASH residue (15) from the FBP1_noH_min.pdb pdb file.

Here are the final pdbs: GLU_capped.pdb, GLH_capped.pdb, ASP_capped.pdb, ASH_capped.pdb

Ok, now we need to create our topology and structure files. Let's start with GLU_capped.pdb and load this into xleap.

$AMBERHOME/exe/xleap -s -f $AMBERHOME/dat/leap/cmd/leaprc.ff99
GLU_capped=loadpdb GLU_capped.pdb

At this point xleap should add all of the missing atoms:

So a total of 3 missing heavy atoms were added and 7 missing hydrogens. This is exactly as we expect. However, we can't just save our topology and coordinate files at this point since xleap will have simply positioned the missing atoms based on it's internal templates, regardless of the surrounding residues. If we edit the structure we will see the problem:

edit GLU_capped

You can zoom in and out by holding the middle and right buttons down at the same time. To rotate hold down the middle button.

Oh dear, this does not look good. All is not lost, however, since all we need is an approximate starting geometry since we will be minimising our system in sander. So, how can fix this geometry? Well, xleap contains an internal minimiser that we can use to clean up our structure. This minimiser will very quickly clean a structure. However, it only deals with internal degrees of freedom, it knows nothing of electrostatics or VDW forces and so we will still need to carefully minimise in sander afterwards. It should get us close enough, however, that our initial forces don't break the sander minimiser. Here's how we do it. Ensure that the current manipulation mode is set to "Select". Then by holding down the left mouse button "rubber band the entire structure". Every time you release the mouse button anything inside the band will be added to the current selection and change colour. To remove atoms from a selection hold down the shift key while rubber banding. So, go ahead and select everything, your screen should end up looking like this:

Then we go to the Edit menu and we select "Relax Selection". At this point the structure should move and you should get something similar to what is shown below. If you rotate the structure you should see that we still have some fairly bad van der waals contacts. If we were to just start doing MD with this structure the huge initial forces would, unless we used an exceptionally short time step, rapidly cause our system to blow up. Here, however, we will be minimising our system and so such large forces will rapidly be removed in the first few minimisation steps.

Let's, go ahead and create our topology and coordinate files. Close the editor by selecting "Unit"->"Close". then save the prmtop and inpcrd files:

saveamberparm GLU_capped GLU_capped.prmtop GLU_capped.inpcrd

Now do exactly the same thing with the GLH_capped, ASP_capped and ASH_capped files.

Here are the final files: GLU_capped.prmtop, GLU_capped.inpcrd, GLH_capped.prmtop, GLH_capped.inpcrd, ASP_capped.prmtop, ASP_capped.inpcrd, ASH_capped.prmtop, ASH_capped.inpcrd

Now we need to minimise the structures in implicit solvent and extract the final energy. Since the structures we have created are quite far from the minima we will run a lot more steps of minimisation that we did before. The input file is below. I have chosen to do a total of 2,500 minimisation steps. 500 of steepest descent followed by 2,000 of conjugate gradient. This is probably much more than we need but since these are small molecules they will be very very quick to run and it won't do us any harm to do more steps than we need.

Initial minimisation of our structures
 &cntrl
  imin=1, maxcyc=2500, ncyc=500,
  cut=20, ntb=0, igb=1, saltcon=0.2,
 /

min_capped.in

Rather than run each of these jobs by hand, you can if you want, I am going to create a short shell script that will run them all for us. It will grep out the final energy and print it to the screen. It will also create pdb's of the final structures which we should view in VMD to see if they look reasonable.

#!/bin/bash

#minimise
echo -n "GLU Solution: "
$AMBERHOME/exe/sander -O -i min_capped.in -o GLU_capped_min.out \
                         -p GLU_capped.prmtop \
                         -c GLU_capped.inpcrd \
                         -r GLU_capped_min.crd
#Obtain the energy
grep -C 7 "FINAL RESULTS" GLU_capped_min.out | grep "  2500 " | awk '{print$2}'

#create a pdb of the final structure
$AMBERHOME/exe/ambpdb -p GLU_capped.prmtop <GLU_capped_min.crd \
                         > GLU_capped_min.pdb 2>/dev/null

#now move on to the next structure
echo -n "GLH Solution: "
$AMBERHOME/exe/sander -O -i min_capped.in -o GLH_capped_min.out \
                         -p GLH_capped.prmtop \
                         -c GLH_capped.inpcrd \
                         -r GLH_capped_min.crd
#Obtain the energy
grep -C 7 "FINAL RESULTS" GLH_capped_min.out | grep "  2500 " | awk '{print$2}'

#create a pdb of the final structure
$AMBERHOME/exe/ambpdb -p GLH_capped.prmtop <GLH_capped_min.crd \
                         > GLH_capped_min.pdb 2>/dev/null

#now move on to the next structure
echo -n "ASP Solution: "
$AMBERHOME/exe/sander -O -i min_capped.in -o ASP_capped_min.out \
                         -p ASP_capped.prmtop \
                         -c ASP_capped.inpcrd \
                         -r ASP_capped_min.crd
#Obtain the energy
grep -C 7 "FINAL RESULTS" ASP_capped_min.out | grep "  2500 " | awk '{print$2}'

#create a pdb of the final structure
$AMBERHOME/exe/ambpdb -p ASP_capped.prmtop <ASP_capped_min.crd \
                         > ASP_capped_min.pdb 2>/dev/null

#now move on to the next structure
echo -n "ASH Solution: "
$AMBERHOME/exe/sander -O -i min_capped.in -o ASH_capped_min.out \
                         -p ASH_capped.prmtop \
                         -c ASH_capped.inpcrd \
                         -r ASH_capped_min.crd
#Obtain the energy
grep -C 7 "FINAL RESULTS" ASH_capped_min.out | grep "  2500 " | awk '{print$2}'

#create a pdb of the final structure
$AMBERHOME/exe/ambpdb -p ASH_capped.prmtop <ASH_capped_min.crd \
                         > ASH_capped_min.pdb 2>/dev/null

#All done
echo "ALL DONE"
echo ""

run_capped_min.x

Before we can execute this script we need to make it executable, then we can execute it with ./run_capped_min.x:

chmod +x run_capped_min.x
./run_capped_min.x

As well as obtaining the following files: GLU_capped_min.out, GLU_capped_min.pdb, GLH_capped_min.out, GLH_capped_min.pdb, ASP_capped_min.out, ASP_capped_min.pdb, ASH_capped_min.out, ASH_capped_min.pdb

You should see the following output on the screen.

GLU Solution: -1.0188E+02
GLH Solution: -8.0227E+01
ASP Solution: -1.1390E+02
ASH Solution: -9.2899E+01

We can now complete our table of energies. But before we do we should quickly take a look at the final structures in VMD to check they look reasonable. Load VMD and then open each of the pdb files above in turn and make sure they look sensible.

Structure 1 PROTEIN
NO H
(A)
-1529.5 KCal/mol
PROTEIN
GLU 7 H
(C)
-1508.1 KCal/mol
PROTEIN
GLU 10 H
(E)
-1506.8 KCal/mol
PROTEIN
ASP 15 H
(G)
-1507.5 KCal/mol
Structure 2 PROTEIN
NO H
(B)
-1516.4 KCal/mol
PROTEIN
GLU 7 H
(D)
-1493.3 KCal/mol
PROTEIN
GLU 10 H
(F)
-1494.6 KCal/mol
PROTEIN
ASP 15 H
(H)
-1494.1 KCal/mol
    SOLUTION
GLU NO H
-101.88 KCal/mol
SOLUTION
GLU H
-80.227 KCal/mol
 
    SOLUTION
ASP NO H
-113.90 KCal/mol
SOLUTION
ASP H
-92.899 KCal/mol
 

Now we have all our energies we can compute the pKa shifts using the formula stated at the beginning:

DpKa = -(DG(X- + H+ -> XH)protein - DG(X- + H+ -> XH)solution ) / kBT*ln(10)

(KBT = 0.597 KCal/mol [at 300K])
(KBT * ln(10) = 1.374643301)

Thus we have:

  GLU 7 GLU 10 ASP 15
Structure 1 -0.18 0.76 0.73
Structure 2 1.05 0.11 0.94

Bare in mind our estimates will not be accurate since we skipped minimising the proton that we added in the protein calculations. We have also not taken into account the lone H+ in each case. We also, in order to make the calculation time tractable to this tutorial, did not minimise our protein systems sufficiently. This tutorial should, however, have familiarised you with the type of steps you would go through to do such calculations.

Return to Index

(Note: These tutorials are meant to provide illustrative examples of how to use the AMBER software suite to carry out simulations that can be run on a simple workstation in a reasonable period of time. They do not necessarily provide the optimal choice of parameters or methods for the particular application area.)
Copyright Ross Walker 2004