Пример #1
0
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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
    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')