Esempio n. 1
0
def test_power1d_ordinary_freq():
    p = [0] * 40
    for i in range(40):
        pb = PowerBox(8001, dim=1, pk=lambda k: 1.0 * k**-3., boxlength=1.0)
        p[i], k = get_power(pb.delta_x(), pb.boxlength)

    assert np.allclose(np.mean(np.array(p), axis=0)[2000:],
                       1.0 * k[2000:]**-3.,
                       rtol=2)
Esempio n. 2
0
def test_resolution():
    var = [0] * 6
    for i in range(6):
        pb = PowerBox(64 * 2**i,
                      dim=2,
                      pk=lambda k: 1.0 * k**-2.,
                      boxlength=1.0,
                      angular_freq=True)
        var[i] = np.var(gaussian_filter(pb.delta_x(), sigma=2**i, mode='wrap'))
    print(var / var[0])
    assert np.allclose(var / var[0], 1, atol=1e-2)
Esempio n. 3
0
class TestDirect(object):
    def setup_method(self, test_method):
        self.pb = PowerBox(N, lambda k: k**-2., dim=1)

    def test_hermitian(self):
        ensure_hermitian(self.pb.delta_k())

    def test_reality_elementwise(self):
        ensure_reality_elementwise(self.pb.delta_x())

    def test_reality(self):
        ensure_reality(self.pb.delta_x())
Esempio n. 4
0
def test_k_zero_ignore():
    pb = PowerBox(50, dim=2, pk=lambda k: 1.0 * k**-2., boxlength=1.0, b=1)

    dx = pb.delta_x()
    p1, k1 = get_power(dx, pb.boxlength, bin_ave=False)
    p0, k0 = get_power(dx, pb.boxlength, ignore_zero_mode=True, bin_ave=False)

    assert np.all(k1 == k0)

    assert np.all(p1[1:] == p0[1:])

    assert p1[0] != p0[0]
Esempio n. 5
0
def test_ln_vs_straight_standard_freq():
    # Set up two boxes with exactly the same parameters
    pb = PowerBox(128,lambda u : 12.*u**-2., dim=3,seed=1234,boxlength=1200.,a=0,b=2*np.pi)
    ln_pb = LogNormalPowerBox(128,lambda u : 12.*u**-2., dim=3,seed=1234,boxlength=1200.,a=0,b=2*np.pi)


    pk = get_power(pb.delta_x(),pb.boxlength,a=0,b=2*np.pi)[0]
    ln_pk = get_power(ln_pb.delta_x(), pb.boxlength,a=0,b=2*np.pi)[0]

    pk = pk[1:-1]
    ln_pk = ln_pk[1:-1]
    print(np.mean(np.abs((pk-ln_pk)/pk)), np.abs((pk-ln_pk)/pk))
    assert np.mean(np.abs((pk-ln_pk)/pk)) < 2e-1   # 10% agreement
Esempio n. 6
0
def test_power2d():
    p = [0] * 5
    for i in range(5):
        pb = PowerBox(200,
                      dim=2,
                      pk=lambda k: 1.0 * k**-2.,
                      boxlength=1.0,
                      b=1)
        p[i], k = get_power(pb.delta_x(), pb.boxlength, b=1)

    assert np.allclose(np.mean(np.array(p), axis=0)[100:],
                       1.0 * k[100:]**-2.,
                       rtol=2)
Esempio n. 7
0
def test_power1d_halfN():
    p = [0] * 40
    for i in range(40):
        pb = PowerBox(4001,
                      dim=1,
                      pk=lambda k: 1.0 * k**-3.,
                      boxlength=1.0,
                      b=1)
        p[i], k = get_power(pb.delta_x(), pb.boxlength, b=1)

    assert np.allclose(np.mean(np.array(p), axis=0)[1000:],
                       1.0 * k[1000:]**-3.,
                       rtol=2)
Esempio n. 8
0
def test_k_weights():
    pb = PowerBox(50, dim=2, pk=lambda k: 1.0 * k**-2., boxlength=1.0, b=1)

    dx = pb.delta_x()

    k_weights = np.ones_like(dx)
    k_weights[:, 25] = 0

    p1, k1 = get_power(dx, pb.boxlength, bin_ave=False)
    p0, k0 = get_power(dx, pb.boxlength, bin_ave=False, k_weights=k_weights)

    assert np.all(k1 == k0)
    assert not np.allclose(p1, p0)
Esempio n. 9
0
def test_discrete_power_gaussian():
    pb = PowerBox(N=512,
                  dim=2,
                  boxlength=100.,
                  pk=lambda u: 0.1 * u**-1.5,
                  ensure_physical=True)

    sample = pb.create_discrete_sample(nbar=1000.)
    power, bins = get_power(sample, pb.boxlength, N=pb.N)

    res = np.mean(np.abs(power[50:-50] / (0.1 * bins[50:-50]**-1.5) - 1))

    print(res)
    assert res < 1e-1
Esempio n. 10
0
 def _powerbox(self):
     if self.params['use_lognormal']:
         return LogNormalPowerBox(N=self.ncells, pk=self.params['power_spectrum'],
                                  dim=2, boxlength=np.max(self.sky_size).value,a=0,b=2*np.pi)
     else:
         return PowerBox(N=self.ncells, pk=self.params['power_spectrum'],
                         dim=2, boxlength=np.max(self.sky_size).value,a=0,b=2*np.pi)
Esempio n. 11
0
class TestDirectEven(TestDirect):
    def setup_method(self, test_method):
        self.pb = PowerBox(N - 1, lambda k: k**-2., dim=2)

    def test_reality_elementwise(self):
        return True  ## It won't be element-wise correct for even case.

    def test_reality(self):
        ensure_reality(self.pb.delta_x())
Esempio n. 12
0
 def powerbox(self):
     if self.use_lognormal:
         return LogNormalPowerBox(N=self.ncells,
                                  pk=self.point_source_power_spec,
                                  dim=2,
                                  boxlength=np.max(self.sky_size.value),
                                  a=self.a,
                                  b=self.b)
     else:
         return PowerBox(N=self.ncells,
                         pk=self.point_source_power_spec,
                         dim=2,
                         boxlength=np.max(self.sky_size).value,
                         a=self.a,
                         b=self.b)
Esempio n. 13
0
 def setup_method(self, test_method):
     self.pb = PowerBox(N - 1, lambda k: k**-2., dim=2)
Esempio n. 14
0
def test_power3d():
    pb = PowerBox(50, dim=2, pk=lambda k: 1.0 * k**-2., boxlength=1.0, b=1)
    p, k = get_power(pb.delta_x(), pb.boxlength, b=1)

    print(p / (1.0 * k**-2.))
    assert np.allclose(p, 1.0 * k**-2., rtol=2)