def __init__(self, parent): from gammapy.datasets import Dataset, Datasets if isinstance(parent, Dataset): self._datasets = [parent] self._is_dataset = True elif isinstance(parent, Datasets): self._datasets = parent._datasets self._is_dataset = False else: raise TypeError(f"Invalid type: {type(parent)!r}") unique_models = [] for d in self._datasets: if d._models is not None: for model in d._models: if model not in unique_models: if (model.datasets_names is None or d.name in model.datasets_names): unique_models.append(model) else: d._models = Models([]) self._models = unique_models if self._is_dataset == False: self.force_models_consistency() self._covar_file = None self._covariance = Covariance(self.parameters)
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
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)
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
def __init__(self, **kwargs): # Copy default parameters from the class to the instance default_parameters = self.default_parameters.copy() for par in default_parameters: value = kwargs.get(par.name, par) if not isinstance(value, Parameter): par.quantity = u.Quantity(value) else: par = value setattr(self, par.name, par) self._covariance = Covariance(self.parameters)
def __init__(self, models=None): if models is None: models = [] if isinstance(models, (Models, DatasetModels)): models = models._models elif isinstance(models, Model): models = [models] elif not isinstance(models, list): raise TypeError(f"Invalid type: {models!r}") unique_names = [] for model in models: if model.name in unique_names: raise (ValueError("Model names must be unique")) unique_names.append(model.name) self._models = models self._covar_file = None self._covariance = Covariance(self.parameters)
def _check_covariance(self): if not self.parameters == self._covariance.parameters: self._covariance = Covariance(self.parameters)
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)