예제 #1
0
def plot_dnds():
    kwargs_spectrum={ 'band_mask_range': [-1,1],'mask_ring': True, 'outer': 10}

    if just_disk:
        p3FGL = fa.plot_3FGL(f,only_gal=False,CTB_en_min=b_disk.CTB_en_min,CTB_en_max=b_disk.CTB_en_max,**kwargs_spectrum)
        p3FGL.configure_3FGL(flux_min=flux_min,flux_max=flux_max,n_flux_bins = n_flux_bins,error_range = error_range)

        pdnds_disk_only = fa.plot_dnds(b_disk,**kwargs_spectrum) #again, same kwargs
        plt.figure(figsize=(8,6))
        #plot medians
        pdnds_disk_only.plot_source_count_median('disk',smin=0.01,smax=1000,nsteps=1000,calculate_dnds=True,edep=True,ebin=0,color='orange',label='disk')

        #plot band
        pdnds_disk_only.plot_source_count_band('disk',smin=0.01,smax=1000,nsteps=1000,calculate_dnds=True,edep=True,ebin=0,qs=[0.16,0.5,0.84],color='orange',label='disk',alpha=0.5)

        #also show 3FGL
        p3FGL.plot_3FGL(fmt = 'o', color='black',markersize=7,label='3FGL')
        plt.legend(fontsize=16) 
        plt.yscale('log')
        plt.xscale('log')
        plt.xlim([5e-11,5e-9])
        plt.ylim([1e6,1e11])
        plt.tick_params(axis='x', length=5,width=2,labelsize=18)
        plt.tick_params(axis='y',length=5,width=2,labelsize=18)
        plt.xlabel('$F$  [photons / cm$^2$ / s]', fontsize=18)
        plt.ylabel('$dN/dF$  [photons$^{-1}$ cm$^2$ s deg$^{-2}$]', fontsize=18)
        plt.savefig(b_disk.plots_dir_for_run + 'dnds.pdf',bbox_inches='tight')
        plt.close()

    if plus_IPS:
        p3FGL = fa.plot_3FGL(f,only_gal=False,CTB_en_min=b_plus_IPS.CTB_en_min,CTB_en_max=b_plus_IPS.CTB_en_max,**kwargs_spectrum)
        p3FGL.configure_3FGL(flux_min=flux_min,flux_max=flux_max,n_flux_bins = n_flux_bins,error_range = error_range)

        pdnds_plus_iso = fa.plot_dnds(b_plus_IPS,**kwargs_spectrum) #again, same kwargs

        ########fist plot with disk, NFW, iso
        plt.figure(figsize=(8,6))
        #plot medians
        pdnds_plus_iso.plot_source_count_median('nfw',smin=0.01,smax=1000,nsteps=1000,calculate_dnds=True,edep=True,ebin=0,color='blue',label='nfw')
        pdnds_plus_iso.plot_source_count_median('disk',smin=0.01,smax=1000,nsteps=1000,calculate_dnds=True,edep=True,ebin=0,color='orange',label='disk')

        #plot band
        pdnds_plus_iso.plot_source_count_band('nfw',smin=0.01,smax=1000,nsteps=1000,calculate_dnds=True,edep=True,ebin=0,qs=[0.16,0.5,0.84],color='blue',label='nfw',alpha=0.5)
        pdnds_plus_iso.plot_source_count_band('disk',smin=0.01,smax=1000,nsteps=1000,calculate_dnds=True,edep=True,ebin=0,qs=[0.16,0.5,0.84],color='orange',label='disk',alpha=0.5)

        #also show 3FGL
        p3FGL.plot_3FGL(fmt = 'o', color='black',markersize=7,label='3FGL')
        plt.legend(fontsize=16) 
        plt.yscale('log')
        plt.xscale('log')
        plt.xlim([5e-11,5e-9])
        plt.ylim([1e6,1e11])
        plt.tick_params(axis='x', length=5,width=2,labelsize=18)
        plt.tick_params(axis='y',length=5,width=2,labelsize=18)
        plt.xlabel('$F$  [photons / cm$^2$ / s]', fontsize=18)
        plt.ylabel('$dN/dF$  [photons$^{-1}$ cm$^2$ s deg$^{-2}$]', fontsize=18)
        plt.savefig(b_plus_IPS.plots_dir_for_run + 'dnds.pdf',bbox_inches='tight')
        plt.close()
