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
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
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
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