This is an example how to use Mechanical Stiffness Calculations implemented in ProDy package.
The theory of MechStiff has been describe in:
Eyal E, Bahar I (2008) Toward a molecular understanding of the anisotropic response of proteins to external forces: insights from elastic network models Biophys J 94: 3424-35. PMID: 18223005; PMC2292382
In [1]:
%matplotlib inline
from prody import *
import matplotlib.pylab as plt
In [2]:
gfp, header = parsePDB('1gfl', header=True)
In [3]:
gfp
Out[3]:
In [4]:
calphas = gfp.select('protein and chain A and name CA')
In [5]:
calphas
Out[5]:
We instantiate an ANM instance and we are building Hessian matrix by passing selected atoms.
In [6]:
anm = ANM('GFP ANM analysis')
In [7]:
anm.buildHessian(calphas, cutoff=13.0)
In [8]:
anm.getHessian().round(3)
Out[8]:
In [9]:
anm.buildMechStiff?
In [10]:
anm.buildMechStiff(calphas)
In [11]:
anm.getStiffness()
Out[11]:
How to take a part of MechStiff matrix:
In [12]:
cut = anm.getStiffness()[5:15, 20:40]
In [13]:
plt.imshow(cut)
plt.colorbar()
Out[13]:
To obtain matrix with effective spring constant values use:
In [14]:
showMechStiff(anm, calphas, 'jet_r')
Out[14]:
Mean value of spring constant is also significant and it can be obtain by using showMeanMechStiff() function. Arrows and trianglars represents beta strands and helixes. This information can be also seen on the 3D structure of protein using writeDeformProfile().
In [15]:
showMeanMechStiff(anm, calphas, header, 'A', 'jet_r')
Out[15]:
Mechanical Stiffness results can be seen in VMD program using:
In [16]:
pdb = gfp.select('chain A')
In [17]:
writeVMDstiffness(anm, pdb, [3,7], [0,7.5], filename='1gfl_3-7aa', loadToVMD=False)
Out[17]:
In [18]:
writeVMDstiffness?
In [19]:
writeVMDstiffness(anm, pdb, [3], [0,7], filename='1gfl_3', loadToVMD=False)
Out[19]:
In [20]:
anm.getStiffnessRange()
Out[20]:
In [21]:
writeDeformProfile(anm, pdb, selstr='chain A and name CA', pdb_selstr='protein', loadToVMD=False)
Distribution of the deformations in the distance d contributed by each mode k in the presence of extensional forces applied to residues i and j. In this example it will be between residue nr 3 and 132.
In [22]:
showPairDeformationDist(anm, calphas, 3, 132)
Out[22]:
In [23]:
import matplotlib
import matplotlib.pylab as plt
In [24]:
D1 = calcPairDeformationDist(anm, calphas, 3, 212)
In [25]:
D2 = calcPairDeformationDist(anm, calphas, 132, 212)
In [26]:
matplotlib.rcParams['font.size'] = '16'
fig = plt.figure(num=None, figsize=(12,8), facecolor='w')
plt.plot(D1[0], D1[1], 'k-', D2[0], D2[1], 'r-')
plt.xlabel('mode (k)', fontsize = '18')
plt.ylabel('d$^k$' '($\AA$)', fontsize = '18')
plt.grid()
plt.show()
In [ ]: