Example #1
0
def test_parameters_from_stack():
    a = Parameter("a", 1)
    b = Parameter("b", 2)
    c = Parameter("c", 3)

    pars = Parameters([a, b]) + Parameters([]) + Parameters([c])
    assert pars.names == ["a", "b", "c"]
Example #2
0
def test_get_subcovariance():
    a = Parameter("a", 10)
    b = Parameter("b", 20)
    c = Parameter("c", 30)

    pars_0 = Parameters([a, b, c])
    pars_0.covariance = np.array([[2, 3, 4], [6, 7, 8], [10, 11, 12]])

    pars_1 = Parameters([a, b])

    assert_equal(pars_0.get_subcovariance(pars_1), np.array([[2, 3], [6, 7]]))
    assert_equal(pars_0.get_subcovariance([c]), np.array([[12]]))
Example #3
0
def test_set_subcovariance():
    a = Parameter("a", 10)
    b = Parameter("b", 20)
    c = Parameter("c", 30)

    pars_0 = Parameters([a, c, b])
    pars_0.covariance = np.zeros((3, 3))

    pars_1 = Parameters([a, b])
    pars_1.covariance = np.array([[2, 3], [6, 7]])

    pars_0.set_subcovariance(pars_1)
    assert_equal(pars_0.covariance, np.array([[2, 0, 3], [0, 0, 0], [6, 0, 7]]))
Example #4
0
def test_parameters_from_stack():
    a = Parameter("a", 1)
    b = Parameter("b", 2)
    c = Parameter("c", 3)

    pars = Parameters([a, b]) + Parameters([]) + Parameters([c])
    assert pars.names == ["a", "b", "c"]

    pars1 = Parameters.from_values([1, 2], covariance=np.full((2, 2), 2))
    pars2 = Parameters.from_values([3, 4, 5], covariance=np.full((3, 3), 3))
    pars = pars1 + pars2

    assert_allclose(pars.values, [1, 2, 3, 4, 5])
    assert_allclose(pars.covariance[0], [2, 2, 0, 0, 0])
    assert_allclose(pars.covariance[4], [0, 0, 3, 3, 3])
Example #5
0
    def __init__(self, r_s=None, rho_s=1 * u.Unit("GeV / cm3")):
        r_s = self.DEFAULT_SCALE_RADIUS if r_s is None else r_s

        self.parameters = Parameters([
            Parameter("r_s", u.Quantity(r_s)),
            Parameter("rho_s", u.Quantity(rho_s))
        ])
Example #6
0
    def covariance(self, covariance):
        self._covariance.data = covariance

        for par in self.parameters:
            pars = Parameters([par])
            variance = self._covariance.get_subcovariance(pars)
            par.error = np.sqrt(variance)
Example #7
0
    def covariance(self):
        for par in self.parameters:
            pars = Parameters([par])
            covar = Covariance(pars, data=[[par.error ** 2]])
            self._covariance.set_subcovariance(covar)

        return self._covariance
Example #8
0
 def __init__(self, name=""):
     self.name = name
     self.parameters = Parameters(
         [Parameter("x", 2),
          Parameter("y", 3e2),
          Parameter("z", 4e-2)])
     self.data_shape = (1, )
Example #9
0
def covariance_diagonal():
    x = Parameter("x", 1, error=0.1)
    y = Parameter("y", 2, error=0.2)
    z = Parameter("z", 3, error=0.3)

    parameters = Parameters([x, y, z])
    return Covariance(parameters=parameters)
Example #10
0
def test_unique_parameters():
    a = Parameter("a", 1)
    b = Parameter("b", 2)
    c = Parameter("c", 3)
    parameters = Parameters([a, b, a, c])
    assert parameters.names == ["a", "b", "a", "c"]
    parameters_unique = parameters.unique_parameters
    assert parameters_unique.names == ["a", "b", "c"]
Example #11
0
    def parameters(self):
        """List of parameters (`~gammapy.modeling.Parameters`)"""
        parameters = []

        if self.model:
            parameters += self.model.parameters

        return Parameters(parameters)
Example #12
0
    def __init__(self, r_s=None, alpha=None, rho_s=1 * u.Unit("GeV / cm3")):
        alpha = self.DEFAULT_ALPHA if alpha is None else alpha
        r_s = self.DEFAULT_SCALE_RADIUS if r_s is None else r_s

        self.parameters = Parameters([
            Parameter("r_s", u.Quantity(r_s)),
            Parameter("alpha", u.Quantity(alpha)),
            Parameter("rho_s", u.Quantity(rho_s)),
        ])
Example #13
0
    def covariance(self):
        self._check_covariance()
        for par in self.parameters:
            pars = Parameters([par])
            error = np.nan_to_num(par.error**2, nan=1)
            covar = Covariance(pars, data=[[error]])
            self._covariance.set_subcovariance(covar)

        return self._covariance
Example #14
0
    def _init_from_parameters(self, parameters):
        """Create model from list of parameters.

        This should be called for models that generate
        the parameters dynamically in ``__init__``,
        like the ``NaimaSpectralModel``
        """
        # TODO: should we pass through `Parameters` here? Why?
        parameters = Parameters(parameters)
        self._parameters = parameters
        for parameter in parameters:
            setattr(self, parameter.name, parameter)
Example #15
0
 def model(self, model):
     self._model = model
     if model is not None:
         self._parameters = Parameters(self._model.parameters.parameters)
         self._predictor = SpectrumEvaluator(
             model=self.model,
             livetime=self.livetime,
             aeff=self.aeff,
             e_true=self._energy_axis.edges,
             edisp=self.edisp,
         )
     else:
         self._parameters = None
         self._predictor = None
    def __init__(
        self,
        spectral_model,
        name="bias",
        bias=0.0,
    ):
        self.spectral_model = spectral_model
        self.parameter_name = name
        self.bias_parameter = Parameter(name,
                                        bias,
                                        unit="",
                                        min=-1.0,
                                        max=2.0,
                                        frozen=False)
        parameters = Parameters([self.bias_parameter])

        super()._init_from_parameters(parameters)
Example #17
0
def test_parameters_s():
    pars = Parameters([
        Parameter("", 20, scale_method="scale10"),
        Parameter("", 20, scale_method=None),
    ])
    pars_dict = pars.to_dict()
    pars.autoscale()
    assert_allclose(pars[0].factor, 2)
    assert_allclose(pars[0].scale, 10)

    assert pars_dict[0]["scale_method"] == "scale10"
    assert pars_dict[1]["scale_method"] is None
    pars = Parameters.from_dict(pars_dict)
    pars.autoscale()
    assert_allclose(pars[0].factor, 2)
    assert_allclose(pars[0].scale, 10)
    assert pars[1].scale_method is None
    pars.autoscale()
    assert_allclose(pars[1].factor, 20)
    assert_allclose(pars[1].scale, 1)
Example #18
0
    def __init__(
        self,
        spectral_model,
        absorption,
        parameter,
        parameter_name="redshift",
        alpha_norm=1.0,
    ):
        self.spectral_model = spectral_model
        self.absorption = absorption
        self.parameter = parameter
        self.parameter_name = parameter_name
        min_ = self.absorption.param.min()
        max_ = self.absorption.param.max()

        par = Parameter(parameter_name,
                        parameter,
                        min=min_,
                        max=max_,
                        frozen=True)
        alpha_norm = Parameter("alpha_norm", alpha_norm, frozen=True)
        parameters = Parameters([par, alpha_norm])

        super()._init_from_parameters(parameters)
Example #19
0
 def parameters(self):
     """Parameters (`~gammapy.modeling.Parameters`)"""
     return Parameters(
         [getattr(self, name) for name in self.default_parameters.names])
Example #20
0
def pars():
    x = Parameter("x", 2.1)
    y = Parameter("y", 3.1, scale=1e5)
    z = Parameter("z", 4.1, scale=1e-5)
    return Parameters([x, y, z])
Example #21
0
def covariance(covariance_diagonal):
    x = covariance_diagonal.parameters["x"]
    y = covariance_diagonal.parameters["y"]
    parameters = Parameters([x, y])
    data = np.ones((2, 2))
    return Covariance(parameters=parameters, data=data)
Example #22
0
def pars():
    return Parameters([Parameter("spam", 42, "deg"), Parameter("ham", 99, "TeV")])
Example #23
0
 def parameters(self):
     parameters = []
     for skymodel in self.skymodels:
         for p in skymodel.parameters:
             parameters.append(p)
     return Parameters(parameters)
Example #24
0
def test_parameters_autoscale():
    pars = Parameters([Parameter("", 20)])
    pars.autoscale()
    assert_allclose(pars[0].factor, 2)
    assert_allclose(pars[0].scale, 10)
Example #25
0
 def parameters(self):
     return Parameters([self.norm
                        ]) + self.m1.parameters + self.m2.parameters
Example #26
0
 def __init__(self, m1, a=1, y=99):
     self.m1 = m1
     a = Parameter("a", a)
     y = Parameter("y", y)
     self.default_parameters = Parameters([a, y])
     super().__init__(a=a, y=y)
Example #27
0
 def parameters(self):
     return Parameters([self.a, self.y]) + self.m1.parameters
Example #28
0
 def __init_subclass__(cls, **kwargs):
     # Add parameters list on the model sub-class (not instances)
     cls.default_parameters = Parameters(
         [_ for _ in cls.__dict__.values() if isinstance(_, Parameter)])
Example #29
0
 def __init__(self):
     self.parameters = Parameters(
         [Parameter("x", 2),
          Parameter("y", 3e2),
          Parameter("z", 4e-2)])
Example #30
0
 def spectral_model(self, model):
     """`~gammapy.modeling.models.SpectralModel`"""
     self._spectral_model = model
     self._parameters = Parameters(
         self.spatial_model.parameters.parameters +
         self.spectral_model.parameters.parameters)