예제 #2
0
def do_analysis(minuit_new=False):
    global emin,emax
    if method=='polychord':
        polychord=True
    else:
        polychord=False
    b.run_tag = run_tag_energy
    tri = fa.make_triangle(b,run_tag_energy,edep=True,polychord=polychord,minuit_new=minuit_new)
    tri.make_triangle()

    sle = fa.save_log_evidence(b,edep=True,polychord=polychord)


    spect_dir = work_dir + 'data/spect/'
    if not os.path.exists(spect_dir):
        os.mkdir(spect_dir)
    if save_norm_label != 'False' and save_norm_label != 'false':
        cs = fa.compute_spectra(b,run_tag_energy,f.CTB_en_bins[0],f.CTB_en_bins[-1],edep=True,plane_mask=plot_plane_mask,band_mask_range = [-plot_pmval,plot_pmval],lcut=plot_lcut,lmin=plot_lmin,lmax=plot_lmax,bcut=plot_bcut,bmin=plot_bmin,bmax=plot_bmax,mask_ring=plot_mask_ring,outer=plot_outer,inner=plot_inner,minuit_new = minuit_new,input_mask=force_ps_mask,the_input_mask=b.mask_total) # spectra over the whole energy range
        cs.mask_total_dict['bubs']=np.logical_not(b.templates_dict_nested['bubs']['summed_templates_not_compressed'])
        cs.make_spectra_dict()
        cs.make_norm_dict()
        cs.save_spectra_dict(spect_dir + save_spect_label,emin,emax,over_write= False)
        cs.save_norm_dict(spect_dir + save_norm_label,emin,emax,over_write= False)
    else:
        cs = fa.compute_edep_spectra(b,run_tag_energy,b.CTB_en_bins,polychord=polychord,plane_mask=plot_plane_mask,band_mask_range = [-plot_pmval,plot_pmval],lcut=plot_lcut,lmin=plot_lmin,lmax=plot_lmax,bcut=plot_bcut,bmin=plot_bmin,bmax=plot_bmax,mask_ring=plot_mask_ring,outer=plot_outer,inner=plot_inner,minuit_new = minuit_new,input_mask=force_ps_mask,the_input_mask=b.mask_total) #,edep=True)
        cs.make_spectra_dict()
        cs.save_spectra_dict(spect_dir + save_spect_label)

    if n_ebins>1:
        ##plot spectrum
        msp_inst = msp.make_spectra_plot(spect_dir + save_spect_label + '.npy')
        if not fixed_background:
            msp_inst.plot_spectra_median('back',color='Orange',label='back',linestyle='-')
        if nfw_dm:
            msp_inst.plot_spectra_median('nfw',color='Chartreuse',label='nfw',linestyle='-')
        if not fixed_background:
            msp_inst.plot_spectra_band('back',interpolate=True, alpha=0.5,linewidth=0,facecolor='Orange')
        if nfw_dm:
            msp_inst.plot_spectra_band('nfw',interpolate=True, alpha=0.5,linewidth=0,facecolor='Chartreuse')
        if not poiss:
            colors=['Blue','Green','Purple'][0:len(ps_list)]
            for mod,color in map(None,ps_list,colors):
                msp_inst.plot_spectra_median(mod + '-np',color=color,label=mod+'-np',linestyle='--')
                msp_inst.plot_spectra_band(mod + '-np',interpolate=True, alpha=0.5,linewidth=0,facecolor=color)

        plt.axhline(y=0.,color='k',ls='dashed')
        plt.xscale('log')
        plt.xlabel('E [GeV]', fontsize=14)
        plt.ylabel('$E^2 dN / dE$  [GeV / cm$^2$ / s / sr]', fontsize=18)
        plt.title('Spectrum',fontsize=14)
        plt.legend(fontsize=12,loc=3)
        plt.savefig(b.plots_dir_for_run + save_spect_label + '.pdf',bbox_inches='tight')
        plt.close()
    if not poiss:
        print 'medians: ', b.medians_not_log
        print 'norm_non_poiss: ', b.norms_non_poiss
        ##save PS templates/medians
        if len(ps_save_list)>0:
            for comp, filename in map(None,ps_save_list,ps_save_filename_list):
                spti=fa.save_ps_template_info(b,run_tag_energy,edep=True,polychord=polychord,minuit_new = minuit_new)
                spti.save_ps_template(comp,filename)
        ##plot dn/ds across energies
        for ebin_num in range(b.number_energy_bins):
            p3FGL = fa.plot_3FGL(f,CTB_en_min=b.CTB_en_bins[ebin_num],CTB_en_max=b.CTB_en_bins[ebin_num+1],plane_mask=plot_plane_mask,band_mask_range = [-plot_pmval,plot_pmval],lcut=plot_lcut,lmin=plot_lmin,lmax=plot_lmax,bcut=plot_bcut,bmin=plot_bmin,bmax=plot_bmax,mask_ring=plot_mask_ring,outer=plot_outer,inner=plot_inner,input_mask=force_ps_mask,the_input_mask=b.mask_total)
            p3FGL.configure_3FGL(flux_min=10**-12,flux_max=10**-8,n_flux_bins = 25,only_gal = not(high_lat),error_range = 0.68) 
            pdnds = fa.plot_dnds(b,plane_mask=plot_plane_mask,band_mask_range = [-plot_pmval,plot_pmval],lcut=plot_lcut,lmin=plot_lmin,lmax=plot_lmax,bcut=plot_bcut,bmin=plot_bmin,bmax=plot_bmax,mask_ring=plot_mask_ring,outer=plot_outer,inner=plot_inner,input_mask=force_ps_mask,the_input_mask=b.mask_total)
            plt.figure(figsize=(8,6))
            p3FGL.plot_3FGL(fmt = 'o', color='black',markersize=7,label='3FGL PS')
            colors=['Orange','Chartreuse','Blue'][0:len(ps_list)]
            line_colors=['Red','Green','Purple'][0:len(ps_list)]
            alpha_list=[1,0.75,0.5][0:len(ps_list)]
            for mod,color,line_color,alpha in map(None,ps_list,colors,line_colors,alpha_list):
                print 'plotting source-count function for ', mod
                pdnds.plot_source_count_band(mod,edep=True,ebin=ebin_num,nsteps=100,calculate_dnds=True,facecolor=color,interpolate=True, alpha=alpha,linewidth=0)
                pdnds.plot_source_count_median(mod,edep=True,ebin=ebin_num,color=line_color,linestyle='--',label=mod + ' (median)')
            if len(ps_fixed_filename_list) > 0:
                for comp in map(None,ps_fixed_list):
                    pdnds.plot_fixed_source_count(comp,ebin=ebin_num,linestyle='-',label=comp + ' (fixed)')
            plt.xscale('log')
            plt.yscale('log')
            plt.ylim((2*10**(5),10**12))
            plt.xlim(10**-12., 10**-8.)
            plt.tick_params(axis='x', length=5,width=2,labelsize=18)
            plt.tick_params(axis='y',length=5,width=2,labelsize=18)
            plt.xlabel('$F$  [photons / cm$^2$ / s]', fontsize=18)
            plt.ylabel('$dN/dF$  [photons$^{-1}$ cm$^2$ s deg$^{-2}$]', fontsize=18)
            plt.legend(fontsize=15)
            plt.title('Energy: '+str(np.round(b.CTB_en_bins[ebin_num],3)) + '-'+str(np.round(b.CTB_en_bins[ebin_num+1],3)),fontsize=15)
            plt.savefig(b.plots_dir_for_run + 'dnds_plot_en_'+str(np.round(b.CTB_en_bins[ebin_num],3)) + '-'+str(np.round(b.CTB_en_bins[ebin_num+1],3)) + '.pdf',bbox_inches='tight')
            plt.close()
