Beispiel #1
0
def main(args):
    SetPlotStyle()

    # Params 'n' stuff
    fits_planck_mask = '../Data/mask_convergence_planck_2015_512.fits'
    fits_planck_map = '../Data/convergence_planck_2015_512.fits'
    twoMPZ_mask = 'fits/2MPZ_mask_tot_256.fits'  # N_side = 256
    twoMPZ_cat = 'fits/results16_23_12_14_73.fits'

    nside = args.nside
    do_plots = False
    delta_ell = args.delta_ell
    lmin = args.lmin
    lmax = args.lmax
    K_S_min = args.K_S_min
    K_S_max = args.K_S_max

    # Load Cat and Mask
    print("...loading 2MPZ catalogue...")
    twompz = Load2MPZ(twoMPZ_cat, K_S_min=K_S_min, K_S_max=K_S_max)
    print("...done...")

    # Load Planck CMB lensing map 'n' mask
    print("...loading Planck map/mask...")
    planck_map, planck_mask = LoadPlanck(fits_planck_map,
                                         fits_planck_mask,
                                         nside,
                                         do_plots=0,
                                         filt_plank_lmin=0)
    print("...done...")

    print("...reading 2MPZ mask...")
    mask = hp.read_map(twoMPZ_mask, verbose=False)
    nside_mask = hp.npix2nside(mask.size)
    if nside_mask != nside:
        mask = hp.ud_grade(mask, nside)
    print("...done...")

    # Common Planck & WISExSCOS mask
    mask *= planck_mask

    # Counts 'n' delta map
    cat_tmp = twompz[(twompz.ZSPEC >= args.zmin) & (twompz.ZSPEC < args.zmax)]
    counts = hpy.GetCountsMap(cat_tmp.RA,
                              cat_tmp.DEC,
                              nside,
                              coord='G',
                              rad=True)
    delta = hpy.Counts2Delta(counts, mask=mask)

    est = cs.Master(mask,
                    lmin=lmin,
                    lmax=lmax,
                    delta_ell=delta_ell,
                    MASTER=1,
                    pixwin=True)

    print('...extracting kg spectra...')
    kg, err_kg = est.get_spectra(planck_map, map2=delta, analytic_errors=True)
    print("\t=> Detection at rougly %3.2f sigma ") % (np.sum(
        (kg[0:] / err_kg[0:])**2)**.5)

    # Initializing Cosmo class
    cosmo = Cosmo()
    cosmo_nl = Cosmo(nonlinear=True)

    nz, z, _ = hist(twompz.ZSPEC[twompz.ZSPEC > 0.],
                    'knuth',
                    normed=1,
                    histtype='step')
    z = 0.5 * (z[1:] + z[:-1])
    plt.close()

    fig = plt.figure()  #figsize=(10, 8))

    ax = fig.add_subplot(1, 1, 1)
    plt.title(r'$%.2f < z < %.2f$' % (args.zmin, args.zmax))

    clkg = GetCrossSpectrum(cosmo,
                            z,
                            nz, [args.zmin, args.zmax],
                            b=1,
                            alpha=1.,
                            lmax=500,
                            sigma_zph=0.)
    clkg_nl = GetCrossSpectrum(cosmo_nl,
                               z,
                               nz, [args.zmin, args.zmax],
                               b=1,
                               alpha=1.,
                               lmax=500,
                               sigma_zph=0.)

    # z, n_z = GetdNdzNorm(nz=1000)
    # clkg = GetCrossSpectrum(cosmo, z, n_z, [bins_edges[zbin][0],0.3], b=1.24, alpha=1., lmax=1000)
    # # clkg = GetCrossSpectrum(cosmo, z, n_z, [bins_edges[zbin][0],bins_edges[zbin][1]], b=1, alpha=1.24, lmax=1000)
    # clkg_nl = GetCrossSpectrum(cosmo_nl, z, n_z, [bins_edges[zbin][0],0.5], b=1.24, alpha=1., lmax=1000)
    # # clkg_nl = GetCrossSpectrum(cosmo_nl, z, n_z, [bins_edges[zbin][0],bins_edges[zbin][1]], b=1.24, alpha=1., lmax=1000)
    # # clgg_pherrz = GetAutoSpectrum(cosmo, z, dndz, [bins_edges[zbin][0],bins_edges[zbin][1]], b=1.24, alpha=1., lmax=1000, sigma_zph=0.03)

    lab = r'2MPZ  $%.1f < K_S < %.1f$' % (K_S_min, K_S_max)
    ax.plot(clkg, color='grey', label=r'$b=1$')
    ax.plot(clkg_nl, color='darkgrey', ls='--', label=r'NL $b=1$')
    ax.errorbar(est.lb, kg, yerr=err_kg, fmt='o', capsize=0, ms=5, label=lab)
    ax.set_ylabel(r'$C_{\ell}^{\kappa g}$')
    ax.set_xlabel(r'Multipole $\ell$')
    ax.legend(loc='best')
    ax.axhline(ls='--', color='grey')
    ax.ticklabel_format(style='sci', axis='y', scilimits=(0, 0))
    ax.set_xlim([2., 200])
    ax.set_yscale('log')
    ax.set_ylim([1e-8, 1e-5])

    plt.tight_layout()
    plt.savefig('plots/2MPZ_Planck_clkg_dl' + str(args.delta_ell) + '_lmin_' +
                str(args.lmin) + '_lmax' + str(args.lmax) + '_KS_min_' +
                str(args.K_S_min) + '_KS_max_' + str(args.K_S_max) + '_nside' +
                str(args.nside) + '_zmin_' + str(args.zmin) + '_zmax' +
                str(args.zmax) + '_split_spec.pdf',
                bbox_inches='tight')
    # plt.show()
    # plt.close()

    # embed()

    np.savetxt(
        'spectra/2MPZ_Planck2015_clkg_dl' + str(args.delta_ell) + '_lmin_' +
        str(args.lmin) + '_lmax' + str(args.lmax) + '_KS_min_' +
        str(args.K_S_min) + '_KS_max_' + str(args.K_S_max) + '_nside' +
        str(args.nside) + '_zmin_' + str(args.zmin) + '_zmax' +
        str(args.zmax) + '_split_spec.dat', np.c_[est.lb, kg, err_kg])
