Skip to content

Commit 522fddc

Browse files
committed
prefer imports to help meld with other programs
1 parent e5a1c76 commit 522fddc

File tree

11 files changed

+75
-52
lines changed

11 files changed

+75
-52
lines changed

+hdf5nc/h5exists.m

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
varnames (1,:) string
1212
end
1313

14+
import hdf5nc.h5variables
15+
1416
i = startsWith(varnames, "/");
1517
varnames(i) = extractAfter(varnames(i), 1);
16-
17-
exists = ismember(varnames, hdf5nc.h5variables(filename));
18+
% NOT contains because we want exact string match
19+
exists = ismember(varnames, h5variables(filename));
1820

1921
end % function

+hdf5nc/h5save.m

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ function h5save(filename, varname, A, opts)
1010
opts.type string = string.empty
1111
end
1212

13-
filename = hdf5nc.expanduser(filename);
13+
import hdf5nc.*
14+
15+
if isnumeric(A)
16+
mustBeReal(A)
17+
end
18+
19+
filename = expanduser(filename);
1420

1521
if isempty(opts.size)
1622
if isvector(A)
@@ -22,13 +28,13 @@ function h5save(filename, varname, A, opts)
2228
sizeA = opts.size;
2329
end
2430
% coerce if needed
25-
A = hdf5nc.coerce_ds(A, opts.type);
31+
A = coerce_ds(A, opts.type);
2632
if ischar(A)
2733
A = string(A);
2834
sizeA = size(A);
2935
end
3036

31-
if isfile(filename) && hdf5nc.h5exists(filename, varname)
37+
if isfile(filename) && h5exists(filename, varname)
3238
exist_file(filename, varname, A, sizeA)
3339
else
3440
new_file(filename, varname, A, sizeA)
@@ -38,8 +44,8 @@ function h5save(filename, varname, A, opts)
3844

3945

4046
function exist_file(filename, varname, A, sizeA)
41-
42-
diskshape = hdf5nc.h5size(filename, varname);
47+
import hdf5nc.h5size
48+
diskshape = h5size(filename, varname);
4349
if length(diskshape) >= 2
4450
% start is always a row vector, regardless of shape of array
4551
start = ones(1,ndims(A));
@@ -61,7 +67,7 @@ function exist_file(filename, varname, A, sizeA)
6167

6268

6369
function new_file(filename, varname, A, sizeA)
64-
70+
import hdf5nc.auto_chunk_size
6571
folder = fileparts(filename);
6672
assert(isfolder(folder), '%s is not a folder, cannot create %s', folder, filename)
6773

@@ -72,7 +78,7 @@ function new_file(filename, varname, A, sizeA)
7278
% C / Python
7379
h5create(filename, varname, sizeA, 'DataType', class(A), ...
7480
'Deflate', 1, 'Fletcher32', true, 'Shuffle', true, ...
75-
'ChunkSize', hdf5nc.auto_chunk_size(sizeA))
81+
'ChunkSize', auto_chunk_size(sizeA))
7682
end % if
7783

7884
h5write(filename, varname, A)

+hdf5nc/h5size.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
variable (1,1) string
1111
end
1212

13-
finf = h5info(hdf5nc.expanduser(filename), variable);
13+
import hdf5nc.expanduser
14+
15+
finf = h5info(expanduser(filename), variable);
1416
fsize = finf.Dataspace.Size;
1517

1618
end % function

+hdf5nc/h5variables.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
group string = string.empty
66
end
77

8+
import hdf5nc.expanduser
9+
810
names = string.empty;
911
groups = string.empty;
1012

11-
finf = h5info(hdf5nc.expanduser(filename));
13+
finf = h5info(expanduser(filename));
1214
ds = finf.Datasets;
1315
if isempty(ds)
1416
return

+hdf5nc/isoctave.m

Lines changed: 0 additions & 7 deletions
This file was deleted.

+hdf5nc/ncexists.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
varnames (1,:) string
1212
end
1313

