Пример #1
0
def cutoff_table(pwnlist):

    table = OrderedDefaultDict(list)

    psr_name = "PSR"
    flux_name = r"$F_{0.1-316}$" if not confluence else "F_(0.1-316)"
    eflux_name = r"$G_{0.1-316}$" if not confluence else "G_(0.1-316)"
    index_name = r"$\Gamma$" if not confluence else "Gamma"
    cutoff_name = r"$E_\text{cutoff}$" if not confluence else "E_cutoff"
    ts_point_name = r"$\ts_\text{point}$" if not confluence else "TS_point"
    ts_cutoff_name = r"$\ts_\text{cutoff}$" if not confluence else "TS_cutoff"

    for pwn in pwnlist:
        results = get_results(pwn)
        if results is None:
            continue

        if not results.has_key("point") or not results["point"].has_key("gtlike"):
            continue

        ts = results["point"]["gtlike"]["TS"]

        if ts < 25:
            continue

        table[psr_name].append(format.pwn(pwn))

        cutoff = results["point"]["gtlike"]["test_cutoff"]

        if cutoff != -1:

            ts_point = results["point"]["gtlike"]["TS"]

            table[ts_point_name].append(format.value(ts_point, precision=1))

            ts_cutoff = max(cutoff["TS_cutoff"], 0)
            table[ts_cutoff_name].append(format.value(ts_cutoff, precision=1))

            nodata = "" if confluence else r"\nodata"

            if ts_cutoff >= 16:

                flux = cutoff["flux_1"]["flux"]
                flux_err = cutoff["flux_1"]["flux_err"]

                eflux = cutoff["flux_1"]["eflux"]
                eflux_err = cutoff["flux_1"]["eflux_err"]
                index = -1 * cutoff["model_1"]["Index1"]
                index_err = cutoff["model_1"]["Index1_err"]
                cutoff_energy = cutoff["model_1"]["Cutoff"]
                cutoff_energy_err = cutoff["model_1"]["Cutoff_err"]

                table[flux_name].append(format.error(flux / 1e-9, flux_err / 1e-9))
                table[eflux_name].append(format.error(eflux / 1e-12, eflux_err / 1e-12))
                table[index_name].append(format.error(index, index_err))
                table[cutoff_name].append(format.error(cutoff_energy / 1000, cutoff_energy_err / 1000))
            else:
                table[flux_name].append(format.nodata)
                table[eflux_name].append(format.nodata)
                table[index_name].append(format.nodata)
                table[cutoff_name].append(format.nodata)
        else:
            table[flux_name].append("None")
            table[eflux_name].append("None")
            table[index_name].append("None")
            table[cutoff_name].append("None")
            table[ts_cutoff_name].append("None")

    filebase = "cutoff_test"

    if confluence:
        write_confluence(
            table,
            filebase=filebase,
            units={flux_name: r"(10^-9 erg cm^-2 s^-1)", eflux_name: r"(10^-12 erg cm^-2 s^-1)", cutoff_name: r"(GeV)"},
        )
    else:
        write_latex(
            table,
            filebase=filebase,
            preamble=r"\tabletypesize{\scriptsize}",
            units={
                flux_name: r"($10^{-9}$\ erg\,cm$^{-2}$\,s$^{-1}$)",
                eflux_name: r"($10^{-12}$\ erg\,cm$^{-2}$\,s$^{-1}$)",
                cutoff_name: r"(GeV)",
            },
        )
