def test_array(self): """Test array data source""" from podpac.core.data.types import Array arr = np.random.rand(16, 11) lat = np.random.rand(16) lon = np.random.rand(16) coord = Coordinate(lat_lon=(lat, lon), time=(0, 10, 11), order=['lat_lon', 'time']) node = Array(source=arr, native_coordinates=coord) coordg = Coordinate(lat=(0, 1, 8), lon=(0, 1, 8), order=('lat', 'lon')) coordt = Coordinate(time=(3, 5, 2)) node.eval(coordt) node.eval(coordg)
class TestBasicInterpolation(object): """ Test interpolation methods""" def setup_method(self, method): self.coord_src = Coordinates([ clinspace(45, 0, 16), clinspace(-70., -65., 16), clinspace(0, 1, 2) ], dims=['lat', 'lon', 'time']) LON, LAT, TIME = np.meshgrid(self.coord_src['lon'].coordinates, self.coord_src['lat'].coordinates, self.coord_src['time'].coordinates) self.latSource = LAT self.lonSource = LON self.timeSource = TIME self.nasLat = Array(source=LAT.astype(float), native_coordinates=self.coord_src, interpolation='bilinear') self.nasLon = Array(source=LON.astype(float), native_coordinates=self.coord_src, interpolation='bilinear') self.nasTime = Array(source=TIME.astype(float), native_coordinates=self.coord_src, interpolation='bilinear') def test_raster_to_raster(self): coord_dst = Coordinates( [clinspace(5., 40., 50), clinspace(-68., -66., 100)], dims=['lat', 'lon']) oLat = self.nasLat.eval(coord_dst) oLon = self.nasLon.eval(coord_dst) LON, LAT = np.meshgrid(coord_dst['lon'].coordinates, coord_dst['lat'].coordinates) np.testing.assert_array_almost_equal(oLat.data[..., 0], LAT) np.testing.assert_array_almost_equal(oLon.data[..., 0], LON)
def test_get_data(self): """ defined get_data function""" source = self.data node = Array(source=source, native_coordinates=self.coordinates) output = node.eval(self.coordinates) assert isinstance(output, UnitsDataArray) assert output.values[0, 0] == source[0, 0] assert output.values[4, 5] == source[4, 5]
def setup_module(): global coords, source, data 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, native_coordinates=coords) data = source.eval(coords)
def test_put_and_get_array_datasource_output(): lat = [0, 1, 2] lon = [10, 20, 30, 40] dates = ['2018-01-01', '2018-01-02'] native_coordinates = Coordinates([lat, lon, dates], ['lat', 'lon', 'time']) source = np.zeros(native_coordinates.shape) array_data_source = Array(source=source, native_coordinates=native_coordinates) output = array_data_source.eval(native_coordinates) cache.put(node=array_data_source, data=output, key='output', coordinates=native_coordinates, mode='all', update=False) cached_output = cache.get(node=array_data_source, key='output', coordinates=native_coordinates, mode='all') assert (cached_output == output).all() cache.rem(node='*', key='*', coordinates='*', mode='all') # clear the cache stores
def test_put_and_get_with_different_instances_of_same_key_objects_array_datasource_output( ): lat = [0, 1, 2] lon = [10, 20, 30, 40] dates = ['2018-01-01', '2018-01-02'] # create data source node and coordinates for put operation native_coordinates_put = Coordinates([lat, lon, dates], ['lat', 'lon', 'time']) source_put = np.zeros(native_coordinates_put.shape) array_data_source_put = Array(source=source_put, native_coordinates=native_coordinates_put) output = array_data_source_put.eval(native_coordinates_put) cache.put(node=array_data_source_put, data=output, key='output', coordinates=native_coordinates_put, mode='all', update=False) # create equivalent (but new objects) data source node and coordinates for get operation native_coordinates_get = Coordinates([lat, lon, dates], ['lat', 'lon', 'time']) source_get = np.zeros(native_coordinates_get.shape) array_data_source_get = Array(source=source_get, native_coordinates=native_coordinates_get) cached_output = cache.get(node=array_data_source_get, key='output', coordinates=native_coordinates_get, mode='all') assert (cached_output == output).all() cache.rem(node='*', key='*', coordinates='*', mode='all') # clear the cache stores