|
300 | 300 | }, |
301 | 301 | "_ArrayIsComplex_": { |
302 | 302 | "type": "boolean", |
303 | | - "description": "True if array contains complex numbers (real and imaginary parts interleaved)" |
| 303 | + "description": "True if array contains complex numbers. _ArrayData_ is a 2-D array whose first row holds the serialized real part and second row holds the serialized imaginary part of the complex array (separate rows, not byte-interleaved)." |
304 | 304 | }, |
305 | 305 | "_ArrayIsSparse_": { |
306 | 306 | "type": "boolean", |
|
382 | 382 | "type": "integer", |
383 | 383 | "minimum": 1 |
384 | 384 | }, |
385 | | - "description": "Tile (chunk) shape for partitioning the pre-processed array into independently compressible blocks. Length must equal the number of dimensions of the pre-processed array. When present, _ArrayData_ or _ArrayZipData_ becomes a 1-D array of per-chunk payloads in row-major order. The last chunk along any dimension may be smaller than the declared shape." |
| 385 | + "minItems": 1, |
| 386 | + "description": "Tile (chunk) shape for partitioning the pre-processed array into independently compressible blocks. Length must equal the number of dimensions of the pre-processed array. When present, _ArrayData_ or _ArrayZipData_ becomes a 1-D array of per-chunk payloads in row-major order. The last chunk along any dimension may be smaller than the declared shape. _ArrayZipSize_ must also be present and stores the shape of the full pre-processed array (not the chunk shape)." |
386 | 387 | }, |
387 | 388 | "_ArrayZipType_": { |
388 | 389 | "type": "string", |
|
393 | 394 | "blosc2blosclz", "blosc2zstd", "blosc2zlib", |
394 | 395 | "base64" |
395 | 396 | ], |
396 | | - "description": "Compression codec identifier following the Numcodecs registry (also used by Zarr). Note: zlib (RFC 1950) and gzip (RFC 1952) are distinct formats. Only Blosc2 (not Blosc v1) is supported. blosc2 defaults to BloscLZ internal codec." |
| 397 | + "description": "Compression codec identifier. Note: zlib (RFC 1950) and gzip (RFC 1952) are distinct formats. Only Blosc2 (not Blosc v1) is supported. 'blosc2' defaults to the BloscLZ internal codec; 'blosc2lz4' selects LZ4, 'blosc2lz4hc' LZ4-HC, 'blosc2zstd' Zstandard, 'blosc2zlib' zlib. Additional codec-specific parameters (typesize, clevel, shuffle, nthreads) may be passed via _ArrayZipOptions_. Note: some implementations use a slash separator (e.g. 'blosc2/lz4') as an alternative to the concatenated form ('blosc2lz4'); both refer to the same codec." |
397 | 398 | }, |
398 | 399 | "_ArrayZipSize_": { |
399 | 400 | "oneOf": [ |
|
403 | 404 | "type": "integer", |
404 | 405 | "minimum": 0 |
405 | 406 | }, |
406 | | - "description": "Dimensions of the pre-processed array (multi-dimensional)" |
| 407 | + "minItems": 1, |
| 408 | + "description": "Shape of the pre-processed array (multi-dimensional form)" |
407 | 409 | }, |
408 | 410 | { |
409 | 411 | "type": "integer", |
410 | 412 | "minimum": 0, |
411 | | - "description": "Total element count of the pre-processed array (scalar shorthand)" |
| 413 | + "description": "Total element count of the pre-processed array (scalar shorthand for 1-D case)" |
412 | 414 | } |
413 | 415 | ], |
414 | | - "description": "Dimensions of the pre-processed array before compression. When _ArrayChunks_ is present, gives the shape of a full (non-boundary) chunk." |
| 416 | + "description": "Shape of the full pre-processed array before compression. When _ArrayChunks_ is present, this field MUST store the shape of the complete pre-processed array (NOT the chunk shape). The decoder uses ceil(_ArrayZipSize_ / _ArrayChunks_) to determine the number of chunks per dimension and the size of boundary tiles." |
415 | 417 | }, |
416 | 418 | "_ArrayZipData_": { |
417 | 419 | "oneOf": [ |
|
421 | 423 | }, |
422 | 424 | { |
423 | 425 | "type": "array", |
424 | | - "items": { "type": "string" }, |
425 | | - "description": "1-D array of Base64-encoded per-chunk compressed payloads (chunked array, when _ArrayChunks_ is present)" |
| 426 | + "items": { |
| 427 | + "oneOf": [ |
| 428 | + { |
| 429 | + "type": "string", |
| 430 | + "description": "Base64-encoded compressed payload for one chunk" |
| 431 | + }, |
| 432 | + { |
| 433 | + "$ref": "#/definitions/DataLinkDef", |
| 434 | + "description": "_DataLink_ reference to an externally stored chunk payload (enables distributed/lazy-loaded chunk storage)" |
| 435 | + } |
| 436 | + ] |
| 437 | + }, |
| 438 | + "description": "1-D array of per-chunk compressed payloads in row-major order (when _ArrayChunks_ is present). Each element is either a Base64-encoded string or a _DataLink_ pointing to an external chunk." |
426 | 439 | } |
427 | 440 | ], |
428 | | - "description": "Compressed and Base64-encoded array data" |
| 441 | + "description": "Compressed and Base64-encoded array data, or a 1-D cell of per-chunk payloads when _ArrayChunks_ is present" |
429 | 442 | }, |
430 | 443 | "_ArrayZipEndian_": { |
431 | 444 | "type": "string", |
|
0 commit comments