예제 #1
0
def gtlike_source_dict(like, name, emin=None, emax=None, 
                       flux_units='erg', energy_units='MeV', 
                       errors=True, minos_errors=False, covariance_matrix=True,
                       save_TS=True, add_diffuse_dict=True,
                       verbosity=True):

    if emin is None and emax is None:
        emin, emax = get_full_energy_range(like)

    d=dict(
        logLikelihood=like.logLike.value(),
    )

    d['energy'] = energy_dict(emin=emin, emax=emax, energy_units=energy_units)
    
    d['spectrum']= name_to_spectral_dict(like, name, errors=errors, 
                                         minos_errors=minos_errors, covariance_matrix=covariance_matrix)

    if save_TS:
        d['TS']=gtlike_ts_dict(like, name, verbosity=verbosity)

    d['flux']=gtlike_flux_dict(like,name,
                               emin=emin, emax=emax,
                               flux_units=flux_units, energy_units=energy_units, errors=errors)


#    if add_diffuse_dict:
#        d['diffuse'] = diffuse_dict(like)

    return tolist(d)
예제 #2
0
def diffuse_dict(like):
    """ Save out all diffuse sources. """

    f = dict()
    bgs = get_background(like)
    for name in bgs:
        f[name] = name_to_spectral_dict(like, name, errors=True)
    return tolist(f)
예제 #3
0
def diffuse_dict(like):
    """ Save out all diffuse sources. """

    f = dict()
    bgs = get_background(like)
    for name in bgs:
        f[name] = name_to_spectral_dict(like, name, errors=True)
    return tolist(f)
예제 #4
0
def gtlike_source_dict(like,
                       name,
                       emin=None,
                       emax=None,
                       flux_units='erg',
                       energy_units='MeV',
                       errors=True,
                       minos_errors=False,
                       covariance_matrix=True,
                       save_TS=True,
                       add_diffuse_dict=True,
                       verbosity=True):

    if emin is None and emax is None:
        emin, emax = get_full_energy_range(like)

    d = dict(logLikelihood=like.logLike.value(), )

    d['energy'] = energy_dict(emin=emin, emax=emax, energy_units=energy_units)

    d['spectrum'] = name_to_spectral_dict(like,
                                          name,
                                          errors=errors,
                                          minos_errors=minos_errors,
                                          covariance_matrix=covariance_matrix)

    if save_TS:
        d['TS'] = gtlike_ts_dict(like, name, verbosity=verbosity)

    d['flux'] = gtlike_flux_dict(like,
                                 name,
                                 emin=emin,
                                 emax=emax,
                                 flux_units=flux_units,
                                 energy_units=energy_units,
                                 errors=errors)

    #    if add_diffuse_dict:
    #        d['diffuse'] = diffuse_dict(like)

    return tolist(d)
예제 #5
0
            print 'ERROR calculating flux error: ', ex
            traceback.print_exc(file=sys.stdout)
            f['flux_err'] = -1
            f['eflux_err'] = -1

    if include_prefactor:
        assert prefactor_energy is not None
        source = get_gtlike_source(like, name)
        #        source = like.logLike.getSource(name)
        spectrum = source.spectrum()
        cp = lambda e: units.convert(e, '1/MeV', '1/%s' % flux_units)
        f['prefactor'] = cp(
            SpectrumPlotter.get_dnde_mev(spectrum, prefactor_energy))
        f['prefactor_units'] = 'ph/cm^2/s/%s' % flux_units
        f['prefactor_energy'] = ce(prefactor_energy)
    return tolist(f)


def energy_dict(emin, emax, energy_units='MeV'):
    ce = lambda e: units.convert(e, 'MeV', energy_units)
    return dict(emin=ce(emin),
                emax=ce(emax),
                emiddle=ce(np.sqrt(emin * emax)),
                energy_units=energy_units)


def gtlike_ts_dict(like, name, verbosity=True):
    return dict(reoptimize=like.Ts(name, reoptimize=True, verbosity=verbosity),
                noreoptimize=like.Ts(name,
                                     reoptimize=False,
                                     verbosity=verbosity))
예제 #6
0
        except Exception, ex:
            print 'ERROR calculating flux error: ', ex
            traceback.print_exc(file=sys.stdout)
            f['flux_err']=-1
            f['eflux_err']=-1

    if include_prefactor:
        assert prefactor_energy is not None
        source = get_gtlike_source(like,name)
#        source = like.logLike.getSource(name)
        spectrum = source.spectrum()
        cp = lambda e: units.convert(e,'1/MeV','1/%s' % flux_units)
        f['prefactor'] = cp(SpectrumPlotter.get_dnde_mev(spectrum,prefactor_energy))
        f['prefactor_units'] = 'ph/cm^2/s/%s' % flux_units
        f['prefactor_energy'] = ce(prefactor_energy)
    return tolist(f)

def energy_dict(emin, emax, energy_units='MeV'):
    ce=lambda e: units.convert(e,'MeV',energy_units)
    return dict(emin=ce(emin),
                emax=ce(emax),
                emiddle=ce(np.sqrt(emin*emax)),
                energy_units=energy_units)

def gtlike_ts_dict(like, name, verbosity=True):
    return dict(
        reoptimize=like.Ts(name,reoptimize=True, verbosity=verbosity),
        noreoptimize=like.Ts(name,reoptimize=False, verbosity=verbosity)
        )

def gtlike_spectrum_to_dict(spectrum, errors=False):