问题标签 [zarr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Zarr 多线程读取组
不确定这个问题是否有意义/是否相关 wrt zarr。我将 zarr 数据分组存储在磁盘上,例如我有
现在 group 是可迭代的,所以我可以迭代它并从所有组中读取数据:
有没有办法使用多线程从组中读取所有数据以加快速度?我知道在数组中您可以使用多线程来读取和写入数据。
假设按组读取数据对我来说太慢了,我应该将所有组放入一个数据数组容器中吗?我想我想知道除了组织容器之外,组的功能是什么。因为假设每个组包含相似的数据,理论上您可以将另一个轴添加到您的 numpy 数组(对于组)并将所有组存储在一个大数组中。
python-3.x - zarr.consolidate_metadata 产生错误:“memoryview”对象没有属性“decode”
我有一个现有的 LMDB zarr 存档(~6GB)保存在path
. 现在我想整合元数据以提高读取性能。
这是我的脚本:
我收到以下错误:
我正在使用zarr 2.3.2
和python 3.5.2
。我有另一台机器正在运行python 3.6.2
。它可能与python版本有关吗?
python - 具有未知形状的 Dask 数组
我正在尝试将 dask 数组存储在 zarr 文件中。
当 dask 数组具有定义的形状时,我已经设法做到了。
但是,如果我对 dask 数组执行了任何操作,形状就会丢失,并且 zarr 会抱怨形状中的 Nans。
这是引发的错误:
有没有办法将没有已知形状的 dask 数组存储到 zarr 文件中?
提前致谢!
python - 显示所有变体
我有一个 2GB 的 vcf DNA 文件,我正在尝试使用 vcf_to_zarr() 打印出具有所有固定字段的所有变体,但我收到错误 KeyError: 'variants/*'
dask - 将新的 Xarray DataArray 添加到现有的 Zarr 存储而不重写整个数据集?
如何在不覆盖整个内容的情况下DataArray
向现有内容添加新内容?Dataset
新DataArray
的与现有的共享一些坐标,但也有新的坐标。在我当前的实现中,Dataset
被完全覆盖,而不是仅仅添加新的东西。
现有的DataArray
是一个分块的 zarr 支持DirectoryStore
(尽管我对 S3 商店有同样的问题)。
ds
看起来像这样:
我将其写入目录存储:
这看起来不错的样子:
我创建了一个DataArray
与现有坐标共享一些坐标的新坐标,并将其添加到现有坐标中Dataset
。我会Dataset
先阅读现有的,因为这就是我在实践中所做的。
更新Dataset
后看起来不错:
...但是如果没有完全覆盖,我就无法写入它。
这给了我一个ValueError: The only supported options for mode are 'w' and 'w-'.
这给了我ValueError: path 'arr' contains a group
.
唯一有效的是z2 = ds2.to_zarr(store, group='arr', mode='w')
,但这完全覆盖了该组。
原文DataArray
在我的问题中其实相当大,所以我真的不想重写它。 有没有办法只写新的DataArray
?
谢谢!
zarr - 如何减少/删除 zarr 数组
我在 zarr 中有一个简单的对象数组(比如长度 1000)。我想用一个精简的版本替换它,只选择项目的一个子集,使用大小为 1000 的布尔数组指定。我想保持其他所有内容相同(例如,如果这个数组是持久的,我想更改磁盘和内存中的阵列)。我不能简单地重新分配数组:
my_zarr_data = my_zarr_data[:][selected_items]
因为那时我得到了错误ValueError: missing object_codec for object array
。另一种选择是制作一个副本,删除所有数据,然后使用 将其从原始数据添加回来append()
,但我看不到如何在保持 object_codec 和其他参数相同的同时清除zarr 数组(也许我可以这样做resize(0)
?)。目前我正在调整长度,sum(selected_items)
然后使用my_zarr_data.set_basic_selection(..., my_zarr_data[:][selected_items])
. 那正确吗?有没有一种更有效的方法可以将数组永久重新分配给(比如说)返回值get_mask_selection()
?
dask - 异步 Xarray 写入 Zarr
全部。我正在使用 Dask 分布式集群在循环内编写 Zarr+Dask 支持的 Xarray 数据集,并且dataset.to_zarr
正在阻塞。当有散乱的块阻塞循环的继续时,这确实会减慢速度。有没有办法.to_zarr
异步执行,以便循环可以继续下一个数据集写入,而不会被一些散乱的块阻碍?
image - 来自 zarr 文件的 dask 直方图(一个大 zarr 文件)
所以这是我的问题,我有一个大小为 100GB 的大 3dim 数组作为 #zarr 文件(该数组的大小超过两倍)。我曾尝试使用#Dask 中的直方图进行计算,但我收到一条错误消息,指出它无法执行此操作,因为该文件在元组中包含元组。我猜那是 zarr 文件格式而不是其他任何东西?
有什么想法吗?
编辑:是的,更大的计算机实际上无法工作......
我在一台机器上运行一个 dask 客户端,它运行计算但只是卡在某个地方。
我只是在文件中尝试了 dask.map 函数,但是当我将它绘制出来时,我得到了这样的结果:
这是脚本的一个版本:
我实际上会尝试在地图功能之外使用它。我想知道,而不是地图功能,地图块的窗口实际上会导致问题。好吧,我会告诉你是现在还是现在......
编辑 2
所以我尝试按照建议删除地图块功能,这是我的结果:
我打算在另一个笔记本上尝试,看看它是否仍然存在。
编辑 3
这是奇怪的事情,但如果我只是声明变量 h,它会作为 dask 数组中的一个小元素出现吗?
编辑
奇怪,如果我调用 xarray.hist 或 da.hist 函数,它们都会倒下。如果我使用 skimage.exposure.histogram 它可以工作,但似乎 zarr 文件在计算直方图之前已解压缩。这有点问题...
2020 年 6 月 7 日更新(针对不大但令人讨厌的中等数据的解决方案)请参阅下面的答案。
python - 如何利用 GPU 将大型 dask 数组(numpy.ndarray)写入 Zarr 文件?
我正在尝试使用 dask. 如果我的 dask 数组被命名dask_data
,那么一个简单的dask_data.to_zarr("my_zarr.zarr")
就可以了。但据我了解,这是一个同步的、受 CPU 限制的过程。
我想做的是使用并行处理分配给 Quadro GV100 GPU 的大部分工作。我试图通过将 numpy.ndarray 转换为 cupy.ndarraydask_data_cupy = dask_data.map_blocks(cupy.asarray)
并将其写入 zarr 文件,但我收到:(
ValueError: object __array__ method not producing an array
坦率地说,我也没有看到性能提升)。
我如何使用 GPU 将 dask 数组并行写入 zarr 文件?
谢谢!
python - 如何使用 dask 和 xarray 加载和处理 zarr 文件
我在 s3 中有每月 zarr 文件,其中包含网格温度数据。我想为一个纬度/经度提取多个月的数据并创建该时间序列的数据框。一些伪代码:
所以这段代码可以工作,但速度非常慢。我希望使用 dask 来加快速度。我的计划是更改一次处理一个文件并返回数据帧的方法。然后我会调用 client.map() 并生成所有 dfs,然后在最后将它们连接在一起。所以我结束了与此类似的事情:
当我将客户端连接到本地计算机时,此代码运行良好。但是当我尝试连接到远程集群时,我在 xr.open_zarr 调用中收到以下错误:
KeyError:'XXX/data.zarr/.zmetadata'
我尝试更改代码并在方法调用之外加载 zarrs 并将它们传入,但结果只给了我 nans。有什么我想念的吗?这不是解决我想要做的事情的正确方法吗?