Zarr v3 Struct Support & Tensorstore

Đang mở
#241 3 bình luận 2 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

  • #264 của @BrianMichell — đã đóng, không merge

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
30/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
cpp, python
Lĩnh vực
data

Hướng nghiên cứu

Bắt đầu bằng cách so sánh các driver TensorStore Zarr v2 và v3 cũng như các định nghĩa metadata của Zarr cho các dtype có cấu trúc. Tái tạo ví dụ Xarray/Python được cung cấp với Zarr v3 và sharding, sau đó xác định driver v3 hiện hỗ trợ những gì. Công việc được xem là hoàn tất khi một khuyến nghị triển khai được ghi lại và, nếu khả thi, các field có cấu trúc được hỗ trợ thông qua driver v3.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Hi @jbms @laramiel

Zarr-Python version 3.1.0 just got released and the v3 arrays now support flexible datatypes. One (not yet marked stable) implementation is the numpy structs as if they were in zarr v2. Below example shows a Zarr that's created with Xarray that holds 2 variables (one struct, one normal) as zarr v3 and sharding.

My understanding is the V3 driver in tensorstore doesn't support numpy structs either. However, I believe it should be trivial because the binaries didn't change between zarr v2/v3 but only metadata definition of the same struct changed. Which means we can make v3 driver parse the zarr metadata and use the same logic to read the structured fields as in v2 driver?

What are your recommendations for implementation?

import numpy as np
import xarray as xr

dtype = np.dtype(
    {
        "names": ["foo", "bar"],
        "formats": ["int32", "int64"],
    }
)

encoding = {
    "headers": {"chunks": (128, 128)},
    "seismic": {"chunks": (16, 16, 16), "shards": (128, 128, 128)}
}
seis = xr.DataArray(name="seismic", dims=["inline", "crossline", "depth"], data=np.zeros((512, 512, 512), dtype="float32"))
hdr = xr.DataArray(name="headers", dims=["inline", "crossline"], data=np.zeros((512, 512), dtype=dtype))

ds = xr.Dataset({"seismic": seis, "headers": hdr})
ds.to_zarr("tmp", mode="w", zarr_format=3, encoding=encoding)
Ngôn ngữ chính
C++
Star
1.6k
Fork
151
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của google/tensorstore

Tất cả issue của google/tensorstore

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.