@vitessce/spatial-accelerated 3.8.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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.js +52925 -0
  3. package/dist-tsc/SpatialWrapper.d.ts +2 -0
  4. package/dist-tsc/SpatialWrapper.d.ts.map +1 -0
  5. package/dist-tsc/SpatialWrapper.js +45 -0
  6. package/dist-tsc/VolumeDataManager.d.ts +170 -0
  7. package/dist-tsc/VolumeDataManager.d.ts.map +1 -0
  8. package/dist-tsc/VolumeDataManager.js +1273 -0
  9. package/dist-tsc/VolumeDataManager.test.d.ts +2 -0
  10. package/dist-tsc/VolumeDataManager.test.d.ts.map +1 -0
  11. package/dist-tsc/VolumeDataManager.test.js +164 -0
  12. package/dist-tsc/VolumeRenderManager.d.ts +265 -0
  13. package/dist-tsc/VolumeRenderManager.d.ts.map +1 -0
  14. package/dist-tsc/VolumeRenderManager.js +396 -0
  15. package/dist-tsc/VolumeShader.d.ts +262 -0
  16. package/dist-tsc/VolumeShader.d.ts.map +1 -0
  17. package/dist-tsc/VolumeShader.js +73 -0
  18. package/dist-tsc/VolumeView.d.ts +2 -0
  19. package/dist-tsc/VolumeView.d.ts.map +1 -0
  20. package/dist-tsc/VolumeView.js +521 -0
  21. package/dist-tsc/index.d.ts +2 -0
  22. package/dist-tsc/index.d.ts.map +1 -0
  23. package/dist-tsc/index.js +1 -0
  24. package/dist-tsc/shaders/GaussianFragmentShader.d.ts +2 -0
  25. package/dist-tsc/shaders/GaussianFragmentShader.d.ts.map +1 -0
  26. package/dist-tsc/shaders/GaussianFragmentShader.js +242 -0
  27. package/dist-tsc/shaders/GaussianVertexShader.d.ts +2 -0
  28. package/dist-tsc/shaders/GaussianVertexShader.d.ts.map +1 -0
  29. package/dist-tsc/shaders/GaussianVertexShader.js +51 -0
  30. package/dist-tsc/shaders/VolumeFragmentShader.d.ts +2 -0
  31. package/dist-tsc/shaders/VolumeFragmentShader.d.ts.map +1 -0
  32. package/dist-tsc/shaders/VolumeFragmentShader.js +1817 -0
  33. package/dist-tsc/shaders/VolumeVertexShader.d.ts +2 -0
  34. package/dist-tsc/shaders/VolumeVertexShader.d.ts.map +1 -0
  35. package/dist-tsc/shaders/VolumeVertexShader.js +110 -0
  36. package/package.json +63 -0
  37. package/src/SpatialWrapper.js +60 -0
  38. package/src/VolumeDataManager.js +1515 -0
  39. package/src/VolumeDataManager.test.js +180 -0
  40. package/src/VolumeRenderManager.js +589 -0
  41. package/src/VolumeShader.js +74 -0
  42. package/src/VolumeView.js +651 -0
  43. package/src/index.js +1 -0
  44. package/src/shaders/GaussianFragmentShader.js +243 -0
  45. package/src/shaders/GaussianVertexShader.js +52 -0
  46. package/src/shaders/VolumeFragmentShader.js +1818 -0
  47. package/src/shaders/VolumeVertexShader.js +111 -0
