Пример #1
0
 def test_multi_geom_dataset_line_string_scalar_values(self):
     geoms = [{
         'geometry': sgeom.LineString([(0, 0), (3, 3), (6, 0)]),
         'z': 1
     }]
     mds = Dataset(geoms, kdims=['x', 'y', 'z'], datatype=[self.datatype])
     self.assertEqual(mds.dimension_values('z'), np.array([1, 1, 1]))
     self.assertEqual(mds.dimension_values('z', expanded=False),
                      np.array([1]))
Пример #2
0
 def test_construct_from_xarray(self):
     try:
         import xarray as xr
     except:
         raise SkipError("Test requires xarray")
     da = xr.DataArray(self.zs, dims=['y', 'x'],
                       coords = {'lat': (('y', 'x'), self.ys),
                                 'lon': (('y', 'x'), self.xs)}, name='z')
     dataset = Dataset(da, ['lon', 'lat'], 'z')
     self.assertEqual(dataset.dimension_values('lon'), self.xs.T.flatten())
     self.assertEqual(dataset.dimension_values('lat'), self.ys.T.flatten())
     self.assertEqual(dataset.dimension_values('z'), self.zs.T.flatten())
Пример #3
0
 def test_geometry_column_not_named_geometry(self):
     # The geodataframe has its geometry column not named 'geometry'
     gdf = geopandas.GeoDataFrame(
         {
             'v': [1, 2],
             'not geometry': [sgeom.Point(0, 1), sgeom.Point(1, 2)],
         },
         geometry='not geometry',
     )
     ds = Dataset(gdf, kdims=['Longitude', 'Latitude'], datatype=[self.datatype])
     self.assertEqual(ds.dimension_values('Longitude'), np.array([0, 1]))
     self.assertEqual(ds.dimension_values('Latitude'), np.array([1, 2]))
Пример #4
0
 def test_geometry_column_not_named_geometry_and_additional_geometry_column(self):
     gdf = geopandas.GeoDataFrame(
         {
             'v': [1, 2],
             'not geometry': [sgeom.Point(0, 1), sgeom.Point(1, 2)],
         },
         geometry='not geometry',
     )
     # The geodataframe contains a column called 'geometry' that doesn't contain geometry data.
     gdf = gdf.rename(columns={'v': 'geometry'})
     ds = Dataset(gdf, kdims=['Longitude', 'Latitude'], datatype=[self.datatype])
     self.assertEqual(ds.dimension_values('Longitude'), np.array([0, 1]))
     self.assertEqual(ds.dimension_values('Latitude'), np.array([1, 2]))
Пример #5
0
 def test_construct_3d_from_xarray(self):
     try:
         import xarray as xr
     except:
         raise SkipError("Test requires xarray")
     zs = np.arange(40).reshape(2, 4, 5)
     da = xr.DataArray(zs, dims=['z', 'y', 'x'],
                       coords = {'lat': (('y', 'x'), self.ys),
                                 'lon': (('y', 'x'), self.xs),
                                 'z': [0, 1]}, name='A')
     dataset = Dataset(da, ['lon', 'lat', 'z'], 'A')
     self.assertEqual(dataset.dimension_values('lon'), self.xs.T.flatten())
     self.assertEqual(dataset.dimension_values('lat'), self.ys.T.flatten())
     self.assertEqual(dataset.dimension_values('z', expanded=False), np.array([0, 1]))
     self.assertEqual(dataset.dimension_values('A'), zs.T.flatten())
Пример #6
0
 def test_construct_3d_from_xarray(self):
     try:
         import xarray as xr
     except:
         raise SkipTest("Test requires xarray")
     zs = np.arange(48).reshape(2, 4, 6)
     da = xr.DataArray(zs, dims=['z', 'y', 'x'],
                       coords = {'lat': (('y', 'x'), self.ys),
                                 'lon': (('y', 'x'), self.xs),
                                 'z': [0, 1]}, name='A')
     dataset = Dataset(da, ['lon', 'lat', 'z'], 'A')
     self.assertEqual(dataset.dimension_values('lon'), self.xs.T.flatten())
     self.assertEqual(dataset.dimension_values('lat'), self.ys.T.flatten())
     self.assertEqual(dataset.dimension_values('z', expanded=False), np.array([0, 1]))
     self.assertEqual(dataset.dimension_values('A'), zs.T.flatten())
Пример #7
0
 def test_dimension_values_vdim(self):
     cube = Dataset(self.cube, kdims=['longitude', 'latitude'])
     self.assertEqual(cube.dimension_values('unknown', flat=False),
                      np.flipud(np.array([[ 0,  4,  8],
                                          [ 1,  5,  9],
                                          [ 2,  6, 10],
                                          [ 3,  7, 11]], dtype=np.int32).T))
