def from_dict(cls, data): kwargs = {} par_data = [] key0 = next(iter(data)) if key0 in ["spatial", "temporal", "spectral"]: data = data[key0] if data["type"] not in cls.tag: raise ValueError( f"Invalid model type {data['type']} for class {cls.__name__}" ) input_names = [_["name"] for _ in data["parameters"]] for par in cls.default_parameters: par_dict = par.to_dict() try: index = input_names.index(par_dict["name"]) par_dict.update(data["parameters"][index]) except ValueError: log.warning( f"Parameter '{par_dict['name']}' not defined in YAML file. Using default value: {par_dict['value']} {par_dict['unit']}" ) par_data.append(par_dict) parameters = Parameters.from_dict(par_data) # TODO: this is a special case for spatial models, maybe better move to `SpatialModel` base class if "frame" in data: kwargs["frame"] = data["frame"] return cls.from_parameters(parameters, **kwargs)
def from_dict(cls, data): kwargs = {} par_data = [] input_names = [_["name"] for _ in data["parameters"]] for par in cls.default_parameters: par_dict = par.to_dict() try: index = input_names.index(par_dict["name"]) par_dict.update(data["parameters"][index]) except ValueError: log.warning( f"Parameter {par_dict['name']} not defined. Using default value: {par_dict['value']} {par_dict['unit']}" ) par_data.append(par_dict) parameters = Parameters.from_dict(par_data) # TODO: this is a special case for spatial models, maybe better move to `SpatialModel` base class if "frame" in data: kwargs["frame"] = data["frame"] return cls.from_parameters(parameters, **kwargs)
def from_dict(cls, data): if "filename" in data: bkg_map = Map.read(data["filename"]) elif "map" in data: bkg_map = data["map"] else: # TODO: for now create a fake map for serialization, # uptdated in MapDataset.from_dict() axis = MapAxis.from_edges(np.logspace(-1, 1, 2), unit=u.TeV, name="energy") geom = WcsGeom.create(skydir=(0, 0), npix=(1, 1), frame="galactic", axes=[axis]) bkg_map = Map.from_geom(geom) parameters = Parameters.from_dict(data["parameters"]) return cls.from_parameters( parameters=parameters, map=bkg_map, name=data["name"], datasets_names=data.get("datasets_names"), filename=data.get("filename"), )
def from_dict(cls, data): init = cls.read(data["filename"], normalize=data.get("normalize", True)) init.parameters = Parameters.from_dict(data) for parameter in init.parameters.parameters: setattr(init, parameter.name, parameter) return init
def from_dict(cls, data): kwargs = {} parameters = Parameters.from_dict(data["parameters"]) # TODO: this is a special case for spatial models, maybe better move to `SpatialModel` base class if "frame" in data: kwargs["frame"] = data["frame"] return cls.from_parameters(parameters, **kwargs)
def from_dict(cls, data): m = Map.read(data["filename"]) if m.unit == "": m.unit = "sr-1" parameters = Parameters.from_dict(data["parameters"]) return cls.from_parameters(parameters=parameters, map=m, filename=data["filename"], normalize=data.get("normalize", True))
def from_dict(cls, data): if "filename" in data: map = Map.read(data["filename"]) elif "map" in data: map = data["map"] else: raise ValueError("Requires either filename or `Map` object") init = cls(map=map, name=data["name"]) init.parameters = Parameters.from_dict(data) for parameter in init.parameters.parameters: setattr(init, parameter.name, parameter) return init
def from_dict(cls, data): m = Map.read(data["filename"]) if not m.unit.is_equivalent("sr-1"): m.unit = "sr-1" log.warning( "Spatial template unit is not equivalent to sr^-1, unit changed to sr^-1" ) parameters = Parameters.from_dict(data["parameters"]) return cls.from_parameters( parameters=parameters, map=m, filename=data["filename"], normalize=data.get("normalize", True), )
def from_dict(cls, data): kwargs = {} par_data = [] for par, par_yaml in zip(cls.default_parameters, data["parameters"]): par_dict = par.to_dict() par_dict.update(par_yaml) par_data.append(par_dict) parameters = Parameters.from_dict(par_data) # TODO: this is a special case for spatial models, maybe better move to `SpatialModel` base class if "frame" in data: kwargs["frame"] = data["frame"] return cls.from_parameters(parameters, **kwargs)
def from_dict(cls, data): parameters = Parameters.from_dict(data["parameters"]) filename = data["filename"] map_ = cls.read(filename).map apply_irf = data.get("apply_irf", cls._apply_irf_default) datasets_names = data.get("datasets_names") name = data.get("name") return cls.from_parameters(parameters=parameters, map=map_, apply_irf=apply_irf, datasets_names=datasets_names, filename=filename, name=name)
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)
def from_dict(cls, data): init = cls.read(data["filename"]) init.parameters = Parameters.from_dict(data) for parameter in init.parameters.parameters: setattr(init, parameter.name, parameter) return init
def from_dict(cls, data): parameters = Parameters.from_dict(data["parameters"]) return cls.from_parameters(parameters)