def __init__(self, name='parametercase'): self.period = Parameter(name, 'Period', 1, 1e-10, 10, tinyval) self.offset = Parameter(name, 'Offset', 0, 0, hard_min=0) self.ampl = Parameter(name, 'Ampl', 1, 1e-05, hard_min=0, aliases=["NORM"]) with warnings.catch_warnings(record=True) as warn: warnings.simplefilter("always", DeprecationWarning) pars = (self.perioD, self.oFFSEt, self.NORM) validate_warning(warn) self._basemodel = Sin() ArithmeticModel.__init__(self, name, pars)
class ParameterCase(ArithmeticModel): """Re-implemenent Sin model so can copy tests""" def __init__(self, name='parametercase'): self.period = Parameter(name, 'Period', 1, 1e-10, 10, tinyval) self.offset = Parameter(name, 'Offset', 0, 0, hard_min=0) self.ampl = Parameter(name, 'Ampl', 1, 1e-05, hard_min=0, aliases=["NORM"]) with warnings.catch_warnings(record=True) as warn: warnings.simplefilter("always", DeprecationWarning) pars = (self.perioD, self.oFFSEt, self.NORM) validate_warning(warn) self._basemodel = Sin() ArithmeticModel.__init__(self, name, pars) def calc(self, *args, **kwargs): for par in self.pars: setattr(self._basemodel, par.name, par.val) self._basemodel.integrate = self.integrate return self._basemodel.calc(*args, **kwargs)
def setUp(self): self.m = Const1D('m') self.m2 = Const1D('m2') self.m.c0 = 2 self.m2.c0 = 4 self.s = Sin('s') self.x = 1.0 self.xx = numpy.arange(-10.0, 10.0)
def setup_composite(): out = namedtuple('composite', ['m', 'm2', 's', 'x', 'xx']) out.m = Const1D('m') out.m2 = Const1D('m2') out.m.c0 = 2 out.m2.c0 = 4 out.s = Sin('s') out.x = 1.0 out.xx = numpy.arange(-10.0, 10.0) return out
def setUp(self): self.m = Sin('m') self.expected_names = ['period', 'offset', 'ampl']
class test_model(SherpaTestCase): def setUp(self): self.m = Sin('m') self.expected_names = ['period', 'offset', 'ampl'] def test_name(self): self.assertEqual(self.m.name, 'm') def test_iter(self): for part in self.m: self.assertIs(part, self.m) def test_num_pars(self): self.assertEqual(len(self.m.pars), 3) def test_par_names(self): self.assertEqual([p.name for p in self.m.pars], self.expected_names) def test_getpar(self): for par in (self.m.period, self.m.PerioD, self.m.PERIod): self.assertIs(par, self.m.pars[0]) self.assertRaises(AttributeError, getattr, self.m, 'perio') def test_setpar(self): self.assertNotEqual(self.m.offset.val, 17.0) self.m.offset = 17 self.assertEqual(self.m.offset.val, 17.0) self.m.ofFseT = 18 self.assertEqual(self.m.offset.val, 18.0) self.assertRaises(AttributeError, setattr, self.m, 'ofset', 19) def test_calc_and_call(self): x = numpy.arange(10.0) refvals = my_sin(self.m.pars, x) pars = [p.val for p in self.m.pars] for vals in (self.m.calc(pars, x), self.m(x)): self.assertEqualWithinTol(vals, refvals, 1e-12) def test_get_thawed_pars(self): tp = [p.val for p in self.m.pars if not p.frozen] self.assertEqual(self.m.thawedpars, tp) def test_set_thawed_pars(self): pars = [7, 8, 9] self.assertNotEqual(pars, self.m.thawedpars) self.m.thawedpars = pars self.assertEqual(pars, self.m.thawedpars) self.assertRaises(ModelErr, setattr, self.m, 'thawedpars', pars[:2]) self.assertRaises(ValueError, setattr, self.m, 'thawedpars', [1, 2, 'ham']) pars[0] = self.m.pars[0].hard_min / 10 pars[1] = self.m.pars[1].hard_max * 10 logger = logging.getLogger('sherpa') old_level = logger.getEffectiveLevel() logger.setLevel(logging.ERROR) try: self.m.thawedpars = pars finally: logger.setLevel(old_level) self.assertEqual(self.m.pars[0].val, self.m.pars[0].min) self.assertEqual(self.m.pars[1].val, self.m.pars[1].max) def test_get_mins_maxes(self): self.assertEqual(self.m.thawedparmins, [p.min for p in self.m.pars if not p.frozen]) self.assertEqual(self.m.thawedparmaxes, [p.max for p in self.m.pars if not p.frozen]) self.assertEqual(self.m.thawedparhardmins, [p.hard_min for p in self.m.pars if not p.frozen]) self.assertEqual(self.m.thawedparhardmaxes, [p.hard_max for p in self.m.pars if not p.frozen])
def setup_model(): return Sin('m'), ['period', 'offset', 'ampl']
def setUp(self): self.m = Sin('m')
class test_model(SherpaTestCase): def setUp(self): self.m = Sin('m') def test_name(self): self.assertEqual(self.m.name, 'm') def test_iter(self): for part in self.m: self.assert_(part is self.m) def test_getpar(self): for par in (self.m.period, self.m.PerioD, self.m.PERIod): self.assert_(par is self.m.pars[0]) self.assertRaises(AttributeError, getattr, self.m, 'perio') def test_setpar(self): self.assertNotEqual(self.m.offset.val, 17.0) self.m.offset = 17 self.assertEqual(self.m.offset.val, 17.0) self.m.ofFseT = 18 self.assertEqual(self.m.offset.val, 18.0) self.assertRaises(AttributeError, setattr, self.m, 'ofset', 19) def test_calc_and_call(self): x = numpy.arange(10.0) refvals = my_sin(self.m.pars, x) pars = [p.val for p in self.m.pars] for vals in (self.m.calc(pars, x), self.m(x)): self.assertEqualWithinTol(vals, refvals, 1e-12) def test_get_thawed_pars(self): tp = [p.val for p in self.m.pars if not p.frozen] self.assertEqual(self.m.thawedpars, tp) def test_set_thawed_pars(self): pars = [7, 8, 9] self.assertNotEqual(pars, self.m.thawedpars) self.m.thawedpars = pars self.assertEqual(pars, self.m.thawedpars) self.assertRaises(ModelErr, setattr, self.m, 'thawedpars', pars[:2]) self.assertRaises(ValueError, setattr, self.m, 'thawedpars', [1, 2, 'ham']) pars[0] = self.m.pars[0].hard_min / 10 pars[1] = self.m.pars[1].hard_max * 10 logger = logging.getLogger('sherpa') old_level = logger.getEffectiveLevel() logger.setLevel(logging.ERROR) try: self.m.thawedpars = pars finally: logger.setLevel(old_level) self.assertEqual(self.m.pars[0].val, self.m.pars[0].min) self.assertEqual(self.m.pars[1].val, self.m.pars[1].max) def test_get_mins_maxes(self): self.assertEqual(self.m.thawedparmins, [p.min for p in self.m.pars if not p.frozen]) self.assertEqual(self.m.thawedparmaxes, [p.max for p in self.m.pars if not p.frozen]) self.assertEqual(self.m.thawedparhardmins, [p.hard_min for p in self.m.pars if not p.frozen]) self.assertEqual(self.m.thawedparhardmaxes, [p.hard_max for p in self.m.pars if not p.frozen])