Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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]
Exemple #4
0
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)
Exemple #5
0
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
Exemple #6
0
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