Пример #1
0
def test_DWT_1dsignal(par):
    """Dot-test and inversion for DWT operator for 1d signal"""
    DWTop = DWT(dims=[par["nt"]], dir=0, wavelet="haar", level=3)
    x = np.random.normal(0.0, 1.0, par["nt"]) + par["imag"] * np.random.normal(
        0.0, 1.0, par["nt"]
    )

    assert dottest(
        DWTop, DWTop.shape[0], DWTop.shape[1], complexflag=0 if par["imag"] == 0 else 3
    )

    y = DWTop * x
    xadj = DWTop.H * y  # adjoint is same as inverse for dwt
    xinv = lsqr(DWTop, y, damp=1e-10, iter_lim=10, show=0)[0]

    assert_array_almost_equal(x, xadj, decimal=8)
    assert_array_almost_equal(x, xinv, decimal=8)
Пример #2
0
def test_DWT_3dsignal(par):
    """Dot-test and inversion for DWT operator for 3d signal
    """
    for dir in [0, 1, 2]:
        DWTop = DWT(dims=(par['nt'], par['nx'], par['ny']),
                    dir=dir,
                    wavelet='haar',
                    level=3)
        x = np.random.normal(0., 1., (par['nt'], par['nx'], par['ny'])) + \
            par['imag'] * np.random.normal(0., 1., (par['nt'], par['nx'], par['ny']))

        assert dottest(DWTop,
                       DWTop.shape[0],
                       DWTop.shape[1],
                       complexflag=0 if par['imag'] == 0 else 3)

        y = DWTop * x.ravel()
        xadj = DWTop.H * y  # adjoint is same as inverse for dwt
        xinv = lsqr(DWTop, y, damp=1e-10, iter_lim=10, show=0)[0]

        assert_array_almost_equal(x.ravel(), xadj, decimal=8)
        assert_array_almost_equal(x.ravel(), xinv, decimal=8)
Пример #3
0
def test_unknown_wavelet(par):
    """Check error is raised if unknown wavelet is chosen is passed"""
    with pytest.raises(ValueError):
        _ = DWT(dims=par["nt"], wavelet="foo")