Пример #8
0
 def test_dimension_values_vdim(self):
     cube = Dataset(self.cube, kdims=['longitude', 'latitude'])
     self.assertEqual(cube.dimension_values('unknown', flat=False),
                      np.array([[ 0,  4,  8],
                                [ 1,  5,  9],
                                [ 2,  6, 10],
                                [ 3,  7, 11]], dtype=np.int32).T)
Пример #9
0
 def test_irregular_grid_data_values_inverted_y(self):
     nx, ny = 20, 5
     xs, ys = np.meshgrid(np.arange(nx)+0.5, np.arange(ny)*-1+0.5)
     zs = np.arange(100).reshape(5, 20)
     ds = Dataset((xs, ys, zs), ['x', 'y'], 'z')
     self.assertEqual(ds.dimension_values(2, flat=False), zs)
     self.assertEqual(ds.interface.coords(ds, 'x'), xs)
     self.assertEqual(ds.interface.coords(ds, 'y'), ys)
Пример #10
0
 def test_irregular_grid_data_values_inverted_y(self):
     nx, ny = 20, 5
     xs, ys = np.meshgrid(np.arange(nx)+0.5, np.arange(ny)*-1+0.5)
     zs = np.arange(100).reshape(5, 20)
     ds = Dataset((xs, ys, zs), ['x', 'y'], 'z')
     self.assertEqual(ds.dimension_values(2, flat=False), zs)
     self.assertEqual(ds.interface.coords(ds, 'x'), xs)
     self.assertEqual(ds.interface.coords(ds, 'y'), ys)
Пример #11
0
    def test_construct_from_xarray(self):
        try:
            import xarray as xr
        except:
            raise SkipTest("Test requires xarray")
        coords = OrderedDict([('lat', (('y', 'x'), self.ys)),
                              ('lon', (('y', 'x'), self.xs))])
        da = xr.DataArray(self.zs, dims=['y', 'x'], coords=coords, name='z')
        dataset = Dataset(da)

        # Ensure that dimensions are inferred correctly
        self.assertEqual(dataset.kdims, [Dimension('lat'), Dimension('lon')])
        self.assertEqual(dataset.vdims, [Dimension('z')])

        # Ensure that canonicalization works on multi-dimensional coordinates
        self.assertEqual(dataset.dimension_values('lon', flat=False), self.xs)
        self.assertEqual(dataset.dimension_values('lat', flat=False), self.ys)
        self.assertEqual(dataset.dimension_values('z'), self.zs.T.flatten())
Пример #12
0
 def test_multi_geom_point_coord_values(self):
     geoms = [{
         'geometry': sgeom.Point([(0, 1)])
     }, {
         'geometry': sgeom.Point([(3, 5)])
     }]
     mds = Dataset(geoms, kdims=['x', 'y'], datatype=[self.datatype])
     self.assertEqual(mds.dimension_values('x'), np.array([0, 3]))
     self.assertEqual(mds.dimension_values('y'), np.array([1, 5]))
Пример #13
0
 def test_irregular_and_regular_coordinate_inference_inverted(self):
     data = self.get_irregular_dataarray(False)
     ds = Dataset(data, vdims='Value')
     self.assertEqual(
         ds.kdims,
         [Dimension('band'),
          Dimension('x'), Dimension('y')])
     self.assertEqual(ds.dimension_values(3, flat=False),
                      data.values.transpose([1, 2, 0]))
Пример #14
0
    def test_construct_from_xarray(self):
        try:
            import xarray as xr
        except:
            raise SkipTest("Test requires xarray")
        coords = OrderedDict([('lat', (('y', 'x'), self.ys)),
                              ('lon', (('y', 'x'), self.xs))])
        da = xr.DataArray(self.zs, dims=['y', 'x'],
                          coords=coords, name='z')
        dataset = Dataset(da)

        # Ensure that dimensions are inferred correctly
        self.assertEqual(dataset.kdims, [Dimension('lat'), Dimension('lon')])
        self.assertEqual(dataset.vdims, [Dimension('z')])

        # Ensure that canonicalization works on multi-dimensional coordinates
        self.assertEqual(dataset.dimension_values('lon', flat=False), self.xs)
        self.assertEqual(dataset.dimension_values('lat', flat=False), self.ys)
        self.assertEqual(dataset.dimension_values('z'), self.zs.T.flatten())
