c07a92efbe
Started new SVG exporter Merged updates from ACQ4
87 lines
1.7 KiB
Matlab
87 lines
1.7 KiB
Matlab
function f = readMeta(file)
|
|
info = hdf5info(file);
|
|
f = readMetaRecursive(info.GroupHierarchy.Groups(1));
|
|
end
|
|
|
|
|
|
function f = readMetaRecursive(root)
|
|
typ = 0;
|
|
for i = 1:length(root.Attributes)
|
|
if strcmp(root.Attributes(i).Shortname, '_metaType_')
|
|
typ = root.Attributes(i).Value.Data;
|
|
break
|
|
end
|
|
end
|
|
if typ == 0
|
|
printf('group has no _metaType_')
|
|
typ = 'dict';
|
|
end
|
|
|
|
list = 0;
|
|
if strcmp(typ, 'list') || strcmp(typ, 'tuple')
|
|
data = {};
|
|
list = 1;
|
|
elseif strcmp(typ, 'dict')
|
|
data = struct();
|
|
else
|
|
printf('Unrecognized meta type %s', typ);
|
|
data = struct();
|
|
end
|
|
|
|
for i = 1:length(root.Attributes)
|
|
name = root.Attributes(i).Shortname;
|
|
if strcmp(name, '_metaType_')
|
|
continue
|
|
end
|
|
val = root.Attributes(i).Value;
|
|
if isa(val, 'hdf5.h5string')
|
|
val = val.Data;
|
|
end
|
|
if list
|
|
ind = str2num(name)+1;
|
|
data{ind} = val;
|
|
else
|
|
data.(name) = val;
|
|
end
|
|
end
|
|
|
|
for i = 1:length(root.Datasets)
|
|
fullName = root.Datasets(i).Name;
|
|
name = stripName(fullName);
|
|
file = root.Datasets(i).Filename;
|
|
data2 = hdf5read(file, fullName);
|
|
if list
|
|
ind = str2num(name)+1;
|
|
data{ind} = data2;
|
|
else
|
|
data.(name) = data2;
|
|
end
|
|
end
|
|
|
|
for i = 1:length(root.Groups)
|
|
name = stripName(root.Groups(i).Name);
|
|
data2 = readMetaRecursive(root.Groups(i));
|
|
if list
|
|
ind = str2num(name)+1;
|
|
data{ind} = data2;
|
|
else
|
|
data.(name) = data2;
|
|
end
|
|
end
|
|
f = data;
|
|
return;
|
|
end
|
|
|
|
|
|
function f = stripName(str)
|
|
inds = strfind(str, '/');
|
|
if isempty(inds)
|
|
f = str;
|
|
else
|
|
f = str(inds(length(inds))+1:length(str));
|
|
end
|
|
end
|
|
|
|
|
|
|