def distanceAreaIntegrand(dist, cosb, Gsamples, rmcenter, onlygreen): # Calculate the density densmap = densprofiles.healpixelate(dist, densprofiles.expdisk, [1. / 3., 1. / 0.3], nside=_NSIDE, nest=False) # Load the dust map if onlygreen: combinedmap = dust.load_green15(dist, nest=False, nside_out=_NSIDE) combinedmap[combinedmap == healpy.UNSEEN] = 0. else: combinedmap = dust.load_combined(dist, nest=False, nside_out=_NSIDE) # Sample over the distribution of MG combinedmask = numpy.zeros_like(combinedmap) G0 = 0.68 + dust.dist2distmod(dist) if dust.dist2distmod(dist) == 9.5 or dust.dist2distmod(dist) == 10.5: print numpy.sum(numpy.isnan(combinedmap)) for jj in range(_NGSAMPLES): combinedmask+= ((combinedmap > (_GMIN-G0-Gsamples[jj]+0.68))\ *(combinedmap < (_GMAX-G0-Gsamples[jj]+0.68))).astype('float') combinedmask /= _NGSAMPLES if dust.dist2distmod(dist) == 9.5 or dust.dist2distmod(dist) == 10.5: print numpy.sum(combinedmask) print dust.dist2distmod(dist), numpy.sum(cosb * densmap * combinedmask) # If rmcenter, rm the center of the MW if rmcenter: theta, phi = healpy.pixelfunc.pix2ang( _NSIDE, numpy.arange(healpy.pixelfunc.nside2npix(_NSIDE)), nest=False) combinedmask[((phi < 25.*_DEGTORAD)+(phi > (360.-25.)*_DEGTORAD))\ *(numpy.fabs(numpy.pi/2.-theta) < 25.*_DEGTORAD)]= 0. # Compute cross correlation return (cosb * densmap * combinedmask)
def distanceAreaIntegrand(dist,cosb,Gsamples,rmcenter,onlygreen): # Calculate the density densmap= densprofiles.healpixelate(dist,densprofiles.expdisk, [1./3.,1./0.3],nside=_NSIDE, nest=False) # Load the dust map if onlygreen: combinedmap= dust.load_green15(dist,nest=False,nside_out=_NSIDE) combinedmap[combinedmap == healpy.UNSEEN]= 0. else: combinedmap= dust.load_combined(dist,nest=False,nside_out=_NSIDE) # Sample over the distribution of MG combinedmask= numpy.zeros_like(combinedmap) G0= 0.68+dust.dist2distmod(dist) if dust.dist2distmod(dist) == 9.5 or dust.dist2distmod(dist) == 10.5: print numpy.sum(numpy.isnan(combinedmap)) for jj in range(_NGSAMPLES): combinedmask+= ((combinedmap > (_GMIN-G0-Gsamples[jj]+0.68))\ *(combinedmap < (_GMAX-G0-Gsamples[jj]+0.68))).astype('float') combinedmask/= _NGSAMPLES if dust.dist2distmod(dist) == 9.5 or dust.dist2distmod(dist) == 10.5: print numpy.sum(combinedmask) print dust.dist2distmod(dist), numpy.sum(cosb*densmap*combinedmask) # If rmcenter, rm the center of the MW if rmcenter: theta, phi= healpy.pixelfunc.pix2ang(_NSIDE, numpy.arange(healpy.pixelfunc.nside2npix(_NSIDE)), nest=False) combinedmask[((phi < 25.*_DEGTORAD)+(phi > (360.-25.)*_DEGTORAD))\ *(numpy.fabs(numpy.pi/2.-theta) < 25.*_DEGTORAD)]= 0. # Compute cross correlation return (cosb*densmap*combinedmask)
def plot_powspec(dist,basename,plotname): # Density G0= 0.68+dust.dist2distmod(dist) densname= basename+'_D%.1f_denscl.sav' % dist if not os.path.exists(densname): densmap= densprofiles.healpixelate(dist,densprofiles.expdisk, [1./3.,1./0.3],nside=_NSIDE, nest=False) denscl= healpy.sphtfunc.anafast(densmap,pol=False) densmap2= densprofiles.healpixelate(dist,densprofiles.expdisk, [1./2.,1./0.9],nside=_NSIDE, nest=False) denscl2= healpy.sphtfunc.anafast(densmap2,pol=False) ell= numpy.arange(len(denscl)) save_pickles(densname,ell,denscl,densmap,denscl2,densmap2) else: with open(densname,'rb') as savefile: ell= pickle.load(savefile) denscl= pickle.load(savefile) densmap= pickle.load(savefile) denscl2= pickle.load(savefile) densmap2= pickle.load(savefile) # dust map Cl and cross-power with dens combinedname= basename+'_D%.1f_combinedcl.sav' % dist bestfitloaded= False if os.path.exists(combinedname): with open(combinedname,'rb') as savefile: ell= pickle.load(savefile) combinedcl= pickle.load(savefile) combinedcr= pickle.load(savefile) combinedmcl= pickle.load(savefile) combinedmcr= pickle.load(savefile) combinedmcr2= pickle.load(savefile) bestfitloaded= True if not bestfitloaded: # do the best-fit combinedmap= dust.load_combined(dist,nest=False,nside_out=_NSIDE) print numpy.sum(numpy.isnan(combinedmap)) combinedmap[numpy.isnan(combinedmap)]= 0. # Sample over the distribution of MG combinedmask= numpy.zeros_like(combinedmap) iso= gaia_rc.load_iso() Gsamples= gaia_rc.sample_Gdist(iso,n=_NGSAMPLES) print "Computing effective selection function" for jj in range(_NGSAMPLES): combinedmask+= ((combinedmap > (_GMIN-G0-Gsamples[jj]+0.68))\ *(combinedmap < (_GMAX-G0-Gsamples[jj]+0.68))).astype('float') combinedmask/= _NGSAMPLES print "Computing Cl of extinction map" combinedcl= healpy.sphtfunc.anafast(combinedmap,pol=False) print "Computing cross of extinction map w/ densmap" combinedcr= healpy.sphtfunc.anafast(combinedmap,map2=densmap,pol=False) print "Computing Cl of effective selection function" combinedmcl= healpy.sphtfunc.anafast(combinedmask,pol=False) print "Computing cross of effective selection function w/ densmap" combinedmcr= healpy.sphtfunc.anafast(combinedmask,map2=densmap,pol=False) print "Computing cross of effective selection function w/ densmap2" combinedmcr2= healpy.sphtfunc.anafast(combinedmask,map2=densmap2,pol=False) # Save save_pickles(combinedname,ell,combinedcl,combinedcr, combinedmcl,combinedmcr,combinedmcr2) gc.collect() # Plot (2l+1)Cl!! # Can smooth the masked power spectrum, perhaps underplot the non-smoothed in gray # sp= interpolate.UnivariateSpline(numpy.log(ell)[1:],numpy.log(combinedmcl)[1:],k=3,s=300.) # sp= interpolate.UnivariateSpline(numpy.log(ell)[1:],numpy.log(numpy.fabs(combinedmcr))[1:],k=3,s=10000.) # First plot the power-spectrum, then the cross-correlation, then the # cumulative sum bovy_plot.bovy_print(fig_height=3.) yrange=[10.**-12.,20.], line1= bovy_plot.bovy_plot(ell[1:], (2.*ell[1:]+1.)*combinedcl[1:], 'k-',loglog=True, ylabel=r'$(2\ell+1)\,C_\ell$', xrange=[0.5,20000], yrange=yrange, zorder=3) line2= bovy_plot.bovy_plot(ell[2::2], (2.*ell[2::2]+1.)*denscl[2::2], 'b-',overplot=True) line3= bovy_plot.bovy_plot(ell[1:], (2.*ell[1:]+1.)*combinedmcl[1:], 'r-',overplot=True) # Add legend if dist == 5.: pyplot.legend((line2[0],line1[0],line3[0]), (r'$\mathrm{exp.\ disk\ w/}$'+'\n'+r'$h_R = 3\,\mathrm{kpc},$'+'\n'+r'$h_Z = 0.3\,\mathrm{kpc}$', r'$\mathrm{extinction\ map}$', r'$\mathrm{effective\ selection\ function}$'), loc='lower left',bbox_to_anchor=(.02,.02), numpoints=8, prop={'size':14}, frameon=False) bovy_plot.bovy_text(r'$\mathrm{power\ spectrum}$',top_right=True,size=16.) nullfmt = NullFormatter() # no labels pyplot.gca().xaxis.set_major_formatter(nullfmt) bovy_plot.bovy_end_print(plotname) # Cross-correlation bovy_plot.bovy_print(fig_height=3.) line1= bovy_plot.bovy_plot(ell[1:], (2.*ell[1:]+1.)*numpy.fabs(combinedcr[1:]), 'k-',loglog=True, ylabel=r'$(2\ell+1)\,C^{\mathrm{cross}}_\ell$', xrange=[0.5,20000], yrange=yrange, zorder=1) line2= bovy_plot.bovy_plot(ell[1:], (2.*ell[1:]+1.)*numpy.fabs(combinedmcr[1:]), 'r-',overplot=True,zorder=2) # Add legend if dist == 5.: pyplot.legend((line1[0],line2[0]), (r'$\mathrm{extinction\ map}$', r'$\mathrm{effective\ selection}$'+'\n'+r'$\mathrm{function}$'), loc='lower left',bbox_to_anchor=(.02,.02), numpoints=8, prop={'size':14}, frameon=False) bovy_plot.bovy_text(r'$\mathrm{cross\ power\ spectrum\ w/\ density}$',top_right=True,size=16.) #sp= interpolate.UnivariateSpline(numpy.log(ell)[1:], # numpy.log(numpy.fabs(combinedmcr))[1:], # k=3,s=100000.) #bovy_plot.bovy_plot(ell[1:], # 10.*(2.*ell[1:]+1.)*numpy.exp(sp(numpy.log(ell[1:]))), # 'r-',overplot=True,zorder=2) pyplot.gca().xaxis.set_major_formatter(nullfmt) bovy_plot.bovy_end_print(plotname.replace('powspec','crosspowspec')) effvol= numpy.sum((2.*ell+1.)*combinedmcr) #effvol2= numpy.sum((2.*ell+1.)*combinedmcr2) matplotlib.rcParams['text.latex.preamble']=[r"\usepackage{yfonts}"] line1= bovy_plot.bovy_plot(ell[1:], numpy.fabs(numpy.log(effvol) -numpy.log(numpy.cumsum((2.*ell+1.)*combinedmcr)))[1:], 'k-',loglog=True, xlabel=r'$\ell$', ylabel=r'$\left|\Delta\ln\sum_{\ell}\sum_{m}\nu_{*,\ell m}\,\textswab{S}_{\ell m}\right|$', xrange=[0.5,20000], yrange=[2.*10.**-13.,20.], zorder=3) """ line2= bovy_plot.bovy_plot(ell[1:], numpy.fabs(numpy.log(effvol) -numpy.log(numpy.cumsum((2.*ell+1.)*combinedmcr)) -numpy.log(effvol2) +numpy.log(numpy.cumsum((2.*ell+1.)*combinedmcr2)))[1:], 'k--',loglog=True, overplot=True,zorder=2) # Add legend pyplot.legend((line1[0],line2[0]), (r'$\mathrm{exp.\ disk\ top\ panel}$', r'$\mathrm{relative\ wrt\ exp.\ disk\ w/}$'+'\n'+ r'$h_R = 2\,\mathrm{kpc}, h_Z = 0.9\,\mathrm{kpc}$'), loc='lower right',#bbox_to_anchor=(.91,.375), numpoints=8, prop={'size':14}, frameon=False) """ if dist == 5.: bovy_plot.bovy_text(r'$\mathrm{error\ in}\ \ln\ \mathrm{effective\ area}$',top_right=True,size=16.) bovy_plot.bovy_end_print(plotname.replace('powspec','cumulcrosspowspec')) return None
def plot_powspec(dist, basename, plotname): # Density G0 = 0.68 + dust.dist2distmod(dist) densname = basename + '_D%.1f_denscl.sav' % dist if not os.path.exists(densname): densmap = densprofiles.healpixelate(dist, densprofiles.expdisk, [1. / 3., 1. / 0.3], nside=_NSIDE, nest=False) denscl = healpy.sphtfunc.anafast(densmap, pol=False) densmap2 = densprofiles.healpixelate(dist, densprofiles.expdisk, [1. / 2., 1. / 0.9], nside=_NSIDE, nest=False) denscl2 = healpy.sphtfunc.anafast(densmap2, pol=False) ell = numpy.arange(len(denscl)) save_pickles(densname, ell, denscl, densmap, denscl2, densmap2) else: with open(densname, 'rb') as savefile: ell = pickle.load(savefile) denscl = pickle.load(savefile) densmap = pickle.load(savefile) denscl2 = pickle.load(savefile) densmap2 = pickle.load(savefile) # dust map Cl and cross-power with dens combinedname = basename + '_D%.1f_combinedcl.sav' % dist bestfitloaded = False if os.path.exists(combinedname): with open(combinedname, 'rb') as savefile: ell = pickle.load(savefile) combinedcl = pickle.load(savefile) combinedcr = pickle.load(savefile) combinedmcl = pickle.load(savefile) combinedmcr = pickle.load(savefile) combinedmcr2 = pickle.load(savefile) bestfitloaded = True if not bestfitloaded: # do the best-fit combinedmap = dust.load_combined(dist, nest=False, nside_out=_NSIDE) print numpy.sum(numpy.isnan(combinedmap)) combinedmap[numpy.isnan(combinedmap)] = 0. # Sample over the distribution of MG combinedmask = numpy.zeros_like(combinedmap) iso = gaia_rc.load_iso() Gsamples = gaia_rc.sample_Gdist(iso, n=_NGSAMPLES) print "Computing effective selection function" for jj in range(_NGSAMPLES): combinedmask+= ((combinedmap > (_GMIN-G0-Gsamples[jj]+0.68))\ *(combinedmap < (_GMAX-G0-Gsamples[jj]+0.68))).astype('float') combinedmask /= _NGSAMPLES print "Computing Cl of extinction map" combinedcl = healpy.sphtfunc.anafast(combinedmap, pol=False) print "Computing cross of extinction map w/ densmap" combinedcr = healpy.sphtfunc.anafast(combinedmap, map2=densmap, pol=False) print "Computing Cl of effective selection function" combinedmcl = healpy.sphtfunc.anafast(combinedmask, pol=False) print "Computing cross of effective selection function w/ densmap" combinedmcr = healpy.sphtfunc.anafast(combinedmask, map2=densmap, pol=False) print "Computing cross of effective selection function w/ densmap2" combinedmcr2 = healpy.sphtfunc.anafast(combinedmask, map2=densmap2, pol=False) # Save save_pickles(combinedname, ell, combinedcl, combinedcr, combinedmcl, combinedmcr, combinedmcr2) gc.collect() # Plot (2l+1)Cl!! # Can smooth the masked power spectrum, perhaps underplot the non-smoothed in gray # sp= interpolate.UnivariateSpline(numpy.log(ell)[1:],numpy.log(combinedmcl)[1:],k=3,s=300.) # sp= interpolate.UnivariateSpline(numpy.log(ell)[1:],numpy.log(numpy.fabs(combinedmcr))[1:],k=3,s=10000.) # First plot the power-spectrum, then the cross-correlation, then the # cumulative sum bovy_plot.bovy_print(fig_height=3.) yrange = [10.**-12., 20.], line1 = bovy_plot.bovy_plot(ell[1:], (2. * ell[1:] + 1.) * combinedcl[1:], 'k-', loglog=True, ylabel=r'$(2\ell+1)\,C_\ell$', xrange=[0.5, 20000], yrange=yrange, zorder=3) line2 = bovy_plot.bovy_plot(ell[2::2], (2. * ell[2::2] + 1.) * denscl[2::2], 'b-', overplot=True) line3 = bovy_plot.bovy_plot(ell[1:], (2. * ell[1:] + 1.) * combinedmcl[1:], 'r-', overplot=True) # Add legend if dist == 5.: pyplot.legend( (line2[0], line1[0], line3[0]), (r'$\mathrm{exp.\ disk\ w/}$' + '\n' + r'$h_R = 3\,\mathrm{kpc},$' + '\n' + r'$h_Z = 0.3\,\mathrm{kpc}$', r'$\mathrm{extinction\ map}$', r'$\mathrm{effective\ selection\ function}$'), loc='lower left', bbox_to_anchor=(.02, .02), numpoints=8, prop={'size': 14}, frameon=False) bovy_plot.bovy_text(r'$\mathrm{power\ spectrum}$', top_right=True, size=16.) nullfmt = NullFormatter() # no labels pyplot.gca().xaxis.set_major_formatter(nullfmt) bovy_plot.bovy_end_print(plotname) # Cross-correlation bovy_plot.bovy_print(fig_height=3.) line1 = bovy_plot.bovy_plot(ell[1:], (2. * ell[1:] + 1.) * numpy.fabs(combinedcr[1:]), 'k-', loglog=True, ylabel=r'$(2\ell+1)\,C^{\mathrm{cross}}_\ell$', xrange=[0.5, 20000], yrange=yrange, zorder=1) line2 = bovy_plot.bovy_plot(ell[1:], (2. * ell[1:] + 1.) * numpy.fabs(combinedmcr[1:]), 'r-', overplot=True, zorder=2) # Add legend if dist == 5.: pyplot.legend((line1[0], line2[0]), (r'$\mathrm{extinction\ map}$', r'$\mathrm{effective\ selection}$' + '\n' + r'$\mathrm{function}$'), loc='lower left', bbox_to_anchor=(.02, .02), numpoints=8, prop={'size': 14}, frameon=False) bovy_plot.bovy_text(r'$\mathrm{cross\ power\ spectrum\ w/\ density}$', top_right=True, size=16.) #sp= interpolate.UnivariateSpline(numpy.log(ell)[1:], # numpy.log(numpy.fabs(combinedmcr))[1:], # k=3,s=100000.) #bovy_plot.bovy_plot(ell[1:], # 10.*(2.*ell[1:]+1.)*numpy.exp(sp(numpy.log(ell[1:]))), # 'r-',overplot=True,zorder=2) pyplot.gca().xaxis.set_major_formatter(nullfmt) bovy_plot.bovy_end_print(plotname.replace('powspec', 'crosspowspec')) effvol = numpy.sum((2. * ell + 1.) * combinedmcr) #effvol2= numpy.sum((2.*ell+1.)*combinedmcr2) matplotlib.rcParams['text.latex.preamble'] = [r"\usepackage{yfonts}"] line1 = bovy_plot.bovy_plot( ell[1:], numpy.fabs( numpy.log(effvol) - numpy.log(numpy.cumsum((2. * ell + 1.) * combinedmcr)))[1:], 'k-', loglog=True, xlabel=r'$\ell$', ylabel= r'$\left|\Delta\ln\sum_{\ell}\sum_{m}\nu_{*,\ell m}\,\textswab{S}_{\ell m}\right|$', xrange=[0.5, 20000], yrange=[2. * 10.**-13., 20.], zorder=3) """ line2= bovy_plot.bovy_plot(ell[1:], numpy.fabs(numpy.log(effvol) -numpy.log(numpy.cumsum((2.*ell+1.)*combinedmcr)) -numpy.log(effvol2) +numpy.log(numpy.cumsum((2.*ell+1.)*combinedmcr2)))[1:], 'k--',loglog=True, overplot=True,zorder=2) # Add legend pyplot.legend((line1[0],line2[0]), (r'$\mathrm{exp.\ disk\ top\ panel}$', r'$\mathrm{relative\ wrt\ exp.\ disk\ w/}$'+'\n'+ r'$h_R = 2\,\mathrm{kpc}, h_Z = 0.9\,\mathrm{kpc}$'), loc='lower right',#bbox_to_anchor=(.91,.375), numpoints=8, prop={'size':14}, frameon=False) """ if dist == 5.: bovy_plot.bovy_text( r'$\mathrm{error\ in}\ \ln\ \mathrm{effective\ area}$', top_right=True, size=16.) bovy_plot.bovy_end_print(plotname.replace('powspec', 'cumulcrosspowspec')) return None