def from_table(cls, table, sed_type=None, format="gadf-sed", reference_model=None, gti=None): """Create flux points from a table. The table column names must be consistent with the sed_type Parameters ---------- table : `~astropy.table.Table` Table sed_type : {"dnde", "flux", "eflux", "e2dnde", "likelihood"} Sed type format : {"gadf-sed", "lightcurve", "profile"} Table format. reference_model : `SpectralModel` Reference spectral model gti : `GTI` Good time intervals meta : dict Meta data. Returns ------- flux_points : `FluxPoints` Flux points """ table = table_standardise_units_copy(table) if sed_type is None: sed_type = table.meta.get("SED_TYPE", None) if sed_type is None: sed_type = cls._guess_sed_type(table.colnames) if sed_type is None: raise ValueError("Specifying the sed type is required") if sed_type == "likelihood": table = cls._convert_loglike_columns(table) if reference_model is None: reference_model = TemplateSpectralModel( energy=flat_if_equal(table["e_ref"].quantity), values=flat_if_equal(table["ref_dnde"].quantity), ) maps = Maps() table.meta.setdefault("SED_TYPE", sed_type) for name in cls.all_quantities(sed_type=sed_type): if name in table.colnames: maps[name] = RegionNDMap.from_table(table=table, colname=name, format=format) meta = cls._get_meta_gadf(table) return cls.from_maps( maps=maps, reference_model=reference_model, meta=meta, sed_type=sed_type, gti=gti, )
def from_table(cls, table, sed_type=None, reference_model=None): """Create flux points from table Parameters ---------- table : `~astropy.table.Table` Table sed_type : {"dnde", "flux", "eflux", "e2dnde", "likelihood"} Sed type reference_model : `SpectralModel` Reference spectral model Returns ------- flux_points : `FluxPoints` Flux points """ table = table_standardise_units_copy(table) if sed_type is None: sed_type = table.meta.get("SED_TYPE", None) if sed_type is None: sed_type = cls._guess_sed_type(table) if sed_type is None: raise ValueError("Specifying the sed type is required") cls._validate_data(data=table, sed_type=sed_type) if sed_type in ["dnde", "eflux", "e2dnde", "flux"]: if reference_model is None: log.warning( "No reference model set for FluxPoints. Assuming point source with E^-2 spectrum." ) reference_model = PowerLawSpectralModel() table = cls._convert_flux_columns(table=table, reference_model=reference_model, sed_type=sed_type) elif sed_type == "likelihood": table = cls._convert_loglike_columns(table) if reference_model is None: reference_model = TemplateSpectralModel( energy=table["e_ref"].quantity, values=table["ref_dnde"].quantity) else: raise ValueError(f"Not a valid SED type {sed_type}") maps = {} # We add the remaining maps for key in VALID_QUANTITIES: if key in table.colnames: maps[key] = RegionNDMap.from_table(table=table, colname=key, format="gadf-sed") meta = cls._get_meta_gadf(table) return cls(data=maps, reference_spectral_model=reference_model, meta=meta)