コード例 #1
0
ファイル: file.py プロジェクト: aldanor/blox
 def info(self, key):
     self._check_handle()
     self._check_key(key)
     is_array, offset = self._index[key]
     self._handle.seek(offset)
     if is_array:
         meta = read_json(self._handle)
         return {
             'type': 'array',
             'shape': tuple(meta['shape']),
             'dtype': restore_dtype(meta['dtype']),
             'compression': tuple(meta['comp'])
         }
     else:
         return {'type': 'json'}
コード例 #2
0
ファイル: blosc.py プロジェクト: aldanor/blox
def read_blosc(stream, out=None):
    meta = read_json(stream)
    shape = tuple(meta['shape'])
    dtype = restore_dtype(meta['dtype'])
    if out is None:
        out = np.empty(shape, dtype)
    elif not isinstance(out, np.ndarray):
        raise TypeError('expected ndarray, got {}'.format(type(out).__name__))
    elif out.shape != shape:
        raise ValueError('incompatible shape: expected {}, got {}'.format(shape, out.shape))
    elif out.dtype != dtype:
        raise ValueError('incompatible dtype: expected {}, got {}'.format(dtype, out.dtype))
    elif not out.flags.contiguous:
        raise ValueError('expected contiguous array')
    blosc.decompress_ptr(
        stream.read(meta['length']),
        out.__array_interface__['data'][0]
    )
    if out.dtype.type is np.record:
        out = out.view(np.recarray)
    return out
コード例 #3
0
ファイル: test_utils.py プロジェクト: aldanor/blox
def test_flatten_restore_dtype(dtype, flattened):
    dtype = np.dtype(dtype)
    assert flatten_dtype(dtype) == flattened
    assert restore_dtype(flatten_dtype(dtype)) == dtype
    assert restore_dtype(json.loads(json.dumps(flatten_dtype(dtype)))) == dtype