Пример #15
0
 def test_xarray_dataset_with_scalar_dim_canonicalize(self):
     xs = [0, 1]
     ys = [0.1, 0.2, 0.3]
     zs = np.array([[[0, 1], [2, 3], [4, 5]]])
     xrarr = xr.DataArray(zs, coords={'x': xs, 'y': ys, 't': [1]}, dims=['t', 'y', 'x'])
     xrds = xr.Dataset({'v': xrarr})
     ds = Dataset(xrds, kdims=['x', 'y'], vdims=['v'], datatype=['xarray'])
     canonical = ds.dimension_values(2, flat=False)
     self.assertEqual(canonical.ndim, 2)
     expected = np.array([[0, 1], [2, 3], [4, 5]])
     self.assertEqual(canonical, expected)
Пример #16
0
 def test_xarray_dataset_with_scalar_dim_canonicalize(self):
     xs = [0, 1]
     ys = [0.1, 0.2, 0.3]
     zs = np.array([[[0, 1], [2, 3], [4, 5]]])
     xrarr = xr.DataArray(zs, coords={'x': xs, 'y': ys, 't': [1]}, dims=['t', 'y', 'x'])
     xrds = xr.Dataset({'v': xrarr})
     ds = Dataset(xrds, kdims=['x', 'y'], vdims=['v'], datatype=['xarray'])
     canonical = ds.dimension_values(2, flat=False)
     self.assertEqual(canonical.ndim, 2)
     expected = np.array([[0, 1], [2, 3], [4, 5]])
     self.assertEqual(canonical, expected)
Пример #17
0
 def test_3d_xarray_with_constant_dim_canonicalized_to_2d(self):
     try:
         import xarray as xr
     except:
         raise SkipTest("Test requires xarray")
     zs = np.arange(24).reshape(1, 4, 6)
     # Construct DataArray with additional constant dimension
     da = xr.DataArray(zs, dims=['z', 'y', 'x'],
                       coords = {'lat': (('y', 'x'), self.ys),
                                 'lon': (('y', 'x'), self.xs),
                                 'z': [0]}, name='A')
     # Declare Dataset without declaring constant dimension
     dataset = Dataset(da, ['lon', 'lat'], 'A')
     # Ensure that canonicalization drops the constant dimension
     self.assertEqual(dataset.dimension_values('A', flat=False), zs[0])
Пример #18
0
 def test_3d_xarray_with_constant_dim_canonicalized_to_2d(self):
     try:
         import xarray as xr
     except:
         raise SkipTest("Test requires xarray")
     zs = np.arange(24).reshape(1, 4, 6)
     # Construct DataArray with additional constant dimension
     da = xr.DataArray(zs, dims=['z', 'y', 'x'],
                       coords = {'lat': (('y', 'x'), self.ys),
                                 'lon': (('y', 'x'), self.xs),
                                 'z': [0]}, name='A')
     # Declare Dataset without declaring constant dimension
     dataset = Dataset(da, ['lon', 'lat'], 'A')
     # Ensure that canonicalization drops the constant dimension
     self.assertEqual(dataset.dimension_values('A', flat=False), zs[0])
Пример #19
0
 def test_irregular_and_regular_coordinate_explicit_irregular_coords_inverted(
         self):
     data = self.get_irregular_dataarray(False)
     ds = Dataset(data, ['xc', 'yc'], vdims='Value')
     self.assertEqual(ds.kdims, [Dimension('xc'), Dimension('yc')])
     self.assertEqual(ds.dimension_values(2, flat=False), data.values[0])
Пример #20
0
 def test_irregular_and_regular_coordinate_inference_inverted(self):
     data = self.get_irregular_dataarray(False)
     ds = Dataset(data, vdims='Value')
     self.assertEqual(ds.kdims, [Dimension('band'), Dimension('x'), Dimension('y')])
     self.assertEqual(ds.dimension_values(3, flat=False), data.values.transpose([1, 2, 0]))
Пример #21
0
 def test_dataset_allow_none_values(self):
     ds = Dataset({'x': None, 'y': [0, 1]}, kdims=['x', 'y'])
     self.assertEqual(ds.dimension_values(0), np.array([None, None]))
Пример #22
0
 def test_graph_node_info_no_index(self):
     node_info = Dataset(np.arange(8), vdims=['Label'])
     graph = Graph(((self.source, self.target), node_info))
     self.assertEqual(graph.nodes.dimension_values(3),
                      node_info.dimension_values(0))
Пример #23
0
 def test_dimension_values_kdim(self):
     cube = Dataset(self.cube, kdims=['longitude', 'latitude'])
     self.assertEqual(cube.dimension_values('longitude', expanded=False),
                      np.array([-1,  0,  1, 2], dtype=np.int32))
