问题描述
简介。
我通过使用 dask
client.map
将一组函数映射到图像并返回一个 Pandas 数据帧来并行处理多个图像。我无法在计算之前预测输出的大小。
为了使代码更具可读性,并且不必在计算图像元数据中拖来拖去,我一直在查看 xarray
。
我通过使用 .zarr
和 open_mfdataset
加载 parallel=True
文件来创建数据集。
这是创建一个类似于我正在使用的模拟数据集的片段
import xarray as xr
from dask import array as da
import numpy as np
# Create data array
def create_mock_dataset():
data = da.random.random([2,3,2,10,10])
mock_array = xr.DataArray(
data=data,coords={
"fov":np.arange(2),"round_num": np.arange(3),'z':np.arange(2),'r':np.arange(10),'c':np.arange(10),},dims=["fov","round_num","z","r","c"])
ds = xr.Dataset({"mock": mock_array})
chunks_dict = {'fov':1,'round_num':1,'z':2,'r':10,'c':10}
ds = ds.chunk(chunks_dict)
return ds
test_dataset = create_mock_dataset()
def chunk_processing_func(xarray_chunk):
# processing of the chunk
# reduced to different shape or
# data structure ex. pandas dataframe
mock_output = np.arange(200) # can a dataframe or another data structure
return mock_output
我想并行处理每个块(对应于图像)并利用 xarray 中的 coords
数据。
我一直在测试 apply_ufunc
(按照这个非常清晰的 answer 中的说明)或 map_blocks
但如果我理解正确,输出的大小必须是已知的。
那么,使用坐标信息和数据但返回不需要与数据集对齐的不同类型输出的函数,处理并行 xarray 数据集的最佳方法是什么?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)