Ejemplo n.º 1
0
    def __init__(self, name='myexp'):

        self.a = Parameter(name, 'a', 0)
        self.b = Parameter(name, 'b', -1)

        # The _exp instance is used to perform the model calculation,
        # as shown in the calc method.
        self._exp = Exp('hidden')

        return ArithmeticModel.__init__(self, name, (self.a, self.b))
Ejemplo n.º 2
0
    def __init__(self, name='DuleTelluric', same_b=False, same_d=False):
        self.Cst_Cont = Parameter(name,
                                  'Cst_Cont',
                                  1.,
                                  frozen=False,
                                  min=0.95,
                                  max=1.05)

        self.t1_lam_0 = Parameter(name,
                                  't1_lam_0',
                                  5000.,
                                  frozen=False,
                                  min=0.0)
        self.t1_b = Parameter(name, 't1_b', 3.5, frozen=False, min=1e-12)
        self.t1_d = Parameter(name, 't1_d', 0.0005, frozen=False, min=0)
        self.t1_tau_0 = Parameter(name, 't1_tau_0', 0.1, frozen=False, min=0.0)

        self.t2_lam_0 = Parameter(name,
                                  't2_lam_0',
                                  5000.,
                                  frozen=False,
                                  min=0.0)
        self.t2_b = Parameter(name, 't2_b', 3.5, frozen=False, min=1e-12)
        self.t2_d = Parameter(name, 't2_d', 0.0005, frozen=False, min=0)
        self.t2_tau_0 = Parameter(name, 't2_tau_0', 0.1, frozen=False, min=0.0)

        self.resolution = 80000

        if same_b: self.t1_b = self.t2_b
        if same_d: self.t1_d = self.t2_d

        ArithmeticModel.__init__(
            self, name,
            (self.Cst_Cont, self.t1_lam_0, self.t1_b, self.t1_d, self.t1_tau_0,
             self.t2_lam_0, self.t2_b, self.t2_d, self.t2_tau_0))
def test_parameter_linked():
    p = Parameter('foo', 'x1', 1.2)
    q = Parameter('bar', 'x2', 2.2)
    p.val = 2 + q
    r = p._repr_html_()

    assert r is not None

    assert '<summary>Parameter</summary>' in r
    assert '<table class="model">' in r
    assert '<th class="model-odd">foo</th><td>x1</td><td>linked</td><td>4.2</td><td colspan="2">&#8656; 2 + bar.x2</td><td></td></tr>' in r
Ejemplo n.º 4
0
 def __init__(self, name='renamedpars'):
     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'])
     ArithmeticModel.__init__(self, name,
                              (self.period, self.offset, self.ampl))
Ejemplo n.º 5
0
 def __init__(self, name='psfmodel', kernel=None):
     self._name = name
     self._size = None
     self._origin = None
     self._center = None
     self.radial = Parameter(name, 'radial', 0, 0, 1, hard_min=0,
                             hard_max=1, alwaysfrozen=True)
     self.norm = Parameter(name, 'norm', 1, 0, 1, hard_min=0, hard_max=1,
                           alwaysfrozen=True)
     self.kernel = kernel
     self.model = None
     Model.__init__(self, name)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
 def __init__(self, name='bbody'):
     self.space = Parameter(name,
                            'space',
                            0,
                            0,
                            1,
                            0,
                            1,
                            '0 - energy | 1 - wave',
                            alwaysfrozen=True)
     self.kT = Parameter(name, 'kT', 1, 0.1, 1000, 0, 1e+10, 'keV')
     self.ampl = Parameter(name, 'ampl', 1, 1e-20, 1e+20, 1e-20, 1e+20)
     ArithmeticModel.__init__(self, name, (self.space, self.kT, self.ampl))
Ejemplo n.º 8
0
    def __init__(self, name='polynomial'):
        pars = []

        for i in xrange(6):
            pars.append(Parameter(name, 'c%d' % i, 0, frozen=True))
        pars[0].val = 1
        pars[0].frozen = False
        for p in pars:
            setattr(self, p.name, p)

        self.offset = Parameter(name, 'offset', 0, frozen=True)
        pars.append(self.offset)
        ArithmeticModel.__init__(self, name, pars)
