def get_background(*args): bg = [] for source in args: if re.search(r'\.fit(s)?(\.gz)?$',source) is not None: bg.append(get_diffuse_source('MapCubeFunction',source,'PowerLaw',None,name=basename(source))) elif re.search(r'\.txt$',source) is not None: bg.append(get_diffuse_source('ConstantValue',None,'FileFunction',source,name=basename(source))) else: raise Exception("Diffuse Sources must end in .fit, .fits, .fit.gz, .fits.gz, or .txt (file is %s)" % basename(source)) return bg[0] if len(args)==1 else bg
def get_background(galdiff=None, isodiff=None, limbdiff=None): """ Diffuse backgrounds galdiff: Galactic diffuse counts cube fits file isodiff: Isotropic diffuse spectral text file limbdiff: Limb diffuse counts map fits file """ backgrounds = [] if galdiff is None: gal = None else: gfile = os.path.basename(galdiff) gal = get_diffuse_source('MapCubeFunction', galdiff, 'PowerLaw', None, os.path.splitext(gfile)[0]) gal.smodel.set_default_limits() gal.smodel.freeze('index') backgrounds.append(gal) if isodiff is None: iso = None else: ifile = os.path.basename(isodiff) iso = get_diffuse_source('ConstantValue', None, 'FileFunction', isodiff, os.path.splitext(ifile)[0]) iso.smodel.set_default_limits() backgrounds.append(iso) if limbdiff is None: limb = None else: lfile = basename(limbdiff) dmodel = SpatialMap(limbdiff) smodel = PLSuperExpCutoff(norm=3.16e-6, index=0, cutoff=20.34, b=1, e0=200) limb = ExtendedSource(name=name, model=smodel, spatial_model=dmodel) for i in range(limb.smodel.npar): limb.smodel.freeze(i) backgrounds.append(limb) backgrounds.append(limb) return backgrounds
def get_background(galdiff=None, isodiff=None, limbdiff=None): """ Diffuse backgrounds galdiff: Galactic diffuse counts cube fits file isodiff: Isotropic diffuse spectral text file limbdiff: Limb diffuse counts map fits file """ backgrounds = [] if galdiff is None: gal=None else: gfile = os.path.basename(galdiff) gal = get_diffuse_source('MapCubeFunction',galdiff, 'PowerLaw',None, os.path.splitext(gfile)[0]) gal.smodel.set_default_limits() gal.smodel.freeze('index') backgrounds.append(gal) if isodiff is None: iso=None else: ifile = os.path.basename(isodiff) iso = get_diffuse_source('ConstantValue',None,'FileFunction' ,isodiff, os.path.splitext(ifile)[0]) iso.smodel.set_default_limits() backgrounds.append(iso) if limbdiff is None: limb=None else: lfile = basename(limbdiff) dmodel = SpatialMap(limbdiff) smodel = PLSuperExpCutoff(norm=3.16e-6,index=0, cutoff=20.34,b=1,e0=200) limb = ExtendedSource(name=name,model=smodel,spatial_model=dmodel) for i in range(limb.smodel.npar): limb.smodel.freeze(i) backgrounds.append(limb) backgrounds.append(limb) return backgrounds
def get_iso(free=True): if version == 1: raise Exception("No isotropic file for v1 of gulli diffuse.") elif version == 2: filename = join(diffdir, "%s_z%s_Ts%s_v%s_%s_isotropic.txt" % (dist, halo, TS, version, event_class)) if verbosity: print " * Loading file %s" % filename if not exists(filename): raise Exception("File %s does not exist." % filename) ds = get_diffuse_source("ConstantValue", None, "FileFunction", filename, name=basename(filename)) ds.smodel.free[:] = free return ds
def get_gal(component, free=True): if version == 1: gfile_base = "%s_z%s_Ts%s_v%s_mapcube_fixed_" % (dist, halo, TS, version) elif version == 2: gfile_base = "%s_z%s_Ts%s_v%s_mapcube_" % (dist, halo, TS, version) filename = join(diffdir, gfile_base + component + ".fits.gz") if verbosity: print " * Loading file %s" % filename if not exists(filename): raise Exception("File %s does not exist." % filename) gmodel = PowerLaw(norm=1, index=0) if fit_index else Constant() ds = get_diffuse_source("MapCubeFunction", filename, gmodel, None, name=component) ds.smodel.free[:] = free return ds
def get_iso(free=True): if version == 1: raise Exception("No isotropic file for v1 of gulli diffuse.") elif version == 2: filename = join( diffdir, '%s_z%s_Ts%s_v%s_%s_isotropic.txt' % (dist, halo, TS, version, event_class)) if verbosity: print ' * Loading file %s' % filename if not exists(filename): raise Exception("File %s does not exist." % filename) ds = get_diffuse_source('ConstantValue', None, 'FileFunction', filename, name=basename(filename)) ds.smodel.free[:] = free return ds
def get_gal(component, free=True): if version == 1: gfile_base = '%s_z%s_Ts%s_v%s_mapcube_fixed_' % (dist, halo, TS, version) elif version == 2: gfile_base = '%s_z%s_Ts%s_v%s_mapcube_' % (dist, halo, TS, version) filename = join(diffdir, gfile_base + component + '.fits.gz') if verbosity: print ' * Loading file %s' % filename if not exists(filename): raise Exception("File %s does not exist." % filename) gmodel = PowerLaw(norm=1, index=0) if fit_index else Constant() ds = get_diffuse_source('MapCubeFunction', filename, gmodel, None, name=component) ds.smodel.free[:] = free return ds
def test_extended_source(self): PointlikeTest.p('USE_GRADIENT=%s' % PointlikeTest.USE_GRADIENT) if PointlikeTest.VERBOSE: PointlikeTest.p( 'Analyze a simulated extended source against an isotropic background (E>10GeV)' ) center = SkyDir(0, 0) # Sreekumar-like isotropic point_sources = [] diffuse_sources = [ get_diffuse_source('ConstantValue', None, 'PowerLaw', None, 'Isotropic Diffuse') ] model = PowerLaw(index=2) model.set_flux(1e-4) if PointlikeTest.VERBOSE: PointlikeTest.p('Simulating gaussian source with sigma=1 degrees') spatial_model = Gaussian(p=[1], center=center) es_mc = ExtendedSource(name='source', spatial_model=spatial_model, model=model) es_fit = es_mc.copy() diffuse_sources.append(es_fit) roi = PointlikeTest.get_roi('extended_test', center, point_sources, diffuse_sources, emin=1e4) global roi_ext roi_ext = roi # helps with debugging if PointlikeTest.VERBOSE: print roi if PointlikeTest.VERBOSE: PointlikeTest.p('Setting initial spatial model to 0.3 degrees') roi.modify(which='source', spatial_model=Gaussian(0.3)) if PointlikeTest.VERBOSE: print roi roi.fit(use_gradient=PointlikeTest.USE_GRADIENT) if PointlikeTest.VERBOSE: print roi roi.fit_extension(which='source', use_gradient=PointlikeTest.USE_GRADIENT) roi.localize(update=True) roi.fit(use_gradient=PointlikeTest.USE_GRADIENT) self.compare_model(es_fit, es_mc) self.compare_spatial_model(es_fit, es_mc, roi.lsigma) self.assertTrue( roi.TS(which='source') > 25, 'The source should be significant') self.assertTrue( roi.TS_ext(which='source') > 25, 'And significantly extended') es_mc.spatial_model.save_template('$SIMDIR/extended_template.fits') if PointlikeTest.VERBOSE: PointlikeTest.p( 'Now, switching from Disk soruce to template source.') roi.del_source(which='source') template_source = ExtendedSource( name='template_source', model=es_mc.model, spatial_model=SpatialMap(file='$SIMDIR/extended_template.fits')) roi.add_source(template_source) roi.fit(use_gradient=PointlikeTest.USE_GRADIENT) self.compare_model(template_source, es_mc) self.assertTrue( roi.TS(which='template_source') > 25, 'Make sure these functions work similary with spatial_map')