-
Notifications
You must be signed in to change notification settings - Fork 0
/
_fun.jl
55 lines (46 loc) · 1.33 KB
/
_fun.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using HDF5
function write_namedtuples_to_hdf5_groups(
parent::Union{HDF5.File,HDF5.Group},
tuple::NamedTuple
)
for (key, value) in zip(keys(tuple), tuple)
write_namedtuples_to_hdf5_groups(parent, key, value)
end
end
function write_namedtuples_to_hdf5_groups(
parent::Union{HDF5.File,HDF5.Group},
key::Symbol,
tuple::NamedTuple
)
group = create_group(parent, string(key))
write_namedtuples_to_hdf5_groups(group, tuple)
end
function write_namedtuples_to_hdf5_groups(
parent::Union{HDF5.File,HDF5.Group},
key::Symbol,
value
)
write(parent, string(key), value)
end
# earlier version with Dicts, but tuples are better memory-wise
# function write_dict(groupname, dict::Dict)
# g = create_group(fid, groupname)
# for (key, value) in dict
# keyname = groupname * "/" * key
# if typeof(value) <: Dict # nested, recurse
# write_dict(keyname, value)
# else
# write(fid, keyname, value)
# end
# end
# end
# # write top-level datasets
# fid["vacuum_wavelength"] = wavelength
# fid["tmatrix"] = tmatrix
# fid["uuid"] = uuid
# # write groups (some nested)
# write_dict("embedding", embedding)
# write_dict("materials", materials)
# write_dict("geometry", geometry)
# write_dict("modes", modes)
# write_dict("computation", computation)