@fideus-labs/ngff-zarr 0.11.0 → 0.12.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 (36) hide show
  1. package/esm/browser-mod.d.ts +2 -0
  2. package/esm/browser-mod.d.ts.map +1 -1
  3. package/esm/browser-mod.js +1 -0
  4. package/esm/browser-mod.js.map +1 -1
  5. package/esm/io/itk_image_to_ngff_image.d.ts.map +1 -1
  6. package/esm/io/itk_image_to_ngff_image.js +63 -6
  7. package/esm/io/itk_image_to_ngff_image.js.map +1 -1
  8. package/esm/methods/itkwasm-browser.d.ts +2 -1
  9. package/esm/methods/itkwasm-browser.d.ts.map +1 -1
  10. package/esm/methods/itkwasm-browser.js +30 -30
  11. package/esm/methods/itkwasm-browser.js.map +1 -1
  12. package/esm/methods/itkwasm-node.d.ts +2 -1
  13. package/esm/methods/itkwasm-node.d.ts.map +1 -1
  14. package/esm/methods/itkwasm-node.js +30 -30
  15. package/esm/methods/itkwasm-node.js.map +1 -1
  16. package/esm/methods/itkwasm-shared.d.ts +3 -2
  17. package/esm/methods/itkwasm-shared.d.ts.map +1 -1
  18. package/esm/methods/itkwasm-shared.js +12 -2
  19. package/esm/methods/itkwasm-shared.js.map +1 -1
  20. package/esm/mod.d.ts +24 -23
  21. package/esm/mod.d.ts.map +1 -1
  22. package/esm/mod.js +22 -21
  23. package/esm/mod.js.map +1 -1
  24. package/esm/process/to_multiscales-shared.d.ts +16 -3
  25. package/esm/process/to_multiscales-shared.d.ts.map +1 -1
  26. package/esm/process/to_multiscales-shared.js +7 -2
  27. package/esm/process/to_multiscales-shared.js.map +1 -1
  28. package/esm/types/rfc4.d.ts +26 -0
  29. package/esm/types/rfc4.d.ts.map +1 -1
  30. package/esm/types/rfc4.js +84 -0
  31. package/esm/types/rfc4.js.map +1 -1
  32. package/esm/utils/codecs.d.ts +20 -0
  33. package/esm/utils/codecs.d.ts.map +1 -1
  34. package/esm/utils/codecs.js +12 -0
  35. package/esm/utils/codecs.js.map +1 -1
  36. package/package.json +1 -1
package/esm/mod.js CHANGED
@@ -1,32 +1,33 @@
1
1
  // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
2
  // SPDX-License-Identifier: MIT
3
- export * from "./types/units.js";
4
- export * from "./types/methods.js";
3
+ export * from "./io/from_ngff_zarr.js";
4
+ export * from "./io/hcs.js";
5
+ export * from "./io/itk_image_to_ngff_image.js";
6
+ export * from "./io/ngff_image_to_itk_image.js";
7
+ // RFC-9 exports
8
+ export { getZipFileCompressionMethod, getZipFileList, isOzxPath, memoryStoreToZip, orderFilesForRfc9, readOzxJsonFirst, readOzxVersion, } from "./io/rfc9_zip.js";
9
+ export * from "./io/to_ngff_zarr.js";
10
+ export * from "./process/to_multiscales-node.js";
11
+ export * from "./schemas/methods.js";
12
+ export * from "./schemas/multiscales.js";
13
+ export * from "./schemas/ngff_image.js";
14
+ export * from "./schemas/units.js";
15
+ export * from "./schemas/zarr_metadata.js";
5
16
  export * from "./types/array_interface.js";
6
- export * from "./types/zarr_metadata.js";
7
- export * from "./types/ngff_image.js";
17
+ export * from "./types/hcs.js";
18
+ export * from "./types/methods.js";
8
19
  export * from "./types/multiscales.js";
20
+ export * from "./types/ngff_image.js";
9
21
  export * from "./types/rfc4.js";
10
- export * from "./types/hcs.js";
11
22
  export * from "./types/supported_versions.js";