14+
import hdf5nc.ncvariables
15+
1416
% NOT contains because we want exact string match
15-
exists = ismember(varnames, hdf5nc.ncvariables(filename));
17+
exists = ismember(varnames, ncvariables(filename));
1618

1719
end % function

+hdf5nc/ncsave.m

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ function ncsave(filename, varname, A, opts)
1010
opts.type string = string.empty
1111
end
1212

13-
filename = hdf5nc.expanduser(filename);
13+
import hdf5nc.*
14+
15+
filename = expanduser(filename);
1416

1517
if isempty(opts.dims)
1618
if isscalar(A)
@@ -38,9 +40,9 @@ function ncsave(filename, varname, A, opts)
3840
end
3941
end
4042
% coerce if needed
41-
A = hdf5nc.coerce_ds(A, opts.type);
43+
A = coerce_ds(A, opts.type);
4244

43-
if isfile(filename) && hdf5nc.ncexists(filename, varname)
45+
if isfile(filename) && ncexists(filename, varname)
4446
exist_file(filename, varname, A, sizeA)
4547
else
4648
new_file(filename, varname, A, sizeA, ncdims)
@@ -50,8 +52,8 @@ function ncsave(filename, varname, A, opts)
5052

5153

5254
function exist_file(filename, varname, A, sizeA)
53-
54-
diskshape = hdf5nc.ncsize(filename, varname);
55+
import hdf5nc.ncsize
56+
diskshape = ncsize(filename, varname);
5557

5658
if all(diskshape == sizeA)
5759
ncwrite(filename, varname, A)
@@ -65,7 +67,7 @@ function exist_file(filename, varname, A, sizeA)
6567

6668

6769
function new_file(filename, varname, A, sizeA, ncdims)
68-
70+
import hdf5nc.auto_chunk_size
6971
folder = fileparts(filename);
7072
assert(isfolder(folder), '%s is not a folder, cannot create %s', folder, filename)
7173

@@ -81,15 +83,15 @@ function new_file(filename, varname, A, sizeA, ncdims)
8183
nccreate(filename, varname, 'Dimensions', ncdims, ...
8284
'Datatype', class(A), ...
8385
'DeflateLevel', 1, 'Shuffle', true, ...
84-
'ChunkSize', hdf5nc.auto_chunk_size(sizeA), ...
86+
'ChunkSize', auto_chunk_size(sizeA), ...
8587
'Format', 'netcdf4')
8688
end
8789

8890
ncwrite(filename, varname, A)
8991

9092
end % function
9193

92-
% Copyright 2020 Michael Hirsch, Ph.D.
94+
% Copyright 2020 Michael Hirsch
9395

9496
% Licensed under the Apache License, Version 2.0 (the "License");
9597
% you may not use this file except in compliance with the License.

+hdf5nc/ncsize.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
varname (1,1) string
1111
end
1212

13-
vinf = ncinfo(hdf5nc.expanduser(filename), varname);
13+
import hdf5nc.expanduser
14+
15+
vinf = ncinfo(expanduser(filename), varname);
1416
fsize = vinf.Size;
1517

1618
% Octave compatibility

+hdf5nc/ncvariables.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
filename (1,1) string
55
end
66

7-
finf = ncinfo(hdf5nc.expanduser(filename));
7+
import hdf5nc.expanduser
8+
9+
finf = ncinfo(expanduser(filename));
810
ds = finf.Variables(:);
911
names = string({ds(:).Name});
1012

+hdf5nc/test_hdf5.m

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,28 +34,30 @@ function teardownOnce(tc)
3434

3535

3636
function test_auto_chunk_size(tc)
37-
38-
tc.assertEqual(hdf5nc.auto_chunk_size([1500,2500,1000,500,100]), [12,20,8,8,2], '5D chunk fail')
39-
tc.assertEqual(hdf5nc.auto_chunk_size([15,250,100]), [2,32,25], '3D chunk fail')
40-
tc.assertEqual(hdf5nc.auto_chunk_size([15,250]), [15,250], '2D small chunk fail')
37+
import hdf5nc.auto_chunk_size
38+
tc.assertEqual(auto_chunk_size([1500,2500,1000,500,100]), [12,20,8,8,2], '5D chunk fail')
39+
tc.assertEqual(auto_chunk_size([15,250,100]), [2,32,25], '3D chunk fail')
40+
tc.assertEqual(auto_chunk_size([15,250]), [15,250], '2D small chunk fail')
4141

