@fideus-labs/ngff-zarr 0.2.8 → 0.4.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 (69) hide show
  1. package/esm/browser-mod.d.ts +5 -3
  2. package/esm/browser-mod.d.ts.map +1 -1
  3. package/esm/browser-mod.js +4 -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 +7 -0
  35. package/esm/mod.d.ts.map +1 -1
  36. package/esm/mod.js +6 -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/compute_omero.d.ts +89 -0
  50. package/esm/utils/compute_omero.d.ts.map +1 -0
  51. package/esm/utils/compute_omero.js +541 -0
  52. package/esm/utils/compute_omero.js.map +1 -0
  53. package/esm/utils/factory.d.ts +3 -2
  54. package/esm/utils/factory.d.ts.map +1 -1
  55. package/esm/utils/factory.js +6 -2
  56. package/esm/utils/factory.js.map +1 -1
  57. package/esm/utils/from_zarr_attrs.d.ts +21 -0
  58. package/esm/utils/from_zarr_attrs.d.ts.map +1 -0
  59. package/esm/utils/from_zarr_attrs.js +326 -0
  60. package/esm/utils/from_zarr_attrs.js.map +1 -0
  61. package/esm/utils/parse_metadata.d.ts +27 -0
  62. package/esm/utils/parse_metadata.d.ts.map +1 -0
  63. package/esm/utils/parse_metadata.js +138 -0
  64. package/esm/utils/parse_metadata.js.map +1 -0
  65. package/esm/utils/rfc4_validation.d.ts +20 -0
  66. package/esm/utils/rfc4_validation.d.ts.map +1 -0
  67. package/esm/utils/rfc4_validation.js +98 -0
  68. package/esm/utils/rfc4_validation.js.map +1 -0
  69. package/package.json +2 -2
