def test_format(dim_array, tmpdir): fname = tmpdir.join("test.nc").strpath # have test.nc in some temporary directory a = DimArray([1,2], dims=['xx0']) b = DimArray([3.,4.,5.], dims=['xx1']) a.write_nc(fname,"a", mode='w') b.write_nc(fname,"b", mode='a') # b.write_nc(fname.replace('.nc','netcdf3.nc'),name="b", mode='w', format='NETCDF3_CLASSIC') ds = da.Dataset([('a',a),('b',b)]) # NETCDF3_CLASSIC ds.write_nc(fname.replace('.nc','netcdf3.nc'), mode='w', format='NETCDF3_CLASSIC') dscheck = da.read_nc(fname.replace('.nc','netcdf3.nc')) assert_equal_datasets(ds, dscheck) # # NETCDF3_64bit # ds.write_nc(fname.replace('.nc','netcdf3_64b.nc'), mode='w', format='NETCDF3_64BIT') # dscheck = da.read_nc(fname.replace('.nc','netcdf3_64b.nc')) # assert_equal_datasets(ds, dscheck) data = read_nc(fname) assert(np.all(data['a'] == a)) assert(np.all(data['b'] == b)) ds = da.Dataset(a=a, b=b) for k in ds: assert(np.all(ds[k] == data[k]))
def test_ncio(tmpdir): fname = tmpdir.join("test.nc").strpath # have test.nc in some temporary directory a = DimArray([1,2], dims='xx0') b = DimArray([3,4,5], dims='xx1') a.write_nc(fname,"a", mode='w') b.write_nc(fname,"b", mode='a') try: b.write_nc(fname.replace('.nc','netcdf3.nc'),"b", mode='w', format='NETCDF3_CLASSIC') except Exception, msg: warn("writing as NETCDF3_CLASSIC failed (known bug on 64bits systems): {msg}".format(msg=repr(msg)))
def test_ncio(): a = DimArray([1, 2], dims='xx0') b = DimArray([3, 4, 5], dims='xx1') fname = os.path.join(testdata, "test.nc") a.write_nc(fname, "a", mode='w') b.write_nc(fname, "b", mode='a') try: b.write_nc(fname.replace('.nc', 'netcdf3.nc'), "b", mode='w', format='NETCDF3_CLASSIC') except Exception, msg: warn( "writing as NETCDF3_CLASSIC failed (known bug on 64bits systems): {msg}" .format(msg=repr(msg)))
def test_read_multiple_files(tmpdir): # take tests from align fname1 = tmpdir.join("test_multi1.nc").strpath fname2 = tmpdir.join("test_multi2.nc").strpath # stack, no need to align a = DimArray([1,2,3], dims=['x0']) b = DimArray([11,22,33], dims=['x0']) a.write_nc(fname1, 'a', mode='w') b.write_nc(fname2, 'a', mode='w') c_got = da.read_nc([fname1, fname2], axis='stackdim', keys=['a','b']) c = DimArray([[ 1, 2, 3], [11, 22, 33]], axes=[['a', 'b'], [0, 1, 2]], dims=['stackdim', 'x0']) assert_equal_dimarrays(c_got['a'], c) # stack + align a = DimArray([1,2,3], axes=[[0,1,2]], dims=['x0']) b = DimArray([33,11], axes=[[2,0]], dims=['x0']) a.write_nc(fname1, 'a', mode='w') b.write_nc(fname2, 'a', mode='w') c_got = da.read_nc([fname2, fname1], axis='stackdim', align=True, sort=True, keys=['b','a']) c = DimArray([[11., np.nan, 33.], [ 1., 2., 3.]], axes=[['b', 'a'], [0, 1, 2]], dims=['stackdim', 'x0']) assert_equal_dimarrays(c_got['a'], c) # concatenate a = DimArray([1,2,3], dims=['x0']) b = DimArray([11,22,33], dims=['x0']) a.write_nc(fname1, 'a', mode='w') b.write_nc(fname2, 'a', mode='w') c_got = da.read_nc([fname1, fname2], axis='x0') c = DimArray([1, 2, 3, 11, 22, 33], axes=[[0, 1, 2, 0, 1, 2]], dims=['x0']) assert_equal_dimarrays(c_got['a'], c) # concatenate 2-D a = DimArray([[ 1, 2, 3], [11, 22, 33]], axes=[[0,1],[2,1,0]]) b = DimArray([[44, 55, 66], [4, 5, 6]], axes=[[1,0],[2,1,0]]) a.write_nc(fname1, 'a', mode='w') b.write_nc(fname2, 'a', mode='w') # ...first axis c0_got = da.read_nc([fname1, fname2], axis='x0') c0 = DimArray([[ 1, 2, 3], [11, 22, 33], [44, 55, 66], [4, 5, 6]], axes=[[0,1,1,0],[2,1,0]]) assert_equal_dimarrays(c0_got['a'], c0) # axis "x0" is not aligned ! with pytest.raises(ValueError): c1_got = da.read_nc([fname1, fname2], axis='x1') print(c1_got) # ...second axis c1_dima_got = da.read_nc([fname1, fname2], 'a', axis='x1', align=True, sort=True) c1_ds_got = da.read_nc([fname1, fname2], axis='x1', align=True, sort=True) c1 = DimArray([[ 1, 2, 3, 4, 5, 6], [11, 22, 33, 44, 55, 66]], axes=[[0,1],[2,1,0,2,1,0]]) assert_equal_dimarrays(c1_dima_got, c1) assert_equal_dimarrays(c1_ds_got['a'], c1)