The part shows how to compare sequence conservation properties with structural mobility obtained from Gaussian network model (GNM) calculations.
In [ ]:
from prody import *
from pylab import *
%matplotlib inline
First, we retrieve MSA for protein for protein family PF00074:
In [ ]:
fetchPfamMSA('PF00074')
We parse the MSA file:
In [ ]:
msa = parseMSA('PF00074_full.sth')
Then, we refine it using refineMSA() based on the sequence of RNAS1_BOVIN:
In [ ]:
msa_refine = refineMSA(msa, label='RNAS1_BOVIN', rowocc=0.8, seqid=0.98)
We calculate entropy for refined MSA.
In [ ]:
entropy = calcShannonEntropy(msa_refine)
Next, we obtain residue fluctuations or mobility for protein member of the above family. We will use chain B of 2W5I.
In [ ]:
pdb = parsePDB('2W5I', chain='B')
chB_ca = pdb.select('protein and name CA and resid 1 to 119')
We perform GNM as follows:
In [ ]:
gnm = GNM('2W5I')
gnm.buildKirchhoff(chB_ca)
gnm.calcModes(n_modes=None) # calculate all modes
In [ ]:
mobility_1 = calcSqFlucts(gnm[0])
mobility_1to8 = calcSqFlucts(gnm[:8])
mobility_all = calcSqFlucts(gnm[:])
In [ ]:
indices = range(1,120)
bar(indices, entropy, width=1.2, color='grey', hold='True');
xlim(min(indices)-1, max(indices)+1);
plot(indices, mobility_all*(max(entropy)/mean(mobility_all)), color='b',
linewidth=2);
xlabel('residue index')
ylabel('mobility/entropy')