File: fluctuations.py

package info (click to toggle)
mmtk 2.7.9-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 11,788 kB
  • ctags: 6,600
  • sloc: python: 18,050; ansic: 12,400; makefile: 129; csh: 3
file content (44 lines) | stat: -rw-r--r-- 1,377 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Calculate atomic fluctuations from a trajectory.
#
# The trajectory file contains a protein. The fluctuations are calculated
# for all atoms, and then the average over the C-alpha atoms is determined.
# Note that calculating the fluctuations for only the C-alpha atoms is
# more complicated and no faster.
#
# This example illustrates:
# 1) Reading trajectory files
# 2) Selecting parts of a system
# 3) Calculating trajectory averages
#

from MMTK import *
from MMTK.Trajectory import Trajectory
from MMTK.Proteins import Protein

# Open the trajectory, use every tenth step
trajectory = Trajectory(None, 'lysozyme.nc')[::10]
universe = trajectory.universe

# Calculate the average conformation
average = ParticleVector(universe)
for step in trajectory:
    average += step['configuration']
average /= len(trajectory)

# Calculate the fluctiations for all atoms
fluctuations = ParticleScalar(universe)
for step in trajectory:
    d = step['configuration']-average
    fluctuations += d*d
fluctuations /= len(trajectory)

# Collect the C-alpha atoms
calphas = Collection()
for protein in universe.objectList(Protein):
    for chain in protein:
        for residue in chain:
            calphas.addObject(residue.peptide.C_alpha)

# Average over the C-alpha atoms
calpha_mask = calphas.booleanMask()
print (fluctuations*calpha_mask).sumOverParticles()/calphas.numberOfAtoms()