Ejemplo n.º 9
0
    def __init__(self, name='thetestmodel'):
        self.notseen = Parameter(name,
                                 'notseen',
                                 10,
                                 min=5,
                                 max=15,
                                 hidden=True)
        self.p1 = Parameter(name, 'P1', 1, min=0, max=10)
        self.accent = Parameter(name, 'accent', 2, min=0, max=10, frozen=True)
        self.norm = Parameter(name, 'norm', 100, min=0, max=1e4)

        ArithmeticModel.__init__(
            self, name, (self.notseen, self.p1, self.accent, self.norm))
Ejemplo n.º 10
0
    def __init__(self, name='absorptionedge'):
        self.edgew = Parameter(name,
                               'edgew',
                               5000.,
                               tinyval,
                               frozen=True,
                               units='angstroms')
        self.tau = Parameter(name, 'tau', 0.5)
        self.index = Parameter(name,
                               'index',
                               3.0,
                               alwaysfrozen=True,
                               hidden=True)

        ArithmeticModel.__init__(self, name,
                                 (self.edgew, self.tau, self.index))
Ejemplo n.º 11
0
        def __init__(self, name='thcompc'):

            self.gamma_tau = Parameter(name, 'gamma_tau', 1.7, 1.001, 5, 1.001,
                                       10)
            self.kT_e = Parameter(name,
                                  'kT_e',
                                  50,
                                  0.5,
                                  150,
                                  0.5,
                                  150,
                                  units='keV')
            self.z = Parameter(name, 'z', 0.0, 0, 5, 0, 5, frozen=True)

            pars = (self.gamma_tau, self.kT_e, self.z)
            XSConvolutionKernel.__init__(self, name, pars)
Ejemplo n.º 12
0
    def __init__(self, name='logabsorption'):

        self.fwhm = Parameter(name,
                              'fwhm',
                              100.,
                              tinyval,
                              hard_min=tinyval,
                              units="km/s")
        self.pos = Parameter(name,
                             'pos',
                             5000.,
                             tinyval,
                             frozen=True,
                             units='angstroms')
        self.tau = Parameter(name, 'tau', 0.5)

        ArithmeticModel.__init__(self, name, (self.fwhm, self.pos, self.tau))
Ejemplo n.º 13
0
    def __init__(self, name='zkerrbb'):
        self.eta = Parameter(name, 'eta', 0, 0, 1.0, 0, 1.0, frozen=True)
        self.a = Parameter(name, 'a', 0.5, -0.99, 0.999, -0.99, 0.9999)
        self.i = Parameter(name,
                           'i',
                           30,
                           0,
                           85,
                           0,
                           85,
                           units='degree',
                           frozen=True)
        self.Mbh = Parameter(name,
                             'Mbh',
                             1e7,
                             3,
                             1e10,
                             3,
                             1e10,
                             units='M_sun',
                             frozen=True)
        self.Mdd = Parameter(name,
                             'Mdd',
                             1,
                             1e-5,
                             1e4,
                             1e-5,
                             1e5,
                             units='M0yr')
        self.z = Parameter(name, 'z', 0.01, 0, 10, 0, 10, frozen=True)
        self.fcol = Parameter(name,
                              'fcol',
                              2,
                              -100,
                              100,
                              -100,
                              100,
                              frozen=True)
        self.rflag = Parameter(name, 'rflag', 1, alwaysfrozen=True)
        self.lflag = Parameter(name, 'lflag', 1, alwaysfrozen=True)
        self.norm = Parameter(name, 'norm', 1.0, 0, 1e24, 0, hugeval)

        pars = (self.eta, self.a, self.i, self.Mbh, self.Mdd, self.z,
                self.fcol, self.rflag, self.lflag, self.norm)
        XSAdditiveModel.__init__(self, name, pars)