12
- export * from "./schemas/units.js";
13
- export * from "./schemas/methods.js";
14
- export * from "./schemas/zarr_metadata.js";
15
- export * from "./schemas/ngff_image.js";
16
- export * from "./schemas/multiscales.js";
17
- export { isValidDimension, isValidUnit, validateMetadata, } from "./utils/validation.js";
23
+ export * from "./types/units.js";
24
+ export * from "./types/zarr_metadata.js";
25
+ export { bytesOnlyCodecs, defaultCodecs } from "./utils/codecs.js";
26
+ export { computeOmeroFromMultiscales, computeOmeroFromNgffImage, getDefaultColors, GLASBEY_COLORS, terminateOmeroWorkerPool, } from "./utils/compute_omero.js";
18
27
  export { createAxis, createDataset, createMetadata, createMultiscales, createNgffImage, } from "./utils/factory.js";
28
+ export { fromZarrAttrsV04, fromZarrAttrsV05 } from "./utils/from_zarr_attrs.js";
19
29
  export { getMethodMetadata } from "./utils/method_metadata.js";
20
30
  export { detectVersion, extractMethodMetadata, parseOmero, } from "./utils/parse_metadata.js";
21
- export { computeOmeroFromMultiscales, computeOmeroFromNgffImage, getDefaultColors, GLASBEY_COLORS, terminateOmeroWorkerPool, } from "./utils/compute_omero.js";
22
- export { fromZarrAttrsV04, fromZarrAttrsV05 } from "./utils/from_zarr_attrs.js";
31
+ export { isValidDimension, isValidUnit, validateMetadata, } from "./utils/validation.js";
23
32
  export { terminateWorkerPool, zarrGet, zarrSet } from "./utils/worker_pool.js";
24
- export * from "./io/from_ngff_zarr.js";
25
- export * from "./io/to_ngff_zarr.js";
26
- export * from "./process/to_multiscales-node.js";
27
- export * from "./io/itk_image_to_ngff_image.js";
28
- export * from "./io/ngff_image_to_itk_image.js";
29
- export * from "./io/hcs.js";
30
- // RFC-9 exports
31
- export { getZipFileCompressionMethod, getZipFileList, isOzxPath, memoryStoreToZip, orderFilesForRfc9, readOzxJsonFirst, readOzxVersion, } from "./io/rfc9_zip.js";
32
33
  //# sourceMappingURL=mod.js.map
package/esm/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAE9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AAEzC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE/E,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AAEjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,aAAa,CAAC;AAE5B,gBAAgB;AAChB,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAE/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAEhD,gBAAgB;AAChB,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKnE,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC"}
@@ -3,18 +3,31 @@
3
3
  * This module contains types and helper functions used by both
4
4
  * browser and Node versions of toMultiscales.
5
5
  */
6
- import { NgffImage } from "../types/ngff_image.js";
7
- import { Multiscales } from "../types/multiscales.js";
8
6
  import { Methods } from "../types/methods.js";
7
+ import type { Multiscales } from "../types/multiscales.js";
8
+ import type { NgffImage } from "../types/ngff_image.js";
9
+ import type { ZarrCodec } from "../utils/codecs.js";
10
+ export type { ZarrCodec };
9
11
  export interface ToMultiscalesOptions {
10
12
  scaleFactors?: (Record<string, number> | number)[];
11
13
  method?: Methods;
12
14
  chunks?: number | number[] | Record<string, number>;
15
+ /**
16
+ * Codec pipeline for intermediate zarr arrays created during
17
+ * downsampling. When omitted the default blosc+zstd pipeline is
18
+ * used ({@link defaultCodecs}).
19
+ *
20
+ * Pass {@link bytesOnlyCodecs | `bytesOnlyCodecs()`} to skip
21
+ * compression entirely — useful when the multiscale result will be
22
+ * immediately re-encoded into another format (e.g. OME-TIFF) and
23
+ * the compress/decompress round-trip would be wasted work.
24
+ */
25
+ codecs?: ZarrCodec[];
13
26
  }
14
27
  /**
15
28
  * Downsampling function type for ITK-Wasm implementations
16
29
  */
