Ejemplo n.º 1
0
    def test_select_multiple_shaped(self):
        lat = np.linspace(0, 1, 12).reshape((3, 4))
        lon = np.linspace(10, 20, 12).reshape((3, 4))
        c = StackedCoordinates([lat, lon], dims=["lat", "lon"])

        # this should be the AND of both intersections
        bounds = {"lat": [0.25, 0.95], "lon": [10.5, 17.5]}
        E0, E1 = [0, 1, 1, 1, 1, 2], [3, 0, 1, 2, 3, 0]
        s = c.select(bounds)
        assert s == c[E0, E1]

        s, I = c.select(bounds, return_index=True)
        assert s == c[I]
        assert s == c[E0, E1]
Ejemplo n.º 2
0
    def test_select_multiple(self):
        lat = ArrayCoordinates1d([0, 1, 2, 3, 4, 5], name="lat")
        lon = ArrayCoordinates1d([10, 20, 30, 40, 50, 60], name="lon")
        c = StackedCoordinates([lat, lon])

        # this should be the AND of both intersections
        slat = c.select({"lat": [0.5, 3.5]})
        slon = c.select({"lon": [25, 55]})
        s = c.select({"lat": [0.5, 3.5], "lon": [25, 55]})
        assert slat == c[1:4]
        assert slon == c[2:5]
        assert s == c[2:4]

        s, I = c.select({"lat": [0.5, 3.5], "lon": [25, 55]}, return_index=True)
        assert s == c[2:4]
        assert s == c[I]
Ejemplo n.º 3
0
    def test_select_single_shaped(self):
        lat = np.linspace(0, 1, 12).reshape((3, 4))
        lon = np.linspace(10, 20, 12).reshape((3, 4))
        c = StackedCoordinates([lat, lon], dims=["lat", "lon"])

        # single dimension
        bounds = {"lat": [0.25, 0.55]}
        E0, E1 = [0, 1, 1, 1], [3, 0, 1, 2]  # expected

        s = c.select(bounds)
        assert isinstance(s, StackedCoordinates)
        assert s == c[E0, E1]

        s, I = c.select(bounds, return_index=True)
        assert isinstance(s, StackedCoordinates)
        assert s == c[I]
        assert s == c[E0, E1]

        # a different single dimension
        bounds = {"lon": [12.5, 17.5]}
        E0, E1 = [0, 1, 1, 1, 1, 2], [3, 0, 1, 2, 3, 0]

        s = c.select(bounds)
        assert isinstance(s, StackedCoordinates)
        assert s == c[E0, E1]

        s, I = c.select(bounds, return_index=True)
        assert isinstance(s, StackedCoordinates)
        assert s == c[I]
        assert s == c[E0, E1]

        # outer
        bounds = {"lat": [0.25, 0.75]}
        E0, E1 = [0, 0, 1, 1, 1, 1, 2, 2], [2, 3, 0, 1, 2, 3, 0, 1]

        s = c.select(bounds, outer=True)
        assert isinstance(s, StackedCoordinates)
        assert s == c[E0, E1]

        s, I = c.select(bounds, outer=True, return_index=True)
        assert isinstance(s, StackedCoordinates)
        assert s == c[I]
        assert s == c[E0, E1]

        # no matching dimension
        bounds = {"alt": [0, 10]}
        s = c.select(bounds)
        assert s == c

        s, I = c.select(bounds, return_index=True)
        assert s == c[I]
        assert s == c
Ejemplo n.º 4
0
    def test_select_single(self):
        lat = ArrayCoordinates1d([0, 1, 2, 3], name="lat")
        lon = ArrayCoordinates1d([10, 20, 30, 40], name="lon")
        time = ArrayCoordinates1d(
            ["2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04"],
            name="time")
        c = StackedCoordinates([lat, lon, time])

        # single dimension
        s = c.select({"lat": [0.5, 2.5]})
        assert s == c[1:3]

        s, I = c.select({"lat": [0.5, 2.5]}, return_index=True)
        assert s == c[I]
        assert s == c[1:3]

        # a different single dimension
        s = c.select({"lon": [5, 25]})
        assert s == c[0:2]

        s, I = c.select({"lon": [5, 25]}, return_index=True)
        assert s == c[I]
        assert s == c[0:2]

        # outer
        s = c.select({"lat": [0.5, 2.5]}, outer=True)
        assert s == c[0:4]

        s, I = c.select({"lat": [0.5, 2.5]}, outer=True, return_index=True)
        assert s == c[I]
        assert s == c[0:4]

        # no matching dimension
        s = c.select({"alt": [0, 10]})
        assert s == c

        s, I = c.select({"alt": [0, 10]}, return_index=True)
        assert s == c[I]
        assert s == c