Beispiel #1
0
    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,
        )
Beispiel #2
0
    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)