Ejemplo n.º 14
0
 def __init__(self, modelname):
     self.LineE = Parameter(modelname=modelname,
                            name='LineE',
                            val=1,
                            min=0,
                            max=1e38)
     self.Sigma = Parameter(modelname=modelname,
                            name='Sigma',
                            val=1,
                            min=0,
                            max=1e38)
     self.norm = Parameter(modelname=modelname,
                           name='norm',
                           val=1,
                           min=0,
                           max=1e38)
     pars = (self.LineE, self.Sigma, self.norm)
     super(ArithmeticModel, self).__init__(modelname, pars=pars)
Ejemplo n.º 15
0
def test_parameter():
    p = Parameter('foo', 'x1', 1.2)
    r = p._repr_html_()

    assert r is not None

    assert '<summary>Parameter</summary>' in r
    assert '<table class="model">' in r
    assert '<tr><th class="model-odd">foo</th><td>x1</td><td><input disabled type="checkbox" checked></input></td><td>1.2</td><td>-MAX</td><td>MAX</td><td></td></tr>' in r
Ejemplo n.º 16
0
    def __init__(self, name='accretiondisk'):

        self.ref = Parameter(name,
                             'ref',
                             5000.,
                             frozen=True,
                             units='angstroms')
        self.beta = Parameter(name, 'beta', 0.5, -10, 10)
        self.ampl = Parameter(name, 'ampl', 1.)
        self.norm = Parameter(name,
                              'norm',
                              20000.0,
                              tinyval,
                              alwaysfrozen=True,
                              hidden=True)

        ArithmeticModel.__init__(self, name,
                                 (self.ref, self.beta, self.ampl, self.norm))
Ejemplo n.º 17
0
    def __init__(self, name='absorptionlorentz'):

        self.fwhm = Parameter(name,
                              'fwhm',
                              100.,
                              tinyval,
                              hard_min=tinyval,
                              units="km/s")
        self.pos = Parameter(name,
                             'pos',
                             5000.,
                             tinyval,
                             frozen=True,
                             units='angstroms')
        self.ewidth = Parameter(name, 'ewidth', 1.)

        ArithmeticModel.__init__(self, name,
                                 (self.fwhm, self.pos, self.ewidth))
Ejemplo n.º 18
0
    def __init__(self, name='powerlaw'):
        self.refer = Parameter(name,
                               'refer',
                               5000.,
                               tinyval,
                               hard_min=tinyval,
                               frozen=True,
                               units="angstroms")
        self.ampl = Parameter(name,
                              'ampl',
                              1.,
                              tinyval,
                              hard_min=tinyval,
                              units="angstroms")
        self.index = Parameter(name, 'index', -0.5, -10.0, 10.0)

        ArithmeticModel.__init__(self, name,
                                 (self.refer, self.ampl, self.index))
Ejemplo n.º 19
0
    def __init__(self, name='emissionlorentz'):

        self.fwhm = Parameter(name,
                              'fwhm',
                              100.,
                              tinyval,
                              hard_min=tinyval,
                              units="km/s")
        self.pos = Parameter(name,
                             'pos',
                             5000.,
                             tinyval,
                             frozen=True,
                             units='angstroms')
        self.flux = Parameter(name, 'flux', 1.)
        self.kurt = Parameter(name, 'kurt', 2., frozen=True)

        ArithmeticModel.__init__(self, name,
                                 (self.fwhm, self.pos, self.flux, self.kurt))
Ejemplo n.º 20
0
    def init(self, modelname, x, data, parameters):
        #print 'BinReaderModel(%s)' % modelname
        self.data = data

        pars = []
        #print '  copying parameters'
        for param, nbins in parameters:
            lo = param.min
            hi = param.max
            newp = Parameter(modelname=modelname,
                             name=param.name,
                             val=param.val,
                             min=lo,
                             max=hi,
                             hard_min=lo,
                             hard_max=hi)
            setattr(self, param.name, newp)
            pars.append(newp)
        #print '  adding norm'
        newp = Parameter(modelname=modelname,
                         name='norm',
                         val=1,
                         min=0,
                         max=1e10,
                         hard_min=-1e300,
                         hard_max=1e300)
        self.norm = newp
        pars.append(newp)
        #print '  adding redshift'
        newp = Parameter(modelname=modelname,
                         name='redshift',
                         val=0,
                         min=0,
                         max=10,
                         hard_min=0,
                         hard_max=100)
        self.redshift = newp
        pars.append(newp)

        self.x = x
        self.binnings = [(param.min, param.max, nbins)
                         for param, nbins in parameters]
        super(RebinnedModel, self).__init__(modelname, pars=pars)
