Merge pull request #585 from acq4/metaarray-appendable-keys
MetaArray: make it possible to append multiple axis values
This commit is contained in:
commit
97c35e6bb4
@ -748,7 +748,6 @@ class MetaArray(object):
|
||||
else:
|
||||
fd.seek(0)
|
||||
meta = MetaArray._readMeta(fd)
|
||||
|
||||
if not kwargs.get("readAllData", True):
|
||||
self._data = np.empty(meta['shape'], dtype=meta['type'])
|
||||
if 'version' in meta:
|
||||
@ -1031,6 +1030,7 @@ class MetaArray(object):
|
||||
"""Write this object to a file. The object can be restored by calling MetaArray(file=fileName)
|
||||
opts:
|
||||
appendAxis: the name (or index) of the appendable axis. Allows the array to grow.
|
||||
appendKeys: a list of keys (other than "values") for metadata to append to on the appendable axis.
|
||||
compression: None, 'gzip' (good compression), 'lzf' (fast compression), etc.
|
||||
chunks: bool or tuple specifying chunk shape
|
||||
"""
|
||||
@ -1097,7 +1097,6 @@ class MetaArray(object):
|
||||
'compression': None
|
||||
}
|
||||
|
||||
|
||||
## set maximum shape to allow expansion along appendAxis
|
||||
append = False
|
||||
if appAxis is not None:
|
||||
@ -1125,14 +1124,19 @@ class MetaArray(object):
|
||||
data[tuple(sl)] = self.view(np.ndarray)
|
||||
|
||||
## add axis values if they are present.
|
||||
axKeys = ["values"]
|
||||
axKeys.extend(opts.get("appendKeys", []))
|
||||
axInfo = f['info'][str(ax)]
|
||||
if 'values' in axInfo:
|
||||
v = axInfo['values']
|
||||
v2 = self._info[ax]['values']
|
||||
for key in axKeys:
|
||||
if key in axInfo:
|
||||
v = axInfo[key]
|
||||
v2 = self._info[ax][key]
|
||||
shape = list(v.shape)
|
||||
shape[0] += v2.shape[0]
|
||||
v.resize(shape)
|
||||
v[-v2.shape[0]:] = v2
|
||||
else:
|
||||
raise TypeError('Cannot append to axis info key "%s"; this key is not present in the target file.' % key)
|
||||
f.close()
|
||||
else:
|
||||
f = h5py.File(fileName, 'w')
|
||||
|
Loading…
Reference in New Issue
Block a user