Source code for MMTK.ProteinFriction
# Friction constants for protein C-alpha models
#
# Written by Konrad Hinsen
#
"""
A friction constant model for |C_alpha| models of proteins
"""
__docformat__ = 'restructuredtext'
import MMTK.ParticleProperties
from Scientific import N
[docs]def calphaFrictionConstants(protein, set=2):
"""
:param protein: a |C_alpha| model protein
:type protein: :class:`~MMTK.Proteins.Protein`
:param set: the number of a friction constant set (1, 2, 3, or 4)
:return: the estimated friction constants for the atoms in the protein
:rtype: :class:`~MMTK.ParticleProperties.ParticleScalar`
"""
radius = 1.5
atoms = protein.atomCollection()
f = MMTK.ParticleProperties.ParticleScalar(protein.universe())
for chain in protein:
for residue in chain:
a = residue.peptide.C_alpha
m = atoms.selectShell(a.position(), radius).mass()
d = 3.*m/(4.*N.pi*radius**3)
if set == 1: # linear fit to initial slope
f[a] = max(1000., 121.2*d-8600)
elif set == 2: # exponential fit 400 steps
f[a] = max(1000., 68.2*d-5160)
elif set == 3: # exponential fit 200 steps
f[a] = max(1000., 38.2*d-2160)
elif set == 4: # expansion fit 50 steps
f[a] = max(1000., 20.4*d-500.)
return f