Beispiel #1
0
    def test_ignored_interpolation_params_issue340(self, caplog):
        node = Array(
            source=[0, 1, 2],
            coordinates=Coordinates([[0, 2, 1]], dims=["time"]),
            interpolation={"method": "nearest", "params": {"fake_param": 1.1, "spatial_tolerance": 1}},
        )

        with warnings.catch_warnings():
            warnings.filterwarnings("ignore", category=DeprecationWarning)
            node.eval(Coordinates([[0.5, 1.5]], ["time"]))
        assert "interpolation parameter 'fake_param' was ignored" in caplog.text
        assert "interpolation parameter 'spatial_tolerance' was ignored" not in caplog.text
Beispiel #2
0
    def test_get_data(self):
        """ defined get_data function"""

        node = Array(source=self.data, coordinates=self.coordinates)
        output = node.eval(self.coordinates)

        assert isinstance(output, UnitsDataArray)
        assert output.values[0, 0] == self.data[0, 0]
        assert output.values[4, 5] == self.data[4, 5]
Beispiel #3
0
    def test_stacked_coords_with_partial_dims_issue123(self):
        node = Array(
            source=[0, 1, 2],
            coordinates=Coordinates(
                [[[0, 2, 1], [10, 12, 11], ["2018-01-01", "2018-01-02", "2018-01-03"]]], dims=["lat_lon_time"]
            ),
            interpolation="nearest",
        )

        # unstacked or and stacked requests without time
        o1 = node.eval(Coordinates([[0.5, 1.5], [10.5, 11.5]], dims=["lat", "lon"]))
        o2 = node.eval(Coordinates([[[0.5, 1.5], [10.5, 11.5]]], dims=["lat_lon"]))

        assert_array_equal(o1.data, [[0, 2], [2, 1]])
        assert_array_equal(o2.data, [0, 1])

        # request without lat or lon
        o3 = node.eval(Coordinates(["2018-01-01"], dims=["time"]))
        assert o3.data[0] == 0
Beispiel #4
0
    def test_get_data_multiple(self):
        data = np.random.rand(11, 11, 2)
        node = Array(source=data,
                     coordinates=self.coordinates,
                     outputs=["a", "b"])
        output = node.eval(self.coordinates)
        assert isinstance(output, UnitsDataArray)
        assert output.dims == ("lat", "lon", "output")
        np.testing.assert_array_equal(output["output"], ["a", "b"])
        np.testing.assert_array_equal(output.sel(output="a"), data[:, :, 0])
        np.testing.assert_array_equal(output.sel(output="b"), data[:, :, 1])

        node = Array(source=data,
                     coordinates=self.coordinates,
                     outputs=["a", "b"],
                     output="b")
        output = node.eval(self.coordinates)
        assert isinstance(output, UnitsDataArray)
        assert output.dims == ("lat", "lon")
        np.testing.assert_array_equal(output, data[:, :, 1])
Beispiel #5
0
    def test_interpolation_mixin(self):
        class InterpArray(InterpolationMixin, ArrayBase):
            pass

        data = np.random.rand(4, 5)
        native_coords = Coordinates([np.linspace(0, 3, 4), np.linspace(0, 4, 5)], ["lat", "lon"])
        coords = Coordinates([np.linspace(0, 3, 7), np.linspace(0, 4, 9)], ["lat", "lon"])

        iarr_src = InterpArray(source=data, coordinates=native_coords, interpolation="bilinear")
        arr_src = Array(source=data, coordinates=native_coords, interpolation="bilinear")
        arrb_src = ArrayBase(source=data, coordinates=native_coords)

        iaso = iarr_src.eval(coords)
        aso = arr_src.eval(coords)
        abso = arrb_src.eval(coords)

        np.testing.assert_array_equal(iaso.data, aso.data)
        np.testing.assert_array_equal(abso.data, data)
Beispiel #6
0
def setup_module():
    global coords, source, data, multisource, bdata
    coords = podpac.Coordinates(
        [
            podpac.clinspace(0, 1, 10),
            podpac.clinspace(0, 1, 10),
            podpac.crange("2018-01-01", "2018-01-10", "1,D")
        ],
        dims=["lat", "lon", "time"],
    )

    a = np.random.random(coords.shape)
    a[3, 0, 0] = np.nan
    a[0, 3, 0] = np.nan
    a[0, 0, 3] = np.nan
    source = Array(source=a, coordinates=coords)
    data = source.eval(coords)

    ab = np.stack([a, 2 * a], -1)
    multisource = Array(source=ab, coordinates=coords, outputs=["a", "b"])
    bdata = 2 * data