4242
end
4343

4444

4545
function test_get_variables(tc)
46-
vars = hdf5nc.h5variables(tc.TestData.basic);
46+
import hdf5nc.h5variables
47+
vars = h5variables(tc.TestData.basic);
4748
tc.assertEqual(sort(vars), ["A0", "A1", "A2", "A3", "A4"], 'missing variables')
4849
end
4950

5051

5152
function test_exists(tc)
52-
e0 = hdf5nc.h5exists(tc.TestData.basic, '/A3');
53+
import hdf5nc.h5exists
54+
e0 = h5exists(tc.TestData.basic, '/A3');
5355
tc.assertTrue(isscalar(e0))
5456
tc.assertTrue(e0, 'A3 exists')
5557

56-
tc.assertFalse(hdf5nc.h5exists(tc.TestData.basic, '/oops'), 'oops not exist')
58+
tc.assertFalse(h5exists(tc.TestData.basic, '/oops'), 'oops not exist')
5759

58-
e1 = hdf5nc.h5exists(tc.TestData.basic, ["A3", "oops"]);
60+
e1 = h5exists(tc.TestData.basic, ["A3", "oops"]);
5961
tc.assertTrue(isrow(e1))
6062
tc.assertEqual(e1, [true, false])
6163
end
@@ -112,12 +114,12 @@ function test_read(tc)
112114

113115

114116
function test_coerce(tc)
115-
117+
import hdf5nc.h5save
116118
basic = tc.TestData.basic;
117119

118-
hdf5nc.h5save(basic, '/int32', 0, "type", 'int32')
119-
hdf5nc.h5save(basic, '/int64', 0, "type", 'int64')
120-
hdf5nc.h5save(basic, '/float32', 0, "type", 'float32')
120+
h5save(basic, '/int32', 0, "type", 'int32')
121+
h5save(basic, '/int64', 0, "type", 'int64')
122+
h5save(basic, '/float32', 0, "type", 'float32')
121123

122124
tc.assertClass(h5read(basic, '/int32'), 'int32', 'int32')
123125
tc.assertClass(h5read(basic, '/int64'), 'int64', 'int64')
@@ -126,13 +128,15 @@ function test_coerce(tc)
126128

127129

128130
function test_rewrite(tc)
129-
hdf5nc.h5save(tc.TestData.basic, '/A2', 3*magic(4))
131+
import hdf5nc.h5save
132+
h5save(tc.TestData.basic, '/A2', 3*magic(4))
130133
tc.assertEqual(h5read(tc.TestData.basic, '/A2'), 3*magic(4), 'rewrite 2D fail')
131134
end
132135

133136
function test_string(tc)
134-
hdf5nc.h5save(tc.TestData.basic, "/a_string", "hello")
135-
hdf5nc.h5save(tc.TestData.basic, "/a_char", 'there')
137+
import hdf5nc.h5save
138+
h5save(tc.TestData.basic, "/a_string", "hello")
139+
h5save(tc.TestData.basic, "/a_char", 'there')
136140

137141
astr = h5read(tc.TestData.basic, "/a_string");
138142
achar = h5read(tc.TestData.basic, "/a_char");
@@ -143,5 +147,6 @@ function test_string(tc)
143147
end
144148

145149
function test_real_only(tc)
146-
tc.assertError(@() hdf5nc.h5save(tc.TestData.basic, "/bad_imag", 1j), 'MATLAB:imagesci:hdf5dataset:badInputClass')
150+
import hdf5nc.h5save
151+
tc.assertError(@() h5save(tc.TestData.basic, "/bad_imag", 1j), 'MATLAB:validators:mustBeReal')
147152
end

0 commit comments

Comments
 (0)