@@ -0,0 +1,541 @@
1
+ // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
+ // SPDX-License-Identifier: MIT
3
+ /**
4
+ * Compute OMERO metadata from NgffImage data.
5
+ */
6
+ import * as zarr from "zarrita";
7
+ /**
8
+ * Glasbey color palette from colorcet's glasbey_hv.
9
+ * Extended from HoloViews default colors using the Glasbey algorithm
10
+ * for maximum distinguishability across 256 categorical colors.
11
+ * See: https://colorcet.holoviz.org/user_guide/Categorical.html
12
+ */
13
+ export const GLASBEY_COLORS = [
14
+ "30A2DA",
15
+ "FC4F30",
16
+ "E5AE38",
17
+ "6D904F",
18
+ "8B8B8B",
19
+ "17BECF",
20
+ "9467BD",
21
+ "D62728",
22
+ "1F77B4",
23
+ "E377C2",
24
+ "8C564B",
25
+ "BCBD22",
26
+ "3A0183",
27
+ "004300",
28
+ "0FFFA9",
29
+ "5E0040",
30
+ "C6BDFF",
31
+ "425052",
32
+ "B80080",
33
+ "FFB7B3",
34
+ "7D0200",
35
+ "6126FF",
36
+ "FFFF9A",
37
+ "AEC9AB",
38
+ "00867C",
39
+ "553A00",
40
+ "94FCFF",
41
+ "00BF00",
42
+ "7D00A0",
43
+ "AB7200",
44
+ "91FF00",
45
+ "01BE8A",
46
+ "00457B",
47
+ "C8826F",
48
+ "FF1F83",
49
+ "DD00FF",
50
+ "057400",
51
+ "644461",
52
+ "888FFF",
53
+ "FFB6F4",
54
+ "536237",
55
+ "CE85FF",
56
+ "686A84",
57
+ "BEB4BE",
58
+ "A56089",
59
+ "95D3FF",
60
+ "0100F8",
61
+ "FF8002",
62
+ "8B2945",
63
+ "ADA06D",
64
+ "53458B",
65
+ "C8FFD9",
66
+ "AA4600",
67
+ "FF798F",
68
+ "83D371",
69
+ "909EBF",
70
+ "9400F5",
71
+ "EBD09B",
72
+ "AD8BB1",
73
+ "00634A",
74
+ "FFDC00",
75
+ "887751",
76
+ "7EABA3",
77
+ "000097",
78
+ "F500C6",
79
+ "653329",
80
+ "006678",
81
+ "04E3C8",
82
+ "A737AE",
83
+ "C5DBE1",
84
+ "4D6EFF",
85
+ "9B9301",
86
+ "CD586B",
87
+ "EFDEFE",
88
+ "795A00",
89
+ "5F889A",
90
+ "B4FF92",
91
+ "5E726B",
92
+ "520066",
93
+ "058751",
94
+ "84206F",
95
+ "3C9605",
96
+ "657300",
97
+ "F1A06C",
98
+ "5F5045",
99
+ "BD004A",
100
+ "D06827",
101
+ "D796AB",
102
+ "895DFF",
103
+ "826C76",
104
+ "2B55B9",
105
+ "6E7CBB",
106
+ "E7D5D3",
107
+ "5D0018",
108
+ "7C3B01",
109
+ "80B17D",
110
+ "C8D97D",
111
+ "00E83B",
112
+ "7CB2FF",
113
+ "FF55FF",
114
+ "A42721",
115
+ "1DE4FF",
116
+ "7DAF3B",
117
+ "7B4B91",
118
+ "E0FF48",
119
+ "6B00C4",
120
+ "CDA897",
121
+ "BE63C4",
122
+ "89CDCE",
123
+ "4603C8",
124
+ "5E9279",
125
+ "414A01",
126
+ "05A79D",
127
+ "CF8C37",
128
+ "FFF8D0",
129
+ "435471",
130
+ "B544FF",
131
+ "CF4993",
132
+ "CFA4DF",
133
+ "94D400",
134
+ "A794DA",
135
+ "2DA558",
136
+ "8DE3B6",
137
+ "A4A99D",
138
+ "6C5CB7",
139
+ "FF7E5E",
140
+ "A7838A",
141
+ "AFBED8",
142
+ "2AC4FF",
143
+ "A6683D",
144
+ "F691FE",
145
+ "874B64",
146
+ "FF0C4B",
147
+ "215E23",
148
+ "4292FF",
149
+ "87839D",
150
+ "672D45",
151
+ "B14F41",
152
+ "004E53",
153
+ "5F1B00",
154
+ "AD4167",
155
+ "503267",
156
+ "D6FFFD",
157
+ "7FB5D1",
158
+ "A9B969",
159
+ "FF96CB",
160
+ "C87495",
161
+ "365039",
162
+ "FFD063",
163
+ "5E5862",
164
+ "879476",
165
+ "A978FF",
166
+ "03C863",
167
+ "E7BED4",
168
+ "D4E3D0",
169
+ "876790",
170
+ "897C27",
171
+ "CDDCFF",
172
+ "AA676B",
173
+ "323474",
174
+ "FF5EA9",
175
+ "009BB0",
176
+ "71FFDD",
177
+ "785C38",
178
+ "50659B",
179
+ "CC00B3",
180
+ "577B55",
181
+ "516E7B",
182
+ "015F92",
183
+ "AABDBE",
184
+ "017F99",
185
+ "04DD97",
186
+ "873A2C",
187
+ "F0968E",
188
+ "75C6AA",
189
+ "70695D",
190
+ "CCDC09",
191
+ "AF8557",
192
+ "D80075",
193
+ "9D3F81",
194
+ "D94500",
195
+ "DD6754",
196
+ "5FFF79",
197
+ "D5B173",
198
+ "62265E",
199
+ "BAA23D",
200
+ "D9F2B3",
201
+ "57028F",
202
+ "A19BAA",
203
+ "4D4A27",
204
+ "A4A9FF",
205
+ "ACE8DB",
206
+ "995901",
207
+ "AC00E2",
208
+ "47822F",
209
+ "CBC3AD",
210
+ "00C5B6",
211
+ "615378",
212
+ "336D68",
213
+ "A59280",
214
+ "8499A2",
215
+ "FD5764",
216
+ "7096D2",
217
+ "728D07",
218
+ "7F004C",
219
+ "1530A0",
220
+ "D1C1E2",
221
+ "C985D0",
222
+ "6C454B",
223
+ "7F0024",
224
+ "00A279",
225
+ "B2A9CF",
226
+ "F90000",
227
+ "B0E9FF",
228
+ "939E50",
229
+ "727A82",
230
+ "D92E55",
231
+ "476101",
232
+ "0059FF",
233
+ "7740B5",
234
+ "ACE460",
235
+ "674525",
236
+ "525D51",
237
+ "957368",
238
+ "A9E49A",
239
+ "A30058",
240
+ "D962F6",
241
+ "8E7DCF",
242
+ "FFBD93",
243
+ "A30092",
244
+ "9AFFB9",
245
+ "A7C2FF",
246
+ "F46200",
247
+ "E5F0FF",
248
+ "B89CA4",
249
+ "609694",
250
+ "FF9F35",
251
+ "8C2900",
252
+ "726B32",
253
+ "DF824E",
254
+ "AF7BD5",
255
+ "BC2D00",
256
+ "7B6FA3",
257
+ "484362",
258
+ "C7A3FF",
259
+ "004D28",
260
+ "C4C68E",
261
+ "E048D7",
262
+ "E7E965",
263
+ "E5C10B",
264
+ "00F4F1",
265
+ "9F5BA2",
266
+ "4C41B7",
267
+ "65338E",
268
+ "767E6C",
269
+ "A98A36",
270
+ ];
271
+ /**
272
+ * Get default colors for channels.
273
+ *
274
+ * For a single channel, returns white (FFFFFF).
275
+ * For multiple channels, uses the Glasbey color progression.
276
+ */
277
+ export function getDefaultColors(nChannels) {
278
+ if (nChannels === 1) {
279
+ return ["FFFFFF"];
280
+ }
281
+ // Cycle through Glasbey colors if we have more channels than colors
282
+ return Array.from({ length: nChannels }, (_, i) => GLASBEY_COLORS[i % GLASBEY_COLORS.length]);
283
+ }
284
+ /**
285
+ * Validate that quantiles are in valid range and properly ordered.
286
+ */
287
+ function validateQuantiles(quantiles) {
288
+ const [low, high] = quantiles;
289
+ if (!(low >= 0.0 && low <= 1.0)) {
290
+ throw new Error(`Low quantile must be between 0 and 1, got ${low}`);
291
+ }
292
+ if (!(high >= 0.0 && high <= 1.0)) {
293
+ throw new Error(`High quantile must be between 0 and 1, got ${high}`);
294
+ }
295
+ if (low >= high) {
296
+ throw new Error(`Low quantile must be less than high quantile, got (${low}, ${high})`);
297
+ }
298
+ }
299
+ /**
300
+ * Validate that a color is a valid 6-digit hexadecimal string.
301
+ */
302
+ function validateColor(color) {
303
+ const hexPattern = /^[0-9A-Fa-f]{6}$/;
304
+ if (!hexPattern.test(color)) {
305
+ throw new Error(`Color must be a 6-digit hexadecimal string without # prefix, got '${color}'`);
306
+ }
307
+ }
308
+ /**
309
+ * Maximum sample size for approximate quantile computation.
310
+ * For datasets larger than this, we use reservoir sampling for memory efficiency.
311
+ */
312
+ const QUANTILE_SAMPLE_SIZE = 10_000;
313
+ /**
314
+ * Helper function to compute quantile from a sorted array.
315
+ */
316
+ function computeQuantile(sortedValues, q) {
317
+ if (sortedValues.length === 0) {
318
+ return NaN;
319
+ }
320
+ if (sortedValues.length === 1) {
321
+ return sortedValues[0];
322
+ }
323
+ const index = q * (sortedValues.length - 1);
324
+ const lower = Math.floor(index);
325
+ const upper = Math.ceil(index);
326
+ const weight = index - lower;
327
+ if (lower === upper) {
328
+ return sortedValues[lower];
329
+ }
330
+ return sortedValues[lower] * (1 - weight) + sortedValues[upper] * weight;
331
+ }
332
+ /**
333
+ * Compute channel statistics (min, max, and quantiles) from array data.
334
+ *
335
+ * For large datasets (>10,000 non-NaN values), uses reservoir sampling
336
+ * to compute approximate quantiles with reduced memory footprint.
337
+ * Min and max are always exact.
338
+ */
339
+ function computeChannelStatistics(data, quantiles) {
340
+ let min = Number.POSITIVE_INFINITY;
341
+ let max = Number.NEGATIVE_INFINITY;
342
+ // Reservoir sample for approximate quantile computation
343
+ const sample = [];
344
+ let count = 0;
345
+ for (let i = 0; i < data.length; i++) {
346
+ const v = data[i];
347
+ if (Number.isNaN(v)) {
348
+ continue;
349
+ }
350
+ // Update min and max (always exact)
351
+ if (v < min)
352
+ min = v;
353
+ if (v > max)
354
+ max = v;
355
+ // Update reservoir sample for quantiles
356
+ if (sample.length < QUANTILE_SAMPLE_SIZE) {
357
+ sample.push(v);
358
+ }
359
+ else {
360
+ // Reservoir sampling: replace random element with probability QUANTILE_SAMPLE_SIZE/(count+1)
361
+ const j = Math.floor(Math.random() * (count + 1));
362
+ if (j < QUANTILE_SAMPLE_SIZE) {
363
+ sample[j] = v;
364
+ }
365
+ }
366
+ count++;
367
+ }
368
+ if (count === 0) {
369
+ return { min: NaN, max: NaN, qLow: NaN, qHigh: NaN };
370
+ }
371
+ // Sort sample for quantile computation
372
+ sample.sort((a, b) => a - b);
373
+ const qLow = computeQuantile(sample, quantiles[0]);
374
+ const qHigh = computeQuantile(sample, quantiles[1]);
375
+ return { min, max, qLow, qHigh };
376
+ }
377
+ /**
378
+ * Extract a single channel from multi-dimensional typed array data.
379
+ */
380
+ function extractChannel(data, shape, channelIndex, channelDimIndex) {
381
+ const nChannels = shape[channelDimIndex];
382
+ const result = [];
383
+ // Calculate the stride for the channel dimension
384
+ let channelStride = 1;
385
+ for (let i = channelDimIndex + 1; i < shape.length; i++) {
386
+ channelStride *= shape[i];
387
+ }
388
+ // Calculate the total size of dimensions before the channel dimension
389
+ let outerSize = 1;
390
+ for (let i = 0; i < channelDimIndex; i++) {
391
+ outerSize *= shape[i];
392
+ }
393
+ // Extract all values for this channel
394
+ for (let outer = 0; outer < outerSize; outer++) {
395
+ const outerOffset = outer * nChannels * channelStride;
396
+ const channelOffset = outerOffset + channelIndex * channelStride;
397
+ for (let inner = 0; inner < channelStride; inner++) {
398
+ result.push(data[channelOffset + inner]);
399
+ }
400
+ }
401
+ return result;
402
+ }
403
+ /**
404
+ * Compute OMERO metadata from an NgffImage.
405
+ *
406
+ * This function computes visualization parameters (OMERO metadata) from image data:
407
+ * - min/max: The actual data range
408
+ * - start/end: Display window based on quantiles (default 2% and 98%)
409
+ *
410
+ * For multi-channel images (with 'c' dimension), statistics are computed
411
+ * separately for each channel, resulting in per-channel OMERO windows.
412
+ *
413
+ * Memory requirements: This function loads the entire image data into memory
414
+ * for statistics computation. For large images, use the lowest resolution
415
+ * image from a multiscales pyramid.
416
+ *
417
+ * Edge cases:
418
+ * - If all values in a channel are NaN, the statistics will be NaN.
419
+ * - If a channel has constant values, min/max/start/end will all be the same.
420
+ *
421
+ * @param image - The NgffImage to compute metadata for
422
+ * @param options - Optional configuration for quantiles, colors, and labels
423
+ * - quantiles: Tuple of (low, high) quantile values. Must be between 0 and 1,
424
+ * with low < high. Default is [0.02, 0.98] for 2% and 98% quantiles.
425
+ * - colors: List of hex color strings (without #) for each channel.
426
+ * Must be 6-digit hexadecimal strings (e.g., "FF0000" for red).
427
+ * If not provided, uses white for single channel or Glasbey
428
+ * progression for multi-channel.
429
+ * - labels: List of label strings for each channel.
430
+ * If not provided, uses empty strings.
431
+ * @returns Promise resolving to Omero metadata with computed window parameters
432
+ * @throws {Error} If quantiles are invalid, colors are invalid format,
433
+ * or not enough colors/labels provided.
434
+ *
435
+ * @example
436
+ * ```ts
437
+ * const omero = await computeOmeroFromNgffImage(image);
438
+ * multiscales.metadata.omero = omero;
439
+ * ```
440
+ */
441
+ export async function computeOmeroFromNgffImage(image, options = {}) {
442
+ const quantiles = options.quantiles ?? [0.02, 0.98];
443
+ // Validate quantiles
444
+ validateQuantiles(quantiles);
445
+ const dims = image.dims;
446
+ const shape = image.data.shape;
447
+ // Check if there's a channel dimension
448
+ const hasChannelDim = dims.includes("c");
449
+ const cIndex = hasChannelDim ? dims.indexOf("c") : -1;
450
+ const nChannels = hasChannelDim ? shape[cIndex] : 1;
451
+ // Get colors
452
+ let channelColors;
453
+ if (options.colors !== undefined) {
454
+ if (options.colors.length < nChannels) {
455
+ throw new Error(`Not enough colors provided. Got ${options.colors.length}, need ${nChannels}.`);
456
+ }
457
+ // Validate each color
458
+ for (const color of options.colors.slice(0, nChannels)) {
459
+ validateColor(color);
460
+ }
461
+ channelColors = options.colors.slice(0, nChannels);
462
+ }
463
+ else {
464
+ channelColors = getDefaultColors(nChannels);
465
+ }
466
+ // Get labels
467
+ let channelLabels;
468
+ if (options.labels !== undefined) {
469
+ if (options.labels.length < nChannels) {
470
+ throw new Error(`Not enough labels provided. Got ${options.labels.length}, need ${nChannels}.`);
471
+ }
472
+ channelLabels = options.labels.slice(0, nChannels);
473
+ }
474
+ else {
475
+ channelLabels = Array(nChannels).fill("");
476
+ }
477
+ // Read all data from the zarr array
478
+ const result = await zarr.get(image.data);
479
+ const fullData = result.data;
480
+ // Compute statistics for each channel
481
+ const channels = [];
482
+ for (let chIdx = 0; chIdx < nChannels; chIdx++) {
483
+ let channelData;
484
+ if (hasChannelDim) {
485
+ // Extract this channel's data
486
+ channelData = extractChannel(fullData, shape, chIdx, cIndex);
487
+ }
488
+ else {
489
+ channelData = fullData;
490
+ }
491
+ // Compute statistics
492
+ const stats = computeChannelStatistics(channelData, quantiles);
493
+ // Create OMERO window
494
+ const window = {
495
+ min: stats.min,
496
+ max: stats.max,
497
+ start: stats.qLow,
498
+ end: stats.qHigh,
499
+ };
500
+ // Create channel metadata
501
+ const channel = {
502
+ color: channelColors[chIdx],
503
+ window,
504
+ label: channelLabels[chIdx],
505
+ };
506
+ channels.push(channel);
507
+ }
508
+ return { channels };
509
+ }
510
+ /**
511
+ * Compute OMERO metadata from a Multiscales object.
512
+ *
513
+ * This is a convenience function that computes OMERO metadata from the
514
+ * highest or lowest resolution image in a multiscales pyramid.
515
+ *
516
+ * @param multiscales - The Multiscales object to compute metadata for
517
+ * @param options - Optional configuration for quantiles, colors, labels, and resolution
518
+ * @returns Promise resolving to Omero metadata with computed window parameters
519
+ */
520
+ export async function computeOmeroFromMultiscales(multiscales, options = {}) {
521
+ if (!multiscales.images || multiscales.images.length === 0) {
522
+ throw new Error("Multiscales has no images");
523
+ }
524
+ const useLowestResolution = options.useLowestResolution ?? true;
525
+ // Select which image to use based on resolution preference
526
+ const image = useLowestResolution
527
+ ? multiscales.images[multiscales.images.length - 1] // Last image (lowest resolution)
528
+ : multiscales.images[0]; // First image (highest resolution)
529
+ const computeOptions = {};
530
+ if (options.quantiles !== undefined) {
531
+ computeOptions.quantiles = options.quantiles;
532
+ }
533
+ if (options.colors !== undefined) {
534
+ computeOptions.colors = options.colors;
535
+ }
536
+ if (options.labels !== undefined) {
537
+ computeOptions.labels = options.labels;
538
+ }
539
+ return await computeOmeroFromNgffImage(image, computeOptions);
540
+ }
541
+ //# sourceMappingURL=compute_omero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute_omero.js","sourceRoot":"","sources":["../../src/utils/compute_omero.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAE/B;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAShC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;I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"}
@@ -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"}