Skip to content

Commit 82b9d0e

Browse files
committed
make size,type,dims name,value pairs
1 parent a82faff commit 82b9d0e

File tree

5 files changed

+33
-31
lines changed

5 files changed

+33
-31
lines changed

+hdf5nc/+tests/test_hdf5.m

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
h5save(basic, '/A0', A0)
1414
h5save(basic, '/A1', A1)
1515
h5save(basic, '/A2', A2)
16-
h5save(basic, '/A3', A3)
16+
h5save(basic, '/A3', A3, "size", size(A3))
1717
h5save(basic, '/A4', A4)
1818
%% test_auto_chunk_size
1919
assert(isequal(auto_chunk_size([1500,2500,1000,500,100]), [12,20,8,8,2]), '5D chunk fail')
2020
assert(isequal(auto_chunk_size([15,250,100]), [2,32,25]), '3D chunk fail')
2121
assert(isequal(auto_chunk_size([15,250]), [15,250]), '2D small chunk fail')
2222
%% test_get_variables
2323
vars = h5variables(basic);
24-
assert(isequal(sort(vars),{'A0', 'A1', 'A2', 'A3', 'A4'}), 'missing variables')
24+
assert(isequal(sort(vars), ["A0", "A1", "A2", "A3", "A4"]), 'missing variables')
2525
%% test_exists
2626
e0 = h5exists(basic, '/A3');
2727
assert(isscalar(e0))
@@ -63,9 +63,9 @@
6363
s = h5read(basic, '/A4');
6464
assert(ndims(s)==4 && isequal(s, A4), 'A4 read')
6565
%% test_coerce
66-
h5save(basic, '/int32', A0, [], 'int32')
67-
h5save(basic, '/int64', A0, [], 'int64')
68-
h5save(basic, '/float32', A0, [], 'float32')
66+
h5save(basic, '/int32', A0, "type", 'int32')
67+
h5save(basic, '/int64', A0, "type", 'int64')
68+
h5save(basic, '/float32', A0, "type", 'float32')
6969

7070
assert(isa(h5read(basic, '/int32'), 'int32'), 'int32')
7171
assert(isa(h5read(basic, '/int64'), 'int64'), 'int64')

+hdf5nc/+tests/test_netcdf.m

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
% create test data first, so that parallel tests works
1414
ncsave(basic, 'A0', A0)
1515
ncsave(basic, 'A1', A1)
16-
ncsave(basic, 'A2', A2, {'x2', size(A2,1), 'y2', size(A2,2)})
17-
ncsave(basic, 'A3', A3, {'x3', size(A3,1), 'y3', size(A3,2), 'z3', size(A3,3)})
18-
ncsave(basic, 'A4', A4, {'x4', size(A4,1), 'y4', size(A4,2), 'z4', size(A4,3), 'w4', size(A4,4)})
16+
ncsave(basic, 'A2', A2, "dims", {'x2', size(A2,1), 'y2', size(A2,2)})
17+
ncsave(basic, 'A3', A3, "dims", {'x3', size(A3,1), 'y3', size(A3,2), 'z3', size(A3,3)})
18+
ncsave(basic, 'A4', A4, "dims", {'x4', size(A4,1), 'y4', size(A4,2), 'z4', size(A4,3), 'w4', size(A4,4)})
1919
%% test_get_variables
2020
vars = ncvariables(basic);
21-
assert(isequal(sort(vars),{'A0', 'A1', 'A2', 'A3', 'A4'}), 'missing variables')
21+
assert(isequal(sort(vars), ["A0", "A1", "A2", "A3", "A4"]), 'missing variables')
2222
%% test_exists
2323
e0 = ncexists(basic, 'A3');
2424
assert(isscalar(e0))
@@ -60,9 +60,9 @@
6060
s = ncread(basic, '/A4');
6161
assert(ndims(s)==4 && isequal(s, A4), 'A4 read')
6262
%% test_coerce
63-
ncsave(basic, 'int32', A0, [], 'int32')
64-
ncsave(basic, 'int64', A0, [], 'int64')
65-
ncsave(basic, 'float32', A0, [], 'float32')
63+
ncsave(basic, 'int32', A0, "type", 'int32')
64+
ncsave(basic, 'int64', A0, "type", 'int64')
65+
ncsave(basic, 'float32', A0, "type", 'float32')
6666

6767
assert(isa(ncread(basic, 'int32'), 'int32'), 'int32')
6868
assert(isa(ncread(basic, 'int64'), 'int64'), 'int64')

+hdf5nc/coerce_ds.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
end
77

88
switch dtype
9+
case ""
10+
return
911
case {'float64', 'double'}
1012
if ~isa(A, 'double')
1113
A = double(A);

+hdf5nc/h5save.m

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
1-
function h5save(filename, varname, A, sizeA, dtype)
1+
function h5save(filename, varname, A, opts)
22
% H5SAVE
33
% create or append to HDF5 file
44
% parent folder (file directory) must already exist
55
arguments
66
filename (1,1) string
77
varname (1,1) string
88
A {mustBeNumeric,mustBeNonempty}
9-
sizeA (1,:) {mustBeInteger,mustBeNonnegative} = []
10-
dtype (1,1) string = ""
9+
opts.size (1,:) {mustBeInteger,mustBeNonnegative} = []
10+
opts.type (1,1) string = ""
1111
end
1212

1313
filename = hdf5nc.expanduser(filename);
1414

15-
if isempty(sizeA)
15+
if isempty(opts.size)
1616
if isvector(A)
1717
sizeA = length(A);
1818
else
1919
sizeA = size(A);
2020
end
21+
else
22+
sizeA = opts.size;
2123
end
2224
% coerce if needed
23-
if dtype ~= ""
24-
A = hdf5nc.coerce_ds(A, dtype);
25-
end
25+
A = hdf5nc.coerce_ds(A, opts.type);
26+
2627
if ischar(A)
2728
A = string(A);
2829
sizeA = size(A);

+hdf5nc/ncsave.m

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
1-
function ncsave(filename, varname, A, ncdims, dtype)
1+
function ncsave(filename, varname, A, opts)
22
% NCSAVE
33
% create or append to NetCDF4 file
44
% parent folder (file directory) must already exist
55
arguments
66
filename (1,1) string
77
varname (1,1) string
88
A {mustBeNumeric,mustBeNonempty}
9-
ncdims cell = {}
10-
dtype (1,1) string = ""
9+
opts.dims cell = {}
10+
opts.type (1,1) string = ""
1111
end
1212

1313
filename = hdf5nc.expanduser(filename);
1414

15-
if ~isempty(ncdims)
16-
for i = 2:2:length(ncdims)
17-
sizeA(i/2) = ncdims{i};
18-
end
19-
else
15+
if isempty(opts.dims)
2016
if isscalar(A)
2117
sizeA = 1;
2218
ncdims = [];
@@ -34,12 +30,15 @@ function ncsave(filename, varname, A, ncdims, dtype)
3430
otherwise, error('ncsave currently does scalar through 4D')
3531
end
3632
end % if
33+
else
34+
ncdims = opts.dims;
35+
36+
for i = 2:2:length(opts.dims)
37+
sizeA(i/2) = opts.dims{i};
38+
end
3739
end
3840
% coerce if needed
39-
if dtype ~= ""
40-
A = hdf5nc.coerce_ds(A, dtype);
41-
end
42-
41+
A = hdf5nc.coerce_ds(A, opts.type);
4342

4443
if isfile(filename) && hdf5nc.ncexists(filename, varname)
4544
exist_file(filename, varname, A, sizeA)

0 commit comments

Comments
 (0)