Пример #2
0
def each_energy_table(pwnlist):

    table = OrderedDefaultDict(list)

    psr_name='PSR'
    TS1_name = r'$\ts_{0.1-1}$' if not confluence else 'TS_(0.1-1)'
    TS2_name = r'$\ts_{1-10}$' if not confluence else 'TS_(1-10)'
    TS3_name = r'$\ts_{10-316}$' if not confluence else 'TS_(10-316)'

    flux1_name = '$F_{0.1-1}$' if not confluence else 'F_(0.1-1)'
    flux2_name = '$F_{1-10}$' if not confluence else 'F_(1-10)'
    flux3_name = '$F_{10-316}$' if not confluence else 'F_(10-316)'

    index1_name = r'$\Gamma_{0.1-1}$' if not confluence else 'Gamma_(0.1-1)'
    index2_name = r'$\Gamma_{1-10}$' if not confluence else 'Gamma_(1-10)'
    index3_name = r'$\Gamma_{10-316}$' if not confluence else 'Gamma_(10-316)'

    for pwn in pwnlist:

        results = get_results(pwn)
        table[psr_name].append(format.pwn(pwn))

        if results is None: 
            table[TS1_name].append('None')
            table[flux1_name].append('None')
            table[index1_name].append('None')

            table[TS2_name].append('None')
            table[flux2_name].append('None')
            table[index2_name].append('None')

            table[TS3_name].append('None')
            table[flux3_name].append('None')
            table[index3_name].append('None')
        else:
            print pwn

            b = BestHypothesis(results)
            gtlike = b.gtlike
            pointlike = b.pointlike
            type = b.type

            ts = gtlike['bands']['TS']
            flux = gtlike['bands']['flux']['value']
            flux_err = gtlike['bands']['flux']['error']
            ul = gtlike['bands']['flux']['upper_limit']
            index = -a(gtlike['bands']['index']['value'])
            index_err = -a(gtlike['bands']['index']['error'])

            ts = [i if i > 0 else 0 for i in ts]

            table[TS1_name].append(format.value(ts[0],precision=1))
            if ts[0] >= 25:
                table[flux1_name].append(format.error(flux[0]/1e-9,flux_err[0]/1e-9))
                table[index1_name].append(format.error(index[0], index_err[0]))
            else:
                table[flux1_name].append(format.ul(ul[0]/1e-9))
                table[index1_name].append(format.nodata)


            table[TS2_name].append(format.value(ts[1],precision=1))
            if ts[1] >= 25:
                table[flux2_name].append(format.error(flux[1]/1e-9,flux_err[1]/1e-9))
                table[index2_name].append(format.error(index[1], index_err[1]))
            else:
                table[flux2_name].append(format.ul(ul[1]/1e-9))
                table[index2_name].append(format.nodata)

            table[TS3_name].append(format.value(ts[2], precision=1))
            if ts[2] >= 25:
                table[flux3_name].append(r'$%.2f \pm %.2f$' % (flux[2]/1e-9,flux_err[2]/1e-9))
                table[index3_name].append(r'$%.2f \pm %.2f$' % (index[2], index_err[2]))
            else:
                table[flux3_name].append(format.ul(ul[2]/1e-9))
                table[index3_name].append(format.nodata)

    filebase='each_energy'
    if confluence:
        write_confluence(table,
                    filebase=filebase,
                    units={
                        flux1_name:r'(10^-9 ph cm^-2 s^-1)',
                        flux2_name:r'(10^-9 ph cm^-2 s^-1)',
                        flux3_name:r'(10^-9 ph cm^-2 s^-1)',
                    })
    else:
        write_latex(table,
                    filebase=filebase,
                    preamble=r'\tabletypesize{\scriptsize}',
                    units={
                        flux1_name:r'($10^{-9}\ \text{ph}\,\text{cm}^{-2}\,\text{s}^{-1}$)',
                        flux2_name:r'($10^{-9}\ \text{ph}\,\text{cm}^{-2}\,\text{s}^{-1}$)',
                        flux3_name:r'($10^{-9}\ \text{ph}\,\text{cm}^{-2}\,\text{s}^{-1}$)',
                    })