예제 #3
0
def plot_dnds():
    kwargs_spectrum = {"band_mask_range": [-1, 1], "mask_ring": True, "outer": 10}

    if just_disk:
        p3FGL = fa.plot_3FGL(
            f, only_gal=False, CTB_en_min=b_disk.CTB_en_min, CTB_en_max=b_disk.CTB_en_max, **kwargs_spectrum
        )
        p3FGL.configure_3FGL(flux_min=flux_min, flux_max=flux_max, n_flux_bins=n_flux_bins, error_range=error_range)

        pdnds_disk_only = fa.plot_dnds(b_disk, **kwargs_spectrum)  # again, same kwargs
        plt.figure(figsize=(8, 6))
        # plot medians
        pdnds_disk_only.plot_source_count_median(
            "disk",
            smin=0.01,
            smax=1000,
            nsteps=1000,
            calculate_dnds=True,
            edep=True,
            ebin=0,
            color="orange",
            label="disk",
        )
        pdnds_disk_only.plot_source_count_median(
            "iso", smin=0.01, smax=1000, nsteps=1000, calculate_dnds=True, edep=True, ebin=0, color="green", label="iso"
        )

        # plot band
        pdnds_disk_only.plot_source_count_band(
            "disk",
            smin=0.01,
            smax=1000,
            nsteps=1000,
            calculate_dnds=True,
            edep=True,
            ebin=0,
            qs=[0.16, 0.5, 0.84],
            color="orange",
            label="disk",
            alpha=0.5,
        )
        pdnds_disk_only.plot_source_count_band(
            "iso",
            smin=0.01,
            smax=1000,
            nsteps=1000,
            calculate_dnds=True,
            edep=True,
            ebin=0,
            qs=[0.16, 0.5, 0.84],
            color="green",
            label="iso",
            alpha=0.5,
        )

        # also show 3FGL
        p3FGL.plot_3FGL(fmt="o", color="black", markersize=7, label="3FGL")
        plt.legend(fontsize=16)
        plt.yscale("log")
        plt.xscale("log")
        plt.xlim([5e-11, 5e-9])
        plt.ylim([1e6, 1e11])
        plt.tick_params(axis="x", length=5, width=2, labelsize=18)
        plt.tick_params(axis="y", length=5, width=2, labelsize=18)
        plt.xlabel("$F$  [photons / cm$^2$ / s]", fontsize=18)
        plt.ylabel("$dN/dF$  [photons$^{-1}$ cm$^2$ s deg$^{-2}$]", fontsize=18)
        plt.savefig(b_disk.plots_dir_for_run + "dnds.pdf", bbox_inches="tight")
        plt.close()

    if plus_IPS:
        p3FGL = fa.plot_3FGL(
            f, only_gal=False, CTB_en_min=b_plus_IPS.CTB_en_min, CTB_en_max=b_plus_IPS.CTB_en_max, **kwargs_spectrum
        )
        p3FGL.configure_3FGL(flux_min=flux_min, flux_max=flux_max, n_flux_bins=n_flux_bins, error_range=error_range)

        pdnds_plus_iso = fa.plot_dnds(b_plus_IPS, **kwargs_spectrum)  # again, same kwargs

        ########fist plot with disk, NFW, iso
        plt.figure(figsize=(8, 6))
        # plot medians
        pdnds_plus_iso.plot_source_count_median(
            "nfw", smin=0.01, smax=1000, nsteps=1000, calculate_dnds=True, edep=True, ebin=0, color="blue", label="nfw"
        )
        pdnds_plus_iso.plot_source_count_median(
            "disk",
            smin=0.01,
            smax=1000,
            nsteps=1000,
            calculate_dnds=True,
            edep=True,
            ebin=0,
            color="orange",
            label="disk",
        )
        pdnds_plus_iso.plot_source_count_median(
            "iso", smin=0.01, smax=1000, nsteps=1000, calculate_dnds=True, edep=True, ebin=0, color="green", label="iso"
        )

        # plot band
        pdnds_plus_iso.plot_source_count_band(
            "nfw",
            smin=0.01,
            smax=1000,
            nsteps=1000,
            calculate_dnds=True,
            edep=True,
            ebin=0,
            qs=[0.16, 0.5, 0.84],
            color="blue",
            label="nfw",
            alpha=0.5,
        )
        pdnds_plus_iso.plot_source_count_band(
            "disk",
            smin=0.01,
            smax=1000,
            nsteps=1000,
            calculate_dnds=True,
            edep=True,
            ebin=0,
            qs=[0.16, 0.5, 0.84],
            color="orange",
            label="disk",
            alpha=0.5,
        )
        pdnds_plus_iso.plot_source_count_band(
            "iso",
            smin=0.01,
            smax=1000,
            nsteps=1000,
            calculate_dnds=True,
            edep=True,
            ebin=0,
            qs=[0.16, 0.5, 0.84],
            color="green",
            label="iso",
            alpha=0.5,
        )

        # also show 3FGL
        p3FGL.plot_3FGL(fmt="o", color="black", markersize=7, label="3FGL")
        plt.legend(fontsize=16)
        plt.yscale("log")
        plt.xscale("log")
        plt.xlim([5e-11, 5e-9])
        plt.ylim([1e6, 1e11])
        plt.tick_params(axis="x", length=5, width=2, labelsize=18)
        plt.tick_params(axis="y", length=5, width=2, labelsize=18)
        plt.xlabel("$F$  [photons / cm$^2$ / s]", fontsize=18)
        plt.ylabel("$dN/dF$  [photons$^{-1}$ cm$^2$ s deg$^{-2}$]", fontsize=18)
        plt.savefig(b_plus_IPS.plots_dir_for_run + "dnds.pdf", bbox_inches="tight")
        plt.close()