17
- export type DownsampleFunction = (image: NgffImage, scaleFactors: (Record<string, number> | number)[], smoothing: "gaussian" | "bin_shrink" | "label_image", chunks?: number | number[] | Record<string, number>) => Promise<NgffImage[]>;
30
+ export type DownsampleFunction = (image: NgffImage, scaleFactors: (Record<string, number> | number)[], smoothing: "gaussian" | "bin_shrink" | "label_image", chunks?: number | number[] | Record<string, number>, codecs?: ZarrCodec[]) => Promise<NgffImage[]>;
18
31
  /**
19
32
  * Generate multiple resolution scales for an NgffImage
20
33
  * This is the core implementation used by both browser and Node versions.
@@ -1 +1 @@
1
- {"version":3,"file":"to_multiscales-shared.d.ts","sourceRoot":"","sources":["../../src/process/to_multiscales-shared.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAS9C,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EACjD,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa,EACpD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAChD,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAE1B;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,EAAE,kBAAkB,GACpC,OAAO,CAAC,WAAW,CAAC,CAwEtB"}
1
+ {"version":3,"file":"to_multiscales-shared.d.ts","sourceRoot":"","sources":["../../src/process/to_multiscales-shared.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAWpD,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpD;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EACjD,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa,EACpD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnD,MAAM,CAAC,EAAE,SAAS,EAAE,KACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAE1B;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,EAAE,kBAAkB,GACpC,OAAO,CAAC,WAAW,CAAC,CA0EtB"}
@@ -1,5 +1,10 @@
1
1
  // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
2
  // SPDX-License-Identifier: MIT
3
+ /**
4
+ * Shared utilities for to_multiscales implementations
5
+ * This module contains types and helper functions used by both
6
+ * browser and Node versions of toMultiscales.
7
+ */
3
8
  import { Methods } from "../types/methods.js";
4
9
  import { createAxis, createDataset, createMetadata, createMultiscales, } from "../utils/factory.js";
5
10
  import { getMethodMetadata } from "../utils/method_metadata.js";
@@ -13,7 +18,7 @@ import { getMethodMetadata } from "../utils/method_metadata.js";
13
18
  * @returns Multiscales object
14
19
  */
