Verify synchrotron templatesΒΆ
[ ]:
import os
os.environ[
"OMP_NUM_THREADS"
] = "200" # for jupyter.nersc.gov otherwise the notebook only uses 2 cores
[ ]:
import pysm3
import healpy as hp
import numpy as np
import matplotlib.pyplot as plt
[ ]:
cd /global/cfs/cdirs/cmb/www/pysm-data
[ ]:
cd synch/
[ ]:
ls
[ ]:
name = "template"
#name = "curvature"
#name = "beta"
[ ]:
pol = (0,1,2) if name == "template" else (0,)
[ ]:
template_date = "_2023.02.25" if name in ["template"] else ""
[ ]:
nsides = [2048, 4096, 8192]
[ ]:
m = {}
for nside in nsides:
m[nside] = hp.read_map(f"synch_{name}_nside{nside}{template_date}.fits", pol)
[ ]:
cl = {}
for nside in nsides:
cl[nside] = hp.anafast(m[nside], lmax=int(min(2.5*nside,2*8192)))
if cl[nside].ndim == 1:
cl[nside] = cl[nside].reshape((1, -1))
print(nside, cl[nside].shape)
[ ]:
from pathlib import Path
[ ]:
datadir = Path("raw")
[ ]:
if name == "template":
largescale_filename = datadir / "synch_largescale_template_logpoltens_alm_lmax128_2023.02.24.fits.gz"
elif name == "curvature":
largescale_filename = datadir / "synch_curvature_alm_nside8192_lmax16384.fits"
else:
largescale_filename = datadir / f"synch_largescale_{name}_alm_nside512_lmax768.fits.gz"
[ ]:
alm_large_scale = hp.read_alm(
largescale_filename,
hdu=1,
)
[ ]:
if name == "template":
smallscale_filename = datadir / "synch_small_scales_cl_lmax16384_2023.02.24.fits.gz"
else:
smallscale_filename = datadir / f"synch_small_scales_{name}_cl_lmax16384.fits.gz"
[ ]:
if name != "curvature":
cl_small_scale = hp.read_cl(
smallscale_filename
)
cl_small_scale = cl_small_scale.reshape((len(pol) if name != "template" else 4, -1))
[ ]:
pol_label = "TEB"
[ ]:
for p in pol:
plt.figure(figsize=(12,6))
for nside in reversed(nsides):
plt.loglog(cl[nside][p], label=f"map at Nside={nside}")
if name != "template":
plt.loglog(hp.alm2cl(alm_large_scale.astype(complex).reshape((len(pol), -1)))[p], "--", alpha=.5, label="large scale")
if name != "curvature":
plt.loglog(cl_small_scale[p], "--", label="small scales")
plt.title(f"{name} maps spectra comparison {pol_label[p]}")
plt.axvline([3150], linestyle="--", color="black", label="ell = 3150", alpha=.5)
plt.legend()
plt.grid();
[ ]:
modulation_alm = hp.read_alm(datadir / "synch_amplitude_modulation_alms_lmax768.fits.gz")
[ ]:
modulation_map = hp.alm2map(modulation_alm.astype(complex), nside=2048)
[ ]:
hp.mollview(modulation_map, title=f"Modulation map, mean: {modulation_map.mean():.2f}", unit="dimensionless")
[ ]: