@fideus-labs/fidnii 0.1.0 → 0.2.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 (45) hide show
  1. package/dist/BufferManager.d.ts.map +1 -1
  2. package/dist/BufferManager.js +2 -5
  3. package/dist/BufferManager.js.map +1 -1
  4. package/dist/ClipPlanes.d.ts.map +1 -1
  5. package/dist/ClipPlanes.js +11 -15
  6. package/dist/ClipPlanes.js.map +1 -1
  7. package/dist/OMEZarrNVImage.d.ts +33 -3
  8. package/dist/OMEZarrNVImage.d.ts.map +1 -1
  9. package/dist/OMEZarrNVImage.js +129 -50
  10. package/dist/OMEZarrNVImage.js.map +1 -1
  11. package/dist/RegionCoalescer.d.ts.map +1 -1
  12. package/dist/RegionCoalescer.js +1 -1
  13. package/dist/RegionCoalescer.js.map +1 -1
  14. package/dist/ResolutionSelector.d.ts.map +1 -1
  15. package/dist/ResolutionSelector.js +2 -4
  16. package/dist/ResolutionSelector.js.map +1 -1
  17. package/dist/ViewportBounds.d.ts.map +1 -1
  18. package/dist/ViewportBounds.js +7 -5
  19. package/dist/ViewportBounds.js.map +1 -1
  20. package/dist/events.d.ts.map +1 -1
  21. package/dist/events.js.map +1 -1
  22. package/dist/index.d.ts +11 -11
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +17 -16
  25. package/dist/index.js.map +1 -1
  26. package/dist/types.d.ts.map +1 -1
  27. package/dist/types.js.map +1 -1
  28. package/dist/utils/affine.d.ts +1 -1
  29. package/dist/utils/affine.d.ts.map +1 -1
  30. package/dist/utils/affine.js.map +1 -1
  31. package/dist/utils/coordinates.d.ts +1 -1
  32. package/dist/utils/coordinates.d.ts.map +1 -1
  33. package/dist/utils/coordinates.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/BufferManager.ts +45 -45
  36. package/src/ClipPlanes.ts +131 -130
  37. package/src/OMEZarrNVImage.ts +685 -606
  38. package/src/RegionCoalescer.ts +48 -47
  39. package/src/ResolutionSelector.ts +66 -67
  40. package/src/ViewportBounds.ts +120 -118
  41. package/src/events.ts +36 -35
  42. package/src/index.ts +59 -69
  43. package/src/types.ts +95 -94
  44. package/src/utils/affine.ts +65 -65
  45. package/src/utils/coordinates.ts +70 -70
@@ -1 +1 @@
1
- {"version":3,"file":"BufferManager.d.ts","sourceRoot":"","sources":["../src/BufferManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAyB,SAAS,EAAE,MAAM,YAAY,CAAC;AAG/E;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAElC;;;;;OAKG;gBACS,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAW/C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU;IA8BxD;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;;;OAIG;IACH,aAAa,IAAI,UAAU;IAO3B;;OAEG;IACH,aAAa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIzC;;OAEG;IACH,aAAa,IAAI,MAAM;IAQvB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,QAAQ,IAAI,SAAS;IAIrB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;CAK9D"}
1
+ {"version":3,"file":"BufferManager.d.ts","sourceRoot":"","sources":["../src/BufferManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAyB,SAAS,EAAE,MAAM,YAAY,CAAA;AAG9E;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IAEjC;;;;;OAKG;gBACS,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAW/C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU;IA6BxD;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;;;OAIG;IACH,aAAa,IAAI,UAAU;IAQ3B;;OAEG;IACH,aAAa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIzC;;OAEG;IACH,aAAa,IAAI,MAAM;IAQvB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,QAAQ,IAAI,SAAS;IAIrB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;CAK9D"}
@@ -53,11 +53,8 @@ export class BufferManager {
53
53
  `Proceeding anyway (likely at lowest resolution).`);
54
54
  }
55
55
  const currentCapacityPixels = this.buffer.byteLength / this.bytesPerPixel;
56
- const utilizationRatio = currentCapacityPixels > 0
57
- ? requiredPixels / currentCapacityPixels
58
- : 0;
59
- const needsReallocation = requiredPixels > currentCapacityPixels ||
60
- utilizationRatio < 0.25;
56
+ const utilizationRatio = currentCapacityPixels > 0 ? requiredPixels / currentCapacityPixels : 0;
57
+ const needsReallocation = requiredPixels > currentCapacityPixels || utilizationRatio < 0.25;
61
58
  if (needsReallocation) {
62
59
  // Allocate new buffer
63
60
  const newByteLength = requiredPixels * this.bytesPerPixel;
@@ -1 +1 @@
1
- {"version":3,"file":"BufferManager.js","sourceRoot":"","sources":["../src/BufferManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BufferManager.js","sourceRoot":"","sources":["../src/BufferManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClipPlanes.d.ts","sourceRoot":"","sources":["../src/ClipPlanes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClipPlanes.d.ts","sourceRoot":"","sources":["../src/ClipPlanes.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
2
  // SPDX-License-Identifier: MIT
3
- import { pixelToWorld, worldToPixel } from "./utils/coordinates.js";
4
3
  import { getChunkShape, getVolumeShape } from "./ResolutionSelector.js";
4
+ import { pixelToWorld, worldToPixel } from "./utils/coordinates.js";
5
5
  /** Maximum number of clip planes supported by NiiVue */
6
6
  export const MAX_CLIP_PLANES = 6;
7
7
  /**
@@ -276,7 +276,9 @@ export function clipPlanesToBoundingBox(clipPlanes, volumeBounds) {
276
276
  maxX = Math.min(maxX, point[0]);
277
277
  }
278
278
  }
279
- else if (absNy > 1 - tolerance && absNx < tolerance && absNz < tolerance) {
279
+ else if (absNy > 1 - tolerance &&
280
+ absNx < tolerance &&
281
+ absNz < tolerance) {
280
282
  // Y-aligned plane
281
283
  if (normal[1] > 0) {
282
284
  minY = Math.max(minY, point[1]);
@@ -285,7 +287,9 @@ export function clipPlanesToBoundingBox(clipPlanes, volumeBounds) {
285
287
  maxY = Math.min(maxY, point[1]);
286
288
  }
287
289
  }
288
- else if (absNz > 1 - tolerance && absNx < tolerance && absNy < tolerance) {
290
+ else if (absNz > 1 - tolerance &&
291
+ absNx < tolerance &&
292
+ absNy < tolerance) {
289
293
  // Z-aligned plane
290
294
  if (normal[2] > 0) {
291
295
  minZ = Math.max(minZ, point[2]);
@@ -323,16 +327,8 @@ export function clipPlanesToBoundingBox(clipPlanes, volumeBounds) {
323
327
  }
324
328
  // Ensure valid bounds (min <= max)
325
329
  return {
326
- min: [
327
- Math.min(minX, maxX),
328
- Math.min(minY, maxY),
329
- Math.min(minZ, maxZ),
330
- ],
331
- max: [
332
- Math.max(minX, maxX),
333
- Math.max(minY, maxY),
334
- Math.max(minZ, maxZ),
335
- ],
330
+ min: [Math.min(minX, maxX), Math.min(minY, maxY), Math.min(minZ, maxZ)],
331
+ max: [Math.max(minX, maxX), Math.max(minY, maxY), Math.max(minZ, maxZ)],
336
332
  };
337
333
  }
338
334
  /**
@@ -494,13 +490,13 @@ export function validateClipPlanes(clipPlanes) {
494
490
  // Check point is valid
495
491
  if (!Array.isArray(plane.point) ||
496
492
  plane.point.length !== 3 ||
497
- plane.point.some((v) => typeof v !== "number" || !isFinite(v))) {
493
+ plane.point.some((v) => typeof v !== "number" || !Number.isFinite(v))) {
498
494
  throw new Error(`Invalid point in clip plane ${i}`);
499
495
  }
500
496
  // Check normal is valid
501
497
  if (!Array.isArray(plane.normal) ||
502
498
  plane.normal.length !== 3 ||
503
- plane.normal.some((v) => typeof v !== "number" || !isFinite(v))) {
499
+ plane.normal.some((v) => typeof v !== "number" || !Number.isFinite(v))) {
504
500
  throw new Error(`Invalid normal in clip plane ${i}`);
505
501
  }
506
502
  // Check normal is not zero
@@ -1 +1 @@
1
- {"version":3,"file":"ClipPlanes.js","sourceRoot":"","sources":["../src/ClipPlanes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClipPlanes.js","sourceRoot":"","sources":["../src/ClipPlanes.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { NVImage } from "@niivue/niivue";
2
- import type { Niivue } from "@niivue/niivue";
3
1
  import type { Multiscales, Omero } from "@fideus-labs/ngff-zarr";
2
+ import type { Niivue } from "@niivue/niivue";
3
+ import { NVImage } from "@niivue/niivue";
4
+ import { type OMEZarrNVImageEventListener, type OMEZarrNVImageEventListenerOptions, type OMEZarrNVImageEventMap, type PopulateTrigger } from "./events.js";
4
5
  import type { ClipPlane, ClipPlanes, OMEZarrNVImageOptions, SlabBufferState, SlabSliceType, VolumeBounds } from "./types.js";
5
- import { OMEZarrNVImageEventListener, OMEZarrNVImageEventListenerOptions, OMEZarrNVImageEventMap, PopulateTrigger } from "./events.js";
6
6
  /**
7
7
  * OMEZarrNVImage extends NVImage to support rendering OME-Zarr images in NiiVue.
8
8
  *
@@ -18,6 +18,14 @@ export declare class OMEZarrNVImage extends NVImage {
18
18
  readonly multiscales: Multiscales;
19
19
  /** Maximum number of pixels to use */
20
20
  readonly maxPixels: number;
21
+ /**
22
+ * True when `multiscales.method` is `Methods.ITKWASM_LABEL_IMAGE`.
23
+ *
24
+ * Label images are rendered with a discrete colormap
25
+ * (`setColormapLabel()`) instead of a continuous colormap, and
26
+ * OMERO intensity windowing is skipped.
27
+ */
28
+ readonly isLabelImage: boolean;
21
29
  /** Reference to NiiVue instance */
22
30
  private readonly niivue;
23
31
  /** Buffer manager for dynamically-sized pixel data */
@@ -177,6 +185,17 @@ export declare class OMEZarrNVImage extends NVImage {
177
185
  * This sets the display intensity range for NiiVue rendering.
178
186
  */
179
187
  private applyOmeroToHeader;
188
+ /**
189
+ * Build and apply a discrete NiiVue label colormap to an NVImage.
190
+ *
191
+ * Scans the pixel data for unique integer values and assigns each a
192
+ * distinct color from the Glasbey palette (via `@fideus-labs/ngff-zarr`).
193
+ * Label 0 is treated as background (fully transparent).
194
+ *
195
+ * @param nvImage - The NVImage to apply the label colormap to
196
+ * @param data - The pixel data to scan for unique labels
197
+ */
198
+ private _applyLabelColormap;
180
199
  /**
181
200
  * Ensure OMERO metadata is available and applied.
182
201
  *
@@ -260,6 +279,17 @@ export declare class OMEZarrNVImage extends NVImage {
260
279
  * Get the number of resolution levels.
261
280
  */
262
281
  getNumLevels(): number;
282
+ /**
283
+ * Load a specific resolution level.
284
+ *
285
+ * Overrides the automatic `maxPixels`-based level selection and loads the
286
+ * requested level directly. The preview step is skipped because the caller
287
+ * has explicitly chosen a level.
288
+ *
289
+ * @param levelIndex - Zero-based resolution level (0 = highest resolution)
290
+ * @throws If `levelIndex` is out of range
291
+ */
292
+ loadLevel(levelIndex: number): Promise<void>;
263
293
  /**
264
294
  * Get the volume bounds in world space.
265
295
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OMEZarrNVImage.d.ts","sourceRoot":"","sources":["../src/OMEZarrNVImage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OMEZarrNVImage.d.ts","sourceRoot":"","sources":["../src/OMEZarrNVImage.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,19 @@
1
1
  // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
2
  // SPDX-License-Identifier: MIT
3
- import { NIFTI1 } from "nifti-reader-js";
3
+ import { Methods } from "@fideus-labs/ngff-zarr";
4
+ import { computeOmeroFromNgffImage, GLASBEY_COLORS, } from "@fideus-labs/ngff-zarr/browser";
4
5
  import { NVImage, SLICE_TYPE } from "@niivue/niivue";
5
- import { computeOmeroFromNgffImage } from "@fideus-labs/ngff-zarr/browser";
6
6
  import { LRUCache } from "lru-cache";
7
- import { getBytesPerPixel, getNiftiDataType, parseZarritaDtype, } from "./types.js";
7
+ import { NIFTI1 } from "nifti-reader-js";
8
8
  import { BufferManager } from "./BufferManager.js";
9
+ import { alignToChunks, clipPlanesToNiivue, clipPlanesToPixelRegion, createDefaultClipPlanes, MAX_CLIP_PLANES, normalizeVector, validateClipPlanes, } from "./ClipPlanes.js";
10
+ import { OMEZarrNVImageEvent, } from "./events.js";
9
11
  import { RegionCoalescer } from "./RegionCoalescer.js";
10
12
  import { getChunkShape, getVolumeShape, select2DResolution, selectResolution, } from "./ResolutionSelector.js";
11
- import { alignToChunks, clipPlanesToNiivue, clipPlanesToPixelRegion, createDefaultClipPlanes, MAX_CLIP_PLANES, normalizeVector, validateClipPlanes, } from "./ClipPlanes.js";
13
+ import { getBytesPerPixel, getNiftiDataType, parseZarritaDtype, } from "./types.js";
12
14
  import { affineToNiftiSrows, calculateWorldBounds, createAffineFromNgffImage, } from "./utils/affine.js";
13
15
  import { worldToPixel } from "./utils/coordinates.js";
14
16
  import { boundsApproxEqual, computeViewportBounds2D, computeViewportBounds3D, } from "./ViewportBounds.js";
15
- import { OMEZarrNVImageEvent, } from "./events.js";
16
17
  const DEFAULT_MAX_PIXELS = 50_000_000;
17
18
  const DEFAULT_MAX_CACHE_ENTRIES = 200;
18
19
  /**
@@ -30,6 +31,14 @@ export class OMEZarrNVImage extends NVImage {
30
31
  multiscales;
31
32
  /** Maximum number of pixels to use */
32
33
  maxPixels;
34
+ /**
35
+ * True when `multiscales.method` is `Methods.ITKWASM_LABEL_IMAGE`.
36
+ *
37
+ * Label images are rendered with a discrete colormap
38
+ * (`setColormapLabel()`) instead of a continuous colormap, and
39
+ * OMERO intensity windowing is skipped.
40
+ */
41
+ isLabelImage;
33
42
  /** Reference to NiiVue instance */
34
43
  niivue;
35
44
  /** Buffer manager for dynamically-sized pixel data */
@@ -123,6 +132,7 @@ export class OMEZarrNVImage extends NVImage {
123
132
  super();
124
133
  this.multiscales = options.multiscales;
125
134
  this.maxPixels = options.maxPixels ?? DEFAULT_MAX_PIXELS;
135
+ this.isLabelImage = this.multiscales.method === Methods.ITKWASM_LABEL_IMAGE;
126
136
  this.niivue = options.niivue;
127
137
  this.clipPlaneDebounceMs = options.clipPlaneDebounceMs ?? 300;
128
138
  // Initialize chunk cache: user-provided > LRU(maxCacheEntries) > disabled
@@ -221,8 +231,10 @@ export class OMEZarrNVImage extends NVImage {
221
231
  // Initialize with empty typed array (will be replaced when data loads)
222
232
  // We need at least 1 element to avoid issues
223
233
  this.img = this.bufferManager.resize([1, 1, 1]);
224
- // Set default colormap
225
- this._colormap = "gray";
234
+ // Set default colormap (label images use setColormapLabel() instead)
235
+ if (!this.isLabelImage) {
236
+ this._colormap = "gray";
237
+ }
226
238
  this._opacity = 1.0;
227
239
  }
228
240
  /**
@@ -361,8 +373,14 @@ export class OMEZarrNVImage extends NVImage {
361
373
  this.img = this.bufferManager.getTypedArray();
362
374
  // Update NVImage header with correct dimensions and transforms
363
375
  this.updateHeaderForRegion(ngffImage, alignedRegion, fetchedShape);
364
- // Compute or apply OMERO metadata for cal_min/cal_max
365
- await this.ensureOmeroMetadata(ngffImage, levelIndex);
376
+ if (this.isLabelImage) {
377
+ // Label images: apply a discrete colormap instead of OMERO windowing
378
+ this._applyLabelColormap(this, result.data);
379
+ }
380
+ else {
381
+ // Compute or apply OMERO metadata for cal_min/cal_max
382
+ await this.ensureOmeroMetadata(ngffImage, levelIndex);
383
+ }
366
384
  // Reset global_min so NiiVue's refreshLayers() re-runs calMinMax() on real data.
367
385
  // Without this, if calMinMax() was previously called on placeholder/empty data
368
386
  // (e.g., when setting colormap before loading), global_min would already be set
@@ -373,12 +391,14 @@ export class OMEZarrNVImage extends NVImage {
373
391
  this.updateNiivueClipPlanes();
374
392
  // Refresh NiiVue
375
393
  this.niivue.updateGLVolume();
376
- // Widen the display window if actual data exceeds the OMERO range.
377
- // At higher resolutions, individual bright/dark voxels that were averaged
378
- // out at lower resolutions can exceed the OMERO-specified window, causing
379
- // clipping artifacts. This preserves the OMERO lower bound but widens the
380
- // ceiling to encompass the full data range when needed.
381
- this._widenCalRangeIfNeeded(this);
394
+ if (!this.isLabelImage) {
395
+ // Widen the display window if actual data exceeds the OMERO range.
396
+ // At higher resolutions, individual bright/dark voxels that were averaged
397
+ // out at lower resolutions can exceed the OMERO-specified window, causing
398
+ // clipping artifacts. This preserves the OMERO lower bound but widens the
399
+ // ceiling to encompass the full data range when needed.
400
+ this._widenCalRangeIfNeeded(this);
401
+ }
382
402
  // Emit loadingComplete event
383
403
  this._emitEvent("loadingComplete", {
384
404
  levelIndex,
@@ -429,12 +449,7 @@ export class OMEZarrNVImage extends NVImage {
429
449
  affine[14] += regionStart[0] * sz; // z offset
430
450
  // Update affine in header
431
451
  const srows = affineToNiftiSrows(affine);
432
- this.hdr.affine = [
433
- srows.srow_x,
434
- srows.srow_y,
435
- srows.srow_z,
436
- [0, 0, 0, 1],
437
- ];
452
+ this.hdr.affine = [srows.srow_x, srows.srow_y, srows.srow_z, [0, 0, 0, 1]];
438
453
  // Update current buffer bounds
439
454
  // Buffer starts at region.chunkAlignedStart and has extent fetchedShape
440
455
  this._currentBufferBounds = {
@@ -494,6 +509,48 @@ export class OMEZarrNVImage extends NVImage {
494
509
  this.hdr.cal_max = calMax;
495
510
  }
496
511
  }
512
+ /**
513
+ * Build and apply a discrete NiiVue label colormap to an NVImage.
514
+ *
515
+ * Scans the pixel data for unique integer values and assigns each a
516
+ * distinct color from the Glasbey palette (via `@fideus-labs/ngff-zarr`).
517
+ * Label 0 is treated as background (fully transparent).
518
+ *
519
+ * @param nvImage - The NVImage to apply the label colormap to
520
+ * @param data - The pixel data to scan for unique labels
521
+ */
522
+ _applyLabelColormap(nvImage, data) {
523
+ const uniqueLabels = [...new Set(data)].sort((a, b) => a - b);
524
+ const R = [];
525
+ const G = [];
526
+ const B = [];
527
+ const A = [];
528
+ const I = [];
529
+ const labels = [];
530
+ for (let i = 0; i < uniqueLabels.length; i++) {
531
+ const label = uniqueLabels[i];
532
+ I.push(label);
533
+ if (label === 0) {
534
+ // Background: transparent
535
+ R.push(0);
536
+ G.push(0);
537
+ B.push(0);
538
+ A.push(0);
539
+ labels.push("background");
540
+ }
541
+ else {
542
+ // Use Glasbey color palette (cycling if >256 labels)
543
+ const hex = GLASBEY_COLORS[(i - 1) % GLASBEY_COLORS.length] ?? "FFFFFF";
544
+ R.push(parseInt(hex.slice(0, 2), 16));
545
+ G.push(parseInt(hex.slice(2, 4), 16));
546
+ B.push(parseInt(hex.slice(4, 6), 16));
547
+ A.push(255);
548
+ labels.push(String(label));
549
+ }
550
+ }
551
+ // NiiVue's setColormapLabel expects a ColorMap-shaped object
552
+ nvImage.setColormapLabel({ R, G, B, A, I, labels });
553
+ }
497
554
  /**
498
555
  * Ensure OMERO metadata is available and applied.
499
556
  *
@@ -522,8 +579,7 @@ export class OMEZarrNVImage extends NVImage {
522
579
  const isPreviewLevel = levelIndex === lowestLevel;
523
580
  const isTargetLevel = levelIndex === this.targetLevelIndex;
524
581
  const needsCompute = isPreviewLevel ||
525
- (isTargetLevel &&
526
- this._omeroComputedForLevel !== this.targetLevelIndex);
582
+ (isTargetLevel && this._omeroComputedForLevel !== this.targetLevelIndex);
527
583
  if (needsCompute) {
528
584
  const computedOmero = await computeOmeroFromNgffImage(ngffImage);
529
585
  this._omero = computedOmero;
@@ -604,7 +660,8 @@ export class OMEZarrNVImage extends NVImage {
604
660
  // Volume reduced → allow higher resolution (lower level index)
605
661
  newTargetLevel = selection.levelIndex;
606
662
  }
607
- else if (volumeIncreased && selection.levelIndex > this.targetLevelIndex) {
663
+ else if (volumeIncreased &&
664
+ selection.levelIndex > this.targetLevelIndex) {
608
665
  // Volume increased → allow lower resolution (higher level index) if needed to fit
609
666
  newTargetLevel = selection.levelIndex;
610
667
  }
@@ -704,6 +761,24 @@ export class OMEZarrNVImage extends NVImage {
704
761
  getNumLevels() {
705
762
  return this.multiscales.images.length;
706
763
  }
764
+ /**
765
+ * Load a specific resolution level.
766
+ *
767
+ * Overrides the automatic `maxPixels`-based level selection and loads the
768
+ * requested level directly. The preview step is skipped because the caller
769
+ * has explicitly chosen a level.
770
+ *
771
+ * @param levelIndex - Zero-based resolution level (0 = highest resolution)
772
+ * @throws If `levelIndex` is out of range
773
+ */
774
+ async loadLevel(levelIndex) {
775
+ const numLevels = this.multiscales.images.length;
776
+ if (levelIndex < 0 || levelIndex >= numLevels) {
777
+ throw new Error(`levelIndex ${levelIndex} out of range [0, ${numLevels - 1}]`);
778
+ }
779
+ this.targetLevelIndex = levelIndex;
780
+ await this.populateVolume(true, "initial");
781
+ }
707
782
  /**
708
783
  * Get the volume bounds in world space.
709
784
  */
@@ -847,7 +922,10 @@ export class OMEZarrNVImage extends NVImage {
847
922
  state.zoomOverrideAbortController = controller;
848
923
  nv.canvas.addEventListener("wheel", (e) => {
849
924
  // Convert mouse position to DPR-scaled canvas coordinates
850
- const rect = nv.canvas.getBoundingClientRect();
925
+ const canvas = nv.canvas;
926
+ if (!canvas)
927
+ return;
928
+ const rect = canvas.getBoundingClientRect();
851
929
  const dpr = nv.uiData.dpr ?? 1;
852
930
  const x = (e.clientX - rect.left) * dpr;
853
931
  const y = (e.clientY - rect.top) * dpr;
@@ -1128,8 +1206,7 @@ export class OMEZarrNVImage extends NVImage {
1128
1206
  nv,
1129
1207
  currentSliceType: this._detectSliceType(nv),
1130
1208
  previousOnLocationChange: nv.onLocationChange,
1131
- previousOnOptsChange: nv
1132
- .onOptsChange,
1209
+ previousOnOptsChange: nv.onOptsChange,
1133
1210
  };
1134
1211
  // Hook onOptsChange to detect slice type changes
1135
1212
  nv.onOptsChange = (propertyName, newValue, oldValue) => {
@@ -1177,8 +1254,8 @@ export class OMEZarrNVImage extends NVImage {
1177
1254
  this._unhookZoomOverride(nv, state);
1178
1255
  // Restore original callbacks
1179
1256
  nv.onLocationChange = state.previousOnLocationChange ?? (() => { });
1180
- nv.onOptsChange =
1181
- (state.previousOnOptsChange ?? (() => { }));
1257
+ nv.onOptsChange = (state.previousOnOptsChange ??
1258
+ (() => { }));
1182
1259
  this._attachedNiivues.delete(nv);
1183
1260
  }
1184
1261
  /**
@@ -1205,9 +1282,9 @@ export class OMEZarrNVImage extends NVImage {
1205
1282
  // Access the opts.sliceType via the scene data or fall back to checking
1206
1283
  // the convenience properties. Niivue stores the current sliceType in opts.
1207
1284
  // We can read it from the NV instance's internal opts.
1208
- const opts = nv.opts;
1209
- if (opts && typeof opts.sliceType === "number") {
1210
- return opts.sliceType;
1285
+ const { sliceType } = nv.opts;
1286
+ if (typeof sliceType === "number") {
1287
+ return sliceType;
1211
1288
  }
1212
1289
  // Default to Render
1213
1290
  return SLICE_TYPE.RENDER;
@@ -1275,11 +1352,7 @@ export class OMEZarrNVImage extends NVImage {
1275
1352
  return;
1276
1353
  let worldCoord;
1277
1354
  try {
1278
- const mm = nv.frac2mm([
1279
- crosshairPos[0],
1280
- crosshairPos[1],
1281
- crosshairPos[2],
1282
- ]);
1355
+ const mm = nv.frac2mm([crosshairPos[0], crosshairPos[1], crosshairPos[2]]);
1283
1356
  // frac2mm returns values in the slab NVImage's normalized mm space
1284
1357
  // (world * normalizationScale). Convert back to physical world.
1285
1358
  const ns = slabState.normalizationScale;
@@ -1383,7 +1456,9 @@ export class OMEZarrNVImage extends NVImage {
1383
1456
  hdr.sform_code = 1;
1384
1457
  nvImage.name = `${this.name ?? "OME-Zarr"} [${SLICE_TYPE[sliceType]}]`;
1385
1458
  nvImage.img = bufferManager.resize([1, 1, 1]);
1386
- nvImage._colormap = "gray";
1459
+ if (!this.isLabelImage) {
1460
+ nvImage._colormap = "gray";
1461
+ }
1387
1462
  nvImage._opacity = 1.0;
1388
1463
  // Select initial resolution using 2D pixel budget
1389
1464
  const orthAxis = this._getOrthogonalAxis(sliceType);
@@ -1480,8 +1555,7 @@ export class OMEZarrNVImage extends NVImage {
1480
1555
  try {
1481
1556
  const orthAxis = this._getOrthogonalAxis(sliceType);
1482
1557
  // Recompute target resolution using 2D pixel budget with per-slab viewport bounds
1483
- const slabViewportBounds = this._viewportBoundsPerSlab.get(sliceType) ??
1484
- undefined;
1558
+ const slabViewportBounds = this._viewportBoundsPerSlab.get(sliceType) ?? undefined;
1485
1559
  const selection = select2DResolution(this.multiscales, this.maxPixels, this._clipPlanes, this._volumeBounds, orthAxis, slabViewportBounds);
1486
1560
  slabState.targetLevelIndex = selection.levelIndex;
1487
1561
  const numLevels = this.multiscales.images.length;
@@ -1584,14 +1658,19 @@ export class OMEZarrNVImage extends NVImage {
1584
1658
  // Resize buffer and copy data
1585
1659
  const targetData = slabState.bufferManager.resize(fetchedShape);
1586
1660
  targetData.set(result.data);
1587
- slabState.nvImage.img = slabState.bufferManager.getTypedArray();
1661
+ slabState.nvImage.img =
1662
+ slabState.bufferManager.getTypedArray();
1588
1663
  // Update slab position tracking
1589
1664
  slabState.slabStart = slabStart;
1590
1665
  slabState.slabEnd = slabEnd;
1591
1666
  // Update the NVImage header for this slab region
1592
1667
  this._updateSlabHeader(slabState.nvImage, ngffImage, fetchStart, fetchEnd, fetchedShape);
1593
- // Apply OMERO metadata if available
1594
- if (this._omero) {
1668
+ if (this.isLabelImage) {
1669
+ // Label images: apply discrete colormap to the slab NVImage
1670
+ this._applyLabelColormap(slabState.nvImage, result.data);
1671
+ }
1672
+ else if (this._omero) {
1673
+ // Apply OMERO metadata if available
1595
1674
  this._applyOmeroToSlabHeader(slabState.nvImage);
1596
1675
  }
1597
1676
  // Reset global_min so NiiVue recalculates intensity ranges
@@ -1614,9 +1693,11 @@ export class OMEZarrNVImage extends NVImage {
1614
1693
  // Ensure this NV has the slab volume
1615
1694
  if (attachedNv.volumes.includes(slabState.nvImage)) {
1616
1695
  attachedNv.updateGLVolume();
1617
- // Widen the display window if actual data exceeds the OMERO range.
1618
- // Must run after updateGLVolume() which computes global_min/global_max.
1619
- this._widenCalRangeIfNeeded(slabState.nvImage);
1696
+ if (!this.isLabelImage) {
1697
+ // Widen the display window if actual data exceeds the OMERO range.
1698
+ // Must run after updateGLVolume() which computes global_min/global_max.
1699
+ this._widenCalRangeIfNeeded(slabState.nvImage);
1700
+ }
1620
1701
  // Position the crosshair at the correct slice within this slab.
1621
1702
  // Without this, NiiVue defaults to the center of the slab which
1622
1703
  // corresponds to different physical positions at each resolution level.
@@ -1732,13 +1813,11 @@ export class OMEZarrNVImage extends NVImage {
1732
1813
  // actual data extremes (global_min/global_max) at this resolution level.
1733
1814
  // The hdr values are NOT modified so the original OMERO window is
1734
1815
  // preserved for next reload.
1735
- if (nvImage.cal_max !== undefined &&
1736
- nvImage.global_max > nvImage.cal_max) {
1816
+ if (nvImage.cal_max !== undefined && nvImage.global_max > nvImage.cal_max) {
1737
1817
  nvImage.cal_max = nvImage.global_max;
1738
1818
  widened = true;
1739
1819
  }
1740
- if (nvImage.cal_min !== undefined &&
1741
- nvImage.global_min < nvImage.cal_min) {
1820
+ if (nvImage.cal_min !== undefined && nvImage.global_min < nvImage.cal_min) {
1742
1821
  nvImage.cal_min = nvImage.global_min;
1743
1822
  widened = true;
1744
1823
  }