Beispiel #2
0
def main(args):
    SetPlotStyle()

    # Params 'n' stuff
    fits_planck_mask = '../Data/mask_convergence_planck_2015_512.fits'
    fits_planck_map = '../Data/convergence_planck_2015_512.fits'
    twoMPZ_mask = 'fits/2MPZ_mask_tot_256.fits'  # N_side = 256
    twoMPZ_cat = 'fits/results16_23_12_14_73.fits'
    nside = args.nside
    do_plots = False
    delta_ell = args.delta_ell
    lmin = args.lmin
    lmax = args.lmax
    K_S_min = args.K_S_min
    K_S_max = args.K_S_max
    # lbmin    = 2
    # lbmax    = 10

    # Load Cat and Mask
    print("...loading 2MPZ catalogue...")
    twompz = Load2MPZ(twoMPZ_cat, K_S_min=K_S_min, K_S_max=K_S_max)
    print("...done...")

    # Load Planck CMB lensing map 'n' mask
    print("...loading Planck map/mask...")
    planck_map, planck_mask = LoadPlanck(fits_planck_map,
                                         fits_planck_mask,
                                         nside,
                                         do_plots=0,
                                         filt_plank_lmin=0)
    print("...done...")

    print("...reading 2MPZ mask...")
    mask = hp.read_map(twoMPZ_mask, verbose=False)
    nside_mask = hp.npix2nside(mask.size)
    if nside_mask != nside:
        mask = hp.ud_grade(mask, nside)
    print("...done...")

    # Common Planck & WISExSCOS mask
    mask *= planck_mask

    # embed()

    # Counts n overdesnity map
    cat_tmp = twompz[(twompz.ZPHOTO >= args.zmin)
                     & (twompz.ZPHOTO < args.zmax)]
    a, b = train_test_split(cat_tmp, test_size=0.5)

    counts_a = hpy.GetCountsMap(a.RA, a.DEC, nside, coord='G', rad=True)
    counts_b = hpy.GetCountsMap(b.RA, b.DEC, nside, coord='G', rad=True)
    # hp.write_map('fits/counts_'+zbin+'_sum.fits', counts_sum[zbin])
    # hp.write_map('fits/counts_'+zbin+'_diff.fits', counts_diff[zbin])
    print("\tNumber of sources in bin [%.2f,%.2f) is %d" %
          (args.zmin, args.zmax, np.sum((counts_a + counts_b) * mask)))

    print("...converting to overdensity maps...")

    delta_a = hpy.Counts2Delta(counts_a, mask=mask)
    delta_b = hpy.Counts2Delta(counts_b, mask=mask)

    delta_sum = 0.5 * (delta_a + delta_b)
    delta_diff = 0.5 * (delta_a - delta_b)
    # hp.write_map('fits/delta_'+zbin+'_sum.fits', delta_sum[zbin])
    # hp.write_map('fits/delta_'+zbin+'_diff.fits', delta_diff[zbin])

    print("...done...")

    # embed()

    # exit()

    # XC estimator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    est = cs.Master(mask,
                    lmin=lmin,
                    lmax=lmax,
                    delta_ell=delta_ell,
                    MASTER=1,
                    pixwin=True)
    print('...extracting gg spectra...')

    clGS, err_gg = est.get_spectra(delta_sum, analytic_errors=True)
    clGD = est.get_spectra(delta_diff)
    gg = clGS - clGD
    counts_ = counts_a + counts_b
    delta_ = hpy.Counts2Delta(counts_, mask=mask)
    gg_, err_gg_ = est.get_spectra(delta_,
                                   nl=GetNlgg(counts_, mask=mask),
                                   pseudo=0,
                                   analytic_errors=True)
    print("\t=> Detection at rougly %.2f sigma ") % (np.sum(
        (gg[0:] / err_gg[0:])**2)**.5)
    print("\t=> Detection at rougly %.2f sigma ") % (np.sum(
        (gg_[0:] / err_gg_[0:])**2)**.5)

    print('...done...')

    # Initializing Cosmo class
    cosmo = Cosmo()
    cosmo_nl = Cosmo(nonlinear=True)

    nz, z, _ = hist(twompz.ZPHOTO, 'knuth', normed=1)
    z = 0.5 * (z[1:] + z[:-1])
    plt.close()

    fig = plt.figure()  #figsize=(10, 8))

    ax = fig.add_subplot(1, 1, 1)
    plt.title(r'$%.2f < z < %.2f$' % (args.zmin, args.zmax))

    # z, n_z  = GetdNdzNorm(nz=1000)
    # clgg    = GetAutoSpectrumMagLim( cosmo,    2.21, 0.053, 1.43, bias=1.24, alpha=1., lmax=1000)
    # clgg_ph = GetAutoSpectrumMagLim( cosmo_nl, 2.21, 0.053, 1.43, bias=1.24, alpha=1., lmax=1000, sigma_zph=0.03)
    # clgg_nl = GetAutoSpectrumMagLim( cosmo_nl, 2.21, 0.053, 1.43, bias=1.24, alpha=1., lmax=1000)
    clgg = GetAutoSpectrum(cosmo,
                           z,
                           nz, [args.zmin, args.zmax],
                           b=1.,
                           alpha=1.,
                           lmax=500,
                           sigma_zph=0.015,
                           i=0)
    clgg_nl = GetAutoSpectrum(cosmo_nl,
                              z,
                              nz, [args.zmin, args.zmax],
                              b=1.,
                              alpha=1.,
                              lmax=500,
                              sigma_zph=0.015,
                              i=0)
    # clgg    = GetAutoSpectrum(cosmo,   z,  dndz, [0., 0.08, 0.5], b=1.24, alpha=1., lmax=500, sigma_zph=0.015, i=i)
    # clgg_nl = GetAutoSpectrum(cosmo_nl, z, dndz, [0., 0.08, 0.5], b=1.24, alpha=1., lmax=500, sigma_zph=0.015, i=i)
    # ax = fig.add_subplot(1,1,i+1)
    lab = r'2MPZ  $%.1f < K_S < %.1f$' % (K_S_min, K_S_max)
    ax.plot(clgg, color='grey', label=r'$b=1$ $\sigma_z=0.015$')
    ax.plot(clgg_nl,
            color='darkgrey',
            ls='--',
            label=r'NL $b=1$ $\sigma_z=0.015$')
    ax.errorbar(est.lb, gg, yerr=err_gg, fmt='o', capsize=0, ms=5, label=lab)
    # ax.errorbar(est.lb+1, gg_[zbin], yerr=err_gg_[zbin], fmt='x', capsize=0, ms=5)#, label=lab)
    ax.set_ylabel(r'$C_{\ell}^{gg}$')
    ax.set_xlabel(r'Multipole $\ell$')
    ax.legend(loc='best')
    ax.axhline(ls='--', color='grey')
    ax.ticklabel_format(style='sci', axis='y', scilimits=(0, 0))
    ax.set_xlim([2., 200])
    ax.set_yscale('log')
    ax.set_ylim([1e-5, 1e-3])

    plt.tight_layout()
    plt.savefig('plots/2MPZ_clgg_dl' + str(args.delta_ell) + '_lmin_' +
                str(args.lmin) + '_lmax' + str(args.lmax) + '_KS_min_' +
                str(args.K_S_min) + '_KS_max_' + str(args.K_S_max) + '_nside' +
                str(args.nside) + '_zmin_' + str(args.zmin) + '_zmax' +
                str(args.zmax) + '_split.pdf',
                bbox_inches='tight')
    # plt.show()
    # plt.close()

    # embed()

    np.savetxt(
        'spectra/2MPZ_clgg_dl' + str(args.delta_ell) + '_lmin_' +
        str(args.lmin) + '_lmax' + str(args.lmax) + '_KS_min_' +
        str(args.K_S_min) + '_KS_max_' + str(args.K_S_max) + '_nside' +
        str(args.nside) + '_zmin_' + str(args.zmin) + '_zmax' +
        str(args.zmax) + '_split.dat', np.c_[est.lb, gg, err_gg])
Beispiel #3
0
def main(args):
    SetPlotStyle()

    # Params 'n' stuff
    fits_planck_mask = '../Data/mask_convergence_planck_2015_512.fits'
    fits_planck_map = '../Data/convergence_planck_2015_512.fits'
    twoMPZ_mask = 'fits/2MPZ_mask_tot_256.fits'  # N_side = 256
    twoMPZ_cat = 'fits/results16_23_12_14_73.fits'
    twoMPZ_cat2 = 'fits/results2_14_20_37_1053.fits.gz'
    fits_ebv = 'fits/lambda_sfd_ebv.fits'
    nsidelow = 64
    nside = args.nside
    do_plots = False
    delta_ell = args.delta_ell
    lmin = args.lmin
    lmax = args.lmax
    K_S_min = args.K_S_min
    K_S_max = args.K_S_max
    # lbmin    = 2
    # lbmax    = 10

    # Load Cat and Mask
    print("...loading 2MPZ catalogue...")
    twompz = Load2MPZ(twoMPZ_cat, K_S_min=K_S_min, K_S_max=K_S_max)
    twompz2 = Load2MPZ(twoMPZ_cat2, K_S_min=K_S_min, K_S_max=K_S_max)
    print("...done...")

    # E(B-V) reddening map by Schlegel+ in gal coord at nside=512
    ebv = hp.read_map(fits_ebv, verbose=False)
    ebv = hp.ud_grade(ebv, nsidelow, pess=True)
    A_K = ebv * 0.367  # K-band correction for Galactic extinction
    print("...Reddening map loaded...")

    # Get nstar map
    nstar = GetNstarMap(twompz['RA'],
                        twompz['DEC'],
                        twompz['STARDENSITY'],
                        nsidelow,
                        rad=True)

    # Get 2MPZ mask (A_K + nstar + counts)
    # !!! "torque rod gashes" still need to be removed !!!
    mask2mpz = Get2MPZMask(A_K,
                           nstar,
                           nside=nside,
                           maskcnt=hpy.GuessMask(twompz['RA'],
                                                 twompz['DEC'],
                                                 nsidelow,
                                                 rad=True))
    print("Mask f_sky is %3.2f" % np.mean(mask2mpz))

    # Load Planck CMB lensing map 'n' mask
    print("...loading Planck map/mask...")
    planck_map, planck_mask = LoadPlanck(fits_planck_map,
                                         fits_planck_mask,
                                         nside,
                                         do_plots=0,
                                         filt_plank_lmin=0)
    print("...done...")

    print("...reading 2MPZ mask...")
    mask = hp.read_map(twoMPZ_mask, verbose=False)
    nside_mask = hp.npix2nside(mask.size)
    if nside_mask != nside:
        mask = hp.ud_grade(mask, nside)
    print("...done...")

    # Common Planck & WISExSCOS mask
    mask *= planck_mask

    # embed()

    # Counts n overdesnity map
    cat_tmp = twompz[(twompz.ZPHOTO >= args.zmin)
                     & (twompz.ZPHOTO < args.zmax)]
    a, b = train_test_split(cat_tmp, test_size=0.5)

    counts_a = hpy.GetCountsMap(a.RA, a.DEC, nside, coord='G', rad=True)
    counts_b = hpy.GetCountsMap(b.RA, b.DEC, nside, coord='G', rad=True)
    # hp.write_map('fits/counts_'+zbin+'_sum.fits', counts_sum[zbin])
    # hp.write_map('fits/counts_'+zbin+'_diff.fits', counts_diff[zbin])
    print("\tNumber of sources in bin [%.2f,%.2f) is %d" %
          (args.zmin, args.zmax, np.sum((counts_a + counts_b) * mask)))

    print("...converting to overdensity maps...")

    delta_a = hpy.Counts2Delta(counts_a, mask=mask)
    delta_b = hpy.Counts2Delta(counts_b, mask=mask)

    delta_sum = 0.5 * (delta_a + delta_b)
    delta_diff = 0.5 * (delta_a - delta_b)
    # hp.write_map('fits/delta_'+zbin+'_sum.fits', delta_sum[zbin])
    # hp.write_map('fits/delta_'+zbin+'_diff.fits', delta_diff[zbin])

    cat_tmp2 = twompz2[(twompz2.ZPHOTO >= args.zmin)
                       & (twompz2.ZPHOTO < args.zmax)]
    a, b = train_test_split(cat_tmp2, test_size=0.5)

    counts_a2 = hpy.GetCountsMap(a.RA, a.DEC, nside, coord='G', rad=True)
    counts_b2 = hpy.GetCountsMap(b.RA, b.DEC, nside, coord='G', rad=True)

    delta_a2 = hpy.Counts2Delta(counts_a2, mask=mask)
    delta_b2 = hpy.Counts2Delta(counts_b2, mask=mask)

    delta_sum2 = 0.5 * (delta_a2 + delta_b2)
    delta_diff2 = 0.5 * (delta_a2 - delta_b2)

    print("...done...")

    # embed()

    # exit()

    # XC estimator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    est_mask = cs.Master(mask,
                         lmin=lmin,
                         lmax=lmax,
                         delta_ell=delta_ell,
                         MASTER=0,
                         pixwin=True)
    # est_mask2mpz = cs.Master(mask2mpz, lmin=lmin, lmax=lmax, delta_ell=delta_ell, MASTER=0, pixwin=True)
    print('...extracting gg spectra...')

    clGS, err_gg = est_mask.get_spectra(delta_sum, analytic_errors=True)
    clGD = est_mask.get_spectra(delta_diff)
    gg = clGS - clGD

    clGS_2mpz, err_gg_2mpz = est_mask.get_spectra(delta_sum2,
                                                  analytic_errors=True)
    clGD_2mpz = est_mask.get_spectra(delta_diff2)
    gg_2mpz = clGS_2mpz - clGD_2mpz

    # clGS_2mpz, err_gg_2mpz = est_mask2mpz.get_spectra(delta_sum, analytic_errors=True)
    # clGD_2mpz = est_mask2mpz.get_spectra(delta_diff)
    # gg_2mpz = clGS_2mpz - clGD_2mpz

    print('...done...')

    # Initializing Cosmo class
    cosmo = Cosmo()
    cosmo_nl = Cosmo(nonlinear=True)

    nz, z, _ = hist(twompz.ZPHOTO, 'knuth', normed=1)
    z = 0.5 * (z[1:] + z[:-1])
    plt.close()

    fig = plt.figure()  #figsize=(10, 8))

    ax = fig.add_subplot(1, 1, 1)
    plt.title(r'$%.2f < z < %.2f$' % (args.zmin, args.zmax))

    # z, n_z  = GetdNdzNorm(nz=1000)
    # clgg    = GetAutoSpectrumMagLim( cosmo,    2.21, 0.053, 1.43, bias=1.24, alpha=1., lmax=1000)
    # clgg_ph = GetAutoSpectrumMagLim( cosmo_nl, 2.21, 0.053, 1.43, bias=1.24, alpha=1., lmax=1000, sigma_zph=0.03)
    # clgg_nl = GetAutoSpectrumMagLim( cosmo_nl, 2.21, 0.053, 1.43, bias=1.24, alpha=1., lmax=1000)
    clgg = GetAutoSpectrum(cosmo,
                           z,
                           nz, [args.zmin, args.zmax],
                           b=1.,
                           alpha=1.,
                           lmax=500,
                           sigma_zph=0.015,
                           i=0)
    clgg_nl = GetAutoSpectrum(cosmo_nl,
                              z,
                              nz, [args.zmin, args.zmax],
                              b=1.,
                              alpha=1.,
                              lmax=500,
                              sigma_zph=0.015,
                              i=0)
    # clgg    = GetAutoSpectrum(cosmo,   z,  dndz, [0., 0.08, 0.5], b=1.24, alpha=1., lmax=500, sigma_zph=0.015, i=i)
    # clgg_nl = GetAutoSpectrum(cosmo_nl, z, dndz, [0., 0.08, 0.5], b=1.24, alpha=1., lmax=500, sigma_zph=0.015, i=i)
    # ax = fig.add_subplot(1,1,i+1)
    lab = r'2MPZ  $%.1f < K_S < %.1f$' % (K_S_min, K_S_max)
    ax.plot(clgg, color='grey', label=r'$b=1$ $\sigma_z=0.015$')
    ax.plot(clgg_nl,
            color='darkgrey',
            ls='--',
            label=r'NL $b=1$ $\sigma_z=0.015$')
    ax.errorbar(est_mask.lb,
                gg,
                yerr=err_gg,
                fmt='o',
                capsize=0,
                ms=5,
                label=lab)
    ax.errorbar(est_mask.lb + 1,
                gg_2mpz,
                yerr=err_gg_2mpz,
                fmt='x',
                capsize=0,
                ms=5)  #, label=lab)
    ax.set_ylabel(r'$C_{\ell}^{gg}$')
    ax.set_xlabel(r'Multipole $\ell$')
    ax.legend(loc='best')
    ax.axhline(ls='--', color='grey')
    ax.ticklabel_format(style='sci', axis='y', scilimits=(0, 0))
    ax.set_xlim([2., 200])
    ax.set_yscale('log')
    ax.set_ylim([1e-5, 1e-3])

    plt.tight_layout()
    # plt.savefig('plots/2MPZ_clgg_dl'+str(args.delta_ell)+'_lmin_'+str(args.lmin)+'_lmax'+str(args.lmax)+'_KS_min_'+str(args.K_S_min)+'_KS_max_'+str(args.K_S_max)+'_nside'+str(args.nside)+'_zmin_'+str(args.zmin)+'_zmax'+str(args.zmax)+'_split.pdf', bbox_inches='tight')
    plt.show()
    # plt.close()

    embed()
Beispiel #4
0
planck_map, planck_mask = LoadPlanck(fits_planck_map, fits_planck_mask, nside, do_plots=0, filt_plank_lmin=0, pess=0)
print("...done...")

print("...reading 2MPZ mask...")
mask  = hp.read_map(twoMPZ_mask, verbose=False)
nside_mask = hp.npix2nside(mask.size)
if nside_mask != nside:
   mask = hp.ud_grade(mask, nside)
print("...done...")

# Common Planck & WISExSCOS mask  
mask *= planck_mask

# Counts 'n' delta map
counts = hpy.GetCountsMap(twompz.RA, twompz.DEC, nside, coord='G', rad=True)
delta  = hpy.Counts2Delta(counts, mask=mask)

counts = hp.ma(counts)
counts.mask = np.logical_not(mask)

delta = hp.ma(np.log(1.+delta))
delta.mask = np.logical_not(mask)

from pylab import cm

cmap = cm.rainbow
cmap.set_under('w')

plt.figure(figsize=(8,5))
hp.mollview(delta, title=r'2MPZ - $K_S<13.9$')#, cmap='bone')
hp.graticule()