@fideus-labs/ngff-zarr 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/esm/browser-mod.d.ts +3 -3
  2. package/esm/browser-mod.d.ts.map +1 -1
  3. package/esm/browser-mod.js +3 -4
  4. package/esm/browser-mod.js.map +1 -1
  5. package/esm/io/from_ngff_zarr.d.ts.map +1 -1
  6. package/esm/io/from_ngff_zarr.js +34 -116
  7. package/esm/io/from_ngff_zarr.js.map +1 -1
  8. package/esm/io/rfc9_zip.d.ts +80 -0
  9. package/esm/io/rfc9_zip.d.ts.map +1 -0
  10. package/esm/io/rfc9_zip.js +337 -0
  11. package/esm/io/rfc9_zip.js.map +1 -0
  12. package/esm/io/to_ngff_zarr-browser.d.ts +26 -0
  13. package/esm/io/to_ngff_zarr-browser.d.ts.map +1 -1
  14. package/esm/io/to_ngff_zarr-browser.js +37 -6
  15. package/esm/io/to_ngff_zarr-browser.js.map +1 -1
  16. package/esm/io/to_ngff_zarr.d.ts +76 -0
  17. package/esm/io/to_ngff_zarr.d.ts.map +1 -1
  18. package/esm/io/to_ngff_zarr.js +129 -7
  19. package/esm/io/to_ngff_zarr.js.map +1 -1
  20. package/esm/io/to_ngff_zarr_ozx_common.d.ts +51 -0
  21. package/esm/io/to_ngff_zarr_ozx_common.d.ts.map +1 -0
  22. package/esm/io/to_ngff_zarr_ozx_common.js +126 -0
  23. package/esm/io/to_ngff_zarr_ozx_common.js.map +1 -0
  24. package/esm/methods/itkwasm-browser.d.ts.map +1 -1
  25. package/esm/methods/itkwasm-browser.js +262 -4
  26. package/esm/methods/itkwasm-browser.js.map +1 -1
  27. package/esm/methods/itkwasm-node.d.ts.map +1 -1
  28. package/esm/methods/itkwasm-node.js +262 -4
  29. package/esm/methods/itkwasm-node.js.map +1 -1
  30. package/esm/methods/itkwasm-shared.d.ts +6 -0
  31. package/esm/methods/itkwasm-shared.d.ts.map +1 -1
  32. package/esm/methods/itkwasm-shared.js +6 -0
  33. package/esm/methods/itkwasm-shared.js.map +1 -1
  34. package/esm/mod.d.ts +5 -0
  35. package/esm/mod.d.ts.map +1 -1
  36. package/esm/mod.js +5 -0
  37. package/esm/mod.js.map +1 -1
  38. package/esm/process/to_multiscales-shared.d.ts.map +1 -1
  39. package/esm/process/to_multiscales-shared.js +3 -2
  40. package/esm/process/to_multiscales-shared.js.map +1 -1
  41. package/esm/types/supported_versions.d.ts +20 -0
  42. package/esm/types/supported_versions.d.ts.map +1 -0
  43. package/esm/types/supported_versions.js +31 -0
  44. package/esm/types/supported_versions.js.map +1 -0
  45. package/esm/types/zarr_metadata.d.ts +43 -1
  46. package/esm/types/zarr_metadata.d.ts.map +1 -1
  47. package/esm/types/zarr_metadata.js +40 -0
  48. package/esm/types/zarr_metadata.js.map +1 -1
  49. package/esm/utils/factory.d.ts +3 -2
  50. package/esm/utils/factory.d.ts.map +1 -1
  51. package/esm/utils/factory.js +6 -2
  52. package/esm/utils/factory.js.map +1 -1
  53. package/esm/utils/from_zarr_attrs.d.ts +21 -0
  54. package/esm/utils/from_zarr_attrs.d.ts.map +1 -0
  55. package/esm/utils/from_zarr_attrs.js +326 -0
  56. package/esm/utils/from_zarr_attrs.js.map +1 -0
  57. package/esm/utils/parse_metadata.d.ts +27 -0
  58. package/esm/utils/parse_metadata.d.ts.map +1 -0
  59. package/esm/utils/parse_metadata.js +138 -0
  60. package/esm/utils/parse_metadata.js.map +1 -0
  61. package/esm/utils/rfc4_validation.d.ts +20 -0
  62. package/esm/utils/rfc4_validation.d.ts.map +1 -0
  63. package/esm/utils/rfc4_validation.js +98 -0
  64. package/esm/utils/rfc4_validation.js.map +1 -0
  65. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"to_multiscales-shared.js","sourceRoot":"","sources":["../../src/process/to_multiscales-shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"to_multiscales-shared.js","sourceRoot":"","sources":["../../src/process/to_multiscales-shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Constants for ngff-zarr package.
3
+ */
4
+ export declare enum NgffVersion {
5
+ V01 = "0.1",
6
+ V02 = "0.2",
7
+ V03 = "0.3",
8
+ V04 = "0.4",
9
+ V05 = "0.5",
10
+ LATEST = "0.5"
11
+ }
12
+ /**
13
+ * Supported NGFF specification versions
14
+ */
15
+ export declare const SUPPORTED_VERSIONS: readonly NgffVersion[];
16
+ /**
17
+ * Check if a version string is supported
18
+ */
19
+ export declare function isSupportedVersion(version: string): version is NgffVersion;
20
+ //# sourceMappingURL=supported_versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supported_versions.d.ts","sourceRoot":"","sources":["../../src/types/supported_versions.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,MAAM,QAAQ;CACf;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,WAAW,EAM3C,CAAC;AAEX;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,WAAW,CAE1E"}
@@ -0,0 +1,31 @@
1
+ // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
+ // SPDX-License-Identifier: MIT
3
+ /**
4
+ * Constants for ngff-zarr package.
5
+ */
6
+ export var NgffVersion;
7
+ (function (NgffVersion) {
8
+ NgffVersion["V01"] = "0.1";
9
+ NgffVersion["V02"] = "0.2";
10
+ NgffVersion["V03"] = "0.3";
11
+ NgffVersion["V04"] = "0.4";
12
+ NgffVersion["V05"] = "0.5";
13
+ NgffVersion["LATEST"] = "0.5";
14
+ })(NgffVersion || (NgffVersion = {}));
15
+ /**
16
+ * Supported NGFF specification versions
17
+ */
18
+ export const SUPPORTED_VERSIONS = [
19
+ NgffVersion.V01,
20
+ NgffVersion.V02,
21
+ NgffVersion.V03,
22
+ NgffVersion.V04,
23
+ NgffVersion.V05,
24
+ ];
25
+ /**
26
+ * Check if a version string is supported
27
+ */
28
+ export function isSupportedVersion(version) {
29
+ return Object.values(NgffVersion).includes(version);
30
+ }
31
+ //# sourceMappingURL=supported_versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supported_versions.js","sourceRoot":"","sources":["../../src/types/supported_versions.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAE/B;;GAEG;AAEH,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,6BAAc,CAAA;AAChB,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,WAAW,CAAC,GAAG;IACf,WAAW,CAAC,GAAG;IACf,WAAW,CAAC,GAAG;IACf,WAAW,CAAC,GAAG;IACf,WAAW,CAAC,GAAG;CACP,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAsB,CAAC,CAAC;AACrE,CAAC"}
@@ -1,8 +1,20 @@
1
1
  import type { AxesType, SupportedDims, Units } from "./units.js";
2
+ import { NgffVersion } from "./supported_versions.js";
3
+ import type { NgffImage } from "./ngff_image.js";
4
+ import type { AnatomicalOrientation } from "./rfc4.js";
5
+ /**
6
+ * Orientation metadata for spatial axes (RFC 4).
7
+ * This interface represents the serialized form in the zarr metadata.
8
+ */
9
+ export interface AxisOrientation {
10
+ type: string;
11
+ value: string;
12
+ }
2
13
  export interface Axis {
3
14
  name: SupportedDims;
4
15
  type: AxesType;
5
16
  unit: Units | undefined;
17
+ orientation?: AxisOrientation | AnatomicalOrientation | undefined;
6
18
  }
7
19
  export interface Identity {
8
20
  type: "identity";
@@ -41,7 +53,10 @@ export interface MethodMetadata {
41
53
  method: string;
42
54
  version: string;
43
55
  }
44
- export interface Metadata {
56
+ /**
57
+ * OME-Zarr Metadata interface for data transfer
58
+ */
59
+ export interface MetadataInterface {
45
60
  axes: Axis[];
46
61
  datasets: Dataset[];
47
62
  coordinateTransformations: Transform[] | undefined;
@@ -51,6 +66,33 @@ export interface Metadata {
51
66
  type?: string;
52
67
  metadata?: MethodMetadata;
53
68
  }
69
+ /**
70
+ * Result from parsing zarr attributes
71
+ */
72
+ export interface FromZarrAttrsResult {
73
+ metadata: MetadataInterface;
74
+ images: NgffImage[];
75
+ }
76
+ export type Metadata = MetadataInterface;
77
+ /**
78
+ * Result from parsing zarr attributes
79
+ */
80
+ export interface FromZarrAttrsResult {
81
+ metadata: MetadataInterface;
82
+ images: NgffImage[];
83
+ }
84
+ /**
85
+ * Supported dimension names for backward compatibility
86
+ */
87
+ export declare const SUPPORTED_DIMS: readonly SupportedDims[];
88
+ /**
89
+ * Create a Metadata object with the specified version
90
+ */
91
+ export declare function createMetadataWithVersion(metadata: MetadataInterface, targetVersion: string | NgffVersion): MetadataInterface;
92
+ /**
93
+ * Get dimension names from metadata axes
94
+ */
95
+ export declare function getDimensionNames(metadata: MetadataInterface): string[];
54
96
  export declare function validateColor(color: string): void;
55
97
  export declare function createScale(scale: number[]): Scale;
56
98
  export declare function createTranslation(translation: number[]): Translation;
@@ -1 +1 @@
1
- {"version":3,"file":"zarr_metadata.d.ts","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;AAE5C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB,EAAE,SAAS,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,yBAAyB,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACnD,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAElD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,CAEpE;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAEzC"}
1
+ {"version":3,"file":"zarr_metadata.d.ts","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,43 @@
1
+ import { NgffVersion } from "./supported_versions.js";
2
+ /**
3
+ * Supported dimension names for backward compatibility
4
+ */
5
+ export const SUPPORTED_DIMS = [
6
+ "t",
7
+ "c",
8
+ "z",
9
+ "y",
10
+ "x",
11
+ ];
12
+ /**
13
+ * Create a Metadata object with the specified version
14
+ */
15
+ export function createMetadataWithVersion(metadata, targetVersion) {
16
+ const version = typeof targetVersion === "string"
17
+ ? targetVersion
18
+ : targetVersion;
19
+ if (version === NgffVersion.V04) {
20
+ return {
21
+ ...metadata,
22
+ version: "0.4",
23
+ };
24
+ }
25
+ else if (version === NgffVersion.V05) {
26
+ return {
27
+ ...metadata,
28
+ version: "0.5",
29
+ };
30
+ }
31
+ else {
32
+ throw new Error(`Unsupported version conversion: ${metadata.version} -> ${version}`);
33
+ }
34
+ }
35
+ /**
36
+ * Get dimension names from metadata axes
37
+ */
38
+ export function getDimensionNames(metadata) {
39
+ return metadata.axes.map((ax) => ax.name);
40
+ }
1
41
  export function validateColor(color) {
2
42
  if (!/^[0-9A-Fa-f]{6}$/.test(color)) {
3
43
  throw new Error(`Invalid color '${color}'. Must be 6 hex digits.`);
@@ -1 +1 @@
1
- {"version":3,"file":"zarr_metadata.js","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"AAmEA,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,0BAA0B,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAqB;IACrD,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"zarr_metadata.js","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAmGtD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA2B,EAC3B,aAAmC;IAEnC,MAAM,OAAO,GAAG,OAAO,aAAa,KAAK,QAAQ;QAC/C,CAAC,CAAE,aAA6B;QAChC,CAAC,CAAC,aAAa,CAAC;IAElB,IAAI,OAAO,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;QACvC,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,CAAC,OAAO,OAAO,OAAO,EAAE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA2B;IAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,0BAA0B,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAqB;IACrD,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { NgffImage } from "../types/ngff_image.js";
2
2
  import { Multiscales } from "../types/multiscales.js";
3
- import type { Axis, Dataset, Metadata, Scale, Translation } from "../types/zarr_metadata.js";
3
+ import type { Axis, AxisOrientation, Dataset, Metadata, Scale, Translation } from "../types/zarr_metadata.js";
4
4
  import type { AxesType, SupportedDims, Units } from "../types/units.js";
5
5
  import type { Methods } from "../types/methods.js";
6
+ import type { AnatomicalOrientation } from "../types/rfc4.js";
6
7
  export declare function createNgffImage(_data: ArrayBuffer | number[], shape: number[], dtype: string, dims: string[], scale: Record<string, number>, translation: Record<string, number>, name?: string): Promise<NgffImage>;
7
- export declare function createAxis(name: SupportedDims, type: AxesType, unit?: Units): Axis;
8
+ export declare function createAxis(name: SupportedDims, type: AxesType, unit?: Units, orientation?: AxisOrientation | AnatomicalOrientation): Axis;
8
9
  export declare function createScale(scale: number[]): Scale;
9
10
  export declare function createTranslation(translation: number[]): Translation;
10
11
  export declare function createDataset(path: string, scale: number[], translation: number[]): Dataset;
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/utils/factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAsBnD,wBAAsB,eAAe,CACnC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,EAC7B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,IAAI,SAAU,GACb,OAAO,CAAC,SAAS,CAAC,CAYpB;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,QAAQ,EACd,IAAI,CAAC,EAAE,KAAK,GACX,IAAI,CAMN;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAKlD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,CAKpE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAQT;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EAAE,EACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,SAAU,EACd,OAAO,SAAQ,GACd,QAAQ,CASV;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EAAE,EACnB,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EAClD,MAAM,CAAC,EAAE,OAAO,GACf,WAAW,CAQb"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/utils/factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EACV,IAAI,EACJ,eAAe,EACf,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAsB9D,wBAAsB,eAAe,CACnC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,EAC7B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,IAAI,SAAU,GACb,OAAO,CAAC,SAAS,CAAC,CAYpB;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,QAAQ,EACd,IAAI,CAAC,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,eAAe,GAAG,qBAAqB,GACpD,IAAI,CAUN;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAKlD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,CAKpE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAQT;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EAAE,EACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,SAAU,EACd,OAAO,SAAQ,GACd,QAAQ,CASV;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EAAE,EACnB,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EAClD,MAAM,CAAC,EAAE,OAAO,GACf,WAAW,CAQb"}
@@ -27,12 +27,16 @@ export async function createNgffImage(_data, shape, dtype, dims, scale, translat
27
27
  computedCallbacks: undefined,
28
28
  });
29
29
  }
30
- export function createAxis(name, type, unit) {
31
- return {
30
+ export function createAxis(name, type, unit, orientation) {
31
+ const axis = {
32
32
  name,
33
33
  type,
34
34
  unit: unit || undefined,
35
35
  };
36
+ if (orientation) {
37
+ axis.orientation = orientation;
38
+ }
39
+ return axis;
36
40
  }
37
41
  export function createScale(scale) {
38
42
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/utils/factory.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAC/B,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAWtD,2DAA2D;AAC3D,KAAK,UAAU,mBAAmB,CAChC,KAAe,EACf,KAAa,EACb,MAAgB,EAChB,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE9B,sDAAsD;IACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClD,KAAK;QACL,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,KAAsB;KAClC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAA6B,EAC7B,KAAe,EACf,KAAa,EACb,IAAc,EACd,KAA6B,EAC7B,WAAmC,EACnC,IAAI,GAAG,OAAO;IAEd,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAEvE,OAAO,IAAI,SAAS,CAAC;QACnB,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,KAAK;QACL,WAAW;QACX,IAAI;QACJ,SAAS,EAAE,SAAS;QACpB,iBAAiB,EAAE,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAmB,EACnB,IAAc,EACd,IAAY;IAEZ,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,IAAI,IAAI,SAAS;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,IAAI,EAAE,OAAO;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAqB;IACrD,OAAO;QACL,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;QAC7B,IAAI,EAAE,aAAa;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,KAAe,EACf,WAAqB;IAErB,OAAO;QACL,IAAI;QACJ,yBAAyB,EAAE;YACzB,WAAW,CAAC,KAAK,CAAC;YAClB,iBAAiB,CAAC,WAAW,CAAC;SAC/B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,QAAmB,EACnB,IAAI,GAAG,OAAO,EACd,OAAO,GAAG,KAAK;IAEf,OAAO;QACL,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACf,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvB,yBAAyB,EAAE,SAAS;QACpC,KAAK,EAAE,SAAS;QAChB,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,QAAkB,EAClB,YAAkD,EAClD,MAAgB;IAEhB,OAAO,IAAI,WAAW,CAAC;QACrB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;QACnB,QAAQ;QACR,YAAY,EAAE,YAAY,IAAI,SAAS;QACvC,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/utils/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Functions for parsing Metadata from zarr store attributes.
3
+ */
4
+ import * as zarr from "zarrita";
5
+ import type { FromZarrAttrsResult } from "../types/zarr_metadata.js";
6
+ import type { MemoryStore } from "../io/from_ngff_zarr.js";
7
+ /**
8
+ * Parse Metadata and NgffImages from OME-Zarr v0.4 root attributes.
9
+ *
10
+ * This mirrors the Python `Metadata._from_zarr_attrs` class method.
11
+ */
12
+ export declare function fromZarrAttrsV04(rootAttrs: Record<string, unknown>, store: MemoryStore | zarr.FetchStore | zarr.Readable, validate?: boolean): Promise<FromZarrAttrsResult>;
13
+ /**
14
+ * Parse Metadata and NgffImages from OME-Zarr v0.5 root attributes.
15
+ *
16
+ * The v0.5 format typically wraps multiscales under the "ome" key,
17
+ * but for compatibility we also handle the case where multiscales
18
+ * is at the root level (as written by toNgffZarr).
19
+ */
20
+ export declare function fromZarrAttrsV05(rootAttrs: Record<string, unknown>, store: MemoryStore | zarr.FetchStore | zarr.Readable, validate?: boolean): Promise<FromZarrAttrsResult>;
21
+ //# sourceMappingURL=from_zarr_attrs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from_zarr_attrs.d.ts","sourceRoot":"","sources":["../../src/utils/from_zarr_attrs.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAGV,mBAAmB,EAMpB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsE3D;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EACpD,QAAQ,UAAQ,GACf,OAAO,CAAC,mBAAmB,CAAC,CA6R9B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EACpD,QAAQ,UAAQ,GACf,OAAO,CAAC,mBAAmB,CAAC,CA6B9B"}
@@ -0,0 +1,326 @@
1
+ // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
+ // SPDX-License-Identifier: MIT
3
+ /**
4
+ * Functions for parsing Metadata from zarr store attributes.
5
+ */
6
+ import * as zarr from "zarrita";
7
+ import { SUPPORTED_DIMS } from "../types/zarr_metadata.js";
8
+ import { NgffImage } from "../types/ngff_image.js";
9
+ import { parseOmero } from "./parse_metadata.js";
10
+ import { hasRfc4OrientationMetadata, validateRfc4Orientation, } from "./rfc4_validation.js";
11
+ import { AnatomicalOrientationValues } from "../types/rfc4.js";
12
+ /**
13
+ * Map string orientation values to enum values
14
+ */
15
+ const ORIENTATION_VALUE_MAP = {
16
+ "left-to-right": AnatomicalOrientationValues.LeftToRight,
17
+ "right-to-left": AnatomicalOrientationValues.RightToLeft,
18
+ "anterior-to-posterior": AnatomicalOrientationValues.AnteriorToPosterior,
19
+ "posterior-to-anterior": AnatomicalOrientationValues.PosteriorToAnterior,
20
+ "inferior-to-superior": AnatomicalOrientationValues.InferiorToSuperior,
21
+ "superior-to-inferior": AnatomicalOrientationValues.SuperiorToInferior,
22
+ "dorsal-to-ventral": AnatomicalOrientationValues.DorsalToVentral,
23
+ "ventral-to-dorsal": AnatomicalOrientationValues.VentralToDorsal,
24
+ "dorsal-to-palmar": AnatomicalOrientationValues.DorsalToPalmar,
25
+ "palmar-to-dorsal": AnatomicalOrientationValues.PalmarToDorsal,
26
+ "dorsal-to-plantar": AnatomicalOrientationValues.DorsalToPlantar,
27
+ "plantar-to-dorsal": AnatomicalOrientationValues.PlantarToDorsal,
28
+ "rostral-to-caudal": AnatomicalOrientationValues.RostralToCaudal,
29
+ "caudal-to-rostral": AnatomicalOrientationValues.CaudalToRostral,
30
+ "cranial-to-caudal": AnatomicalOrientationValues.CranialToCaudal,
31
+ "caudal-to-cranial": AnatomicalOrientationValues.CaudalToCranial,
32
+ "proximal-to-distal": AnatomicalOrientationValues.ProximalToDistal,
33
+ "distal-to-proximal": AnatomicalOrientationValues.DistalToProximal,
34
+ };
35
+ /**
36
+ * Extract anatomical orientations from axes metadata.
37
+ * Returns a record mapping axis names to their orientations, or undefined if no orientations.
38
+ */
39
+ function extractOrientationsFromAxes(axesData) {
40
+ const orientations = {};
41
+ let hasOrientation = false;
42
+ for (const axis of axesData) {
43
+ if (typeof axis === "object" && axis !== null) {
44
+ const axisObj = axis;
45
+ const name = axisObj.name;
46
+ const orientation = axisObj.orientation;
47
+ if (orientation &&
48
+ typeof orientation === "object" &&
49
+ orientation.type === "anatomical") {
50
+ const enumValue = ORIENTATION_VALUE_MAP[orientation.value];
51
+ if (enumValue) {
52
+ orientations[name] = {
53
+ type: "anatomical",
54
+ value: enumValue,
55
+ };
56
+ hasOrientation = true;
57
+ }
58
+ }
59
+ }
60
+ }
61
+ return hasOrientation ? orientations : undefined;
62
+ }
63
+ /**
64
+ * Parse Metadata and NgffImages from OME-Zarr v0.4 root attributes.
65
+ *
66
+ * This mirrors the Python `Metadata._from_zarr_attrs` class method.
67
+ */
68
+ export async function fromZarrAttrsV04(rootAttrs, store, validate = false) {
69
+ // Extract the multiscales metadata
70
+ const multiscalesArray = rootAttrs.multiscales;
71
+ if (!Array.isArray(multiscalesArray) || multiscalesArray.length === 0) {
72
+ throw new Error("No multiscales metadata found in root attributes");
73
+ }
74
+ const multiscalesMetadata = multiscalesArray[0];
75
+ // Validate the root attributes against the OME-Zarr v0.4 schema
76
+ if (validate) {
77
+ // Basic structural validation
78
+ if (!("multiscales" in rootAttrs)) {
79
+ throw new Error("Invalid OME-Zarr metadata: missing 'multiscales' key");
80
+ }
81
+ if (!Array.isArray(rootAttrs.multiscales) ||
82
+ rootAttrs.multiscales.length === 0) {
83
+ throw new Error("Invalid OME-Zarr metadata: 'multiscales' must be a non-empty array");
84
+ }
85
+ // Validate datasets exist
86
+ const datasets = multiscalesMetadata.datasets;
87
+ if (!Array.isArray(datasets) || datasets.length === 0) {
88
+ throw new Error("Invalid OME-Zarr metadata: 'datasets' must be a non-empty array");
89
+ }
90
+ // RFC 4 validation for anatomical orientation
91
+ if ("axes" in multiscalesMetadata &&
92
+ Array.isArray(multiscalesMetadata.axes)) {
93
+ const axesData = multiscalesMetadata.axes;
94
+ // Filter to only dict-style axes for RFC4 validation
95
+ const axesDicts = axesData.filter((axis) => typeof axis === "object" && axis !== null);
96
+ if (axesDicts.length > 0 && hasRfc4OrientationMetadata(axesDicts)) {
97
+ validateRfc4Orientation(axesDicts);
98
+ }
99
+ }
100
+ }
101
+ // Parse OMERO metadata
102
+ const omero = parseOmero(rootAttrs.omero);
103
+ // Handle backwards compatibility for version <= 0.3
104
+ let dims;
105
+ let axes;
106
+ let units;
107
+ if (!("axes" in multiscalesMetadata)) {
108
+ // Version <= 0.3 - use default dims
109
+ dims = [...SUPPORTED_DIMS].reverse();
110
+ axes = [
111
+ { name: "t", type: "time", unit: undefined },
112
+ {
113
+ name: "c",
114
+ type: "channel",
115
+ unit: undefined,
116
+ },
117
+ {
118
+ name: "z",
119
+ type: "space",
120
+ unit: undefined,
121
+ },
122
+ {
123
+ name: "y",
124
+ type: "space",
125
+ unit: undefined,
126
+ },
127
+ {
128
+ name: "x",
129
+ type: "space",
130
+ unit: undefined,
131
+ },
132
+ ];
133
+ units = Object.fromEntries(dims.map((d) => [d, undefined]));
134
+ }
135
+ else {
136
+ const axesData = multiscalesMetadata.axes;
137
+ dims = axesData.map((a) => typeof a === "object" && "name" in a ? String(a.name) : String(a));
138
+ // Check if axes have names (v0.4+) or are just strings (v0.3)
139
+ if (typeof axesData[0] === "object" && "name" in axesData[0]) {
140
+ axes = axesData.map((axis) => {
141
+ const axisObj = axis;
142
+ return {
143
+ name: String(axisObj.name),
144
+ type: String(axisObj.type),
145
+ unit: axisObj.unit,
146
+ };
147
+ });
148
+ }
149
+ else {
150
+ // v0.3 - string axes
151
+ const typeDict = {
152
+ t: "time",
153
+ c: "channel",
154
+ z: "space",
155
+ y: "space",
156
+ x: "space",
157
+ };
158
+ axes = axesData.map((axis) => {
159
+ const name = String(axis);
160
+ return {
161
+ name,
162
+ type: typeDict[name] ?? "space",
163
+ unit: undefined,
164
+ };
165
+ });
166
+ }
167
+ // Extract units from axes
168
+ units = Object.fromEntries(dims.map((d) => [d, undefined]));
169
+ for (const axis of axesData) {
170
+ if (typeof axis === "object") {
171
+ const axisObj = axis;
172
+ const name = axisObj.name;
173
+ const unit = axisObj.unit;
174
+ if (name !== undefined && unit !== undefined) {
175
+ units[name] = unit;
176
+ }
177
+ }
178
+ }
179
+ }
180
+ // Extract anatomical orientations from axes (RFC 4)
181
+ let axesOrientations;
182
+ if ("axes" in multiscalesMetadata && Array.isArray(multiscalesMetadata.axes)) {
183
+ const axesData = multiscalesMetadata.axes;
184
+ axesOrientations = extractOrientationsFromAxes(axesData);
185
+ }
186
+ // Parse datasets and create NgffImages
187
+ const images = [];
188
+ const datasets = [];
189
+ const datasetsData = multiscalesMetadata.datasets;
190
+ // Open root group for array access
191
+ let optimizedStore;
192
+ try {
193
+ const tryWithConsolidated = zarr
194
+ .tryWithConsolidated;
195
+ if (tryWithConsolidated) {
196
+ optimizedStore = (await tryWithConsolidated(store));
197
+ }
198
+ else {
199
+ optimizedStore = store;
200
+ }
201
+ }
202
+ catch {
203
+ optimizedStore = store;
204
+ }
205
+ const root = await zarr.open(optimizedStore, {
206
+ kind: "group",
207
+ });
208
+ for (const dataset of datasetsData) {
209
+ const path = String(dataset.path);
210
+ // Open the zarr array
211
+ const zarrArray = (await zarr.open(root.resolve(path), {
212
+ kind: "array",
213
+ }));
214
+ // Parse coordinate transformations
215
+ const scale = Object.fromEntries(dims.map((d) => [d, 1.0]));
216
+ const translation = Object.fromEntries(dims.map((d) => [d, 0.0]));
217
+ const coordinateTransformations = [];
218
+ if ("coordinateTransformations" in dataset) {
219
+ const transforms = dataset.coordinateTransformations;
220
+ for (const transformation of transforms) {
221
+ if ("scale" in transformation) {
222
+ const scaleValues = transformation.scale;
223
+ dims.forEach((dim, i) => {
224
+ if (i < scaleValues.length) {
225
+ scale[dim] = scaleValues[i];
226
+ }
227
+ });
228
+ coordinateTransformations.push({
229
+ type: "scale",
230
+ scale: scaleValues,
231
+ });
232
+ }
233
+ else if ("translation" in transformation) {
234
+ const translationValues = transformation.translation;
235
+ dims.forEach((dim, i) => {
236
+ if (i < translationValues.length) {
237
+ translation[dim] = translationValues[i];
238
+ }
239
+ });
240
+ coordinateTransformations.push({
241
+ type: "translation",
242
+ translation: translationValues,
243
+ });
244
+ }
245
+ }
246
+ }
247
+ datasets.push({
248
+ path,
249
+ coordinateTransformations,
250
+ });
251
+ const filteredUnits = {};
252
+ for (const [axis, unit] of Object.entries(units)) {
253
+ if (unit !== undefined && unit !== null) {
254
+ filteredUnits[axis] = unit;
255
+ }
256
+ }
257
+ const ngffImage = new NgffImage({
258
+ data: zarrArray,
259
+ dims,
260
+ scale,
261
+ translation,
262
+ name: multiscalesMetadata.name ?? "image",
263
+ axesUnits: Object.keys(filteredUnits).length > 0
264
+ ? filteredUnits
265
+ : undefined,
266
+ axesOrientations,
267
+ computedCallbacks: undefined,
268
+ });
269
+ images.push(ngffImage);
270
+ }
271
+ // Build the metadata object - use spread to only include optional properties if defined
272
+ const metadata = {
273
+ axes,
274
+ datasets,
275
+ name: multiscalesMetadata.name ?? "image",
276
+ version: multiscalesMetadata.version ?? "0.4",
277
+ omero,
278
+ coordinateTransformations: multiscalesMetadata.coordinateTransformations ??
279
+ undefined,
280
+ ...(multiscalesMetadata.type !== undefined &&
281
+ multiscalesMetadata.type !== null
282
+ ? { type: String(multiscalesMetadata.type) }
283
+ : {}),
284
+ ...(multiscalesMetadata.metadata !== undefined &&
285
+ multiscalesMetadata.metadata !== null
286
+ ? {
287
+ metadata: multiscalesMetadata.metadata,
288
+ }
289
+ : {}),
290
+ };
291
+ return { metadata, images };
292
+ }
293
+ /**
294
+ * Parse Metadata and NgffImages from OME-Zarr v0.5 root attributes.
295
+ *
296
+ * The v0.5 format typically wraps multiscales under the "ome" key,
297
+ * but for compatibility we also handle the case where multiscales
298
+ * is at the root level (as written by toNgffZarr).
299
+ */
300
+ export async function fromZarrAttrsV05(rootAttrs, store, validate = false) {
301
+ // v0.5 may wrap everything under "ome" key, or may have multiscales at root
302
+ const omeData = rootAttrs.ome;
303
+ let v04Attrs;
304
+ if (omeData && "multiscales" in omeData) {
305
+ // Standard v0.5 format with "ome" wrapper
306
+ v04Attrs = {
307
+ multiscales: omeData.multiscales,
308
+ omero: omeData.omero ?? rootAttrs.omero,
309
+ };
310
+ }
311
+ else if ("multiscales" in rootAttrs) {
312
+ // Compatibility mode: multiscales at root level (as written by toNgffZarr)
313
+ v04Attrs = {
314
+ multiscales: rootAttrs.multiscales,
315
+ omero: rootAttrs.omero,
316
+ };
317
+ }
318
+ else {
319
+ throw new Error("No multiscales metadata found in root attributes for v0.5 format");
320
+ }
321
+ const result = await fromZarrAttrsV04(v04Attrs, store, validate);
322
+ // Update version to 0.5
323
+ result.metadata.version = "0.5";
324
+ return result;
325
+ }
326
+ //# sourceMappingURL=from_zarr_attrs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from_zarr_attrs.js","sourceRoot":"","sources":["../../src/utils/from_zarr_attrs.ts"],"names":[],"mappings":"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"}