[英]I'm getting a TypeError when converting .h5 (HDF5) file into .zarr format
我正在嘗試將 .h5 文件轉換為 .zarr 格式,但出現以下錯誤
TypeError: Object of type bytes_ is not JSON serializable
我在下面發布我的代碼
import h5py
import zarr
from sys import stdout
source = h5py.File('file.h5', 'r')
dest = zarr.open('file.zarr', 'w')
zarr.convenience.copy_all(source, dest, log=stdout, dry_run=False, if_exists='replace')
我檢查了 zarr 文檔,一些 github 問題,但無法弄清楚如何解決這個錯誤。
我正在添加我已經看過但找不到(或說實話)任何東西的鏈接
https://zarr.readthedocs.io/en/stable/api/convenience.html#zarr.convenience.copy_all
https://github.com/zarr-developers/zarr-python/issues/87
這是錯誤的回溯
Traceback (most recent call last):
File "/home/prk/Documents/IISER-stuff/scripts/h5_to_zarr.py", line 8, in <module>
zarr.convenience.copy_all(source, dest, log=stdout, dry_run=False, if_exists='replace')
File "/home/prk/Documents/IISER-stuff/venv/lib/python3.8/site-packages/zarr/convenience.py", line 1063, in copy_all
c, s, b = _copy(
File "/home/prk/Documents/IISER-stuff/venv/lib/python3.8/site-packages/zarr/convenience.py", line 903, in _copy
ds.attrs.update(source.attrs)
File "/home/prk/Documents/IISER-stuff/venv/lib/python3.8/site-packages/zarr/attrs.py", line 120, in update
self._write_op(self._update_nosync, *args, **kwargs)
File "/home/prk/Documents/IISER-stuff/venv/lib/python3.8/site-packages/zarr/attrs.py", line 74, in _write_op
return f(*args, **kwargs)
File "/home/prk/Documents/IISER-stuff/venv/lib/python3.8/site-packages/zarr/attrs.py", line 131, in _update_nosync
self._put_nosync(d)
File "/home/prk/Documents/IISER-stuff/venv/lib/python3.8/site-packages/zarr/attrs.py", line 113, in _put_nosync
self.store[self.key] = json_dumps(d)
File "/home/prk/Documents/IISER-stuff/venv/lib/python3.8/site-packages/zarr/util.py", line 24, in json_dumps
return json.dumps(o, indent=4, sort_keys=True, ensure_ascii=True,
File "/usr/lib/python3.8/json/__init__.py", line 234, in dumps
return cls(
File "/usr/lib/python3.8/json/encoder.py", line 201, in encode
chunks = list(chunks)
File "/usr/lib/python3.8/json/encoder.py", line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "/usr/lib/python3.8/json/encoder.py", line 405, in _iterencode_dict
yield from chunks
File "/usr/lib/python3.8/json/encoder.py", line 438, in _iterencode
o = _default(o)
File "/usr/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes_ is not JSON serializable
你有資源來試試這個命令行工具: https://github.com/saalfeldlab/n5-utils
安裝后調用
n5-copy -i file.h5 -o file.zarr
JSON 導出器處理字節元數據的方式可能只是一個小故障,這至少可以為您提供所需的副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.