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]
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]
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
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