def test_nuisance_down(self): n = IMP.Particle(self.m) Nuisance.setup_particle(n, 1.0) Nuisance(n).set_lower(0.5) Nuisance(n).set_upper(1.5) n.set_value(Nuisance.get_nuisance_key(), 0.1) self.rs.evaluate(False) self.assertAlmostEqual(n.get_value(Nuisance.get_nuisance_key()), 0.5, delta=1e-7) self.assertAlmostEqual(self.rs.values[0], 0.5)
def testdsigma(self): "Test LognormalRestraint(3) sigma derivative" gr = LognormalRestraint(*self.all) for i in range(100): map(self.change_value, self.all) gr.evaluate(True) self.assertAlmostEqual( Nuisance(self.sigma).get_nuisance_derivative(), self.deriv_sigma(*self.all))
def testdmu(self): "Test LognormalRestraint(3) mu derivative" gr = LognormalRestraint(*self.all) self.m.add_restraint(gr) for i in range(100): map(self.change_value, self.all) self.m.evaluate(True) self.assertAlmostEqual( Nuisance(self.mu).get_nuisance_derivative(), self.deriv_mu(*self.all))
def testdmu(self): "Test GaussianRestraint(3) mu derivative" gr = GaussianRestraint(*self.all) for i in range(100): map(self.change_value, self.all) map(self.change_sign, self.locations) gr.evaluate(True) self.assertAlmostEqual( Nuisance(self.mu).get_nuisance_derivative(), self.deriv_mu(*self.all))
def testdx(self): "Test GaussianRestraint(3) x derivative" gr = GaussianRestraint(*self.all) self.m.add_restraint(gr) for i in xrange(100): map(self.change_value, self.all) map(self.change_sign, self.locations) self.m.evaluate(True) self.assertAlmostEqual( Nuisance(self.x).get_nuisance_derivative(), self.deriv_x(*self.all))
def change_value(self, p, min=0.1, max=100): try: n = Nuisance(p) except: return n.set_nuisance(random.uniform(min, max))
def get_value(self, p): try: v = Nuisance(p).get_nuisance() except: v = p return v
def change_sign(self, p): try: n = Nuisance(p) except: return n.set_nuisance(n.get_nuisance() * (2 * random.randint(2) - 1))