def test_hdf5(): """Test HDF5 IO """ tempdir = _TempDir() test_file = op.join(tempdir, "test.hdf5") sp = np.eye(3) if sparse is None else sparse.eye(3, 3, format="csc") sp[2, 2] = 2 x = dict( a=dict(b=np.zeros(3)), c=np.zeros(2, np.complex128), d=[dict(e=(1, -2.0, "hello", u"goodbyeu\u2764")), None], f=sp, ) write_hdf5(test_file, 1) assert_equal(read_hdf5(test_file), 1) assert_raises(IOError, write_hdf5, test_file, x) # file exists write_hdf5(test_file, x, overwrite=True) assert_raises(IOError, read_hdf5, test_file + "FOO") # not found xx = read_hdf5(test_file) assert_true(object_diff(x, xx) == "") # no assert_equal, ugly output # bad title assert_raises(ValueError, read_hdf5, test_file, title="nonexist") assert_raises(ValueError, write_hdf5, test_file, x, overwrite=True, title=1) assert_raises(ValueError, read_hdf5, test_file, title=1) # unsupported objects assert_raises(TypeError, write_hdf5, test_file, {1: "foo"}, overwrite=True) assert_raises(TypeError, write_hdf5, test_file, object, overwrite=True)
def test_path_support(): tempdir = _TempDir() test_file = op.join(tempdir, 'test.hdf5') write_hdf5(test_file, 1, title='first') write_hdf5(test_file, 2, title='second/third', overwrite='update') assert_raises(ValueError, read_hdf5, test_file, title='second') assert_equal(read_hdf5(test_file, 'first'), 1) assert_equal(read_hdf5(test_file, 'second/third'), 2)
def test_numpy_values(): tempdir = _TempDir() test_file = op.join(tempdir, 'test.hdf5') for cast in [np.int8, np.int16, np.int32, np.int64, np.bool_, np.float16, np.float32, np.float64]: value = cast(1) write_hdf5(test_file, value, title='first', overwrite='update') assert_equal(read_hdf5(test_file, 'first'), value)
def test_multi_dim_array(): rng = np.random.RandomState(0) traj = np.array([rng.randn(2, 1), rng.randn(3, 1)]) tempdir = _TempDir() test_file = op.join(tempdir, 'test.hdf5') write_hdf5(test_file, traj, title='first', overwrite='update') for traj_read, traj_sub in zip(read_hdf5(test_file, 'first'), traj): assert (np.equal(traj_read, traj_sub).all()) traj_no_structure = np.array([rng.randn(2, 1, 1), rng.randn(3, 1, 2)]) pytest.raises(ValueError, write_hdf5, test_file, traj_no_structure, title='second', overwrite='update')
def test_hdf5(): """Test HDF5 IO """ tempdir = _TempDir() test_file = op.join(tempdir, 'test.hdf5') sp = np.eye(3) if sparse is None else sparse.eye(3, 3, format='csc') df = np.eye(3) if isinstance(DataFrame, type(None)) else DataFrame( np.eye(3)) sr = np.eye(3) if isinstance(Series, type(None)) else Series( np.random.randn(3)) sp[2, 2] = 2 x = dict(a=dict(b=np.zeros(3)), c=np.zeros(2, np.complex128), d=[dict(e=(1, -2., 'hello', u'goodbyeu\u2764')), None], f=sp, g=dict(dfa=df, srb=sr)) write_hdf5(test_file, 1) assert_equal(read_hdf5(test_file), 1) assert_raises(IOError, write_hdf5, test_file, x) # file exists write_hdf5(test_file, x, overwrite=True) assert_raises(IOError, read_hdf5, test_file + 'FOO') # not found xx = read_hdf5(test_file) assert_true(object_diff(x, xx) == '') # no assert_equal, ugly output # bad title assert_raises(ValueError, read_hdf5, test_file, title='nonexist') assert_raises(ValueError, write_hdf5, test_file, x, overwrite=True, title=1) assert_raises(ValueError, read_hdf5, test_file, title=1) # unsupported objects assert_raises(TypeError, write_hdf5, test_file, {1: 'foo'}, overwrite=True) assert_raises(TypeError, write_hdf5, test_file, object, overwrite=True) write_hdf5(test_file, 1, title='first', overwrite=True) write_hdf5(test_file, 2, title='second', overwrite='update') assert_equal(read_hdf5(test_file, title='first'), 1) assert_equal(read_hdf5(test_file, title='second'), 2) assert_raises(IOError, write_hdf5, test_file, 3, title='second') write_hdf5(test_file, 3, title='second', overwrite='update') assert_equal(read_hdf5(test_file, title='second'), 3) write_hdf5(test_file, 5, title='second', overwrite='update', compression=5) assert_equal(read_hdf5(test_file, title='second'), 5)
def test_hdf5_use_json(): """Test HDF5 IO """ tempdir = _TempDir() test_file = op.join(tempdir, 'test.hdf5') splash_dict = {'first/second': {'one/more': 'value'}} pytest.raises(ValueError, write_hdf5, test_file, splash_dict, overwrite=True, slash='error', use_json=True) spec_dict = {'first/second': 'third'} write_hdf5(test_file, spec_dict, overwrite=True, slash='replace', use_json=True) assert_equal( read_hdf5(test_file, slash='replace').keys(), spec_dict.keys()) in_keys = list(read_hdf5(test_file, slash='ignore').keys()) assert ('{FWDSLASH}' in in_keys[0]) comp_dict = {'first': [1, 2], 'second': 'str', 'third': {'a': 1}} write_hdf5(test_file, comp_dict, overwrite=True, use_json=True) assert_equal(sorted(read_hdf5(test_file, slash='replace').keys()), sorted(comp_dict.keys())) numpy_dict = {'first': np.array([1])} write_hdf5(test_file, numpy_dict, overwrite=True, use_json=True) assert_equal( list(read_hdf5(test_file, slash='replace').values())[0], list(numpy_dict.values())[0]) pytest.raises(ValueError, read_hdf5, test_file, slash='brains') # Testing that title slashes aren't replaced write_hdf5(test_file, spec_dict, title='one/two', overwrite=True, slash='replace', use_json=True) assert_equal( read_hdf5(test_file, title='one/two', slash='replace').keys(), spec_dict.keys())
def test_hdf5(): """Test HDF5 IO """ tempdir = _TempDir() test_file = op.join(tempdir, 'test.hdf5') sp = np.eye(3) if sparse is None else sparse.eye(3, 3, format='csc') sp_csr = np.eye(3) if sparse is None else sparse.eye(3, 3, format='csr') df = np.eye(3) if isinstance(DataFrame, type(None)) else DataFrame( np.eye(3)) sr = np.eye(3) if isinstance(Series, type(None)) else Series( np.random.randn(3)) sp[2, 2] = 2 sp_csr[2, 2] = 2 x = dict(a=dict(b=np.zeros(3)), c=np.zeros(2, np.complex128), d=[dict(e=(1, -2., 'hello', u'goodbyeu\u2764')), None], f=sp, g=dict(dfa=df, srb=sr), h=sp_csr, i=sr, j='hi') write_hdf5(test_file, 1) assert_equal(read_hdf5(test_file), 1) assert_raises(IOError, write_hdf5, test_file, x) # file exists write_hdf5(test_file, x, overwrite=True) assert_raises(IOError, read_hdf5, test_file + 'FOO') # not found xx = read_hdf5(test_file) assert_true(object_diff(x, xx) == '') # no assert_equal, ugly output list_file_contents(test_file) # Testing the h5 listing assert_raises(TypeError, list_file_contents, sp) # Only string works write_hdf5(test_file, np.bool_(True), overwrite=True) assert_equal(read_hdf5(test_file), np.bool_(True)) # bad title assert_raises(ValueError, read_hdf5, test_file, title='nonexist') assert_raises(ValueError, write_hdf5, test_file, x, overwrite=True, title=1) assert_raises(ValueError, read_hdf5, test_file, title=1) # unsupported objects assert_raises(TypeError, write_hdf5, test_file, {1: 'foo'}, overwrite=True) assert_raises(TypeError, write_hdf5, test_file, object, overwrite=True) # special_chars spec_dict = {'first/second': 'third'} assert_raises(ValueError, write_hdf5, test_file, spec_dict, overwrite=True) assert_raises(ValueError, write_hdf5, test_file, spec_dict, overwrite=True, slash='brains') write_hdf5(test_file, spec_dict, overwrite=True, slash='replace') assert_equal( read_hdf5(test_file, slash='replace').keys(), spec_dict.keys()) in_keys = list(read_hdf5(test_file, slash='ignore').keys()) assert_true('{FWDSLASH}' in in_keys[0]) assert_raises(ValueError, read_hdf5, test_file, slash='brains') # Testing that title slashes aren't replaced write_hdf5( test_file, spec_dict, title='one/two', overwrite=True, slash='replace') assert_equal(read_hdf5(test_file, title='one/two', slash='replace').keys(), spec_dict.keys()) write_hdf5(test_file, 1, title='first', overwrite=True) write_hdf5(test_file, 2, title='second', overwrite='update') assert_equal(read_hdf5(test_file, title='first'), 1) assert_equal(read_hdf5(test_file, title='second'), 2) assert_raises(IOError, write_hdf5, test_file, 3, title='second') write_hdf5(test_file, 3, title='second', overwrite='update') assert_equal(read_hdf5(test_file, title='second'), 3) write_hdf5(test_file, 5, title='second', overwrite='update', compression=5) assert_equal(read_hdf5(test_file, title='second'), 5)