def test_h5_io_lgroup(tmpdir): fpath = os.path.join(str(tmpdir), 'lgroups.h5') age.to_hdf(fpath) named = age[':5'] >> 'age_05' named_axis_not_in_file = lipro['P01,P03,P05'] >> 'P_odd' anonymous = age[':5'] wildcard = age_wildcard[':5'] >> 'age_w_05' string_group = Axis(['@!àéè&%µ$~', '/*-+_§()><', 'another label'], 'string_axis')[:] >> 'string_group' # ---- default behavior ---- # named group named.to_hdf(fpath) named2 = read_hdf(fpath, key=named.name) assert all(named == named2) # anonymous group with pytest.raises( ValueError, match= "Argument key must be provided explicitly in case of anonymous group" ): anonymous.to_hdf(fpath) # wildcard group wildcard.to_hdf(fpath) wildcard2 = read_hdf(fpath, key=wildcard.name) assert all(wildcard == wildcard2) # associated axis not saved yet named_axis_not_in_file.to_hdf(fpath) named2 = read_hdf(fpath, key=named_axis_not_in_file.name) assert all(named_axis_not_in_file == named2) # string group string_group.to_hdf(fpath) string_group2 = read_hdf(fpath, key=string_group.name) assert all(string_group == string_group2) # ---- specific hdf group + key ---- hdf_group = 'my_groups' # named group key = hdf_group + '/named_group' named.to_hdf(fpath, key) named2 = read_hdf(fpath, key=key) assert all(named == named2) # anonymous group key = hdf_group + '/anonymous_group' anonymous.to_hdf(fpath, key) anonymous2 = read_hdf(fpath, key=key) assert anonymous2.name is None assert all(anonymous == anonymous2) # wildcard group key = hdf_group + '/wildcard_group' wildcard.to_hdf(fpath, key) wildcard2 = read_hdf(fpath, key=key) assert all(wildcard == wildcard2) # associated axis not saved yet key = hdf_group + '/named_group_axis_not_in_file' named_axis_not_in_file.to_hdf(fpath, key=key) named2 = read_hdf(fpath, key=key) assert all(named_axis_not_in_file == named2) # ---- specific axis_key ---- axis_key = 'axes/associated_axis_0' # named group named.to_hdf(fpath, axis_key=axis_key) named2 = read_hdf(fpath, key=named.name) assert all(named == named2) # anonymous group key = 'anonymous' anonymous.to_hdf(fpath, key=key, axis_key=axis_key) anonymous2 = read_hdf(fpath, key=key) assert anonymous2.name is None assert all(anonymous == anonymous2) # wildcard group wildcard.to_hdf(fpath, axis_key=axis_key) wildcard2 = read_hdf(fpath, key=wildcard.name) assert all(wildcard == wildcard2) # associated axis not saved yet axis_key = 'axes/associated_axis_1' named_axis_not_in_file.to_hdf(fpath, axis_key=axis_key) named2 = read_hdf(fpath, key=named_axis_not_in_file.name) assert all(named_axis_not_in_file == named2)
def test_h5_io(tmpdir): age = Axis('age=0..10') lipro = Axis('lipro=P01..P05') anonymous = Axis(range(3)) wildcard = Axis(3, 'wildcard') string_axis = Axis(['@!àéè&%µ$~', '/*-+_§()><', 'another label'], 'string_axis') fpath = os.path.join(str(tmpdir), 'axes.h5') # ---- default behavior ---- # int axis age.to_hdf(fpath) age2 = read_hdf(fpath, key=age.name) assert age.equals(age2) # string axis lipro.to_hdf(fpath) lipro2 = read_hdf(fpath, key=lipro.name) assert lipro.equals(lipro2) # anonymous axis with pytest.raises( ValueError, match= "Argument key must be provided explicitly in case of anonymous axis" ): anonymous.to_hdf(fpath) # wildcard axis wildcard.to_hdf(fpath) wildcard2 = read_hdf(fpath, key=wildcard.name) assert wildcard2.iswildcard assert wildcard.equals(wildcard2) # string axis string_axis.to_hdf(fpath) string_axis2 = read_hdf(fpath, string_axis.name) assert string_axis.equals(string_axis2) # ---- specific key ---- # int axis key = 'axis_age' age.to_hdf(fpath, key) age2 = read_hdf(fpath, key=key) assert age.equals(age2) # string axis key = 'axis_lipro' lipro.to_hdf(fpath, key) lipro2 = read_hdf(fpath, key=key) assert lipro.equals(lipro2) # anonymous axis key = 'axis_anonymous' anonymous.to_hdf(fpath, key) anonymous2 = read_hdf(fpath, key=key) assert anonymous2.name is None assert_array_equal(anonymous.labels, anonymous2.labels) # wildcard axis key = 'axis_wildcard' wildcard.to_hdf(fpath, key) wildcard2 = read_hdf(fpath, key=key) assert wildcard2.iswildcard assert wildcard.equals(wildcard2) # ---- specific hdf group + key ---- hdf_group = 'my_axes' # int axis key = hdf_group + '/axis_age' age.to_hdf(fpath, key) age2 = read_hdf(fpath, key=key) assert age.equals(age2) # string axis key = hdf_group + '/axis_lipro' lipro.to_hdf(fpath, key) lipro2 = read_hdf(fpath, key=key) assert lipro.equals(lipro2) # anonymous axis key = hdf_group + '/axis_anonymous' anonymous.to_hdf(fpath, key) anonymous2 = read_hdf(fpath, key=key) assert anonymous2.name is None assert_array_equal(anonymous.labels, anonymous2.labels) # wildcard axis key = hdf_group + '/axis_wildcard' wildcard.to_hdf(fpath, key) wildcard2 = read_hdf(fpath, key=key) assert wildcard2.iswildcard assert wildcard.equals(wildcard2)
def test_h5_io(tmpdir): age = Axis('age=0..10') lipro = Axis('lipro=P01..P05') anonymous = Axis(range(3)) wildcard = Axis(3, 'wildcard') fpath = os.path.join(str(tmpdir), 'axes.h5') # ---- default behavior ---- # int axis age.to_hdf(fpath) age2 = read_hdf(fpath, key=age.name) assert age.equals(age2) # string axis lipro.to_hdf(fpath) lipro2 = read_hdf(fpath, key=lipro.name) assert lipro.equals(lipro2) # anonymous axis with pytest.raises(ValueError, message="Argument key must be provided explicitly in case of anonymous axis"): anonymous.to_hdf(fpath) # wildcard axis wildcard.to_hdf(fpath) wildcard2 = read_hdf(fpath, key=wildcard.name) assert wildcard2.iswildcard assert wildcard.equals(wildcard2) # ---- specific key ---- # int axis key = 'axis_age' age.to_hdf(fpath, key) age2 = read_hdf(fpath, key=key) assert age.equals(age2) # string axis key = 'axis_lipro' lipro.to_hdf(fpath, key) lipro2 = read_hdf(fpath, key=key) assert lipro.equals(lipro2) # anonymous axis key = 'axis_anonymous' anonymous.to_hdf(fpath, key) anonymous2 = read_hdf(fpath, key=key) assert anonymous2.name is None assert_array_equal(anonymous.labels, anonymous2.labels) # wildcard axis key = 'axis_wildcard' wildcard.to_hdf(fpath, key) wildcard2 = read_hdf(fpath, key=key) assert wildcard2.iswildcard assert wildcard.equals(wildcard2) # ---- specific hdf group + key ---- hdf_group = 'my_axes' # int axis key = hdf_group + '/axis_age' age.to_hdf(fpath, key) age2 = read_hdf(fpath, key=key) assert age.equals(age2) # string axis key = hdf_group + '/axis_lipro' lipro.to_hdf(fpath, key) lipro2 = read_hdf(fpath, key=key) assert lipro.equals(lipro2) # anonymous axis key = hdf_group + '/axis_anonymous' anonymous.to_hdf(fpath, key) anonymous2 = read_hdf(fpath, key=key) assert anonymous2.name is None assert_array_equal(anonymous.labels, anonymous2.labels) # wildcard axis key = hdf_group + '/axis_wildcard' wildcard.to_hdf(fpath, key) wildcard2 = read_hdf(fpath, key=key) assert wildcard2.iswildcard assert wildcard.equals(wildcard2)