Ejemplo n.º 21
0
def test_link_manual(attr):
    """Check out parameter linking. Use .val or .link"""

    p = Parameter('model', 'eta', 2)
    q = Parameter('other', 'bob', 3)

    assert p.link is None
    assert q.link is None

    assert p.val == 2
    assert q.val == 3

    setattr(p, attr, 2 * q)
    assert p.val == 6

    assert q.link is None
    assert isinstance(p.link, BinaryOpParameter)
    assert isinstance(p.link.parts[0], ConstantParameter)
    assert p.link.parts[0].val == 2
    assert isinstance(p.link.parts[1], Parameter)
    assert p.link.parts[1] is q
Ejemplo n.º 22
0
 def __init__(self, name='lorentz2d'):
     self.fwhm = Parameter(name, 'fwhm', 10, tinyval, hard_min=tinyval)
     self.xpos = Parameter(name, 'xpos', 0)
     self.ypos = Parameter(name, 'ypos', 0)
     self.ellip = Parameter(name,
                            'ellip',
                            0,
                            0,
                            0.999,
                            0,
                            0.9999,
                            frozen=True)
     self.theta = Parameter(name,
                            'theta',
                            0,
                            -2 * numpy.pi,
                            2 * numpy.pi,
                            -2 * numpy.pi,
                            4 * numpy.pi,
                            'radians',
                            frozen=True)
     self.ampl = Parameter(name, 'ampl', 1)
     ArithmeticModel.__init__(self, name,
                              (self.fwhm, self.xpos, self.ypos, self.ellip,
                               self.theta, self.ampl))
     self.cache = 0
Ejemplo n.º 23
0
 def __init__(self, name='fm'):
     self.ebv = Parameter(name, 'ebv', 0.5)  # E(B-V)
     self.x0 = Parameter(name, 'x0', 4.6)  # Position of Drude bump
     self.width = Parameter(name, 'width', 0.06)  # Width of Drude bump
     self.c1 = Parameter(name, 'c1', 0.2)
     self.c2 = Parameter(name, 'c2', 0.1)
     self.c3 = Parameter(name, 'c3', 0.02)
     self.c4 = Parameter(name, 'c4', 0.1)
     ArithmeticModel.__init__(self, name,
                              (self.ebv, self.x0, self.width, self.c1,
                               self.c2, self.c3, self.c4))
Ejemplo n.º 24
0
    def __init__(self, name='seaton'):
        self.ebv = Parameter(name, 'ebv', 0.5)

        self._xtab = numpy.array([
            0.0, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1,
            2.2, 2.3, 2.4, 2.5, 2.6, 2.7
        ])
        self._extab = numpy.array([
            0.0, 1.36, 1.64, 1.84, 2.04, 2.24, 2.44, 2.66, 2.88, 3.14, 3.36,
            3.56, 3.77, 3.96, 4.15, 4.26, 4.40, 4.52, 4.64
        ])

        ArithmeticModel.__init__(self, name, (self.ebv, ))
Ejemplo n.º 25
0
    def __init__(self, name='absorptiongaussian'):

        self.fwhm = Parameter(name,
                              'fwhm',
                              100.,
                              tinyval,
                              hard_min=tinyval,
                              units="km/s")
        self.pos = Parameter(name,
                             'pos',
                             5000.,
                             tinyval,
                             frozen=True,
                             units='angstroms')
        self.ewidth = Parameter(name, 'ewidth', 1.)
        self.limit = Parameter(name,
                               'limit',
                               4.,
                               alwaysfrozen=True,
                               hidden=True)

        ArithmeticModel.__init__(
            self, name, (self.fwhm, self.pos, self.ewidth, self.limit))
