@fideus-labs/fidnii 0.4.0 → 0.6.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.
- package/dist/OMEZarrNVImage.d.ts +135 -7
- package/dist/OMEZarrNVImage.d.ts.map +1 -1
- package/dist/OMEZarrNVImage.js +509 -63
- package/dist/OMEZarrNVImage.js.map +1 -1
- package/dist/RegionCoalescer.d.ts +12 -7
- package/dist/RegionCoalescer.d.ts.map +1 -1
- package/dist/RegionCoalescer.js +30 -20
- package/dist/RegionCoalescer.js.map +1 -1
- package/dist/events.d.ts +17 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/fromTiff.d.ts +22 -1
- package/dist/fromTiff.d.ts.map +1 -1
- package/dist/fromTiff.js +9 -3
- package/dist/fromTiff.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +60 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/affine.d.ts +12 -2
- package/dist/utils/affine.d.ts.map +1 -1
- package/dist/utils/affine.js +15 -3
- package/dist/utils/affine.js.map +1 -1
- package/dist/utils/orientation.d.ts +157 -0
- package/dist/utils/orientation.d.ts.map +1 -0
- package/dist/utils/orientation.js +225 -0
- package/dist/utils/orientation.js.map +1 -0
- package/package.json +5 -5
- package/src/OMEZarrNVImage.ts +606 -61
- package/src/RegionCoalescer.ts +33 -14
- package/src/events.ts +18 -0
- package/src/fromTiff.ts +32 -4
- package/src/index.ts +15 -1
- package/src/types.ts +86 -0
- package/src/utils/affine.ts +16 -3
- package/src/utils/orientation.ts +292 -0
package/dist/fromTiff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromTiff.js","sourceRoot":"","sources":["../src/fromTiff.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAY/B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"fromTiff.js","sourceRoot":"","sources":["../src/fromTiff.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAY/B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAgC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAA+C,EAC/C,UAA2B,EAAE;IAE7B,0EAA0E;IAC1E,MAAM,QAAQ,GAAiC,OAAO,CAAC,IAAI;QACzD,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QACzC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;IAEhB,IAAI,KAAgB,CAAA;IACpB,IAAI,MAAM,YAAY,SAAS,EAAE,CAAC;QAChC,mEAAmE;QACnE,0EAA0E;QAC1E,KAAK,GAAG,MAAM,CAAA;IAChB,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtC,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACnD,CAAC;SAAM,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;QAClC,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACpD,CAAC;SAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QACzC,KAAK,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3D,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,wDAAwD;YACtD,2BAA2B,CAC9B,CAAA;IACH,CAAC;IAED,iEAAiE;IACjE,kEAAkE;IAClE,mEAAmE;IACnE,iEAAiE;IACjE,EAAE;IACF,oDAAoD;IACpD,OAAO,YAAY,CAAC,KAA4B,EAAE;QAChD,OAAO,EAAE,KAAK;QACd,GAAG,OAAO,CAAC,QAAQ;KACpB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* // await image.populateVolume();
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
export type { TiffStoreOptions } from "@fideus-labs/fiff";
|
|
33
|
+
export type { DeflatePool, TiffStoreOptions } from "@fideus-labs/fiff";
|
|
34
34
|
export { TiffStore } from "@fideus-labs/fiff";
|
|
35
35
|
export { Methods } from "@fideus-labs/ngff-zarr";
|
|
36
36
|
export { terminateOmeroWorkerPool, terminateWorkerPool, } from "@fideus-labs/ngff-zarr/browser";
|
|
@@ -46,9 +46,11 @@ export { OMEZarrNVImage } from "./OMEZarrNVImage.js";
|
|
|
46
46
|
export { buildSelection, RegionCoalescer } from "./RegionCoalescer.js";
|
|
47
47
|
export type { OrthogonalAxis } from "./ResolutionSelector.js";
|
|
48
48
|
export { alignRegionToChunks, calculateUpsampleFactor, getChunkShape, getFullVolumeDimensions, getMiddleResolutionIndex, getVolumeShape, select2DResolution, selectResolution, } from "./ResolutionSelector.js";
|
|
49
|
-
export type { AttachedNiivueState, ChannelInfo, ChunkAlignedRegion, ChunkCache, ClipPlane, ClipPlanes, OMEZarrNVImageOptions, PixelRegion, RegionFetchResult, ResolutionSelection, SlabBufferState, SlabSliceType, TypedArray, VolumeBounds, ZarrDtype, } from "./types.js";
|
|
49
|
+
export type { AttachedNiivueState, CachedTimeFrame, ChannelInfo, ChunkAlignedRegion, ChunkCache, ClipPlane, ClipPlanes, OMEZarrNVImageOptions, PixelRegion, RegionFetchResult, ResolutionSelection, SlabBufferState, SlabSliceType, TimeAxisInfo, TimeUnit, TypedArray, VolumeBounds, ZarrDtype, } from "./types.js";
|
|
50
50
|
export { getBytesPerPixel, getChannelInfo, getNiftiDataType, getRGBNiftiDataType, getTypedArrayConstructor, isRGBImage, NiftiDataType, needsRGBNormalization, parseZarritaDtype, SLICE_TYPE, } from "./types.js";
|
|
51
51
|
export { affineToNiftiSrows, calculateWorldBounds, createAffineFromNgffImage, createAffineFromOMEZarr, getPixelDimensions, updateAffineForRegion, } from "./utils/affine.js";
|
|
52
52
|
export { ceilPixelCoord, clampPixelCoord, floorPixelCoord, normalizedToWorld, pixelToWorld, pixelToWorldAffine, roundPixelCoord, worldToNormalized, worldToPixel, worldToPixelAffine, } from "./utils/coordinates.js";
|
|
53
|
+
export type { OrientationMapping, OrientationSigns, } from "./utils/orientation.js";
|
|
54
|
+
export { applyOrientationToAffine, getOrientationInfo, getOrientationMapping, getOrientationSigns, } from "./utils/orientation.js";
|
|
53
55
|
export { boundsApproxEqual, computeViewportBounds2D, computeViewportBounds3D, intersectBounds, } from "./ViewportBounds.js";
|
|
54
56
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,2BAA2B,EAC3B,kCAAkC,EAClC,sBAAsB,EACtB,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAEhC,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EACV,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,GAChB,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,7 @@ export { getBytesPerPixel, getChannelInfo, getNiftiDataType, getRGBNiftiDataType
|
|
|
27
27
|
export { affineToNiftiSrows, calculateWorldBounds, createAffineFromNgffImage, createAffineFromOMEZarr, getPixelDimensions, updateAffineForRegion, } from "./utils/affine.js";
|
|
28
28
|
// Coordinate utilities
|
|
29
29
|
export { ceilPixelCoord, clampPixelCoord, floorPixelCoord, normalizedToWorld, pixelToWorld, pixelToWorldAffine, roundPixelCoord, worldToNormalized, worldToPixel, worldToPixelAffine, } from "./utils/coordinates.js";
|
|
30
|
+
export { applyOrientationToAffine, getOrientationInfo, getOrientationMapping, getOrientationSigns, } from "./utils/orientation.js";
|
|
30
31
|
// Viewport bounds utilities
|
|
31
32
|
export { boundsApproxEqual, computeViewportBounds2D, computeViewportBounds3D, intersectBounds, } from "./ViewportBounds.js";
|
|
32
33
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAoC/B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,sFAAsF;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,qDAAqD;AACrD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AAEvC,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,wBAAwB;AACxB,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAOxB,gDAAgD;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACvE,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtE,gCAAgC;AAChC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAoC/B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,sFAAsF;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,qDAAqD;AACrD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AAEvC,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,wBAAwB;AACxB,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAOxB,gDAAgD;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACvE,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtE,gCAAgC;AAChC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAsBhC,iEAAiE;AACjE,iBAAiB;AACjB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,mBAAmB;AACnB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAA;AAC1B,uBAAuB;AACvB,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,wBAAwB,CAAA;AAM/B,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,4BAA4B;AAC5B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,GAChB,MAAM,qBAAqB,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -153,6 +153,24 @@ export interface OMEZarrNVImageOptions {
|
|
|
153
153
|
* This option has no effect on 3D volumes (images with a `"z"` axis).
|
|
154
154
|
*/
|
|
155
155
|
flipY2D?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Initial time index to display (default: 0, or `omero.defaultT` if available).
|
|
158
|
+
*
|
|
159
|
+
* Only relevant for datasets with a `"t"` (time) dimension. Ignored
|
|
160
|
+
* when the dataset has no time axis.
|
|
161
|
+
*/
|
|
162
|
+
timeIndex?: number;
|
|
163
|
+
/**
|
|
164
|
+
* Number of adjacent time frames to pre-fetch in each direction (default: 2).
|
|
165
|
+
*
|
|
166
|
+
* When the user navigates to time index `t`, frames
|
|
167
|
+
* `[t - timePrefetchCount, t + timePrefetchCount]` are fetched in the
|
|
168
|
+
* background so that subsequent scrubbing can swap frames instantly from
|
|
169
|
+
* the cache. Set to `0` to disable pre-fetching.
|
|
170
|
+
*
|
|
171
|
+
* Only relevant for datasets with a `"t"` (time) dimension.
|
|
172
|
+
*/
|
|
173
|
+
timePrefetchCount?: number;
|
|
156
174
|
}
|
|
157
175
|
/**
|
|
158
176
|
* Result of fetching a region from the zarr store.
|
|
@@ -266,6 +284,48 @@ export declare const NiftiDataType: {
|
|
|
266
284
|
readonly RGBA32: 2304;
|
|
267
285
|
};
|
|
268
286
|
export type NiftiDataTypeCode = (typeof NiftiDataType)[keyof typeof NiftiDataType];
|
|
287
|
+
/**
|
|
288
|
+
* Time units supported by OME-Zarr NGFF.
|
|
289
|
+
*
|
|
290
|
+
* Matches the UDUNITS-2 time units recognized by the OME-Zarr
|
|
291
|
+
* specification for the `"time"` axis type.
|
|
292
|
+
*/
|
|
293
|
+
export type TimeUnit = "attosecond" | "centisecond" | "day" | "decisecond" | "exasecond" | "femtosecond" | "gigasecond" | "hectosecond" | "hour" | "kilosecond" | "megasecond" | "microsecond" | "millisecond" | "minute" | "nanosecond" | "petasecond" | "picosecond" | "second" | "terasecond" | "yoctosecond" | "yottasecond" | "zeptosecond" | "zettasecond";
|
|
294
|
+
/**
|
|
295
|
+
* Time axis metadata extracted from OME-Zarr multiscales.
|
|
296
|
+
*
|
|
297
|
+
* Present only when the dataset has a `"t"` dimension. Contains
|
|
298
|
+
* the number of time points, physical time step, and unit
|
|
299
|
+
* information needed for time navigation.
|
|
300
|
+
*/
|
|
301
|
+
export interface TimeAxisInfo {
|
|
302
|
+
/** Number of time points (from the zarr array shape along `"t"`) */
|
|
303
|
+
readonly count: number;
|
|
304
|
+
/** Index of the `"t"` dimension in `NgffImage.dims` */
|
|
305
|
+
readonly dimIndex: number;
|
|
306
|
+
/** Physical time step between adjacent indices (from `scale.t`) */
|
|
307
|
+
readonly step: number;
|
|
308
|
+
/** Time origin offset (from `translation.t`) */
|
|
309
|
+
readonly origin: number;
|
|
310
|
+
/** Time unit (e.g., `"second"`, `"millisecond"`), or `undefined` if not specified */
|
|
311
|
+
readonly unit: TimeUnit | undefined;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* A pre-fetched 3D frame ready for instant buffer swap.
|
|
315
|
+
*
|
|
316
|
+
* Used by the time frame cache to avoid re-fetching when scrubbing
|
|
317
|
+
* through adjacent time points.
|
|
318
|
+
*/
|
|
319
|
+
export interface CachedTimeFrame {
|
|
320
|
+
/** The typed array pixel data for this frame */
|
|
321
|
+
data: TypedArray;
|
|
322
|
+
/** Spatial shape in `[z, y, x]` order */
|
|
323
|
+
shape: [number, number, number];
|
|
324
|
+
/** The resolution level this was fetched at */
|
|
325
|
+
levelIndex: number;
|
|
326
|
+
/** The chunk-aligned pixel region this was fetched for */
|
|
327
|
+
region: ChunkAlignedRegion;
|
|
328
|
+
}
|
|
269
329
|
/**
|
|
270
330
|
* Information about a channel (component) dimension in the image.
|
|
271
331
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,gGAAgG;IAChG,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,kEAAkE;IAClE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,EAAE,CAAA;AAEpC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,wCAAwC;IACxC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,4CAA4C;IAC5C,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,0CAA0C;IAC1C,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IACrC,iDAAiD;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,WAAW,EAAE,WAAW,CAAA;IACxB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAI/B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/affine.d.ts
CHANGED
|
@@ -23,8 +23,18 @@ export declare function createAffineFromOMEZarr(scale: Record<string, number>, t
|
|
|
23
23
|
/**
|
|
24
24
|
* Create an affine matrix from an NgffImage.
|
|
25
25
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
26
|
+
* If the image has RFC-4 anatomical orientation metadata
|
|
27
|
+
* (`axesOrientations`), the affine column vectors and translations
|
|
28
|
+
* are sign-flipped so the matrix encodes direction relative to
|
|
29
|
+
* the NIfTI RAS+ convention. This allows NiiVue's `calculateRAS()`
|
|
30
|
+
* to correctly determine the anatomical layout.
|
|
31
|
+
*
|
|
32
|
+
* When no orientation metadata is present, the matrix is identical
|
|
33
|
+
* to a plain scale + translation affine (backward-compatible).
|
|
34
|
+
*
|
|
35
|
+
* @param ngffImage - The NgffImage containing scale, translation,
|
|
36
|
+
* and optional `axesOrientations`
|
|
37
|
+
* @returns 4x4 affine matrix with orientation signs applied
|
|
28
38
|
*/
|
|
29
39
|
export declare function createAffineFromNgffImage(ngffImage: NgffImage): mat4;
|
|
30
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affine.d.ts","sourceRoot":"","sources":["../../src/utils/affine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"affine.d.ts","sourceRoot":"","sources":["../../src/utils/affine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,IAAI,CA6CN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAGpE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,GAAG;IAChD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC,CAUA;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAOzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,IAAI,EACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACrC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACpC,IAAI,CA4BN;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACnC;IAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAuClE"}
|
package/dist/utils/affine.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
import { mat4 } from "gl-matrix";
|
|
4
|
+
import { applyOrientationToAffine } from "./orientation.js";
|
|
4
5
|
/**
|
|
5
6
|
* Create a 4x4 affine transformation matrix from OME-Zarr scale and translation.
|
|
6
7
|
*
|
|
@@ -60,11 +61,22 @@ export function createAffineFromOMEZarr(scale, translation) {
|
|
|
60
61
|
/**
|
|
61
62
|
* Create an affine matrix from an NgffImage.
|
|
62
63
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
64
|
+
* If the image has RFC-4 anatomical orientation metadata
|
|
65
|
+
* (`axesOrientations`), the affine column vectors and translations
|
|
66
|
+
* are sign-flipped so the matrix encodes direction relative to
|
|
67
|
+
* the NIfTI RAS+ convention. This allows NiiVue's `calculateRAS()`
|
|
68
|
+
* to correctly determine the anatomical layout.
|
|
69
|
+
*
|
|
70
|
+
* When no orientation metadata is present, the matrix is identical
|
|
71
|
+
* to a plain scale + translation affine (backward-compatible).
|
|
72
|
+
*
|
|
73
|
+
* @param ngffImage - The NgffImage containing scale, translation,
|
|
74
|
+
* and optional `axesOrientations`
|
|
75
|
+
* @returns 4x4 affine matrix with orientation signs applied
|
|
65
76
|
*/
|
|
66
77
|
export function createAffineFromNgffImage(ngffImage) {
|
|
67
|
-
|
|
78
|
+
const affine = createAffineFromOMEZarr(ngffImage.scale, ngffImage.translation);
|
|
79
|
+
return applyOrientationToAffine(affine, ngffImage.axesOrientations);
|
|
68
80
|
}
|
|
69
81
|
/**
|
|
70
82
|
* Convert an affine matrix to a flat array for NIfTI header.
|
package/dist/utils/affine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affine.js","sourceRoot":"","sources":["../../src/utils/affine.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAA6B,EAC7B,WAAmC;IAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAE5B,qDAAqD;IACrD,8EAA8E;IAC9E,2EAA2E;IAE3E,8CAA8C;IAC9C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;IAElC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,CAAA;IAE9C,sBAAsB;IACtB,0EAA0E;IAC1E,oEAAoE;IAEpE,4DAA4D;IAC5D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACd,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEb,6DAA6D;IAC7D,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACd,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEb,4DAA4D;IAC5D,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACb,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAEd,wBAAwB;IACxB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAEd,OAAO,MAAM,CAAA;AACf,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"affine.js","sourceRoot":"","sources":["../../src/utils/affine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { AnatomicalOrientation } from "@fideus-labs/ngff-zarr";
|
|
2
|
+
import type { mat4 } from "gl-matrix";
|
|
3
|
+
/**
|
|
4
|
+
* Mapping from an array axis orientation to the physical (RAS) row
|
|
5
|
+
* and sign it should occupy in the NIfTI affine.
|
|
6
|
+
*
|
|
7
|
+
* - `physicalRow`: which row of the 4x4 affine the scale/translation
|
|
8
|
+
* should be placed in (0 = R/L, 1 = A/P, 2 = S/I)
|
|
9
|
+
* - `sign`: `1` if the orientation is in the RAS+ direction,
|
|
10
|
+
* `-1` if opposite
|
|
11
|
+
*/
|
|
12
|
+
export interface OrientationMapping {
|
|
13
|
+
readonly physicalRow: 0 | 1 | 2;
|
|
14
|
+
readonly sign: 1 | -1;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Sign multipliers for each spatial axis, used to encode anatomical
|
|
18
|
+
* orientation into the NIfTI affine matrix.
|
|
19
|
+
*
|
|
20
|
+
* A value of `1` means the axis increases in the RAS+ direction
|
|
21
|
+
* (Right, Anterior, Superior). A value of `-1` means it increases
|
|
22
|
+
* in the opposite direction (Left, Posterior, Inferior).
|
|
23
|
+
*
|
|
24
|
+
* @deprecated Use {@link getOrientationMapping} for full permutation
|
|
25
|
+
* support. This interface only captures sign, not axis permutations.
|
|
26
|
+
*/
|
|
27
|
+
export interface OrientationSigns {
|
|
28
|
+
readonly x: 1 | -1;
|
|
29
|
+
readonly y: 1 | -1;
|
|
30
|
+
readonly z: 1 | -1;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the orientation mapping (physical row + RAS sign) for a single
|
|
34
|
+
* axis orientation.
|
|
35
|
+
*
|
|
36
|
+
* For unknown/exotic orientations, returns `undefined`.
|
|
37
|
+
*
|
|
38
|
+
* @param orientation - The anatomical orientation for one axis
|
|
39
|
+
* @returns The physical row and sign, or `undefined` if not a standard
|
|
40
|
+
* L/R, A/P, or S/I orientation
|
|
41
|
+
*/
|
|
42
|
+
export declare function getOrientationInfo(orientation: AnatomicalOrientation): OrientationMapping | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Get orientation mappings for all three spatial axes.
|
|
45
|
+
*
|
|
46
|
+
* Each mapping tells you which physical (RAS) row the array axis
|
|
47
|
+
* maps to and what sign to apply. This supports both sign flips
|
|
48
|
+
* (e.g. LPS) and axis permutations (e.g. when the OME-Zarr y axis
|
|
49
|
+
* encodes S/I instead of A/P).
|
|
50
|
+
*
|
|
51
|
+
* When no orientation metadata is present, returns the identity
|
|
52
|
+
* mapping: x→row 0 sign +1, y→row 1 sign +1, z→row 2 sign +1.
|
|
53
|
+
*
|
|
54
|
+
* @param axesOrientations - Orientation metadata from
|
|
55
|
+
* `NgffImage.axesOrientations`, or `undefined`
|
|
56
|
+
* @returns Mappings for x, y, and z axes
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* // LPS data: x→row0 sign-1, y→row1 sign-1, z→row2 sign+1
|
|
61
|
+
* getOrientationMapping(LPS)
|
|
62
|
+
*
|
|
63
|
+
* // Permuted (mri.nii.gz): x→row0 sign-1, y→row2 sign-1, z→row1 sign+1
|
|
64
|
+
* getOrientationMapping(permutedOrientations)
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function getOrientationMapping(axesOrientations: Record<string, AnatomicalOrientation> | undefined): {
|
|
68
|
+
x: OrientationMapping;
|
|
69
|
+
y: OrientationMapping;
|
|
70
|
+
z: OrientationMapping;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Compute RAS+ sign multipliers from RFC-4 anatomical orientation metadata.
|
|
74
|
+
*
|
|
75
|
+
* For each spatial axis, determines whether the axis direction is aligned
|
|
76
|
+
* with (+1) or opposite to (-1) the NIfTI RAS+ convention:
|
|
77
|
+
* - x: positive = left-to-right (R), negative = right-to-left (L)
|
|
78
|
+
* - y: positive = posterior-to-anterior (A), negative = anterior-to-posterior (P)
|
|
79
|
+
* - z: positive = inferior-to-superior (S), negative = superior-to-inferior (I)
|
|
80
|
+
*
|
|
81
|
+
* Only the 6 standard L/R, A/P, I/S orientations are handled. Exotic
|
|
82
|
+
* orientations (dorsal/ventral, rostral/caudal, etc.) are treated as
|
|
83
|
+
* unknown and default to +1.
|
|
84
|
+
*
|
|
85
|
+
* **Note**: This function only returns sign information, not axis
|
|
86
|
+
* permutation. For full permutation support, use
|
|
87
|
+
* {@link getOrientationMapping} and {@link applyOrientationToAffine}.
|
|
88
|
+
*
|
|
89
|
+
* @param axesOrientations - Orientation metadata from `NgffImage.axesOrientations`,
|
|
90
|
+
* or `undefined` if no orientation metadata is present
|
|
91
|
+
* @returns Sign multipliers for x, y, and z axes
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* import { LPS, RAS } from "@fideus-labs/ngff-zarr"
|
|
96
|
+
*
|
|
97
|
+
* // LPS data: x and y are anti-RAS+
|
|
98
|
+
* getOrientationSigns(LPS)
|
|
99
|
+
* // => { x: -1, y: -1, z: 1 }
|
|
100
|
+
*
|
|
101
|
+
* // RAS data: all axes are RAS+
|
|
102
|
+
* getOrientationSigns(RAS)
|
|
103
|
+
* // => { x: 1, y: 1, z: 1 }
|
|
104
|
+
*
|
|
105
|
+
* // No orientation: defaults to all positive
|
|
106
|
+
* getOrientationSigns(undefined)
|
|
107
|
+
* // => { x: 1, y: 1, z: 1 }
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export declare function getOrientationSigns(axesOrientations: Record<string, AnatomicalOrientation> | undefined): OrientationSigns;
|
|
111
|
+
/**
|
|
112
|
+
* Apply anatomical orientation to an affine matrix in place.
|
|
113
|
+
*
|
|
114
|
+
* Builds a rotation/permutation matrix from the orientation metadata
|
|
115
|
+
* and applies it to the affine's 3x3 rotation/scale submatrix. This
|
|
116
|
+
* supports both simple sign flips (e.g. LPS where axes align with
|
|
117
|
+
* physical axes but directions differ) and full axis permutations
|
|
118
|
+
* (e.g. when OME-Zarr y axis encodes S/I instead of A/P).
|
|
119
|
+
*
|
|
120
|
+
* The input affine is expected to be a diagonal scale+translation
|
|
121
|
+
* matrix in gl-matrix column-major format, as produced by
|
|
122
|
+
* `createAffineFromOMEZarr()`:
|
|
123
|
+
*
|
|
124
|
+
* ```
|
|
125
|
+
* | sx 0 0 tx |
|
|
126
|
+
* | 0 sy 0 ty |
|
|
127
|
+
* | 0 0 sz tz |
|
|
128
|
+
* | 0 0 0 1 |
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* **3x3 submatrix**: Each column's scale is placed in the row
|
|
132
|
+
* corresponding to the physical RAS axis the array axis maps to,
|
|
133
|
+
* with the appropriate sign:
|
|
134
|
+
*
|
|
135
|
+
* ```
|
|
136
|
+
* Column j (array axis j):
|
|
137
|
+
* row = physicalRow for axis j
|
|
138
|
+
* affine[j*4 + row] = sign * scale_j
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* **Translation column**: Sign-flipped for LPS→RAS conversion but
|
|
142
|
+
* NOT row-permuted. This is because `itkImageToNgffImage` stores
|
|
143
|
+
* the ITK LPS origin values in array-axis-label order without
|
|
144
|
+
* transforming them through the direction matrix. The label
|
|
145
|
+
* assignment (x/y/z) follows the reversed ITK axis indices, so the
|
|
146
|
+
* physical meaning of each translation value matches its original
|
|
147
|
+
* LPS axis, regardless of axis permutation.
|
|
148
|
+
*
|
|
149
|
+
* When `axesOrientations` is `undefined`, the affine is left
|
|
150
|
+
* unchanged (backward-compatible identity mapping).
|
|
151
|
+
*
|
|
152
|
+
* @param affine - 4x4 affine matrix (column-major, modified in place)
|
|
153
|
+
* @param axesOrientations - Orientation metadata from `NgffImage.axesOrientations`
|
|
154
|
+
* @returns The same affine matrix (for chaining)
|
|
155
|
+
*/
|
|
156
|
+
export declare function applyOrientationToAffine(affine: mat4, axesOrientations: Record<string, AnatomicalOrientation> | undefined): mat4;
|
|
157
|
+
//# sourceMappingURL=orientation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orientation.d.ts","sourceRoot":"","sources":["../../src/utils/orientation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAErC;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;CACtB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;CACnB;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,qBAAqB,GACjC,kBAAkB,GAAG,SAAS,CAEhC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,SAAS,GAClE;IAAE,CAAC,EAAE,kBAAkB,CAAC;IAAC,CAAC,EAAE,kBAAkB,CAAC;IAAC,CAAC,EAAE,kBAAkB,CAAA;CAAE,CA2CzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,SAAS,GAClE,gBAAgB,CAOlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,EACZ,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,SAAS,GAClE,IAAI,CAiDN"}
|