Пример #24
0
 def test_irregular_and_regular_coordinate_explicit_irregular_coords_inverted(self):
     data = self.get_irregular_dataarray(False)
     ds = Dataset(data, ['xc', 'yc'], vdims='Value')
     self.assertEqual(ds.kdims, [Dimension('xc'), Dimension('yc')])
     self.assertEqual(ds.dimension_values(2, flat=False), data.values[0])
Пример #25
0
 def test_multi_geom_dataset_poly_coord_values(self):
     geoms = [sgeom.Polygon([(0, 0), (6, 6), (3, 3)])]
     mds = Dataset(geoms, kdims=['x', 'y'], datatype=[self.datatype])
     self.assertEqual(mds.dimension_values('x'), np.array([0, 6, 3, 0]))
     self.assertEqual(mds.dimension_values('y'), np.array([0, 6, 3, 0]))
Пример #26
0
 def test_graph_node_info_merge_on_index(self):
     node_info = Dataset((np.arange(8), np.arange(1,9)), 'index', 'label')
     graph = Graph(((self.source, self.target), node_info))
     self.assertEqual(graph.nodes.dimension_values(3),
                      node_info.dimension_values(1))
Пример #27
0
 def test_construct_from_dict(self):
     dataset = Dataset((self.xs, self.ys, self.zs), ['x', 'y'], 'z')
     self.assertEqual(dataset.dimension_values('x'), self.xs.T.flatten())
     self.assertEqual(dataset.dimension_values('y'), self.ys.T.flatten())
     self.assertEqual(dataset.dimension_values('z'), self.zs.T.flatten())
Пример #28
0
 def test_construct_from_dict(self):
     dataset = Dataset((self.xs, self.ys, self.zs), ['x', 'y'], 'z')
     self.assertEqual(dataset.dimension_values('x'), self.xs.T.flatten())
     self.assertEqual(dataset.dimension_values('y'), self.ys.T.flatten())
     self.assertEqual(dataset.dimension_values('z'), self.zs.T.flatten())
Пример #29
0
 def test_dimension_values_kdim(self):
     cube = Dataset(self.cube, kdims=['longitude', 'latitude'])
     self.assertEqual(cube.dimension_values('longitude', expanded=False),
                      np.array([-1, 0, 1, 2], dtype=np.int32))
 def test_xarray_irregular_dataset_values(self):
     ds = Dataset(self.get_multi_dim_irregular_dataset())
     values = ds.dimension_values('z', expanded=False)
     self.assertEqual(values, np.array([0, 1, 2, 3]))
Пример #31
0
 def test_graph_node_info_no_index(self):
     node_info = Dataset(np.arange(8), vdims=['Label'])
     graph = Graph(((self.source, self.target), node_info))
     self.assertEqual(graph.nodes.dimension_values(3),
                      node_info.dimension_values(0))
Пример #32
0
 def test_dataset_empty_list_init_dtypes(self):
     dataset = Dataset([], kdims=['x'], vdims=['y'])
     for d in 'xy':
         self.assertEqual(dataset.dimension_values(d).dtype, np.float64)
Пример #33
0
 def test_multi_geom_dataset_line_string_coord_values(self):
     geoms = [sgeom.LineString([(0, 0), (3, 3), (6, 0)])]
     mds = Dataset(geoms, kdims=['x', 'y'], datatype=[self.datatype])
     self.assertEqual(mds.dimension_values('x'), np.array([0, 3, 6]))
     self.assertEqual(mds.dimension_values('y'), np.array([0, 3, 0]))
Пример #34
0
 def test_dataset_empty_list_init_dtypes(self):
     dataset = Dataset([], kdims=['x'], vdims=['y'])
     for d in 'xy':
         self.assertEqual(dataset.dimension_values(d).dtype, np.float64)
 def test_dataset_multi_vdim_empty_constructor(self):
     ds = Dataset([], ['x', 'y'], ['z1', 'z2', 'z3'])
     assert all(
         ds.dimension_values(vd, flat=False).shape == (0, 0)
         for vd in ds.vdims)
Пример #36
0
 def test_graph_node_info_merge_on_index(self):
     node_info = Dataset((np.arange(8), np.arange(1, 9)), 'index', 'label')
     graph = Graph(((self.source, self.target), node_info))
     self.assertEqual(graph.nodes.dimension_values(3),
                      node_info.dimension_values(1))
Пример #37
0
 def test_dataset_allow_none_values(self):
     ds = Dataset({'x': None, 'y': [0, 1]}, kdims=['x', 'y'])
     self.assertEqual(ds.dimension_values(0), np.array([None, None]))