Ejemplo n.º 26
0
    def __init__(self, name='opticalgaussian'):

        self.fwhm = Parameter(name,
                              'fwhm',
                              100.,
                              tinyval,
                              hard_min=tinyval,
                              units="km/s")
        self.pos = Parameter(name,
                             'pos',
                             5000.,
                             tinyval,
                             frozen=True,
                             units='angstroms')
        self.tau = Parameter(name, 'tau', 0.5)
        self.limit = Parameter(name,
                               'limit',
                               4.,
                               alwaysfrozen=True,
                               hidden=True)

        ArithmeticModel.__init__(self, name,
                                 (self.fwhm, self.pos, self.tau, self.limit))
Ejemplo n.º 27
0
    def __init__(self, name='bremsstrahlung'):
        self.refer = Parameter(name,
                               'refer',
                               5000.,
                               tinyval,
                               hard_min=tinyval,
                               frozen=True,
                               units="angstroms")
        self.ampl = Parameter(name,
                              'ampl',
                              1.,
                              tinyval,
                              hard_min=tinyval,
                              units="angstroms")
        self.temperature = Parameter(name,
                                     'temperature',
                                     3000.,
                                     tinyval,
                                     hard_min=tinyval,
                                     units="Kelvin")

        ArithmeticModel.__init__(self, name,
                                 (self.refer, self.ampl, self.temperature))
Ejemplo n.º 28
0
 def __init__(self, name='sersic2d'):
     self.r0 = Parameter(name, 'r0', 10, 0, hard_min=0)
     self.xpos = Parameter(name, 'xpos', 0)
     self.ypos = Parameter(name, 'ypos', 0)
     self.ellip = Parameter(name, 'ellip', 0, 0, 0.999, 0, 0.9999)
     self.theta = Parameter(name, 'theta', 0, -2*numpy.pi, 2*numpy.pi, -2*numpy.pi,
                            4*numpy.pi, 'radians')
     self.ampl = Parameter(name, 'ampl', 1)
     self.n = Parameter(name,'n', 1, .1, 10, 0.01, 100, frozen=True )
     ArithmeticModel.__init__(self, name,
                              (self.r0, self.xpos, self.ypos, self.ellip,
                               self.theta, self.ampl, self.n))
     self.cache = 0
Ejemplo n.º 29
0
    def __init__(self, name="voigtabsorptionline"):
        # lambda' = lambda * (c + v')/(c + v) = lambda * k
        self.k = Parameter(name, "k", 1.00005, frozen=False, min=1e-12)
        self.lam_0 = Parameter(name, "lam_0", 5000.0, frozen=False, min=0.0)
        self.b = Parameter(name, "b", 3.5, frozen=False, min=1e-12)
        self.d = Parameter(name, "d", 0.0005, frozen=False, min=0)
        self.N = Parameter(name, "N", 999, frozen=True, hidden=True, min=0.0)
        self.f = Parameter(name, "f", 999, frozen=True, hidden=True, min=0.0)
        self.tau_0 = Parameter(name, "tau_0", 0.1, frozen=False, min=0.0)

        ArithmeticModel.__init__(
            self, name,
            (self.k, self.lam_0, self.b, self.d, self.N, self.f, self.tau_0))
Ejemplo n.º 30
0
    def __init__(self, name='sm'):
        self.ebv = Parameter(name, 'ebv', 0.5)

        self._xtab = numpy.array([
            0.00, 0.29, 0.45, 0.80, 1.11, 1.43, 1.82, 2.27, 2.50, 2.91, 3.65,
            4.00, 4.17, 4.35, 4.57, 4.76, 5.00, 5.26, 5.56, 5.88, 6.25, 6.71,
            7.18, 8.00, 8.50, 9.00, 9.50, 10.00
        ])
        self._extab = numpy.array([
            0.00, 0.16, 0.38, 0.87, 1.50, 2.32, 3.10, 4.10, 4.40, 4.90, 6.20,
            7.29, 8.00, 8.87, 9.67, 9.33, 8.62, 8.00, 7.75, 7.87, 8.12, 8.15,
            8.49, 9.65, 10.55, 11.55, 12.90, 14.40
        ])

        ArithmeticModel.__init__(self, name, (self.ebv, ))