IMP  2.3.1
The Integrative Modeling Platform
saxs/profile.py

In this example, we read a protein from a PDB file and experimental profile file. Next we compute the theoretical profile from the PDB file and fit it to the experimental one.

This application is available as a web service at salilab.org/foxs. It is also available as C++ code in IMP/applications.

The experimental data for lysozyme is taken from crysol program (www.embl-hamburg.de/ExternalInfo/Research/Sax/crysol.html)

1 ## \example saxs/profile.py
2 # In this example, we read a protein from a PDB file and experimental profile file. Next we compute the theoretical profile from the PDB file and fit it to the experimental one.
3 #
4 # This application is available as a web service at salilab.org/foxs. It is also available as C++ code in IMP/applications.
5 #
6 # The experimental data for lysozyme is taken from crysol program (www.embl-hamburg.de/ExternalInfo/Research/Sax/crysol.html)
7 #
8 
9 import IMP
10 import IMP.atom
11 import IMP.core
12 import IMP.saxs
13 import os
14 
15 
16 m = IMP.kernel.Model()
17 
18 #! read PDB
21 
22 #! read experimental profile
23 exp_profile = IMP.saxs.Profile(IMP.saxs.get_example_path('lyzexp.dat'))
24 
25 print 'min_q = ' + str(exp_profile.get_min_q())
26 print 'max_q = ' + str(exp_profile.get_max_q())
27 print 'delta_q = ' + str(exp_profile.get_delta_q())
28 
29 #! select particles from the model
30 particles = IMP.atom.get_by_type(mp, IMP.atom.ATOM_TYPE)
31 
32 #! calculate SAXS profile
33 model_profile = IMP.saxs.Profile()
34 model_profile.calculate_profile(particles)
35 model_profile.write_SAXS_file('6lyz.dat')
36 
37 #! calculate chi score (should be ~0.5 for this example)
38 saxs_score = IMP.saxs.ProfileFitterChi(exp_profile)
39 chi = saxs_score.compute_score(model_profile)
40 print 'Chi = ' + str(chi)
41 
42 
43 #! convert to p(r)
45 model_profile.profile_2_distribution(pr, 48.0)
46 pr.normalize()
47 pr.show()