Brandon Mills wrote: > I am trying to explore a range of different possible angles between two > domains of my protein by adding the following restraint (and modifying > the angle setting each time): > > class mymodel(automodel): > def special_restraints(self, aln): > rsr = self.restraints > rsr.add(atom_ids=('O:67', 'CE3:146', 'CA:149'), > restraint_parameters=(3, 1, 2, 2, 3, 2, 1, 2.618, 0.010)) > > However, the results I've been getting are varying by far more than the > standard deviation I've set. The restraint is in the .rsr output file, > and the log files have not generated any insightful warnings or errors. > What modification should I make to more strictly enforce this restraint? > Also, can I get modeller to fail by setting the restraint to an extreme?
It would be useful to see your whole script - in particular, if you go on to create an automodel object (rather than mymodel) then your restraint won't be enforced at all.
The only way to "more strictly enforce" a restraint is to reduce its standard deviation. Any violated restraints will be reported in the log file.
To avoid confusion, I recommend that you don't use the old restraint_parameters way of specifying restraints, but instead add them in the new form introduced in Modeller 9 (see http://salilab.org/modeller/manual/node194.html), i.e.
rsr = self.restraints a = self.atoms f = forms.gaussian(group=physical.angle, feature=features.angle(a['O:67'], a['CE3:146'], a['CA:149']), mean=2.618, stdev=0.010) rsr.add(f)
Ben Webb, Modeller Caretaker