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