Ejemplo n.º 1
0
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]))
Ejemplo n.º 2
0
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)))
Ejemplo n.º 3
0
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)))
Ejemplo n.º 4
0
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)