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. Unlike in profile.py example, here we fit the profile with adjustment of the excluded volume and hydration layer density of the molecule.
This application is available as a web service at salilab.org/foxs. It is also available as C++ code in IMP at modules/foxs/bin/foxs.cpp.
The experimental data for lysozyme is taken from crysol program (www.embl-hamburg.de/ExternalInfo/Research/Sax/crysol.html)
15 from __future__
import print_function
33 print(
'min_q = ' + str(exp_profile.get_min_q()))
34 print(
'max_q = ' + str(exp_profile.get_max_q()))
35 print(
'delta_q = ' + str(exp_profile.get_delta_q()))
38 particles = IMP.atom.get_by_type(mp, IMP.atom.ATOM_TYPE)
42 for i
in range(0, len(particles)):
43 radius = ft.get_radius(particles[i])
47 surface_area = s.get_solvent_accessibility(
IMP.core.XYZRs(particles))
52 model_profile.calculate_profile_partial(particles, surface_area)
56 saxs_score = IMP.saxs.ProfileFitterChi(exp_profile)
57 chi = saxs_score.compute_score(model_profile)
58 print(
'Chi without parameter fitting = ' + str(chi))
60 chi = (saxs_score.fit_profile(model_profile)).get_chi_square()
61 print(
'Chi after adjustment of excluded volume and water layer parameters = '
63 saxs_score.fit_profile(model_profile, 0.95, 1.05, -2.0, 4.0,
False,