Hello all!
I'm new at Modeller and I'm trying my luck with Distance Restraints to model a small domain of a protein. I was running some tests on my modelling to see if I had those restraints working and, from my preliminary (and rookie) analysis, it seems it's not.
Attached are the files I'm using. The MyModel.py script has the MyModel class with my restraints defined. It is then called by the main modeller script (RNF11_1X4J_rest.pdb) (had to use this approach for parallel computation) which runs on modeller 9v5.
I've described each restraint like this:
rsr.make_distance(at['SG:1'],at['SG:4'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=5)
I just want both atoms to be, in a maximal distance of 5A. I made some further tests with that value of maximal_distance at 1.5 and 0.5, just to see if it ran ok, and I found out that the 3 best models (5A, 1.5A, 0.5A) are exactly the same :x (or nearly), with distances in the order of 2-3A, which would violate this restraint I've added in the 1.5A and 0.5A.
Is this behaviour normal, or is it something I'm doing that is not the most correct?
Thanks in advance for the answers and congrats for the software and for the whole team.
João Rodrigues Bijvoet Center for Biomolecular Research Utrecht, Netherlands
> I've described each restraint like this: > > rsr.make_distance(at['SG:1'],at['SG:4'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=5) > > I just want both atoms to be, in a maximal distance of 5A.
OK, but that's not what make_distance() does. It builds a set of distance restraints to constrain the model to look like the template(s), and thus is primarily used for building homology derived restraints. This particular example will constrain the SG:1 to SG:4 distance to its value from the template (if residues 1 and 4 in the model are both aligned with a template). To avoid creating too many restraints, if the distance in the template is greater than maximal_distance (5A in this case) the restraint is not created.
What you want is something like that at http://salilab.org/modeller/9v5/manual/node27.html
For this particular example, the following should do what you want, assuming you want to constrain the atom-atom distance to be 5A +/- 0.1A with a Gaussian distribution (harmonic restraint):
rsr.add(forms.gaussian(group=physical.xy_distance, feature=features.distance(at['SG:1'], at['SG:4']), mean=5.0, stdev=0.1))
If you instead want the atom-atom distance to be no greater than 5.0A, you can use forms.upper_bound rather than forms.gaussian. See http://salilab.org/modeller/9v5/manual/node97.html
Ben Webb, Modeller Caretaker
participants (2)
-
João Rodrigues
-
Modeller Caretaker