Ejemplo n.º 1
0
def test_isotropic_cs(chunk):
    """Test isotropic cross spectrum"""
    N = 16
    da = xr.DataArray(
        np.random.rand(N, N), dims=["y", "x"], coords={"y": range(N), "x": range(N)}
    )
    da2 = xr.DataArray(
        np.random.rand(N, N), dims=["y", "x"], coords={"y": range(N), "x": range(N)}
    )

    iso_cs = xrft.isotropic_cross_spectrum(da, da2, window=True)
    npt.assert_equal(np.ma.masked_invalid(iso_cs).mask.sum(), 0.0)

    da2 = xr.DataArray(
        np.random.rand(N, N),
        dims=["lat", "lon"],
        coords={"lat": range(N), "lon": range(N)},
    )
    with pytest.raises(ValueError):
        xrft.isotropic_cross_spectrum(da, da2)

    da = xr.DataArray(
        np.random.rand(2, 5, 16, 32),
        dims=["time", "z", "y", "x"],
        coords={
            "time": np.array(["2019-04-18", "2019-04-19"], dtype="datetime64"),
            "zz": ("z", np.arange(5)),
            "z": np.arange(5),
            "y": np.arange(16),
            "x": np.arange(32),
        },
    )
    da2 = xr.DataArray(
        np.random.rand(2, 5, 16, 32),
        dims=["time", "z", "y", "x"],
        coords={
            "time": np.array(["2019-04-18", "2019-04-19"], dtype="datetime64"),
            "zz": ("z", np.arange(5)),
            "z": np.arange(5),
            "y": np.arange(16),
            "x": np.arange(32),
        },
    )

    with pytest.raises(ValueError):
        xrft.isotropic_cross_spectrum(da, da2, dim=["z", "y", "x"])

    if chunk:
        da = da.chunk({"time": 1})
        da2 = da2.chunk({"time": 1})

    iso_cs = xrft.isotropic_cross_spectrum(da, da2, dim=["y", "x"], window=True)
    npt.assert_equal(np.ma.masked_invalid(iso_cs).mask.sum(), 0.0)
Ejemplo n.º 2
0
def test_isotropic_cs():
    """Test isotropic cross spectrum"""
    N = 16
    da = xr.DataArray(np.random.rand(N,N),
                    dims=['y','x'], coords={'y':range(N),'x':range(N)})
    da2 = xr.DataArray(np.random.rand(N,N),
                    dims=['y','x'], coords={'y':range(N),'x':range(N)})

    iso_cs = xrft.isotropic_cross_spectrum(da, da2, window=True)
    npt.assert_equal(np.ma.masked_invalid(iso_cs.isel(freq_r=slice(1,None))
                                         ).mask.sum(), 0.)

    da2 = xr.DataArray(np.random.rand(N,N),
                    dims=['lat','lon'],
                    coords={'lat':range(N),'lon':range(N)})
    with pytest.raises(ValueError):
        xrft.isotropic_cross_spectrum(da, da2)

    da = xr.DataArray(np.random.rand(2,5,16,32),
                  dims=['time','z','y','x'],
                  coords={'time': np.array(['2019-04-18', '2019-04-19'],
                                          dtype='datetime64'),
                         'zz': ('z',np.arange(5)), 'z': np.arange(5),
                         'y': np.arange(16), 'x': np.arange(32)})
    da2 = xr.DataArray(np.random.rand(2,5,16,32),
                  dims=['time','z','y','x'],
                  coords={'time': np.array(['2019-04-18', '2019-04-19'],
                                          dtype='datetime64'),
                         'zz': ('z',np.arange(5)), 'z': np.arange(5),
                         'y': np.arange(16), 'x': np.arange(32)})

    with pytest.raises(ValueError):
        xrft.isotropic_cross_spectrum(da, da2, dim=['z','y','x'])
    iso_cs = xrft.isotropic_cross_spectrum(da, da2, dim=['y','x'],
                                          window=True)
    npt.assert_equal(
            np.ma.masked_invalid(iso_cs.isel(freq_r=slice(1,None))).mask.sum(),
            0.)