While we do not recommend doing serious work using restraints written in Python, it is often useful when prototyping or testing code. Copy this example and modify as needed.
14 def __init__(self, m, ps, k):
15 IMP.kernel.Restraint.__init__(self, m,
"MyRestraint %1%")
19 def unprotected_evaluate(self, da):
21 for i
in range(1, len(self.ps)):
24 if p0.get_value(k) > p1.get_value(k):
25 diff = (p0.get_value(k) - p1.get_value(k))
27 p0.add_to_derivative(k, -1, da)
28 p1.add_to_derivative(k, 1, da)
30 if IMP.get_log_level() >= IMP.base.TERSE:
31 print p0.get_name(),
"and", p1.get_name(),
" are ok"
34 def do_get_inputs(self):
41 for i
in range(0, 10):
45 r = MyRestraint(m, ps, k)
47 print r.evaluate(
True)