예제 #1
0
    def get_point_sources(names, catalog):
        """ Input is a list of the name of 1FGL sources. What is
            return is a list of point source found from the names. """
        cat=FermiCatalog(catalog,free_radius=180) \
                if not isinstance(catalog,SourceCatalog) else catalog

        point_sources = []

        for name in names:

            index = np.where(cat.names == name)[0]
            if len(index) < 1:
                raise Exception("Cannot find source %s in the catalog %s" %
                                (name, catalog))
            if len(index) > 1:
                raise Exception(
                    "%s has too many counterpats in the catalog %s" %
                    (name, catalog))
            index = int(index)

            point_sources.append(
                PointSource(cat.dirs[index],
                            cat.names[index],
                            cat.models[index],
                            free_parameters=True))

        if len(names) == 1:
            return point_sources[0]

        return point_sources
예제 #2
0
 def background_fit(self):
     """Perform a fit over the full time range."""
     kw = self.factory_kwargs.copy()
     kw['tstart'], kw['tstop'] = self.bg_interval
     f = ROIFactory(**kw)
     mapper = lambda x: FermiCatalog(x, **self.catalog_kwargs)
     roi = f(self.skydir, catalog_mapper=mapper, **self.roi_kwargs)
     roi.fit(**self.fit_kwargs)
     return roi
예제 #3
0
 def fit(self, start, stop, return_likelihood=False):
     """Perform a fit over the specified interval."""
     fact_kw = self.factory_kwargs.copy()
     fact_kw['tstart'], fact_kw['tstop'] = start, stop
     fit_kwargs = self.fit_kwargs.copy()
     fit_kwargs['fit_bg_first'] = False
     f = ROIFactory(**fact_kw)
     mapper = lambda x: FermiCatalog(x, **self.catalog_kwargs)
     roi = f(self.skydir, catalog_mapper=mapper, **self.roi_kwargs)
     #roi.set_parameters(self.bg_roi.parameters().copy())
     ll_0 = roi.logLikelihood(self.bg_roi.parameters().copy())
     for m in roi.bgm.models:
         m.free[:] = False
     for m in roi.psm.models:
         m.free[:] = False
     for ps in roi.psm.point_sources[self.free_mask]:
         ps.model.free[0] = True
     roi.psm.models[0].free[1] = self.index_free
     roi.fit(**fit_kwargs)
     if return_likelihood:
         return roi, ll_0, roi.logLikelihood(roi.parameters())
     else:
         return roi
예제 #4
0
    def get_catalog(catalog=None, **kwargs):
        if catalog is None or isinstance(catalog, SourceCatalog):
            pass
        elif catalog == 'PSC3Y':
            catalog = Catalog3Y(
                '/u/ki/kadrlica/fermi/catalogs/PSC3Y/gll_psc3yearclean_v1_assoc_v6r1p0.fit',
                latextdir='/u/ki/kadrlica/fermi/catalogs/PSC3Y/',
                prune_radius=0,
                **kwargs)
        elif catalog == '2FGL':
            catalog = Catalog2FGL(
                '/u/ki/kadrlica/fermi/catalogs/2FGL/gll_psc_v08.fit',
                latextdir='/u/ki/kadrlica/fermi/catalogs/2FGL/Templates/',
                prune_radius=0,
                **kwargs)
        elif catalog == "1FGL":
            catalog = FermiCatalog(
                '/u/ki/kadrlica/fermi/catalogs/gll_psc_v02.fit',
                prune_radius=0,
                **kwargs)
        else:
            raise Exception("Unknown catalog: %s" % catalog)

        return catalog