def test_stack(self, flux_points): stacked = FluxPoints.stack([flux_points, flux_points]) assert len(stacked.table) == 2 * len(flux_points.table) assert stacked.sed_type == flux_points.sed_type
# In the Fermi-LAT catalogs, integral flux points are given. Currently the flux point fitter only works with differential flux points, so we apply the conversion here. # In[ ]: flux_points_3fgl = source_fermi_3fgl.flux_points.to_sed_type( sed_type="dnde", model=source_fermi_3fgl.spectral_model()) flux_points_3fhl = source_fermi_3fhl.flux_points.to_sed_type( sed_type="dnde", model=source_fermi_3fhl.spectral_model()) # Finally we stack the flux points into a single `~gammapy.spectrum.FluxPoints` object and drop the upper limit values, because currently we can't handle them in the fit: # In[ ]: # Stack flux point tables flux_points = FluxPoints.stack( [flux_points_gammacat, flux_points_3fhl, flux_points_3fgl]) t = flux_points.table t["dnde_err"] = 0.5 * (t["dnde_errn"] + t["dnde_errp"]) # Remove upper limit points, where `dnde_errn = nan` is_ul = np.isfinite(t["dnde_err"]) flux_points = FluxPoints(t[is_ul]) flux_points # ## Power Law Fit # # First we start with fitting a simple `~gammapy.modeling.models.PowerLawSpectralModel`. # In[ ]: