Пример #1
0
def egBk(): 
    ''' calculate example Bk
    '''
    Lbox = 2600. # box size
    Ngrid = 360  # fft grid size

    fnbox = h5py.File(os.path.join(UT.dat_dir(), 'BoxN1.hdf5'), 'r') 
    xyz = fnbox['xyz'].value 
    vxyz = fnbox['vxyz'].value 
    xyz_s = pySpec.applyRSD(xyz.T, vxyz.T, 0.5, h=0.7, omega0_m=0.3, LOS='z', Lbox=2600.) 
    bisp = pySpec.Bk_periodic(xyz_s, Lbox=Lbox, Ngrid=Ngrid, step=3, Ncut=3, Nmax=40, fft='pyfftw') 
    pickle.dump(bisp, open(os.path.join(UT.dat_dir(), 'egBk.p'), 'wb'))
    return None 
Пример #2
0
def demoBk(): 
    '''
    '''
    kmax = 0.5
    kf = 2.*np.pi/2600.
    # read in Bk 
    bisp = pickle.load(open(os.path.join(UT.dat_dir(), 'egBk.p'), 'rb'))
    i_k, j_k, l_k, bk = bisp['i_k1'], bisp['i_k2'], bisp['i_k3'], bisp['b123'] 
    
    klim = ((i_k*kf <= kmax) & (j_k*kf <= kmax) & (l_k*kf <= kmax))
    i_k, j_k, l_k = i_k[klim], j_k[klim], l_k[klim]
    ijl = UT.ijl_order(i_k, j_k, l_k, typ='GM') # order of triangles 
    
    for itri in range(1500): 
        fig = plt.figure(figsize=(15,4.8))
        sub = fig.add_subplot(111)
        sub.plot(range(1500), bk[klim][ijl][:1500], c='k', lw=0.5)
        sub.scatter(range(1500), bk[klim][ijl][:1500], c='k', s=2)
        sub.scatter(itri, bk[klim][ijl][itri], c='C1', s=30, zorder=10) 

        itri_i, itri_j, itri_l = i_k[ijl][itri], j_k[ijl][itri], l_k[ijl][itri]
        trixy = np.zeros((3,2))
        trixy[0,:] = np.array([1400, 2e10])
        trixy[1,:] = np.array([1400 - 3.33*itri_i, 2e10]) 
        theta23 = np.arccos(-0.5*(itri_l**2 - itri_i**2 - itri_j**2)/itri_i/itri_j)[0]
        trixy[2,:] = np.array([1400-3.33*itri_j[0]*np.cos(theta23), 
            10**(10.301 - 0.022*itri_j[0]*np.sin(theta23))])
        tri = plt.Polygon(trixy, fill=None, edgecolor='k')
        fig.gca().add_patch(tri)
        
        sub.text(0.5*(trixy[0,0]+trixy[1,0]), 0.5*(trixy[0,1]+trixy[1,1]), '$k_3$', 
                fontsize=8, ha='center', va='bottom') 
        sub.text(0.5*(trixy[0,0]+trixy[2,0]), 0.5*(trixy[0,1]+trixy[2,1]), '$k_2$', 
                fontsize=8, ha='left', va='top') 
        sub.text(0.5*(trixy[1,0]+trixy[2,0]), 0.5*(trixy[1,1]+trixy[2,1]), '$k_1$', 
                fontsize=8, ha='right', va='top') 

        sub.set_xlabel('triangle configurations', fontsize=25)
        sub.set_xlim([0, 1500])
        sub.set_ylabel(r'$B(k_1, k_2, k_3)$', fontsize=25)
        sub.set_yscale('log') 
        sub.set_ylim([1e7, 3e10])
        fig.savefig(os.path.join(UT.dat_dir(), 'demo', 'demoBk%i.png' % itri), bbox_inches='tight')
        plt.close() 
    return None 
Пример #3
0
def AEM_rzspace():
    ''' comparison between real and redshift space 
    '''
    f_b123 = lambda sim, rsd: os.path.join(
        UT.dat_dir(), sim,
        'pySpec.B123.halo.mlim1e13.Ngrid360.Nmax40.Ncut3.step3.pyfftw%s.dat' %
        ['', '.rsd'][rsd])
    Lbox_aem = 1050.
    kf_aem = 2. * np.pi / Lbox_aem

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, _ = np.loadtxt(
        f_b123('aemulus', False), skiprows=1, unpack=True, usecols=range(10))
    i_k, j_k, l_k, p0k1, p0k2, p0k3, b123_s, q123_s, counts, _ = np.loadtxt(
        f_b123('aemulus', True), skiprows=1, unpack=True, usecols=range(10))
    klim = ((i_k * kf_aem <= 0.3) & (j_k * kf_aem <= 0.3) &
            (l_k * kf_aem <= 0.3))
    ijl = UT.ijl_order(i_k[klim], j_k[klim], l_k[klim],
                       typ='GM')  # order of triangles

    sub.scatter(range(np.sum(klim)),
                b123[klim][ijl],
                c='k',
                s=5,
                label='real-space')
    sub.plot(range(np.sum(klim)), b123[klim][ijl], c='k')
    sub.scatter(range(np.sum(klim)),
                b123_s[klim][ijl],
                c='C1',
                s=5,
                label='z-space')
    sub.plot(range(np.sum(klim)), b123_s[klim][ijl], c='C1')
    print(b123_s[klim][ijl] / b123[klim][ijl]).flatten()
    sub.legend(loc='upper right', markerscale=4, handletextpad=0., fontsize=20)
    sub.set_ylabel('$B(k_1, k_2, k_3)$', fontsize=25)
    sub.set_yscale('log')
    sub.set_xlabel(r'$k_1 \le k_2 \le k_3$ triangle indices', fontsize=25)
    sub.set_xlim([0, np.sum(klim)])
    fig.savefig(''.join([UT.dat_dir(), 'qpm/B123_aemulus_rzspace.png']),
                bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    sub.scatter(range(np.sum(klim)),
                q123[klim][ijl],
                c='k',
                s=2,
                label='real-space')
    sub.plot(range(np.sum(klim)), q123[klim][ijl], c='k', lw=1)
    sub.scatter(range(np.sum(klim)),
                q123_s[klim][ijl],
                c='C1',
                s=2,
                label='redshift-space')
    sub.plot(range(np.sum(klim)), q123_s[klim][ijl], c='C1', lw=1)
    sub.legend(loc='lower right',
               handletextpad=0.2,
               markerscale=10,
               fontsize=20)
    sub.set_ylabel('$Q(k_1, k_2, k_3)$', fontsize=25)
    sub.set_xlabel('$k_1 > k_2 > k_3$ triangle indices', fontsize=25)
    sub.set_xlim([0, np.sum(klim)])
    sub.set_ylim([0., 1.])
    fig.savefig(''.join([UT.dat_dir(), 'qpm/Q123_aemulus_rzspace.png']),
                bbox_inches='tight')
    return None
Пример #4
0
def QPM_AEM(rsd=False):
    str_rsd = ''
    if rsd: str_rsd = '.rsd'
    f_pell = lambda sim: ''.join([
        UT.dat_dir(), sim, '/pySpec.Plk.halo.mlim1e13.Ngrid360', str_rsd,
        '.dat'
    ])
    f_pnkt = lambda sim: ''.join([
        UT.dat_dir(), sim, '/pySpec.Plk.halo.mlim1e13.Ngrid360.nbodykit',
        str_rsd, '.dat'
    ])
    f_b123 = lambda sim: ''.join([
        UT.dat_dir(), sim,
        '/pySpec.B123.halo.mlim1e13.Ngrid360.Nmax40.Ncut3.step3.pyfftw',
        str_rsd, '.dat'
    ])

    Lbox_qpm = 1050.
    Lbox_aem = 1050.
    kf_qpm = 2. * np.pi / Lbox_qpm
    kf_aem = 2. * np.pi / Lbox_aem

    fig = plt.figure(figsize=(5, 5))
    sub = fig.add_subplot(111)
    k, p0k = np.loadtxt(f_pell('aemulus'),
                        unpack=True,
                        skiprows=1,
                        usecols=[0, 1])
    klim = (k < 0.3)
    sub.plot(k[klim], p0k[klim], c='k', lw=1, label='Aemulus')
    k, p0k = np.loadtxt(f_pnkt('aemulus'),
                        unpack=True,
                        skiprows=1,
                        usecols=[0, 1])
    klim = (k < 0.3)
    sub.plot(k[klim], p0k[klim], c='k', ls='--', lw=1)
    k, p0k = np.loadtxt(f_pell('qpm'), unpack=True, skiprows=1, usecols=[0, 1])
    klim = (k < 0.3)
    sub.plot(k[klim], p0k[klim], c='C1', lw=1, label='QPM')
    k, p0k = np.loadtxt(f_pnkt('qpm'), unpack=True, skiprows=1, usecols=[0, 1])
    klim = (k < 0.3)
    sub.plot(k[klim], p0k[klim], c='C1', ls='--', lw=1)
    sub.legend(loc='upper right', fontsize=20)
    sub.set_ylabel('$P_0(k)$', fontsize=25)
    sub.set_yscale('log')
    sub.set_xlabel('$k$', fontsize=25)
    sub.set_xlim([8e-3, 0.5])
    sub.set_xscale('log')
    fig.savefig(''.join([UT.dat_dir(), 'qpm/p0k_qpm_aemulus', str_rsd,
                         '.png']),
                bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
        f_b123('aemulus'), skiprows=1, unpack=True, usecols=range(10))
    klim = ((i_k * kf_aem <= 0.22) & (i_k * kf_aem >= 0.03) &
            (j_k * kf_aem <= 0.22) & (j_k * kf_aem >= 0.03) &
            (l_k * kf_aem <= 0.22) & (l_k * kf_aem >= 0.03))
    i_k, j_k, l_k = i_k[klim], j_k[klim], l_k[klim]

    ijl = UT.ijl_order(i_k, j_k, l_k, typ='GM')  # order of triangles

    sub.scatter(range(np.sum(klim)),
                b123[klim][ijl],
                c='k',
                s=5,
                label='Aemulus')
    sub.plot(range(np.sum(klim)), b123[klim][ijl], c='k')

    i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
        f_b123('qpm'), skiprows=1, unpack=True, usecols=range(10))
    klim = ((i_k * kf_qpm <= 0.22) & (i_k * kf_qpm >= 0.03) &
            (j_k * kf_qpm <= 0.22) & (j_k * kf_qpm >= 0.03) &
            (l_k * kf_qpm <= 0.22) & (l_k * kf_qpm >= 0.03))
    i_k, j_k, l_k, = i_k[klim], j_k[klim], l_k[klim]

    ijl = UT.ijl_order(i_k, j_k, l_k, typ='GM')  # order of triangles
    sub.scatter(range(np.sum(klim)), b123[klim][ijl], c='C1', s=5, label='QPM')
    sub.plot(range(np.sum(klim)), b123[klim][ijl], c='C1')
    sub.legend(loc='upper right', markerscale=4, handletextpad=0., fontsize=20)
    sub.set_ylabel('$B(k_1, k_2, k_3)$', fontsize=25)
    sub.set_yscale('log')
    sub.set_ylim([1e8, 6e9])
    sub.set_xlabel(r'$k_1 \le k_2 \le k_3$ triangle indices', fontsize=25)
    sub.set_xlim([0, np.sum(klim)])
    fig.savefig(''.join(
        [UT.dat_dir(), 'qpm/B123_qpm_aemulus', str_rsd, '.png']),
                bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
        f_b123('aemulus'), skiprows=1, unpack=True, usecols=range(10))
    sub.scatter(range(len(q123)), q123, c='k', s=2, label='Aemulus')
    i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
        f_b123('qpm'), skiprows=1, unpack=True, usecols=range(10))
    sub.scatter(range(len(q123)), q123, c='C1', s=2, label='QPM')
    sub.legend(loc='upper right', fontsize=20)
    sub.set_ylabel('$Q(k_1, k_2, k_3)$', fontsize=25)
    sub.set_xlabel('$k_1 > k_2 > k_3$ triangle indices', fontsize=25)
    sub.set_xlim([0, len(q123)])
    sub.set_ylim([0., 1.])
    fig.savefig(''.join(
        [UT.dat_dir(), 'qpm/Q123_qpm_aemulus', str_rsd, '.png']),
                bbox_inches='tight')
    return None
Пример #5
0
def AEMspectra(rsd=False):
    ''' calculate the powerspectrum and bispectrum of the Aemulus simulation box 
    '''
    str_rsd = ''
    if rsd: str_rsd = '.rsd'
    f_halo = ''.join(
        [UT.dat_dir(), 'aemulus/aemulus_test002_halos.mlim1e13.hdf5'])
    f_hdf5 = ''.join(
        [UT.dat_dir(), 'aemulus/aemulus_test002_halos.mlim1e13.hdf5'])
    f_pell = ''.join([
        UT.dat_dir(), 'aemulus/pySpec.Plk.halo.mlim1e13.Ngrid360', str_rsd,
        '.dat'
    ])
    f_pnkt = ''.join([
        UT.dat_dir(), 'aemulus/pySpec.Plk.halo.mlim1e13.Ngrid360.nbodykit',
        str_rsd, '.dat'
    ])
    f_b123 = ''.join([
        UT.dat_dir(),
        'aemulus/pySpec.B123.halo.mlim1e13.Ngrid360.Nmax40.Ncut3.step3.pyfftw',
        str_rsd, '.dat'
    ])

    Lbox = 1050.
    kf = 2. * np.pi / Lbox

    if not os.path.isfile(f_hdf5):
        f = h5py.File(f_halo, 'r')
        xyz = f['xyz'].value
        vxyz = f['vxyz'].value
        mh = f['mhalo'].value
        xyz_s = pySpec.applyRSD(xyz.T,
                                vxyz.T,
                                0.55,
                                h=0.7,
                                omega0_m=0.340563,
                                LOS='z',
                                Lbox=Lbox)
        xyz_s = xyz_s.T

        f = h5py.File(f_hdf5, 'w')
        f.create_dataset('xyz', data=xyz)
        f.create_dataset('vxyz', data=vxyz)
        f.create_dataset('xyz_s', data=xyz_s)
        f.create_dataset('mhalo', data=mh)
        f.close()
    else:
        f = h5py.File(f_hdf5, 'r')
        xyz = f['xyz'].value
        vxyz = f['vxyz'].value
        xyz_s = f['xyz_s'].value
        mh = f['mhalo'].value
        f.close()

    Nhalo = xyz.shape[0]
    print('# halos = %i' % Nhalo)
    nhalo = float(Nhalo) / Lbox**3
    print('number density = %f' % nhalo)
    print('1/nbar = %f' % (1. / nhalo))

    # calculate powerspectrum
    if not os.path.isfile(f_pell):
        # calculate FFTs
        if not rsd:
            delta = pySpec.FFTperiodic(xyz.T,
                                       fft='fortran',
                                       Lbox=Lbox,
                                       Ngrid=360,
                                       silent=False)
        else:
            delta = pySpec.FFTperiodic(xyz_s.T,
                                       fft='fortran',
                                       Lbox=Lbox,
                                       Ngrid=360,
                                       silent=False)
        delta_fft = pySpec.reflect_delta(delta, Ngrid=360)

        # calculate powerspectrum monopole
        k, p0k, cnts = pySpec.Pk_periodic(delta_fft)
        k = k * kf
        p0k = p0k / kf**3 - 1. / nhalo

        # save to file
        hdr = 'pyspectrum P_l=0(k) calculation. k_f = 2pi/1050.'
        np.savetxt(f_pell,
                   np.array([k, p0k, cnts]).T,
                   fmt='%.5e %.5e %.5e',
                   delimiter='\t',
                   header=hdr)
    else:
        k, p0k, cnts = np.loadtxt(f_pell,
                                  skiprows=1,
                                  unpack=True,
                                  usecols=[0, 1, 2])

    # calculate P(k) using nbodykit for santiy check
    if not os.path.isfile(f_pnkt):
        # get cosmology from header
        Omega_m = 0.3175
        Omega_b = 0.049  # fixed baryon
        h = 0.6711
        cosmo = NBlab.cosmology.Planck15.clone(Omega_cdm=Omega_m - Omega_b,
                                               h=h,
                                               Omega_b=Omega_b)

        halo_data = {}
        if not rsd: halo_data['Position'] = xyz
        else: halo_data['Position'] = xyz_s
        halo_data['Velocity'] = vxyz
        halo_data['Mass'] = mh
        print("putting it into array catalog")
        halos = NBlab.ArrayCatalog(halo_data,
                                   BoxSize=np.array([Lbox, Lbox, Lbox]))
        print("putting it into halo catalog")
        halos = NBlab.HaloCatalog(halos, cosmo=cosmo, redshift=0., mdef='vir')
        print("putting it into mesh")
        mesh = halos.to_mesh(window='tsc',
                             Nmesh=360,
                             compensated=True,
                             position='Position')
        print("calculating powerspectrum")
        r = NBlab.FFTPower(mesh, mode='1d', dk=kf, kmin=kf, poles=[0, 2, 4])
        poles = r.poles
        plk = {'k': poles['k']}
        for ell in [0, 2, 4]:
            P = (poles['power_%d' % ell].real)
            if ell == 0:
                P = P - poles.attrs[
                    'shotnoise']  # subtract shotnoise from monopole
            plk['p%dk' % ell] = P
        plk['shotnoise'] = poles.attrs['shotnoise']  # save shot noise term

        # header
        hdr = 'pyspectrum P_l(k) calculation. k_f = 2pi/1050; P_shotnoise ' + str(
            plk['shotnoise'])
        # write to file
        np.savetxt(f_pnkt,
                   np.array([plk['k'], plk['p0k'], plk['p2k'], plk['p4k']]).T,
                   header=hdr)
    else:
        _k, _p0k, _p2k, _p4k = np.loadtxt(f_pnkt,
                                          skiprows=1,
                                          unpack=True,
                                          usecols=[0, 1, 2, 3])
        plk = {}
        plk['k'] = _k
        plk['p0k'] = _p0k
        plk['p2k'] = _p2k
        plk['p4k'] = _p4k

    # calculate bispectrum
    if not os.path.isfile(f_b123):
        if not rsd:
            bispec = pySpec.Bk_periodic(xyz.T,
                                        Lbox=Lbox,
                                        Ngrid=360,
                                        Nmax=40,
                                        Ncut=3,
                                        step=3,
                                        fft='pyfftw',
                                        nthreads=1,
                                        silent=False)
        else:
            bispec = pySpec.Bk_periodic(xyz_s.T,
                                        Lbox=Lbox,
                                        Ngrid=360,
                                        Nmax=40,
                                        Ncut=3,
                                        step=3,
                                        fft='pyfftw',
                                        nthreads=1,
                                        silent=False)

        i_k = bispec['i_k1']
        j_k = bispec['i_k2']
        l_k = bispec['i_k3']
        p0k1 = bispec['p0k1']
        p0k2 = bispec['p0k2']
        p0k3 = bispec['p0k3']
        b123 = bispec['b123']
        b123_sn = bispec['b123_sn']
        q123 = bispec['q123']
        counts = bispec['counts']
        # save to file
        hdr = 'pyspectrum bispectrum calculation test. k_f = 2pi/%.1f' % Lbox
        np.savetxt(f_b123,
                   np.array([
                       i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts,
                       b123_sn
                   ]).T,
                   fmt='%i %i %i %.5e %.5e %.5e %.5e %.5e %.5e %.5e',
                   delimiter='\t',
                   header=hdr)
    else:
        i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
            f_b123, skiprows=1, unpack=True, usecols=range(10))

    # plot powerspecrtrum shape triangle plot
    fig = plt.figure(figsize=(5, 5))
    sub = fig.add_subplot(111)
    sub.plot(k, p0k, c='k', lw=1, label='pySpectrum')
    sub.plot(plk['k'], plk['p0k'], c='C1', lw=1, label='nbodykit')
    iksort = np.argsort(i_k)
    sub.plot(i_k[iksort] * kf,
             p0k1[iksort],
             c='k',
             lw=1,
             ls='--',
             label='bispectrum code')
    sub.legend(loc='lower left', fontsize=20)
    sub.set_ylabel('$P_0(k)$', fontsize=25)
    #sub.set_ylim([1e2, 3e4])
    sub.set_yscale('log')
    sub.set_xlabel('$k$', fontsize=25)
    sub.set_xlim([3e-3, 1.])
    sub.set_xscale('log')
    fig.savefig(''.join([UT.dat_dir(), 'aemulus/aemulus_p0k', str_rsd,
                         '.png']),
                bbox_inches='tight')

    # plot bispectrum shape triangle plot
    nbin = 31
    x_bins = np.linspace(0., 1., nbin + 1)
    y_bins = np.linspace(0.5, 1., (nbin // 2) + 1)

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    Bgrid = Plots._BorQgrid(
        l_k.astype(float) / i_k.astype(float),
        j_k.astype(float) / i_k.astype(float), q123, counts, x_bins, y_bins)
    bplot = plt.pcolormesh(x_bins,
                           y_bins,
                           Bgrid.T,
                           vmin=0,
                           vmax=1,
                           cmap='RdBu')
    cbar = plt.colorbar(bplot, orientation='vertical')
    sub.set_title(r'$Q(k_1, k_2, k_3)$ QPM halo catalog', fontsize=25)
    sub.set_xlabel('$k_3/k_1$', fontsize=25)
    sub.set_ylabel('$k_2/k_1$', fontsize=25)
    fig.savefig(''.join(
        [UT.dat_dir(), 'aemulus/aemulus_Q123_shape', str_rsd, '.png']),
                bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    Bgrid = Plots._BorQgrid(
        l_k.astype(float) / i_k.astype(float),
        j_k.astype(float) / i_k.astype(float), b123, counts, x_bins, y_bins)
    bplot = plt.pcolormesh(x_bins,
                           y_bins,
                           Bgrid.T,
                           norm=LogNorm(vmin=1e6, vmax=1e8),
                           cmap='RdBu')
    cbar = plt.colorbar(bplot, orientation='vertical')
    sub.set_title(r'$B(k_1, k_2, k_3)$ QPM halo catalog', fontsize=25)
    sub.set_xlabel('$k_3/k_1$', fontsize=25)
    sub.set_ylabel('$k_2/k_1$', fontsize=25)
    fig.savefig(''.join(
        [UT.dat_dir(), 'aemulus/aemulus_B123_shape', str_rsd, '.png']),
                bbox_inches='tight')

    # plot bispectrum amplitude
    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    sub.scatter(range(len(b123)), q123, c='k', s=1)
    sub.set_xlabel(r'$k_1 > k_2 > k_3$ triangle index', fontsize=25)
    sub.set_xlim([0, len(b123)])
    sub.set_ylabel(r'$Q(k_1, k_2, k_3)$', fontsize=25)
    sub.set_ylim([0., 1.])
    fig.savefig(''.join(
        [UT.dat_dir(), 'aemulus/aemulus_Q123', str_rsd, '.png']),
                bbox_inches='tight')

    # plot bispectrum amplitude
    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    sub.scatter(range(len(b123)), b123, c='k', s=1)
    sub.set_xlabel(r'$k_1 > k_2 > k_3$ triangle index', fontsize=25)
    sub.set_xlim([0, len(b123)])
    sub.set_ylabel(r'$B(k_1, k_2, k_3)$', fontsize=25)
    sub.set_yscale('log')
    fig.savefig(''.join(
        [UT.dat_dir(), 'aemulus/aemulus_B123', str_rsd, '.png']),
                bbox_inches='tight')
    return None
Пример #6
0
'''

calculate bispectrum 

'''
import time
import numpy as np
# -- pyspectrum --
from pyspectrum import util as UT
from pyspectrum import pyspectrum as pySpec

if __name__ == "__main__":
    x, y, z = np.loadtxt(''.join([UT.dat_dir(), 'BoxN1.mock']),
                         unpack=True,
                         usecols=[0, 1, 2])
    xyz = np.zeros((3, len(x)))
    xyz[0, :] = x
    xyz[1, :] = y
    xyz[2, :] = z

    delta = pySpec.FFTperiodic(xyz,
                               fft='fortran',
                               Lbox=2600,
                               Ngrid=360,
                               silent=False)
    delta_fft = pySpec.reflect_delta(delta, Ngrid=360)

    t0 = time.time()
    # calculate bispectrum
    i_k, j_k, l_k, b123, q123 = pySpec.Bk123_periodic(delta_fft,
                                                      Nmax=40,
Пример #7
0
import numpy as np
from scipy.io import FortranFile
# -- pyspectrum --
from pyspectrum import util as UT
from pyspectrum import pyspectrum as pySpec

if __name__ == "__main__":
    counts = pySpec._counts_Bk123(Ngrid=360,
                                  Nmax=40,
                                  Ncut=3,
                                  step=3,
                                  fft_method='pyfftw',
                                  silent=False)
    counts_f77 = pySpec._counts_Bk123_f77(Ngrid=360,
                                          Nmax=40,
                                          Ncut=3,
                                          step=3,
                                          silent=False)

    # check counts
    f = FortranFile(''.join([UT.dat_dir(), 'counts2_n360_nmax40_ncut3_s3']),
                    'r')
    _counts = f.read_reals(dtype=np.float64)
    _counts = np.reshape(_counts, (40, 40, 40), order='F')
    _counts_swap = np.swapaxes(_counts, 0,
                               2)  # axes are swaped for whatever reason
    assert np.allclose(_counts_swap, counts_f77)
    assert np.allclose(_counts_swap, counts)

    # both the python and fortran wrapped implementations work well
Пример #8
0
mpl.rcParams['axes.linewidth'] = 1.5
mpl.rcParams['axes.xmargin'] = 1
mpl.rcParams['xtick.labelsize'] = 'x-large'
mpl.rcParams['xtick.major.size'] = 5
mpl.rcParams['xtick.major.width'] = 1.5
mpl.rcParams['ytick.labelsize'] = 'x-large'
mpl.rcParams['ytick.major.size'] = 5
mpl.rcParams['ytick.major.width'] = 1.5
mpl.rcParams['legend.frameon'] = False

Lbox = 2600.  # box size
Ngrid = 360  # fft grid size
kf = 2 * np.pi / Lbox  # fundament mode

# read in Nseries box data
fnbox = h5py.File(os.path.join(UT.dat_dir(), 'BoxN1.hdf5'), 'r')
xyz = fnbox['xyz'].value
vxyz = fnbox['vxyz'].value
nhalo = xyz.shape[0]
nbar = float(nhalo) / Lbox**3

# real-space power/bispectrum with pySpectrum
t0 = time.time()
pspec = pySpec.Pk_periodic(xyz.T, Lbox=Lbox, Ngrid=Ngrid, silent=False)
print('--pySpec.Pk_periodic: %f sec' % ((time.time() - t0) / 60.))
t0 = time.time()
bispec = pySpec.Bk_periodic(xyz.T, Lbox=Lbox, Ngrid=Ngrid, silent=False)
print('--pySpec.Bk_periodic: %f sec' % ((time.time() - t0) / 60.))

# compare real-space bispectrum with Roman's output
f_bk_rs = os.path.join(UT.dat_dir(), 'bk.BoxN1.mock')
Пример #9
0
mpl.rcParams['axes.linewidth'] = 1.5
mpl.rcParams['axes.xmargin'] = 1
mpl.rcParams['xtick.labelsize'] = 'x-large'
mpl.rcParams['xtick.major.size'] = 5
mpl.rcParams['xtick.major.width'] = 1.5
mpl.rcParams['ytick.labelsize'] = 'x-large'
mpl.rcParams['ytick.major.size'] = 5
mpl.rcParams['ytick.major.width'] = 1.5
mpl.rcParams['legend.frameon'] = False

Lbox = 2600.  # box size
Ngrid = 360  # fft grid size
kf = 2 * np.pi / Lbox  # fundament mode

# read in Nseries box data
fnbox = h5py.File(os.path.join(UT.dat_dir(), 'BoxN1.hdf5'), 'r')
xyz = fnbox['xyz'][...]
vxyz = fnbox['vxyz'][...]
nhalo = xyz.shape[0]
nbar = float(nhalo) / Lbox**3

N = xyz.shape[1]  # number of positions
kf = 2 * np.pi / Lbox

# Pk from real-space powerspectrum function
t0 = time.time()
pkout = pySpec.Pk_periodic(xyz.T,
                           Lbox=Lbox,
                           Ngrid=Ngrid,
                           fft='pyfftw',
                           silent=False)
Пример #10
0
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
mpl.rcParams['text.usetex'] = True
mpl.rcParams['font.family'] = 'serif'
mpl.rcParams['axes.linewidth'] = 1.5
mpl.rcParams['axes.xmargin'] = 1
mpl.rcParams['xtick.labelsize'] = 'x-large'
mpl.rcParams['xtick.major.size'] = 5
mpl.rcParams['xtick.major.width'] = 1.5
mpl.rcParams['ytick.labelsize'] = 'x-large'
mpl.rcParams['ytick.major.size'] = 5
mpl.rcParams['ytick.major.width'] = 1.5
mpl.rcParams['legend.frameon'] = False

dir_mc = os.path.join(UT.dat_dir(), 'gqc_mock_challenge')


def stage1(name):
    ''' stage 1 of mock challenge. run power spectrum for periodic box 
    '''
    # read in mock
    if name == 'unit':
        _fname = 'UNIT_DESI_Shadab_HOD_snap97_ELG_v0.txt'
        Lbox = 1000.
    elif name == 'pmill':
        _fname = 'DESI_ELG_z0.76_catalogue.dat'
        Lbox = 542.16

    x, y, z, z_rsd = np.loadtxt(os.path.join(dir_mc, _fname),
                                unpack=True,
Пример #11
0
'''

calculate powerspectrum 

'''
import time
import numpy as np
import matplotlib.pyplot as plt
from pyspectrum import util as UT
from pyspectrum import pyspectrum as pySpec

if __name__ == "__main__":
    # read in FFTed density grid
    f_fft = ''.join([UT.dat_dir(), 'FFT.BoxN1.mock.Ngrid360'])
    delta = pySpec.read_fortFFT(file=f_fft)

    # calculate powerspectrum monopole
    k, p0k = pySpec.Pk_periodic(delta)
    kf = 2. * np.pi / 2600.

    _k, _p0k = np.loadtxt(''.join([UT.dat_dir(), 'PK.BoxN1.mock.Ngrid360']),
                          unpack=True,
                          usecols=[0, 1])

    plt.plot(kf * k, p0k / (2. * np.pi)**3 / kf**3)
    plt.plot(_k, _p0k, ls='--')
    plt.xscale("log")
    plt.yscale("log")
    plt.show()
Пример #12
0
def fastpm_v_tng(z,
                 str_flag='',
                 mh_lim=15.,
                 Lbox=205.,
                 Nmax=40,
                 Ncut=3,
                 step=3):
    ''' make plots that compare the powerspectrum and bispectrum of 
    fastpm and illustris tng 
    '''
    dir_fpm = os.path.join(UT.dat_dir(), 'fastpm')
    f_fpm = ('halocat_FastPM_40step_N250_IC500_B2_z%.2f%s.mlim%.fe10' %
             (z, str_flag, mh_lim))
    f_tng = ('halocat_TNG300Dark_z%.2f.mlim%.fe10' % (z, mh_lim))
    print('FastPM file: %s' % f_fpm)
    print('Illustris TNG file: %s' % f_tng)

    f_pell = lambda f_halo: ('%s/pySpec.Plk.%s.Lbox%.f.Ngrid360.dat' %
                             (dir_fpm, f_halo, Lbox))
    f_pnkt = lambda f_halo: ('%s/pySpec.Plk.%s.Lbox%.f.Ngrid360.nbodykit.dat' %
                             (dir_fpm, f_halo, Lbox))
    f_b123 = lambda f_halo: (
        '%s/pySpec.Bk.%s.Lbox%.f.Ngrid360.step%i.Ncut%i.Nmax%i.dat' %
        (dir_fpm, f_halo, Lbox, step, Ncut, Nmax))

    kf = 2. * np.pi / Lbox

    # P(k) comparison
    fig = plt.figure(figsize=(5, 5))
    sub = fig.add_subplot(111)
    k, p0k = np.loadtxt(f_pell(f_fpm), unpack=True, skiprows=1, usecols=[0, 1])
    sub.plot(k, p0k, c='k', lw=1, label='FastPM')
    k, p0k_fpm = np.loadtxt(f_pnkt(f_fpm),
                            unpack=True,
                            skiprows=1,
                            usecols=[0, 1])
    sub.plot(k, p0k_fpm, c='k', ls='--', lw=1)
    k, p0k = np.loadtxt(f_pell(f_tng), unpack=True, skiprows=1, usecols=[0, 1])
    sub.plot(k, p0k, c='C1', lw=1, label='Illustris TNG')
    k, p0k_tng = np.loadtxt(f_pnkt(f_tng),
                            unpack=True,
                            skiprows=1,
                            usecols=[0, 1])
    sub.plot(k, p0k_tng, c='C1', ls='--', lw=1)
    print(p0k_fpm / p0k_tng)[k < 0.2] - 1.
    sub.legend(loc='lower left', fontsize=20)
    sub.set_ylabel('$P_0(k)$', fontsize=25)
    sub.set_yscale('log')
    sub.set_ylim([1e0, 1e4])
    sub.set_xlabel('$k$', fontsize=25)
    sub.set_xscale('log')
    sub.set_xlim([1e-2, 10.])
    fig.savefig(os.path.join(dir_fpm,
                             'p0k_fpm_tng_z%.2f%s.png' % (z, str_flag)),
                bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    for fh, lbl, c in zip([f_fpm, f_tng], ['FastPM', 'Illustris TNG'],
                          ['k', 'C1']):
        i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
            f_b123(fh), skiprows=1, unpack=True, usecols=range(10))
        klim = ((i_k * kf <= 1.) & (i_k * kf >= 0.01) & (j_k * kf <= 1.) &
                (j_k * kf >= 0.01) & (l_k * kf <= 1.) & (l_k * kf >= 0.01))

        i_k, j_k, l_k = i_k[klim], j_k[klim], l_k[klim]
        ijl = UT.ijl_order(i_k, j_k, l_k, typ='GM')  # order of triangles

        sub.scatter(range(np.sum(klim)), b123[klim][ijl], c=c, s=5, label=lbl)
        sub.plot(range(np.sum(klim)), b123[klim][ijl], c=c)

    sub.legend(loc='upper right', markerscale=4, handletextpad=0., fontsize=20)
    sub.set_ylabel('$B(k_1, k_2, k_3)$', fontsize=25)
    sub.set_yscale('log')
    sub.set_ylim([1e3, 5e6])
    sub.set_xlabel(r'$k_1 \le k_2 \le k_3$ triangle indices', fontsize=25)
    sub.set_xlim([0, np.sum(klim)])
    fig.savefig(os.path.join(dir_fpm,
                             'bk_fpm_tng_z%.2f%s.png' % (z, str_flag)),
                bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    for fh, lbl, c in zip([f_fpm, f_tng], ['FastPM', 'Illustris TNG'],
                          ['k', 'C1']):
        i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
            f_b123(fh), skiprows=1, unpack=True, usecols=range(10))
        klim = ((i_k * kf >= 0.01) & (j_k * kf >= 0.01) & (l_k * kf >= 0.01))
        i_k, j_k, l_k = i_k[klim], j_k[klim], l_k[klim]
        ijl = UT.ijl_order(i_k, j_k, l_k, typ='GM')  # order of triangles

        sub.scatter(range(np.sum(klim)), q123[klim][ijl], c=c, s=5, label=lbl)
        sub.plot(range(np.sum(klim)), q123[klim][ijl], c=c)

    sub.legend(loc='upper right', markerscale=4, handletextpad=0., fontsize=20)
    sub.set_ylabel('$Q(k_1, k_2, k_3)$', fontsize=25)
    sub.set_ylim([0., 1.])
    sub.set_xlabel(r'$k_1 \le k_2 \le k_3$ triangle indices', fontsize=25)
    sub.set_xlim([0, np.sum(klim)])
    fig.savefig(os.path.join(dir_fpm,
                             'qk_fpm_tng_z%.2f%s.png' % (z, str_flag)),
                bbox_inches='tight')
    return None
Пример #13
0
def fastPM(z, str_flag='', mh_lim=15., Lbox=205., Nmax=40, Ncut=3, step=3):
    ''' calculate the powerspectrum and bispectrum of the fastPM catalog.
    '''
    dir_fpm = os.path.join(UT.dat_dir(), 'fastpm')
    f_halo = ('halocat_FastPM_40step_N250_IC500_B2_z%.2f%s.txt' %
              (z, str_flag))
    f_mlim = ('halocat_FastPM_40step_N250_IC500_B2_z%.2f%s.mlim%.fe10' %
              (z, str_flag, mh_lim))
    f_hdf5 = ('%s/%s.hdf5' % (dir_fpm, f_mlim))
    f_pell = ('%s/pySpec.Plk.%s.Lbox%.f.Ngrid360.dat' %
              (dir_fpm, f_mlim, Lbox))
    f_pnkt = ('%s/pySpec.Plk.%s.Lbox%.f.Ngrid360.nbodykit.dat' %
              (dir_fpm, f_mlim, Lbox))
    f_b123 = ('%s/pySpec.Bk.%s.Lbox%.f.Ngrid360.step%i.Ncut%i.Nmax%i.dat' %
              (dir_fpm, f_mlim, Lbox, step, Ncut, Nmax))

    kf = 2. * np.pi / Lbox

    if not os.path.isfile(f_hdf5):
        # read in halo catalog
        dat_halo = np.loadtxt(os.path.join(dir_fpm, f_halo),
                              unpack=True,
                              usecols=[0, 1, 2, 3, 7, 8, 9])
        mh = dat_halo[0]
        Nhalo = len(mh)
        print('%i halos in %.f Mpc/h box' % (len(mh), Lbox))
        print('%f < M_h/10^10Msun < %f' % (mh.min(), mh.max()))
        xyz = np.zeros((Nhalo, 3))
        xyz[:, 0] = dat_halo[1]
        xyz[:, 1] = dat_halo[2]
        xyz[:, 2] = dat_halo[3]
        print('%f < x < %f' % (xyz[:, 0].min(), xyz[:, 0].max()))
        print('%f < y < %f' % (xyz[:, 1].min(), xyz[:, 1].max()))
        print('%f < z < %f' % (xyz[:, 2].min(), xyz[:, 2].max()))

        vxyz = np.zeros((Nhalo, 3))
        vxyz[:, 0] = dat_halo[4]
        vxyz[:, 1] = dat_halo[5]
        vxyz[:, 2] = dat_halo[6]

        mlim = (mh > 15.)
        Nhalo = np.sum(mlim)
        print('%i halos in %.f Mpc/h box with Mh > %f' % (Nhalo, Lbox, mh_lim))

        mh = mh[mlim]
        xyz = xyz[mlim, :]
        vxyz = vxyz[mlim, :]

        f = h5py.File(f_hdf5, 'w')
        f.create_dataset('xyz', data=xyz)
        f.create_dataset('vxyz', data=vxyz)
        f.create_dataset('mhalo', data=mh)
        f.close()
    else:
        f = h5py.File(f_hdf5, 'r')
        xyz = f['xyz'].value
        vxyz = f['vxyz'].value
        mh = f['mhalo'].value
        Nhalo = xyz.shape[0]
        print('%i halos in %.f Mpc/h box with Mh > %f' %
              (len(mh), Lbox, mh_lim))

    nhalo = float(Nhalo) / Lbox**3
    print('number density = %f' % nhalo)
    print('1/nbar = %f' % (1. / nhalo))

    # calculate powerspectrum
    if not os.path.isfile(f_pell):
        delta = pySpec.FFTperiodic(xyz.T,
                                   fft='fortran',
                                   Lbox=Lbox,
                                   Ngrid=360,
                                   silent=False)
        delta_fft = pySpec.reflect_delta(delta, Ngrid=360)

        # calculate powerspectrum monopole
        k, p0k, cnts = pySpec.Pk_periodic(delta_fft)
        k *= kf
        p0k = p0k / (kf**3) - 1. / nhalo
        # save to file
        hdr = ('pySpectrum P_l=0(k). Nhalo=%i, Lbox=%.f, k_f=%.5e, SN=%.5e' %
               (Nhalo, Lbox, kf, 1. / nhalo))
        hdr += '\n k, p0k, counts'
        np.savetxt(f_pell,
                   np.array([k, p0k, cnts]).T,
                   fmt='%.5e %.5e %.5e',
                   delimiter='\t',
                   header=hdr)
    else:
        k, p0k, cnts = np.loadtxt(f_pell,
                                  skiprows=1,
                                  unpack=True,
                                  usecols=[0, 1, 2])

    # calculate P(k) using nbodykit for santiy check
    if not os.path.isfile(f_pnkt):
        cosmo = NBlab.cosmology.Planck15

        halo_data = {}
        halo_data['Position'] = xyz
        halo_data['Velocity'] = vxyz
        halo_data['Mass'] = mh
        print("putting it into array catalog")
        halos = NBlab.ArrayCatalog(halo_data,
                                   BoxSize=np.array([Lbox, Lbox, Lbox]))
        print("putting it into halo catalog")
        halos = NBlab.HaloCatalog(halos, cosmo=cosmo, redshift=z, mdef='vir')
        print("putting it into mesh")
        mesh = halos.to_mesh(window='tsc',
                             Nmesh=360,
                             compensated=True,
                             position='Position')
        print("calculating powerspectrum")
        r = NBlab.FFTPower(mesh, mode='1d', dk=kf, kmin=kf, poles=[0, 2, 4])
        poles = r.poles
        plk = {'k': poles['k']}
        for ell in [0, 2, 4]:
            P = (poles['power_%d' % ell].real)
            if ell == 0:
                P = P - poles.attrs[
                    'shotnoise']  # subtract shotnoise from monopole
            plk['p%dk' % ell] = P
        plk['shotnoise'] = poles.attrs['shotnoise']  # save shot noise term

        # header
        hdr = ('pySpectrum P_l(k). Nhalo=%i, Lbox=%.f, k_f=%.5e, SN=%.5e' %
               (Nhalo, Lbox, kf, plk['shotnoise']))
        hdr += '\n k, p0k, p2k, p4k'
        # save to file
        np.savetxt(f_pnkt,
                   np.array([plk['k'], plk['p0k'], plk['p2k'], plk['p4k']]).T,
                   header=hdr)
    else:
        _k, _p0k, _p2k, _p4k = np.loadtxt(f_pnkt,
                                          skiprows=1,
                                          unpack=True,
                                          usecols=[0, 1, 2, 3])
        plk = {}
        plk['k'] = _k
        plk['p0k'] = _p0k
        plk['p2k'] = _p2k
        plk['p4k'] = _p4k

    # calculate bispectrum
    if not os.path.isfile(f_b123):
        # calculate bispectrum
        bispec = pySpec.Bk_periodic(xyz.T,
                                    Lbox=Lbox,
                                    Ngrid=360,
                                    Nmax=40,
                                    Ncut=3,
                                    step=3,
                                    fft='pyfftw',
                                    nthreads=1,
                                    silent=False)

        i_k = bispec['i_k1']
        j_k = bispec['i_k2']
        l_k = bispec['i_k3']
        p0k1 = bispec['p0k1']
        p0k2 = bispec['p0k2']
        p0k3 = bispec['p0k3']
        b123 = bispec['b123']
        b123_sn = bispec['b123_sn']
        q123 = bispec['q123']
        counts = bispec['counts']
        # save to file
        hdr = 'pyspectrum bispectrum calculation test. k_f = 2pi/%.1f' % Lbox
        hdr += '\n i_k1, i_k2, i_k3, p0k1, p0k2, p0k3, bk, qk, counts, bk_shotnoise'
        np.savetxt(f_b123,
                   np.array([
                       i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts,
                       b123_sn
                   ]).T,
                   fmt='%i %i %i %.5e %.5e %.5e %.5e %.5e %.5e %.5e',
                   delimiter='\t',
                   header=hdr)
    else:
        i_k, j_k, l_k, p0k1, p0k2, p0k3, b123, q123, counts, b123_sn = np.loadtxt(
            f_b123, skiprows=1, unpack=True, usecols=range(10))

    # plot powerspecrtrum shape triangle plot
    fig = plt.figure(figsize=(5, 5))
    sub = fig.add_subplot(111)
    sub.plot(k, p0k, c='k', lw=1, label='pySpectrum')
    sub.plot(plk['k'], plk['p0k'], c='C1', lw=1, label='nbodykit')
    iksort = np.argsort(i_k)
    sub.plot(i_k[iksort] * kf,
             p0k1[iksort],
             c='k',
             lw=1,
             ls='--',
             label='bispectrum code')
    sub.legend(loc='lower left', fontsize=20)
    sub.set_ylabel('$P_0(k)$', fontsize=25)
    sub.set_ylim([1e0, 1e4])
    sub.set_yscale('log')
    sub.set_xlabel('$k$', fontsize=25)
    sub.set_xlim([1e-2, 10.])
    sub.set_xscale('log')
    fig.savefig(f_pell.replace('.dat', '.png'), bbox_inches='tight')

    # plot bispectrum shape triangle plot
    nbin = 31
    x_bins = np.linspace(0., 1., nbin + 1)
    y_bins = np.linspace(0.5, 1., (nbin // 2) + 1)

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    Bgrid = Plots._BorQgrid(
        l_k.astype(float) / i_k.astype(float),
        j_k.astype(float) / i_k.astype(float), q123, counts, x_bins, y_bins)
    bplot = plt.pcolormesh(x_bins,
                           y_bins,
                           Bgrid.T,
                           vmin=0,
                           vmax=1,
                           cmap='RdBu')
    cbar = plt.colorbar(bplot, orientation='vertical')
    sub.set_title(r'$Q(k_1, k_2, k_3)$ FastPM halo catalog', fontsize=25)
    sub.set_xlabel('$k_3/k_1$', fontsize=25)
    sub.set_ylabel('$k_2/k_1$', fontsize=25)
    fig.savefig(f_b123.replace('.dat', '.Qk_shape.png'), bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    Bgrid = Plots._BorQgrid(
        l_k.astype(float) / i_k.astype(float),
        j_k.astype(float) / i_k.astype(float), b123, counts, x_bins, y_bins)
    bplot = plt.pcolormesh(x_bins,
                           y_bins,
                           Bgrid.T,
                           norm=LogNorm(vmin=1e6, vmax=1e8),
                           cmap='RdBu')
    cbar = plt.colorbar(bplot, orientation='vertical')
    sub.set_title(r'$B(k_1, k_2, k_3)$ FastPM halo catalog', fontsize=25)
    sub.set_xlabel('$k_3/k_1$', fontsize=25)
    sub.set_ylabel('$k_2/k_1$', fontsize=25)
    fig.savefig(f_b123.replace('.dat', '.Bk_shape.png'), bbox_inches='tight')

    # plot bispectrum amplitude
    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    sub.scatter(range(len(b123)), q123, c='k', s=1)
    sub.set_xlabel(r'$k_1 > k_2 > k_3$ triangle index', fontsize=25)
    sub.set_xlim([0, len(b123)])
    sub.set_ylabel(r'$Q(k_1, k_2, k_3)$', fontsize=25)
    sub.set_ylim([0., 1.])
    fig.savefig(f_b123.replace('.dat', '.Qk.png'), bbox_inches='tight')

    fig = plt.figure(figsize=(10, 5))
    sub = fig.add_subplot(111)
    sub.scatter(range(len(b123)), b123, c='k', s=1)
    sub.set_xlabel(r'$k_1 > k_2 > k_3$ triangle index', fontsize=25)
    sub.set_xlim([0, len(b123)])
    sub.set_ylabel(r'$B(k_1, k_2, k_3)$', fontsize=25)
    sub.set_yscale('log')
    fig.savefig(f_b123.replace('.dat', '.Bk.png'), bbox_inches='tight')
    return None
Пример #14
0
mpl.rcParams['text.usetex'] = True
mpl.rcParams['font.family'] = 'serif'
mpl.rcParams['axes.linewidth'] = 1.5
mpl.rcParams['axes.xmargin'] = 1
mpl.rcParams['xtick.labelsize'] = 'x-large'
mpl.rcParams['xtick.major.size'] = 5
mpl.rcParams['xtick.major.width'] = 1.5
mpl.rcParams['ytick.labelsize'] = 'x-large'
mpl.rcParams['ytick.major.size'] = 5
mpl.rcParams['ytick.major.width'] = 1.5
mpl.rcParams['legend.frameon'] = False

if __name__ == "__main__":
    kf = 2. * np.pi / 2600.

    x, y, z, vx, vy, vz = np.loadtxt(os.path.join(UT.dat_dir(), 'BoxN1.mock'),
                                     unpack=True,
                                     usecols=[0, 1, 2, 3, 4, 5])
    xyz = np.zeros((3, len(x)))
    xyz[0, :] = x
    xyz[1, :] = y
    xyz[2, :] = z

    vxyz = np.zeros((3, len(x)))
    vxyz[0, :] = vx
    vxyz[1, :] = vy
    vxyz[2, :] = vz

    s_xyz = pySpec.applyRSD(xyz,
                            vxyz,
                            0.5,