예제 #4
0
        pflux.plot_flux_fraction_poiss('nfw',color_vert = 'Red',drawstyle='steps-mid',label = 'NFW DM',color='Red')
        plt.legend(fontsize=18)
        plt.xlabel('fraction of flux [%]', fontsize=18)
        plt.ylabel('posterior probability', fontsize=18)
        plt.tick_params(axis='x', length=5,width=2,labelsize=18)
        plt.tick_params(axis='y', length=5,width=2,labelsize=18)
        plt.ylabel('posterior probability', fontsize=18)
        plt.ylim(0, 0.25)
        plt.xlim(0, 20.3)
        plt.savefig(b.plots_dir_for_run + 'flux_fraction_plot.pdf')
        plt.close()
    else:
        ###plot dn/ds
        p3FGL = fa.plot_3FGL(f,band_mask_range = [-mask_b_plot,mask_b_plot], mask_ring = True, outer = outer_plot)
        p3FGL.configure_3FGL(flux_min=10**-12,flux_max=10**-9,n_flux_bins = 25,only_gal = True,error_range = 0.68) #flux_min=10**-11,flux_max=10**-8,
        pdnds = fa.plot_dnds(b,band_mask_range = [-mask_b_plot,mask_b_plot], mask_ring = True, outer = outer_plot)

        plt.figure(figsize=(8,6))
        p3FGL.plot_3FGL(fmt = 'o', color='black',markersize=7,label='3FGL PS')
        pdnds.plot_source_count_band('nfw',nsteps=10000,calculate_dnds=True,facecolor='Orange',interpolate=True, alpha=1,linewidth=0)
        pdnds.plot_source_count_median('nfw',color='Red',linestyle='--',label='3FGL masked (median)')
        pdnds.plot_source_count_mean('nfw',color='Red',label='3FGL masked (mean)')
        plt.xscale('log')
        plt.yscale('log')
        plt.ylim((2*10**(7),10**12))
        plt.xlim(10**-12., 10**-9.)
        plt.tick_params(axis='x', length=5,width=2,labelsize=18)
        plt.tick_params(axis='y',length=5,width=2,labelsize=18)
        plt.xlabel('$F$  [photons / cm$^2$ / s]', fontsize=18)
        plt.ylabel('$dN/dF$  [photons$^{-1}$ cm$^2$ s deg$^{-2}$]', fontsize=18)
        plt.legend(fontsize=15)
        # plt.ylim([10**-7,10**-5])
        # #plt.ylim([10**-9,10**-4])
        # plt.xlim(xlim)
        plt.title('Spectrum',fontsize=14)
        #: $|b| \geq 1$ within $10^\circ$ of GC, with 300 brightest PS\'s masked',fontsize=14)
        plt.legend(fontsize=12,loc=3)
        plt.savefig(b.plots_dir_for_run + save_spect_label + '.pdf',bbox_inches='tight')
        plt.close()

    if not poiss:
        ###plot dn/ds across energies
        for ebin_num in range(b.number_energy_bins):
            p3FGL = fa.plot_3FGL(f,CTB_en_min=b.CTB_en_bins[ebin_num],CTB_en_max=b.CTB_en_bins[ebin_num+1],band_mask_range = [-mask_b_plot,mask_b_plot], mask_ring = False)
            p3FGL.configure_3FGL(flux_min=10**-12,flux_max=10**-8,n_flux_bins = 25,only_gal = False,error_range = 0.68) #flux_min=10**-11,flux_max=10**-8,
            #pdnds = fa.plot_dnds(b,band_mask_range = [-mask_b_plot,mask_b_plot], mask_ring = True, outer = outer_plot)
            pdnds = fa.plot_dnds(b,band_mask_range = [-mask_b_plot,mask_b_plot], mask_ring = False)
            plt.figure(figsize=(8,6))
            p3FGL.plot_3FGL(fmt = 'o', color='black',markersize=7,label='3FGL PS')
            pdnds.plot_source_count_band('iso',edep=True,ebin=ebin_num,nsteps=1000,calculate_dnds=True,facecolor='Orange',interpolate=True, alpha=1,linewidth=0)
            pdnds.plot_source_count_median('iso',edep=True,ebin=ebin_num,color='Red',linestyle='--',label='3FGL masked (median)')
            pdnds.plot_source_count_mean('iso',edep=True,ebin=ebin_num,color='Red',label='3FGL masked (mean)')
            plt.xscale('log')
            plt.yscale('log')
            plt.ylim((2*10**(5),10**12))
            plt.xlim(10**-12., 10**-8.)
            plt.tick_params(axis='x', length=5,width=2,labelsize=18)
            plt.tick_params(axis='y',length=5,width=2,labelsize=18)
            plt.xlabel('$F$  [photons / cm$^2$ / s]', fontsize=18)
            plt.ylabel('$dN/dF$  [photons$^{-1}$ cm$^2$ s deg$^{-2}$]', fontsize=18)
            plt.legend(fontsize=15)
            plt.title('Energy: '+str(np.round(b.CTB_en_bins[ebin_num],3)) + '-'+str(np.round(b.CTB_en_bins[ebin_num+1],3)),fontsize=15)