示例#1
0
def test_constrain_correlation_nolag():
    f1 = filters.GaussianFilter(radius=5)
    fh = FieldHandler(Ndim=3, Lbox=50, dimensions=16, Pk=(k, Pk), filter=f1)
    f2 = filters.GaussianFilter(radius=6)
    f3 = filters.GaussianFilter(radius=7)
    f4 = filters.GaussianFilter(radius=8)

    X1 = np.array([0, 0, 0])

    c1 = C.DensityConstrain(X1, filter=f1, value=1.69, field_handler=fh)
    c2 = C.GradientConstrain(X1, filter=f2, value=[0, 0, 0], field_handler=fh)
    c3 = C.HessianConstrain(X1,
                            filter=f3,
                            value=[0, 0, 0, 0, 0, 0],
                            field_handler=fh)
    c4 = C.ThirdDerivativeConstrain(X1,
                                    filter=f4,
                                    value=list(range(10)),
                                    field_handler=fh)

    fh.add_constrain(c1)
    fh.add_constrain(c2)
    fh.add_constrain(c3)
    fh.add_constrain(c4)

    cov = fh.compute_covariance()

    # Check positive definite
    evals = np.linalg.eigvalsh(cov)
    assert_array_less(np.zeros_like(evals), evals)

    # Check symmetry
    assert_allclose(cov, cov.T)
示例#2
0
    def test_it(use_cache):

        # Note: here we use the old package's k and Pk so that their result agree can be
        # be compared
        fh = FieldHandler(
            Ndim=3,
            Lbox=50,
            dimensions=16,
            Pk=(c.k, c.Pk),
            use_covariance_cache=use_cache,
            filter=f1,
        )

        c1 = C.DensityConstrain(X1, filter=f1, value=1.69, field_handler=fh)
        c2 = C.GradientConstrain(X2,
                                 filter=f2,
                                 value=[0, 0, 0],
                                 field_handler=fh)
        c3 = C.HessianConstrain(X3,
                                filter=f3,
                                value=[0, 0, 0, 0, 0, 0],
                                field_handler=fh)
        fh.add_constrain(c1)
        fh.add_constrain(c2)
        fh.add_constrain(c3)

        new = fh.compute_covariance() / S

        # Check closeness (note: the order may be different so only
        # check det and eigenvalues)
        det_ref = np.linalg.det(ref)
        det_new = np.linalg.det(new)

        assert_allclose(det_ref, det_new)

        eval_ref = np.linalg.eigvalsh(ref)
        eval_new = np.linalg.eigvalsh(new)

        assert_allclose(eval_ref, eval_new)