我正在将大型文本文件(VCF)中的数据读取到 zarr 数组中。代码的整体流程是
with zarr.LMDBStore(...) as store:
array = zarr.create(..., chunks=(1000,1000), store=store, ...)
for line_num, line in enumerate(text_file):
array[line_num, :] = process_data(line)
我想知道 - zarr 何时压缩修改后的数组块并将它们推送到底层存储(在本例中为 LMDB)?每次更新块(即每一行)时都会这样做吗?或者它是否等到一个块被填充/从内存中删除后再这样做?假设我需要在 for 循环中分别处理每一行(由于数据和处理的性质,这里没有有效的数组操作可供使用),关于我如何馈送,我应该在这里做任何优化吗数据导入Zarr?
我只是不希望 Zarr 在每一行对每个修改的块运行压缩,因为每个块在完成并准备保存到磁盘之前将被修改 1000 次。
谢谢!