def test_replace_extension(): grid = RasterModelGrid(4, 5, 2.) grid.add_field('node', 'air__temperature', np.arange(20.)) with cdtemp() as _: grid.save('test.nc', format='esri-ascii') assert_true(os.path.isfile('test.asc')) with cdtemp() as _: grid.save('test.asc', format='netcdf') assert_true(os.path.isfile('test.nc'))
def test_guess_format(): grid = RasterModelGrid(4, 5, 2.) grid.add_field('node', 'air__temperature', np.arange(20.)) with cdtemp() as _: grid.save('test.asc') assert_true(os.path.isfile('test.asc')) read_esri_ascii('test.asc') with cdtemp() as _: grid.save('test.nc') assert_true(os.path.isfile('test.nc')) read_netcdf('test.nc')
def test_names_keyword_as_str_or_list(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) grid.add_field('node', 'air__temperature', np.arange(20.)) grid.add_field('node', 'land_surface__elevation', np.arange(20.)) with cdtemp() as _: files = write_esri_ascii('test.asc', grid, names='air__temperature') assert_list_equal(files, ['test.asc']) assert_true(os.path.isfile('test.asc')) with cdtemp() as _: files = write_esri_ascii('test.asc', grid, names=['air__temperature']) assert_list_equal(files, ['test.asc']) assert_true(os.path.isfile('test.asc'))
def test_netcdf_write_at_cells(): """Test write_netcdf using with cell fields""" if not WITH_NETCDF4: raise SkipTest('netCDF4 package not installed') field = RasterModelGrid((4, 3)) field.add_field('cell', 'topographic__elevation', np.arange(field.number_of_cells)) field.add_field('cell', 'uplift_rate', np.arange(field.number_of_cells)) with cdtemp() as _: write_netcdf('test-cells.nc', field, format='NETCDF4') root = nc.Dataset('test-cells.nc', 'r', format='NETCDF4') for name in ['topographic__elevation', 'uplift_rate']: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_cell[name]) assert_equal(set(root.dimensions), set(['nv', 'ni', 'nj', 'nt'])) assert_equal(len(root.dimensions['nv']), 4) assert_equal(len(root.dimensions['ni']), 1) assert_equal(len(root.dimensions['nj']), 2) assert_true(len(root.dimensions['nt']), 1) assert_true(root.dimensions['nt'].isunlimited()) assert_equal( set(root.variables), set(['x_bnds', 'y_bnds', 'topographic__elevation', 'uplift_rate'])) root.close()
def test_names_keyword_with_bad_name(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) grid.add_field('node', 'air__temperature', np.arange(20.)) with cdtemp() as _: assert_raises(ValueError, write_esri_ascii, 'test.asc', grid, names='not_a_name')
def test_netcdf_write(): """Test generic write_netcdf.""" if not WITH_NETCDF4: raise SkipTest('netCDF4 package not installed') field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12.)) with cdtemp() as _: write_netcdf('test.nc', field, format='NETCDF4') root = nc.Dataset('test.nc', 'r', format='NETCDF4') assert_equal(set(root.dimensions), set(['ni', 'nj', 'nt'])) assert_equal(len(root.dimensions['ni']), 3) assert_equal(len(root.dimensions['nj']), 4) assert_true(len(root.dimensions['nt']), 1) assert_true(root.dimensions['nt'].isunlimited()) assert_equal(set(root.variables), set(['x', 'y', 'topographic__elevation'])) assert_array_equal(root.variables['x'][:].flat, np.array([0., 1., 2., 0., 1., 2., 0., 1., 2., 0., 1., 2., ])) assert_array_equal(root.variables['y'][:].flat, np.array([0., 0., 0., 1., 1., 1., 2., 2., 2., 3., 3., 3., ])) assert_array_equal(root.variables['topographic__elevation'][:].flat, field.at_node['topographic__elevation']) root.close()
def test_netcdf_write_at_cells(): """Test write_netcdf using with cell fields""" if not WITH_NETCDF4: raise SkipTest("netCDF4 package not installed") field = RasterModelGrid((4, 3)) field.add_field("cell", "topographic__elevation", np.arange(field.number_of_cells)) field.add_field("cell", "uplift_rate", np.arange(field.number_of_cells)) with cdtemp() as _: write_netcdf("test-cells.nc", field, format="NETCDF4") root = nc.Dataset("test-cells.nc", "r", format="NETCDF4") for name in ["topographic__elevation", "uplift_rate"]: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_cell[name]) assert_equal(set(root.dimensions), set(["nv", "ni", "nj", "nt"])) assert_equal(len(root.dimensions["nv"]), 4) assert_equal(len(root.dimensions["ni"]), 1) assert_equal(len(root.dimensions["nj"]), 2) assert_true(len(root.dimensions["nt"]), 1) assert_true(root.dimensions["nt"].isunlimited()) assert_equal(set(root.variables), set(["x_bnds", "y_bnds", "topographic__elevation", "uplift_rate"])) root.close()
def test_netcdf_write(): """Test generic write_netcdf.""" if not WITH_NETCDF4: raise SkipTest('netCDF4 package not installed') field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12.)) with cdtemp() as _: write_netcdf('test.nc', field, format='NETCDF4') root = nc.Dataset('test.nc', 'r', format='NETCDF4') assert_equal(set(root.dimensions), set(['ni', 'nj', 'nt'])) assert_equal(len(root.dimensions['ni']), 3) assert_equal(len(root.dimensions['nj']), 4) assert_true(len(root.dimensions['nt']), 1) assert_true(root.dimensions['nt'].isunlimited()) assert_equal(set(root.variables), set(['x', 'y', 'topographic__elevation'])) assert_array_equal(root.variables['x'][:].flatten(), np.array([0., 1., 2., 0., 1., 2., 0., 1., 2., 0., 1., 2., ])) assert_array_equal(root.variables['y'][:].flatten(), np.array([0., 0., 0., 1., 1., 1., 2., 2., 2., 3., 3., 3., ])) assert_array_equal(root.variables['topographic__elevation'][:].flatten(), field.at_node['topographic__elevation']) root.close()
def test_netcdf_write(): if not WITH_NETCDF4: raise SkipTest("netCDF4 package not installed") field = RasterModelGrid(4, 3) field.add_field("node", "topographic__elevation", np.arange(12.0)) with cdtemp() as _: write_netcdf("test.nc", field, format="NETCDF4") root = nc.Dataset("test.nc", "r", format="NETCDF4") assert_equal(set(root.dimensions), set(["ni", "nj", "nt"])) assert_equal(len(root.dimensions["ni"]), 3) assert_equal(len(root.dimensions["nj"]), 4) assert_true(len(root.dimensions["nt"]), 1) assert_true(root.dimensions["nt"].isunlimited()) assert_equal(set(root.variables), set(["x", "y", "topographic__elevation"])) assert_array_equal( root.variables["x"][:].flat, np.array([0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0]) ) assert_array_equal( root.variables["y"][:].flat, np.array([0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0]) ) assert_array_equal(root.variables["topographic__elevation"][:].flat, field.at_node["topographic__elevation"]) root.close()
def test_grid_with_one_field(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) grid.add_field('node', 'air__temperature', np.arange(20.)) with cdtemp() as _: files = write_esri_ascii('test.asc', grid) assert_list_equal(files, ['test.asc']) for fname in files: assert_true(os.path.isfile(fname))
def test_from_yaml_path(): """Load parameters from YAML-formatted string.""" with cdtemp() as dir: with open('params.txt', 'w') as fp: fp.write(MPD_PARAMS_STR) params = load_params('./params.txt') assert_dict_equal(params, MPD_PARAMS) assert_is_instance(params['x'], float) assert_is_instance(params['y'], int)
def test_names_keyword(): grid = RasterModelGrid(4, 5, 2.) grid.add_field('node', 'air__temperature', np.arange(20.)) grid.add_field('node', 'land_surface__elevation', np.arange(20.)) with cdtemp() as _: grid.save('test.asc', names='land_surface__elevation') assert_true(os.path.isfile('test.asc')) read_esri_ascii('test.asc') with cdtemp() as _: grid.save('test.asc', names=['land_surface__elevation', 'air__temperature']) files = ['test_land_surface__elevation.asc', 'test_air__temperature.asc'] for fname in files: assert_true(os.path.isfile(fname)) read_esri_ascii(fname)
def test_clobber_keyword(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) grid.add_field('node', 'air__temperature', np.arange(20.)) with cdtemp() as _: write_esri_ascii('test.asc', grid) assert_raises(ValueError, write_esri_ascii, 'test.asc', grid) assert_raises(ValueError, write_esri_ascii, 'test.asc', grid, clobber=False) write_esri_ascii('test.asc', grid, clobber=True)
def test_grid_with_two_fields(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) grid.add_field('node', 'air__temperature', np.arange(20.)) grid.add_field('node', 'land_surface__elevation', np.arange(20.)) with cdtemp() as _: files = write_esri_ascii('test.asc', grid) files.sort() assert_list_equal(files, ['test_air__temperature.asc', 'test_land_surface__elevation.asc']) for fname in files: assert_true(os.path.isfile(fname))
def test_grid_with_two_fields(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) grid.add_field('node', 'air__temperature', np.arange(20.)) grid.add_field('node', 'land_surface__elevation', np.arange(20.)) with cdtemp() as _: files = write_esri_ascii('test.asc', grid) files.sort() assert_list_equal( files, ['test_air__temperature.asc', 'test_land_surface__elevation.asc']) for fname in files: assert_true(os.path.isfile(fname))
def test_names_keyword_multiple_names(): grid = RasterModelGrid(4, 5, dx=2.) grid.add_field('node', 'air__temperature', np.arange(20.)) grid.add_field('node', 'land_surface__elevation', np.arange(20.)) with cdtemp() as _: files = write_esri_ascii('test.asc', grid, names=['air__temperature', 'land_surface__elevation']) files.sort() assert_list_equal(files, ['test_air__temperature.asc', 'test_land_surface__elevation.asc']) for fname in files: assert_true(os.path.isfile(fname))
def test_write_then_read(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) grid.add_field('node', 'air__temperature', np.arange(20.)) with cdtemp() as _: write_esri_ascii('test.asc', grid) new_grid, field = read_esri_ascii('test.asc') assert_equal(grid.number_of_node_columns, new_grid.number_of_node_columns) assert_equal(grid.number_of_node_rows, new_grid.number_of_node_rows) assert_equal(grid.dx, new_grid.dx) assert_array_almost_equal(grid.node_x, new_grid.node_x) assert_array_almost_equal(grid.node_y, new_grid.node_y) assert_array_almost_equal(field, grid.at_node['air__temperature'])
def test_netcdf_write_uint8_field_netcdf4(): """Test write_netcdf with a grid that has an uint8 field.""" field = RasterModelGrid(4, 3) field.add_field("node", "topographic__elevation", np.arange(12, dtype=np.uint8)) with cdtemp() as _: write_netcdf("test.nc", field, format="NETCDF4") root = nc.Dataset("test.nc", "r", format="NETCDF4") for name in ["topographic__elevation"]: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_node[name]) assert_equal(root.variables[name][:].dtype, "uint8") root.close()
def test_netcdf_write_uint8_field_netcdf4(): field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12, dtype=np.uint8)) with cdtemp() as _: write_netcdf('test.nc', field, format='NETCDF4') root = nc.Dataset('test.nc', 'r', format='NETCDF4') for name in ['topographic__elevation']: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_node[name]) assert_equal(root.variables[name][:].dtype, 'uint8') root.close()
def test_netcdf_write_as_netcdf4_classic(): if not WITH_NETCDF4: raise SkipTest("netCDF4 package not installed") field = RasterModelGrid(4, 3) field.add_field("node", "topographic__elevation", np.arange(12.0)) field.add_field("node", "uplift_rate", np.arange(12.0)) with cdtemp() as _: write_netcdf("test.nc", field, format="NETCDF4_CLASSIC") root = nc.Dataset("test.nc", "r", format="NETCDF4_CLASSIC") for name in ["topographic__elevation", "uplift_rate"]: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_node[name]) root.close()
def test_netcdf_write_names_keyword_as_str(): if not WITH_NETCDF4: raise SkipTest("netCDF4 package not installed") field = RasterModelGrid(4, 3) field.add_field("node", "topographic__elevation", np.arange(12.0)) field.add_field("node", "uplift_rate", np.arange(12.0)) with cdtemp() as _: write_netcdf("test.nc", field, names="uplift_rate", format="NETCDF4") root = nc.Dataset("test.nc", "r", format="NETCDF4") assert_true("topographic__elevation" not in root.variables) assert_true("uplift_rate" in root.variables) assert_array_equal(root.variables["uplift_rate"][:].flat, field.at_node["uplift_rate"]) root.close()
def test_netcdf_write_as_netcdf3_classic(): from scipy.io import netcdf field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12.)) field.add_field('node', 'uplift_rate', 2. * np.arange(12.)) with cdtemp() as _: write_netcdf('test.nc', field, format='NETCDF3_CLASSIC') f = netcdf.netcdf_file('test.nc', 'r') for name in ['topographic__elevation', 'uplift_rate']: assert_true(name in f.variables) assert_array_equal(f.variables[name][:].flat, field.at_node[name]) f.close()
def test_netcdf_write_as_netcdf3_classic(): from scipy.io import netcdf field = RasterModelGrid(4, 3) field.add_field("node", "topographic__elevation", np.arange(12.0)) field.add_field("node", "uplift_rate", 2.0 * np.arange(12.0)) with cdtemp() as _: write_netcdf("test.nc", field, format="NETCDF3_CLASSIC") f = netcdf.netcdf_file("test.nc", "r") for name in ["topographic__elevation", "uplift_rate"]: assert_true(name in f.variables) assert_array_equal(f.variables[name][:].flat, field.at_node[name]) f.close()
def test_netcdf_write_names_keyword_as_none(): """Test write_netcdf using ``None`` for the *names* keyword.""" if not WITH_NETCDF4: raise SkipTest("netCDF4 package not installed") field = RasterModelGrid(4, 3) field.add_field("node", "topographic__elevation", np.arange(12.0)) field.add_field("node", "uplift_rate", np.arange(12.0)) with cdtemp() as _: write_netcdf("test.nc", field, names=None, format="NETCDF4") root = nc.Dataset("test.nc", "r", format="NETCDF4") for name in ["topographic__elevation", "uplift_rate"]: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_node[name]) root.close()
def test_netcdf_write_names_keyword_as_none(): if not WITH_NETCDF4: raise SkipTest('netCDF4 package not installed') field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12.)) field.add_field('node', 'uplift_rate', np.arange(12.)) with cdtemp() as _: write_netcdf('test.nc', field, names=None, format='NETCDF4') root = nc.Dataset('test.nc', 'r', format='NETCDF4') for name in ['topographic__elevation', 'uplift_rate']: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_node[name]) root.close()
def test_netcdf_write_names_keyword_as_str(): if not WITH_NETCDF4: raise SkipTest('netCDF4 package not installed') field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12.)) field.add_field('node', 'uplift_rate', np.arange(12.)) with cdtemp() as _: write_netcdf('test.nc', field, names='uplift_rate', format='NETCDF4') root = nc.Dataset('test.nc', 'r', format='NETCDF4') assert_true('topographic__elevation' not in root.variables) assert_true('uplift_rate' in root.variables) assert_array_equal(root.variables['uplift_rate'][:].flat, field.at_node['uplift_rate']) root.close()
def test_netcdf_write_as_netcdf4_classic(): if not WITH_NETCDF4: raise SkipTest('netCDF4 package not installed') field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12.)) field.add_field('node', 'uplift_rate', np.arange(12.)) with cdtemp() as _: write_netcdf('test.nc', field, format='NETCDF4_CLASSIC') root = nc.Dataset('test.nc', 'r', format='NETCDF4_CLASSIC') for name in ['topographic__elevation', 'uplift_rate']: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flat, field.at_node[name]) root.close()
def test_netcdf_write_int64_field_netcdf4(): """Test write_netcdf with a grid that has an int64 field.""" field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12, dtype=np.int64)) with cdtemp() as _: write_netcdf('test.nc', field, format='NETCDF4') root = nc.Dataset('test.nc', 'r', format='NETCDF4') for name in ['topographic__elevation']: assert_true(name in root.variables) assert_array_equal(root.variables[name][:].flatten(), field.at_node[name]) assert_equal(root.variables[name][:].dtype, 'int64') root.close()
def test_netcdf_write_names_keyword_as_str(): """Test write_netcdf using a ``str`` for the *names* keyword.""" if not WITH_NETCDF4: raise SkipTest('netCDF4 package not installed') field = RasterModelGrid(4, 3) field.add_field('node', 'topographic__elevation', np.arange(12.)) field.add_field('node', 'uplift_rate', np.arange(12.)) with cdtemp() as _: write_netcdf('test.nc', field, names='uplift_rate', format='NETCDF4') root = nc.Dataset('test.nc', 'r', format='NETCDF4') assert_true('topographic__elevation' not in root.variables) assert_true('uplift_rate' in root.variables) assert_array_equal(root.variables['uplift_rate'][:].flat, field.at_node['uplift_rate']) root.close()
def test_grid_with_no_fields(): grid = RasterModelGrid((4, 5), spacing=(2., 2.)) with cdtemp() as _: assert_raises(ValueError, write_esri_ascii, 'test.asc', grid)