15
20
  export async function toMultiscalesCore(image, options, downsampleItkWasm) {
16
- const { scaleFactors = [2, 4], method = Methods.ITKWASM_GAUSSIAN, chunks: _chunks, } = options;
21
+ const { scaleFactors = [2, 4], method = Methods.ITKWASM_GAUSSIAN, chunks: _chunks, codecs, } = options;
17
22
  let images;
18
23
  // Check if we should perform actual downsampling
19
24
  if (method === Methods.ITKWASM_GAUSSIAN ||
@@ -25,7 +30,7 @@ export async function toMultiscalesCore(image, options, downsampleItkWasm) {
25
30
  : method === Methods.ITKWASM_BIN_SHRINK
26
31
  ? "bin_shrink"
27
32
  : "label_image";
28
- images = await downsampleItkWasm(image, scaleFactors, smoothing, _chunks);
33
+ images = await downsampleItkWasm(image, scaleFactors, smoothing, _chunks, codecs);
29
34
  }
30
35
  else {
31
36
  // Fallback: create only the base image (no actual downsampling)
@@ -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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"}
@@ -72,6 +72,32 @@ export declare const RAS: Record<string, AnatomicalOrientation>;
72
72
  * @returns The corresponding anatomical orientation, or undefined for non-spatial axes
73
73
  */
74
74
  export declare function itkLpsToAnatomicalOrientation(axisName: string): AnatomicalOrientation | undefined;
75
+ /**
76
+ * Determine the anatomical orientation of a single image axis from its
77
+ * direction cosine vector in ITK LPS physical space.
78
+ *
79
+ * The direction vector is a column of the ITK direction matrix. Its
80
+ * dominant component (largest absolute value) determines which physical
81
+ * axis (L/R, A/P, or S/I) this image axis aligns with, and the sign
82
+ * of that component determines the direction.
83
+ *
84
+ * In LPS physical space:
85
+ * - Component 0: L/R axis (positive = Right→Left, negative = Left→Right)
86
+ * - Component 1: A/P axis (positive = Anterior→Posterior, negative = Posterior→Anterior)
87
+ * - Component 2: I/S axis (positive = Inferior→Superior, negative = Superior→Inferior)
88
+ *
89
+ * For 2D images, the direction column will have only 2 components, with the
90
+ * third component implicitly zero.
91
+ *
92
+ * @param directionColumn - Direction cosine vector for the image axis.
93
+ * Can be 2-element (for 2D images) or 3-element (for 3D images).
94
+ * `[lps_x, lps_y]` or `[lps_x, lps_y, lps_z]`
95
+ * Must have at least 2 elements.
96
+ * @returns The anatomical orientation corresponding to the dominant
97
+ * direction of this axis
98
+ * @throws Error if directionColumn has fewer than 2 elements
99
+ */
100
+ export declare function itkDirectionToAnatomicalOrientation(directionColumn: readonly number[]): AnatomicalOrientation;
75
101
  /**
76
102
  * Check if RFC 4 is enabled in the list of enabled RFCs.
77
103
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rfc4.d.ts","sourceRoot":"","sources":["../../src/types/rfc4.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;GAKG;AACH,oBAAY,2BAA2B;IAErC,WAAW,kBAAkB;IAE7B,WAAW,kBAAkB;IAE7B,mBAAmB,0BAA0B;IAE7C,mBAAmB,0BAA0B;IAE7C,kBAAkB,yBAAyB;IAE3C,kBAAkB,yBAAyB;IAE3C,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,cAAc,qBAAqB;IAEnC,cAAc,qBAAqB;IAEnC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,gBAAgB,uBAAuB;IAEvC,gBAAgB,uBAAuB;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,2BAA2B,GACjC,qBAAqB,CAKvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAQrD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAQrD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,GACf,qBAAqB,GAAG,SAAS,CAEnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,WAAW,EAAE,qBAAqB,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB"}
1
+ {"version":3,"file":"rfc4.d.ts","sourceRoot":"","sources":["../../src/types/rfc4.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;GAKG;AACH,oBAAY,2BAA2B;IAErC,WAAW,kBAAkB;IAE7B,WAAW,kBAAkB;IAE7B,mBAAmB,0BAA0B;IAE7C,mBAAmB,0BAA0B;IAE7C,kBAAkB,yBAAyB;IAE3C,kBAAkB,yBAAyB;IAE3C,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,cAAc,qBAAqB;IAEnC,cAAc,qBAAqB;IAEnC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,eAAe,sBAAsB;IAErC,gBAAgB,uBAAuB;IAEvC,gBAAgB,uBAAuB;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,2BAA2B,GACjC,qBAAqB,CAKvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAQrD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAQrD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,GACf,qBAAqB,GAAG,SAAS,CAEnC;AA8CD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mCAAmC,CACjD,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,qBAAqB,CAsBvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,WAAW,EAAE,qBAAqB,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB"}
package/esm/types/rfc4.js CHANGED
@@ -101,6 +101,90 @@ export const RAS = {
101
101
  export function itkLpsToAnatomicalOrientation(axisName) {
102
102
  return LPS[axisName];
103
103
  }
104
+ /**
105
+ * Maximum number of spatial dimensions (for ITK LPS coordinate system).
106
+ * LPS has 3 axes: Left/Right (X), Anterior/Posterior (Y),
107
+ * Inferior/Superior (Z).
108
+ */
109
+ const MAX_SPATIAL_DIMENSIONS = 3;
110
+ /**
111
+ * LPS orientation pairs: positive and negative orientations for each
112
+ * physical axis in the LPS coordinate system.
113
+ *
114
+ * Each row is `[positiveComponentOrientation, negativeComponentOrientation]`,
115
+ * where "positive component" (positive direction cosine value) indicates
116
+ * the direction along that axis, and "negative component" (negative
117
+ * direction cosine value) indicates the opposite direction.
118
+ *
119
+ * - Row 0 (L/R): positive component → RightToLeft
120
+ * (positive direction points Left) / negative component → LeftToRight
121
+ * (negative direction points Right)
122
+ * - Row 1 (A/P): positive component → AnteriorToPosterior
123
+ * (positive direction points Posterior) / negative component →
124
+ * PosteriorToAnterior (negative direction points Anterior)
125
+ * - Row 2 (I/S): positive component → InferiorToSuperior
126
+ * (positive direction points Superior) / negative component →
127
+ * SuperiorToInferior (negative direction points Inferior)
128
+ */
129
+ const LPS_ORIENTATION_PAIRS = [
130
+ [
131
+ AnatomicalOrientationValues.RightToLeft,
132
+ AnatomicalOrientationValues.LeftToRight,
133
+ ],
134
+ [
135
+ AnatomicalOrientationValues.AnteriorToPosterior,
136
+ AnatomicalOrientationValues.PosteriorToAnterior,
137
+ ],
138
+ [
139
+ AnatomicalOrientationValues.InferiorToSuperior,
140
+ AnatomicalOrientationValues.SuperiorToInferior,
141
+ ],
142
+ ];
143
+ /**
144
+ * Determine the anatomical orientation of a single image axis from its
145
+ * direction cosine vector in ITK LPS physical space.
146
+ *
147
+ * The direction vector is a column of the ITK direction matrix. Its
148
+ * dominant component (largest absolute value) determines which physical
149
+ * axis (L/R, A/P, or S/I) this image axis aligns with, and the sign
150
+ * of that component determines the direction.
151
+ *
152
+ * In LPS physical space:
153
+ * - Component 0: L/R axis (positive = Right→Left, negative = Left→Right)
154
+ * - Component 1: A/P axis (positive = Anterior→Posterior, negative = Posterior→Anterior)
155
+ * - Component 2: I/S axis (positive = Inferior→Superior, negative = Superior→Inferior)
156
+ *
157
+ * For 2D images, the direction column will have only 2 components, with the
158
+ * third component implicitly zero.
159
+ *
160
+ * @param directionColumn - Direction cosine vector for the image axis.
161
+ * Can be 2-element (for 2D images) or 3-element (for 3D images).
162
+ * `[lps_x, lps_y]` or `[lps_x, lps_y, lps_z]`
163
+ * Must have at least 2 elements.
164
+ * @returns The anatomical orientation corresponding to the dominant
165
+ * direction of this axis
166
+ * @throws Error if directionColumn has fewer than 2 elements
167
+ */
168
+ export function itkDirectionToAnatomicalOrientation(directionColumn) {
169
+ if (directionColumn.length < 2) {
170
+ throw new Error(`Direction column must have at least 2 elements for 2D/3D images, got ${directionColumn.length}`);
171
+ }
172
+ // Find the dominant physical axis (largest absolute component)
173
+ let dominantAxis = 0;
174
+ let maxAbs = Math.abs(directionColumn[0]);
175
+ const n = Math.min(directionColumn.length, MAX_SPATIAL_DIMENSIONS);
176
+ for (let i = 1; i < n; i++) {
177
+ const absVal = Math.abs(directionColumn[i]);
178
+ if (absVal > maxAbs) {
179
+ maxAbs = absVal;
180
+ dominantAxis = i;
181
+ }
182
+ }
183
+ // Positive component → positive LPS direction, negative → opposite
184
+ const pair = LPS_ORIENTATION_PAIRS[dominantAxis];
185
+ const value = directionColumn[dominantAxis] >= 0 ? pair[0] : pair[1];
186
+ return createAnatomicalOrientation(value);
187
+ }
104
188
  /**
105
189
  * Check if RFC 4 is enabled in the list of enabled RFCs.
106
190
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rfc4.js","sourceRoot":"","sources":["../../src/types/rfc4.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAC/B;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,2BAqCX;AArCD,WAAY,2BAA2B;IACrC,wHAAwH;IACxH,4DAA6B,CAAA;IAC7B,wHAAwH;IACxH,4DAA6B,CAAA;IAC7B,6HAA6H;IAC7H,4EAA6C,CAAA;IAC7C,6HAA6H;IAC7H,4EAA6C,CAAA;IAC7C,qHAAqH;IACrH,0EAA2C,CAAA;IAC3C,qHAAqH;IACrH,0EAA2C,CAAA;IAC3C,oIAAoI;IACpI,oEAAqC,CAAA;IACrC,oIAAoI;IACpI,oEAAqC,CAAA;IACrC,+GAA+G;IAC/G,kEAAmC,CAAA;IACnC,+GAA+G;IAC/G,kEAAmC,CAAA;IACnC,gHAAgH;IAChH,oEAAqC,CAAA;IACrC,gHAAgH;IAChH,oEAAqC,CAAA;IACrC,gLAAgL;IAChL,oEAAqC,CAAA;IACrC,gLAAgL;IAChL,oEAAqC,CAAA;IACrC,4HAA4H;IAC5H,oEAAqC,CAAA;IACrC,4HAA4H;IAC5H,oEAAqC,CAAA;IACrC,wHAAwH;IACxH,sEAAuC,CAAA;IACvC,wHAAwH;IACxH,sEAAuC,CAAA;AACzC,CAAC,EArCW,2BAA2B,KAA3B,2BAA2B,QAqCtC;AAUD;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAkC;IAElC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAA0C;IACxD,CAAC,EAAE,2BAA2B,CAAC,2BAA2B,CAAC,WAAW,CAAC;IACvE,CAAC,EAAE,2BAA2B,CAC5B,2BAA2B,CAAC,mBAAmB,CAChD;IACD,CAAC,EAAE,2BAA2B,CAC5B,2BAA2B,CAAC,kBAAkB,CAC/C;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAA0C;IACxD,CAAC,EAAE,2BAA2B,CAAC,2BAA2B,CAAC,WAAW,CAAC;IACvE,CAAC,EAAE,2BAA2B,CAC5B,2BAA2B,CAAC,mBAAmB,CAChD;IACD,CAAC,EAAE,2BAA2B,CAC5B,2BAA2B,CAAC,kBAAkB,CAC/C;CACF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAAgB;IAEhB,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAsB;IAClD,OAAO,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAiC,EACjC,WAAkC;IAElC,OAAO;QACL,GAAG,QAAQ;QACX,WAAW,EAAE;YACX,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,WAAW,CAAC,KAAK;SACzB;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CACjD,QAAiC;IAEjC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"rfc4.js","sourceRoot":"","sources":["../../src/types/rfc4.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Codec descriptor used in zarr v3 array metadata.
3
+ *
4
+ * @see {@link defaultCodecs} for the standard blosc+zstd pipeline.
5
+ * @see {@link bytesOnlyCodecs} for an uncompressed pipeline.
6
+ */
7
+ export type ZarrCodec = {
8
+ name: string;
9
+ configuration: Record<string, unknown>;
10
+ };
1
11
  /**
2
12
  * Return the byte size for a zarr v3 data type string.
3
13
  *
@@ -43,4 +53,14 @@ export declare function defaultCodecs(dataType: string): ({
43
53
  endian?: undefined;
44
54
  };
45
55
  })[];
56
+ /**
57
+ * Build an uncompressed zarr v3 codec pipeline.
58
+ *
59
+ * Returns only the required `bytes` array-to-bytes codec (little-endian)
60
+ * with no bytes-to-bytes compression. This is useful when zarr arrays
61
+ * are ephemeral (e.g., in-memory multiscale pyramids that will be
62
+ * immediately re-encoded into another format like OME-TIFF) and the
63
+ * blosc compress/decompress round-trip would be wasted work.
64
+ */
65
+ export declare function bytesOnlyCodecs(): ZarrCodec[];
46
66
  //# sourceMappingURL=codecs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../src/utils/codecs.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;KAc7C"}
1
+ {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../src/utils/codecs.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;KAc7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,SAAS,EAAE,CAE7C"}
@@ -55,4 +55,16 @@ export function defaultCodecs(dataType) {
55
55
  },
56
56
  ];
57
57
  }
58
+ /**
59
+ * Build an uncompressed zarr v3 codec pipeline.
60
+ *
61
+ * Returns only the required `bytes` array-to-bytes codec (little-endian)
62
+ * with no bytes-to-bytes compression. This is useful when zarr arrays
63
+ * are ephemeral (e.g., in-memory multiscale pyramids that will be
64
+ * immediately re-encoded into another format like OME-TIFF) and the
65
+ * blosc compress/decompress round-trip would be wasted work.
66
+ */
67
+ export function bytesOnlyCodecs() {
68
+ return [{ name: "bytes", configuration: { endian: "little" } }];
69
+ }
58
70
  //# sourceMappingURL=codecs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codecs.js","sourceRoot":"","sources":["../../src/utils/codecs.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAE/B;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAA2B;QACpC,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;KACX,CAAC;IACF,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO;QACL,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtD;YACE,IAAI,EAAE,OAAO;YACb,aAAa,EAAE;gBACb,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC;gBACpC,SAAS,EAAE,CAAC;aACb;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"codecs.js","sourceRoot":"","sources":["../../src/utils/codecs.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAa/B;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAA2B;QACpC,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;KACX,CAAC;IACF,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO;QACL,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtD;YACE,IAAI,EAAE,OAAO;YACb,aAAa,EAAE;gBACb,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC;gBACpC,SAAS,EAAE,CAAC;aACb;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fideus-labs/ngff-zarr",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "TypeScript implementation of ngff-zarr for reading and writing OME-Zarr files",
5
5
  "license": "MIT",
6
6
  "type": "module",