@@ -0,0 +1,2 @@
1
+ export function SpatialWrapper(props: any): JSX.Element;
2
+ //# sourceMappingURL=SpatialWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpatialWrapper.d.ts","sourceRoot":"","sources":["../src/SpatialWrapper.js"],"names":[],"mappings":"AAOA,wDAoDC"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ // Note: need to be careful about versions of RTF, Three, React, and React DOM in package.json
4
+ // to avoid multiple copies of RTF, since the Canvas depends on a React Context.
5
+ // Otherwise you may see errors such as "useThree can only be used inside the Canvas component!".
6
+ import { Canvas } from '@react-three/fiber';
7
+ import { VolumeView } from './VolumeView.js';
8
+ export function SpatialWrapper(props) {
9
+ // const [renderingStats, setRenderingStats] = useState({ fps: 0 });
10
+ // const [zarrStoreInfo, setZarrStoreInfo] = useState(null);
11
+ // const [deviceLimits, setDeviceLimits] = useState(null);
12
+ // const volumeViewRef = useRef(null);
13
+ // Handle initialization completion from VolumeView
14
+ /*
15
+ const handleInitComplete = (initData) => {
16
+ if (initData.zarrStoreInfo) {
17
+ setZarrStoreInfo(initData.zarrStoreInfo);
18
+ }
19
+ if (initData.deviceLimits) {
20
+ setDeviceLimits(initData.deviceLimits);
21
+ }
22
+ };
23
+ */
24
+ return (_jsx(Canvas, { frameloop: "always", style: {
25
+ position: 'absolute',
26
+ top: 0,
27
+ left: 0,
28
+ width: '100%',
29
+ height: '100%',
30
+ padding: 0,
31
+ margin: 0,
32
+ // backgroundColor: 'white',
33
+ }, camera: {
34
+ fov: 50,
35
+ up: [0, 1, 0],
36
+ position: [0, 0, 4],
37
+ near: 0.01,
38
+ far: 15,
39
+ }, gl: {
40
+ antialias: true,
41
+ logarithmicDepthBuffer: false,
42
+ preserveDrawingBuffer: false,
43
+ autoClear: false,
44
+ }, children: _jsx(VolumeView, { ...props }) }));
45
+ }
@@ -0,0 +1,170 @@
1
+ export function _resolutionStatsToShapes(multiResolutionStats: any): any;
2
+ export function _resolutionStatsToBrickLayout(multiResolutionStats: any): any;
3
+ /**
4
+ *
5
+ * @param {[number, number, number][]} zarrStoreBrickLayout
6
+ * @param {number} channelsZarrMappingsLength
7
+ */
8
+ export function _initMRMCPT(zarrStoreBrickLayout: [number, number, number][], channelsZarrMappingsLength: number): {
9
+ PT: {
10
+ channelOffsets: number[][];
11
+ anchors: never[];
12
+ offsets: never[];
13
+ xExtent: number;
14
+ yExtent: number;
15
+ zExtent: number;
16
+ z0Extent: number;
17
+ zTotal: number;
18
+ };
19
+ ptTHREE: Data3DTexture;
20
+ bcTHREE: Data3DTexture;
21
+ };
22
+ export function _packPT(min: any, max: any, bcX: any, bcY: any, bcZ: any): number;
23
+ export function _ptToZarr(ptx: any, pty: any, ptz: any, ptInfo: any): {
24
+ channel: number;
25
+ resolution: number;
26
+ x: number;
27
+ y: number;
28
+ z: number;
29
+ };
30
+ export function _requestBufferToRequestObjects(buffer: any, k: any): {
31
+ requests: {
32
+ x: number;
33
+ y: number;
34
+ z: number;
35
+ }[];
36
+ origRequestCount: number;
37
+ };
38
+ export class VolumeDataManager {
39
+ constructor(glParam: any);
40
+ gl: any;
41
+ renderer: any;
42
+ deviceLimits: {
43
+ maxTextureSize: any;
44
+ max3DTextureSize: any;
45
+ maxRenderbufferSize: any;
46
+ maxUniformBufferBindings: any;
47
+ };
48
+ zarrStore: {
49
+ resolutions: null;
50
+ chunkSize: never[];
51
+ shapes: never[];
52
+ arrays: never[];
53
+ dtype: string;
54
+ physicalSizeTotal: never[];
55
+ physicalSizeVoxel: never[];
56
+ brickLayout: never[];
57
+ channelCount: number;
58
+ scales: never[];
59
+ lowestDataRes: number;
60
+ };
61
+ ptTHREE: Data3DTexture | null;
62
+ bcTHREE: Data3DTexture | null;
63
+ channels: {
64
+ maxChannels: number;
65
+ zarrMappings: never[];
66
+ colorMappings: never[];
67
+ downsampleMin: never[];
68
+ downsampleMax: never[];
69
+ };
70
+ PT: {
71
+ channelOffsets: number[][];
72
+ anchors: never[];
73
+ offsets: never[];
74
+ xExtent: number;
75
+ yExtent: number;
76
+ zExtent: number;
77
+ z0Extent: number;
78
+ zTotal: number;
79
+ };
80
+ bricksEverLoaded: Set<any>;
81
+ isBusy: boolean;
82
+ BCTimeStamps: any[];
83
+ BCMinMax: any[];
84
+ BCFull: boolean;
85
+ BCUnusedIndex: number;
86
+ bc2pt: any[];
87
+ LRUStack: any[];
88
+ triggerUsage: boolean;
89
+ triggerRequest: boolean;
90
+ timeStamp: number;
91
+ k: number;
92
+ noNewRequests: boolean;
93
+ needsBailout: boolean;
94
+ initStatus: string;
95
+ initError: any;
96
+ initImages(images: any, imageLayerScopes: any): void;
97
+ images: any;
98
+ imageLayerScopes: any;
99
+ /**
100
+ * Initialize the VolumeDataManager with Zarr store details and device limits
101
+ * This should be called ONCE at website initialization
102
+ * TODO(mark): merge this with the constructor?
103
+ * @returns {Promise<Object>} Object with Zarr store details and device limits
104
+ */
105
+ init(config: any): Promise<Object>;
106
+ ngffMetadata: any;
107
+ /**
108
+ * Initialize the BrickCache and PageTable
109
+ * MRMCPT: multi-resolution multi-channel page table
110
+ *
111
+ * Depends on:
112
+ * - zarrStore.brickLayout
113
+ * - zarrMappings.length (zarrMappings: the zarr channel index for every one of the up to 7 channels)
114
+ * -
115
+ */
116
+ initMRMCPT(): void;
117
+ initTexture(): Promise<void>;
118
+ updateChannels(channelProps: any): void;
119
+ /**
120
+ * Try to load a resolution level
121
+ * @param {number} resolutionIndex - The resolution level to load
122
+ * @param {Array} arrays - Array to store the loaded arrays
123
+ * @returns {Promise} Promise resolving when the resolution is loaded or rejected
124
+ */
125
+ /**
126
+ * Get physical dimensions
127
+ * @returns {Array} Physical dimensions [X, Y, Z]
128
+ */
129
+ getPhysicalDimensionsXYZ(): any[];
130
+ /**
131
+ * Get the maximum resolution
132
+ * @returns {number} Maximum resolution
133
+ */
134
+ getMaxResolutionXYZ(): number;
135
+ getOriginalScaleXYZ(): never[];
136
+ getNormalizedScaleXYZ(): number[];
137
+ getBoxDimensionsXYZ(): number[];
138
+ /**
139
+ * Load a specific Zarr chunk based on [t,c,z,y,x] coordinates
140
+ * @param {number} t - Time point (default 0)
141
+ * @param {number} c - Channel (default 0)
142
+ * @param {number} z - Z coordinate
143
+ * @param {number} y - Y coordinate
144
+ * @param {number} x - X coordinate
145
+ * @param {number} resolution - Resolution level
146
+ * @returns {Promise<Uint8Array>} 32x32x32 chunk data
147
+ */
148
+ loadZarrChunk(t: number | undefined, c: number | undefined, z: number, y: number, x: number, resolution: number): Promise<Uint8Array>;
149
+ processRequestData(buffer: any): Promise<void>;
150
+ processUsageData(buffer: any): Promise<void>;
151
+ _evictBrick(bcIndex: any): void;
152
+ _purgeChannel(ptChannelIndex: any): void;
153
+ _updatePTEntry(ptX: any, ptY: any, ptZ: any, ptVal: any): void;
154
+ /**
155
+ *
156
+ * @param {number} n The number of slots to allocate
157
+ * @returns {{ bcIndex, x, y, z }[]} Array of brick cache coordinates for the allocated slots.
158
+ */
159
+ _allocateBCSlots(n: number): {
160
+ bcIndex: any;
161
+ x: any;
162
+ y: any;
163
+ z: any;
164
+ }[];
165
+ _uploadBrick(ptCoord: any, bcSlot: any): Promise<void>;
166
+ handleBrickRequests(ptRequests: any): Promise<void>;
167
+ _buildLRU(): void;
168
+ }
169
+ import { Data3DTexture } from 'three';
170
+ //# sourceMappingURL=VolumeDataManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VolumeDataManager.d.ts","sourceRoot":"","sources":["../src/VolumeDataManager.js"],"names":[],"mappings":"AA8DA,yEAaC;AACD,8EAeC;AAED;;;;GAIG;AACH,kDAHW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,8BAC1B,MAAM;;;;;;;;;;;;;EAyHhB;AAMD,kFAaC;AAqBD;;;;;;EA2DC;AAED;;;;;;;EA0BC;AAID;IACE,0BAyJC;IA5IG,QAAyB;IAa3B,cAAwB;IA8BxB;;;;;MAKC;IAED;;;;;;;;;;;;MAcC;IAED,8BAAmB;IACnB,8BAAmB;IAEnB;;;;;;MAMC;IAED;;;;;;;;;MAiBC;IAQD,2BAAiC;IAYjC,gBAAmB;IAGnB,oBAAuD;IACvD,gBAAwD;IACxD,gBAAmB;IACnB,sBAAsB;IAGtB,aAAmD;IAGnD,gBAAkB;IAElB,sBAAwB;IACxB,wBAA2B;IAC3B,kBAAkB;IAClB,UAAW;IACX,uBAA0B;IAE1B,sBAAyB;IAGzB,mBAAyC;IACzC,eAAqB;IAIvB,qDAIC;IAFC,YAAoB;IACpB,sBAAwC;IAG1C;;;;;OAKG;IACH,mBAFa,OAAO,CAAC,MAAM,CAAC,CA8S3B;IAjQG,kBAAmD;IAmQvD;;;;;;;;OAQG;IACH,mBAqBC;IASD,6BAKC;IAED,wCA6GC;IAED;;;;;OAKG;IAqBH;;;OAGG;IACH,kCAQC;IAED;;;OAGG;IACH,uBAFa,MAAM,CAUlB;IAED,+BAQC;IAED,kCASC;IAED,gCASC;IAED;;;;;;;;;OASG;IACH,iBARW,MAAM,iBACN,MAAM,iBACN,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,OAAO,CAAC,UAAU,CAAC,CAiC/B;IAED,+CAmBC;IAGD,6CAmDC;IAGD,gCAcC;IAED,yCA6CC;IAGD,+DAeC;IAKD;;;;OAIG;IACH,oBAHW,MAAM,GACJ;QAAE,OAAO,MAAC;QAAC,CAAC,MAAC;QAAC,CAAC,MAAC;QAAC,CAAC,MAAA;KAAE,EAAE,CAyClC;IAKD,uDA0IC;IAKD,oDAyCC;IAKD,kBAWC;CACF;8BA79CM,OAAO"}