Пример #3
0
def all_energy_table(pwnlist):

    table = OrderedDefaultDict(list)

    psr_name='PSR'
    flux_name=r'$F_{0.1-316}$' if not confluence else 'F_(0.1-316)'
    energy_flux_name=r'$G_{0.1-316}$' if not confluence else 'G_(0.1-316)'
    ts_name=r'\ts' if not confluence else 'TS'
    gamma_name=r'$\Gamma$' if not confluence else 'Gamma'

    luminosity_name = r'Luminosity'

    nodata = '' if confluence else r'\nodata'

    for pwn in pwnlist:
        table[psr_name].append(format.pwn(pwn))

        results = get_results(pwn)

        if results is None: 
            table[ts_name].append('None')
            table[flux_name].append('None')
            table[gamma_name].append('None')
            table[luminosity_name].append(r'None')
        else:

            b = BestHypothesis(results)
            gtlike = b.gtlike
            pointlike = b.pointlike
            type = b.type

            ts=max(gtlike['TS'],0)
            table[ts_name].append(format.value(ts, precision=1))

            if type == 'point' or type == 'extended':

                flux=gtlike['flux']['flux']
                flux_err=gtlike['flux']['flux_err']

                eflux=gtlike['flux']['eflux']
                eflux_err=gtlike['flux']['eflux_err']

                table[flux_name].append(format.error(flux/1e-9,flux_err/1e-9))
                table[energy_flux_name].append(format.error(eflux/1e-12,eflux_err/1e-12))

                index=-1*gtlike['model']['Index']
                index_err=-1*gtlike['model']['Index_err']
                table[gamma_name].append(format.error(index,index_err))
                table[luminosity_name].append(r'None')

            else:
                if gtlike['upper_limit'] != None:
                    ul=gtlike['upper_limit']['flux']
                    eul=gtlike['upper_limit']['eflux']
                    table[flux_name].append(format.ul(ul/1e-9))
                    table[energy_flux_name].append(format.ul(eul/1e-12))
                    table[gamma_name].append(nodata)
                    table[luminosity_name].append(r'None')
                else:
                    table[flux_name].append('None')
                    table[energy_flux_name].append('None')
                    table[gamma_name].append(r'None')
                    table[luminosity_name].append(r'None')

    filebase='all_energy'

    if confluence:
        write_confluence(table,
                    filebase=filebase,
                    units={
                        flux_name:r'(10^-9 ph cm^-2 s^-1)',
                        energy_flux_name:r'(10^-12 erg cm^-2 s^-1)',
                        luminosity_name:r'(10^33 erg s^-1)',
                    })
    else:
        write_latex(table,
                    filebase=filebase,
                    units={
                        flux_name:r'($10^{-9}\ \ph\,\cm^{-2}\,\s^{-1}$)',
                        energy_flux_name:r'($10^{-12}\ \erg\,\cm^{-2}\s^{-1}$)',
                        luminosity_name:r'($10^{33}\ \erg\,\s^{-1}$)',
                    })
Пример #4
0
def localization_table(pwnlist):

    table = OrderedDefaultDict(list)

    psr_name='PSR'
    l_name='GLON'
    b_name='GLAT'
    ts_point_name =r'$\ts_\text{point}$' if not confluence else 'TS_point'
    ts_ext_name =r'\tsext' if not confluence else 'TS_ext'
    offset_name = 'Offset'
    ext_name = 'Extension'
    poserr_name = 'Pos Err'

    for pwn in pwnlist:

        results = get_results(pwn)

        print pwn

        if results is None or \
           not results.has_key('point') or \
           not results['point'].has_key('gtlike') or \
           not results['point'].has_key('pointlike') or \
           not results.has_key('extended') or \
           not results['extended'].has_key('gtlike') or \
           not results['extended'].has_key('pointlike'):
            continue
            

        at_pulsar_gtlike = results['at_pulsar']['gtlike']
        at_pulsar_pointlike = results['at_pulsar']['pointlike']
        

        point_gtlike = results['point']['gtlike']
        point_pointlike = results['point']['pointlike']
        
        extended_gtlike = results['extended']['gtlike']
        extended_pointlike = results['extended']['pointlike']

        ts_point = point_gtlike['TS']
        ts_ext = max(extended_gtlike['ts_ext'],0)

        b = BestHypothesis(results)
        gtlike = b.gtlike
        pointlike = b.pointlike
        type = b.type



        if type != 'upper_limit':

            l,b=pointlike['position']['gal']

            try:
                poserr='%.2f' % pointlike['spatial_model']['ellipse']['lsigma']
            except:
                poserr='None'

            o = np.degrees(SkyDir(*pointlike['position']['equ']).difference(SkyDir(*at_pulsar_pointlike['position']['equ'])))

            if type == 'extended':
                extension = extended_pointlike['spatial_model']['Sigma']
                extension_err = extended_pointlike['spatial_model']['Sigma_err']
                ext = format.error(extension, extension_err)

            elif type == 'point':
                extension_ul = point_pointlike['extension_upper_limit']['extension']
                ext = format.ul(extension_ul)

            table[psr_name].append(format.pwn(pwn))

            table[ts_point_name].append('%.1f' % ts_point)
            table[l_name].append('%.2f' % l)
            table[b_name].append('%.2f' % b)
            table[poserr_name].append(poserr)
            table[offset_name].append('%.2f' % o)
            table[ts_ext_name].append('%.1f' % ts_ext)
            table[ext_name].append(ext)
            
    deg = '(deg)'

    filebase='localization'
    if confluence:
        write_confluence(table,
                    filebase=filebase,
                    units={
                        l_name:deg,
                        b_name:deg,
                        offset_name:deg,
                        ext_name:deg,
                        poserr_name:deg,
                    })
    else:
        write_latex(table,
                    filebase=filebase,
                    units={
                        l_name:deg,
                        b_name:deg,
                        offset_name:deg,
                        ext_name:deg,
                        poserr_name:deg,
                    })