I am trying to force a helical segment (that was built from the non-aligned part of the sequence) to be roughly between two other helical segments rather than sticking outside as automodel/loopmodel puts it by default. I have tried to create an angle restraint between the segment centroids but it seems to be ignored (apart from reporting its violation in the log).
Is it possible to achieve in Modeller or should I actually specify restraints during further optimization/dynamics so that the segment rotates into desired place?
Thank you in advance
The simplified code snippet is like this (trying to achieve “linear” arrangement of A2, A3, and B2 centroids)
def special_restraints(self, aln):
rsr = self.restraints
helixA2 = self.residue_range('42:A', '60:A')
helixA3 = self.residue_range('65:A', '83:A')
helixB2 = self.residue_range('42:B', '60:B')
helixA2c = pseudo_atom.gravity_center(selection(helixA2).only_atom_types('CA'))
helixA3c = pseudo_atom.gravity_center(selection(helixA3).only_atom_types('CA'))
helixB2c = pseudo_atom.gravity_center(selection(helixB2).only_atom_types('CA'))
rsr.add(forms.gaussian(group=physical.nmr_distance, feature=features.angle(helixA2c, helixA3c, helixB2c), mean=pi, stdev=0.1))