【发布时间】:2019-11-17 16:25:38
【问题描述】:
我有一个关于在索引到一个 dask 数组时减少文件 io 的问题,该数组由一个加载了 dask.delayed 的 3D tiffs 文件夹构建,几乎完全是 as described in the docs,并且类似于 dask-image 方法:我的 4D (tzyx) dask.array<stack, shape=(600, 65, 512, 512), dtype=uint16, chunksize=(1, 65, 512, 512), chunktype=numpy.ndarray> 是由一堆读取 3D tiff 堆栈的 dask.delayed(skimage.io.imread) 调用构成的。
使用机会缓存,我可以最小化 完整 3D 视图上的 io 事件(即多次调用 stack[0].compute() 只会读取一次 tiff 文件),但如果我以不同的顺序依次索引到该堆栈平面,就像更改 z 位置时所做的那样(例如 stack[0,1].compute() ... stack[0,2].compute() ... ),然后 z 堆栈的每个“平面”都会产生新的读取。我想知道最好的解决方案是否可能是创建一个不同的dask.delayed 图像阅读器函数,它有自己的简单缓存机制来重新传递最近读取的文件(例如,使用cachey.memoize),或者我是否通常可以更好地使用 dask.array API 来避免多次读取。
(无论如何,我的应用程序正在使用napari 图像查看器)。
感谢您的任何建议!
【问题讨论】:
标签: dask