@elarsaks/umap-wasm 0.9.0 → 0.9.1
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/README.md +16 -0
- package/package.json +2 -2
- package/wasm/pkg/node/umap_wasm_core.d.ts +46 -46
- package/wasm/pkg/node/umap_wasm_core.js +134 -134
- package/wasm/pkg/node/umap_wasm_core_bg.wasm +0 -0
- package/wasm/pkg/node/umap_wasm_core_bg.wasm.d.ts +45 -45
- package/wasm/pkg/web/umap_wasm_core.d.ts +91 -91
- package/wasm/pkg/web/umap_wasm_core.js +134 -134
- package/wasm/pkg/web/umap_wasm_core_bg.wasm +0 -0
- package/wasm/pkg/web/umap_wasm_core_bg.wasm.d.ts +45 -45
package/README.md
CHANGED
|
@@ -39,6 +39,22 @@ The WASM loader will look for files at `/wasm/web/umap_wasm_core.js` and `/wasm/
|
|
|
39
39
|
|
|
40
40
|
Node.js environments don't require this step.
|
|
41
41
|
|
|
42
|
+
## Reproducible WASM build (short note)
|
|
43
|
+
|
|
44
|
+
If you need to rebuild the WASM artifacts locally, use the locked toolchain and skip post-build optimization to avoid runtime issues with externref tables. Recommended minimal steps:
|
|
45
|
+
|
|
46
|
+
- Ensure the repository `rust-toolchain.toml` is respected (Rust 1.83.0).
|
|
47
|
+
- Use `wasm-pack 0.13.1` and Node.js `22.22.0`.
|
|
48
|
+
- Build with `--no-opt` to skip `wasm-opt` (example):
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
cd wasm
|
|
52
|
+
RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target web --out-dir pkg/web --release
|
|
53
|
+
RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target nodejs --out-dir pkg/node --release
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Skipping `wasm-opt` avoids a post-processing pass that may break WebAssembly externref table handling; it yields larger but correct binaries. Only publish optimized binaries after ensuring they pass the full test-suite.
|
|
57
|
+
|
|
42
58
|
## 🚀 Usage
|
|
43
59
|
|
|
44
60
|
### Basic Usage (Synchronous)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elarsaks/umap-wasm",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "WebAssembly-Accelerated UMAP for JavaScript - High-performance dimension reduction for browser and Node.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"umap",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"preview": "npx serve . -p 4173",
|
|
52
52
|
"bundle": "rm -rf lib && webpack --config ./webpack/lib.config.mjs && webpack --config ./webpack/lib.min.config.mjs",
|
|
53
53
|
"build": "rm -rf dist && tsc && yarn bundle",
|
|
54
|
-
"build:wasm": "cd wasm && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --target web --out-dir pkg/web --release && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --target nodejs --out-dir pkg/node --release && rm -f pkg/web/.gitignore pkg/node/.gitignore"
|
|
54
|
+
"build:wasm": "cd wasm && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target web --out-dir pkg/web --release && RUSTFLAGS='-C target-feature=+simd128' wasm-pack build --no-opt --target nodejs --out-dir pkg/node --release && rm -f pkg/web/.gitignore pkg/node/.gitignore"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@playwright/test": "^1.57.0",
|
|
@@ -10,58 +10,58 @@ export class FlatTree {
|
|
|
10
10
|
*/
|
|
11
11
|
hyperplanes(): Float64Array;
|
|
12
12
|
/**
|
|
13
|
-
* Get the
|
|
13
|
+
* Get the offsets as a Float64Array
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
offsets(): Float64Array;
|
|
16
16
|
/**
|
|
17
|
-
* Get the
|
|
17
|
+
* Get the children array (pairs of child indices)
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
children(): Int32Array;
|
|
20
20
|
/**
|
|
21
|
-
* Get
|
|
21
|
+
* Get the leaf indices array
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
indices(): Int32Array;
|
|
24
24
|
/**
|
|
25
|
-
* Get the
|
|
25
|
+
* Get the dimensionality
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
dim(): number;
|
|
28
28
|
/**
|
|
29
|
-
* Get
|
|
29
|
+
* Get number of nodes
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
n_nodes(): number;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export class OptimizerState {
|
|
35
35
|
free(): void;
|
|
36
36
|
[Symbol.dispose](): void;
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
*/
|
|
40
|
-
set_rng_seed(seed: bigint): void;
|
|
41
|
-
/**
|
|
42
|
-
* Get the length of the embedding buffer.
|
|
38
|
+
* Create a new optimizer state with the given parameters.
|
|
43
39
|
*/
|
|
44
|
-
|
|
40
|
+
constructor(head: Uint32Array, tail: Uint32Array, head_embedding: Float64Array, tail_embedding: Float64Array, epochs_per_sample: Float64Array, epochs_per_negative_sample: Float64Array, move_other: boolean, initial_alpha: number, gamma: number, a: number, b: number, dim: number, n_epochs: number, n_vertices: number);
|
|
45
41
|
/**
|
|
46
42
|
* Get a pointer to the embedding buffer (for zero-copy views).
|
|
47
43
|
*/
|
|
48
44
|
head_embedding_ptr(): number;
|
|
49
45
|
/**
|
|
50
|
-
*
|
|
46
|
+
* Get the length of the embedding buffer.
|
|
51
47
|
*/
|
|
52
|
-
|
|
48
|
+
head_embedding_len(): number;
|
|
53
49
|
/**
|
|
54
|
-
*
|
|
50
|
+
* Seed the internal RNG used by the optimizer.
|
|
55
51
|
*/
|
|
56
|
-
|
|
52
|
+
set_rng_seed(seed: bigint): void;
|
|
57
53
|
/**
|
|
58
|
-
* Get the current
|
|
54
|
+
* Get the current RNG seed/state.
|
|
59
55
|
*/
|
|
60
|
-
|
|
56
|
+
rng_seed(): bigint;
|
|
61
57
|
/**
|
|
62
58
|
* Get the current embedding as a flat array.
|
|
63
59
|
*/
|
|
64
60
|
readonly head_embedding: Float64Array;
|
|
61
|
+
/**
|
|
62
|
+
* Get the current epoch number.
|
|
63
|
+
*/
|
|
64
|
+
readonly current_epoch: number;
|
|
65
65
|
/**
|
|
66
66
|
* Get the total number of epochs.
|
|
67
67
|
*/
|
|
@@ -71,22 +71,6 @@ export class OptimizerState {
|
|
|
71
71
|
export class WasmSparseMatrix {
|
|
72
72
|
free(): void;
|
|
73
73
|
[Symbol.dispose](): void;
|
|
74
|
-
/**
|
|
75
|
-
* Get all values
|
|
76
|
-
*/
|
|
77
|
-
get_values(): Float64Array;
|
|
78
|
-
/**
|
|
79
|
-
* Apply a scalar operation to all values (map with scalar)
|
|
80
|
-
*/
|
|
81
|
-
map_scalar(operation: string, scalar: number): WasmSparseMatrix;
|
|
82
|
-
/**
|
|
83
|
-
* Get all entries as flat arrays [rows, cols, values] - ordered by row then col
|
|
84
|
-
*/
|
|
85
|
-
get_all_ordered(): Float64Array;
|
|
86
|
-
/**
|
|
87
|
-
* Get a value at the given row and column, with a default value if not present
|
|
88
|
-
*/
|
|
89
|
-
get(row: number, col: number, default_value: number): number;
|
|
90
74
|
/**
|
|
91
75
|
* Create a new sparse matrix from rows, cols, values, and dimensions.
|
|
92
76
|
*
|
|
@@ -98,18 +82,14 @@ export class WasmSparseMatrix {
|
|
|
98
82
|
* * `n_cols` - Number of columns in the matrix
|
|
99
83
|
*/
|
|
100
84
|
constructor(rows: Int32Array, cols: Int32Array, values: Float64Array, n_rows: number, n_cols: number);
|
|
101
|
-
/**
|
|
102
|
-
* Get number of non-zero entries
|
|
103
|
-
*/
|
|
104
|
-
nnz(): number;
|
|
105
85
|
/**
|
|
106
86
|
* Set a value at the given row and column
|
|
107
87
|
*/
|
|
108
88
|
set(row: number, col: number, value: number): void;
|
|
109
89
|
/**
|
|
110
|
-
* Get
|
|
90
|
+
* Get a value at the given row and column, with a default value if not present
|
|
111
91
|
*/
|
|
112
|
-
|
|
92
|
+
get(row: number, col: number, default_value: number): number;
|
|
113
93
|
/**
|
|
114
94
|
* Get the dimensions as [nRows, nCols]
|
|
115
95
|
*/
|
|
@@ -118,18 +98,38 @@ export class WasmSparseMatrix {
|
|
|
118
98
|
* Get all row indices
|
|
119
99
|
*/
|
|
120
100
|
get_rows(): Int32Array;
|
|
101
|
+
/**
|
|
102
|
+
* Get all column indices
|
|
103
|
+
*/
|
|
104
|
+
get_cols(): Int32Array;
|
|
105
|
+
/**
|
|
106
|
+
* Get all values
|
|
107
|
+
*/
|
|
108
|
+
get_values(): Float64Array;
|
|
109
|
+
/**
|
|
110
|
+
* Get all entries as flat arrays [rows, cols, values] - ordered by row then col
|
|
111
|
+
*/
|
|
112
|
+
get_all_ordered(): Float64Array;
|
|
113
|
+
/**
|
|
114
|
+
* Get number of non-zero entries
|
|
115
|
+
*/
|
|
116
|
+
nnz(): number;
|
|
121
117
|
/**
|
|
122
118
|
* Convert to dense 2D array (row-major, flattened)
|
|
123
119
|
*/
|
|
124
120
|
to_array(): Float64Array;
|
|
125
121
|
/**
|
|
126
|
-
*
|
|
122
|
+
* Apply a scalar operation to all values (map with scalar)
|
|
127
123
|
*/
|
|
128
|
-
|
|
124
|
+
map_scalar(operation: string, scalar: number): WasmSparseMatrix;
|
|
129
125
|
/**
|
|
130
126
|
* Get the number of rows
|
|
131
127
|
*/
|
|
132
128
|
readonly n_rows: number;
|
|
129
|
+
/**
|
|
130
|
+
* Get the number of columns
|
|
131
|
+
*/
|
|
132
|
+
readonly n_cols: number;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
/**
|
|
@@ -181,12 +181,22 @@ class FlatTree {
|
|
|
181
181
|
return ret;
|
|
182
182
|
}
|
|
183
183
|
/**
|
|
184
|
-
* Get the
|
|
185
|
-
* @returns {
|
|
184
|
+
* Get the offsets as a Float64Array
|
|
185
|
+
* @returns {Float64Array}
|
|
186
186
|
*/
|
|
187
|
-
|
|
188
|
-
const ret = wasm.
|
|
189
|
-
return ret
|
|
187
|
+
offsets() {
|
|
188
|
+
const ret = wasm.flattree_offsets(this.__wbg_ptr);
|
|
189
|
+
return ret;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get the children array (pairs of child indices)
|
|
193
|
+
* @returns {Int32Array}
|
|
194
|
+
*/
|
|
195
|
+
children() {
|
|
196
|
+
const ret = wasm.flattree_children(this.__wbg_ptr);
|
|
197
|
+
var v1 = getArrayI32FromWasm0(ret[0], ret[1]).slice();
|
|
198
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
199
|
+
return v1;
|
|
190
200
|
}
|
|
191
201
|
/**
|
|
192
202
|
* Get the leaf indices array
|
|
@@ -199,30 +209,20 @@ class FlatTree {
|
|
|
199
209
|
return v1;
|
|
200
210
|
}
|
|
201
211
|
/**
|
|
202
|
-
* Get
|
|
212
|
+
* Get the dimensionality
|
|
203
213
|
* @returns {number}
|
|
204
214
|
*/
|
|
205
|
-
|
|
206
|
-
const ret = wasm.
|
|
215
|
+
dim() {
|
|
216
|
+
const ret = wasm.flattree_dim(this.__wbg_ptr);
|
|
207
217
|
return ret >>> 0;
|
|
208
218
|
}
|
|
209
219
|
/**
|
|
210
|
-
* Get
|
|
211
|
-
* @returns {
|
|
212
|
-
*/
|
|
213
|
-
offsets() {
|
|
214
|
-
const ret = wasm.flattree_offsets(this.__wbg_ptr);
|
|
215
|
-
return ret;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Get the children array (pairs of child indices)
|
|
219
|
-
* @returns {Int32Array}
|
|
220
|
+
* Get number of nodes
|
|
221
|
+
* @returns {number}
|
|
220
222
|
*/
|
|
221
|
-
|
|
222
|
-
const ret = wasm.
|
|
223
|
-
|
|
224
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
225
|
-
return v1;
|
|
223
|
+
n_nodes() {
|
|
224
|
+
const ret = wasm.flattree_n_nodes(this.__wbg_ptr);
|
|
225
|
+
return ret >>> 0;
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
if (Symbol.dispose) FlatTree.prototype[Symbol.dispose] = FlatTree.prototype.free;
|
|
@@ -243,47 +243,6 @@ class OptimizerState {
|
|
|
243
243
|
const ptr = this.__destroy_into_raw();
|
|
244
244
|
wasm.__wbg_optimizerstate_free(ptr, 0);
|
|
245
245
|
}
|
|
246
|
-
/**
|
|
247
|
-
* Seed the internal RNG used by the optimizer.
|
|
248
|
-
* @param {bigint} seed
|
|
249
|
-
*/
|
|
250
|
-
set_rng_seed(seed) {
|
|
251
|
-
wasm.optimizerstate_set_rng_seed(this.__wbg_ptr, seed);
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Get the current epoch number.
|
|
255
|
-
* @returns {number}
|
|
256
|
-
*/
|
|
257
|
-
get current_epoch() {
|
|
258
|
-
const ret = wasm.optimizerstate_current_epoch(this.__wbg_ptr);
|
|
259
|
-
return ret >>> 0;
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Get the current embedding as a flat array.
|
|
263
|
-
* @returns {Float64Array}
|
|
264
|
-
*/
|
|
265
|
-
get head_embedding() {
|
|
266
|
-
const ret = wasm.optimizerstate_head_embedding(this.__wbg_ptr);
|
|
267
|
-
var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
268
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
269
|
-
return v1;
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Get the length of the embedding buffer.
|
|
273
|
-
* @returns {number}
|
|
274
|
-
*/
|
|
275
|
-
head_embedding_len() {
|
|
276
|
-
const ret = wasm.optimizerstate_head_embedding_len(this.__wbg_ptr);
|
|
277
|
-
return ret >>> 0;
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Get a pointer to the embedding buffer (for zero-copy views).
|
|
281
|
-
* @returns {number}
|
|
282
|
-
*/
|
|
283
|
-
head_embedding_ptr() {
|
|
284
|
-
const ret = wasm.optimizerstate_head_embedding_ptr(this.__wbg_ptr);
|
|
285
|
-
return ret >>> 0;
|
|
286
|
-
}
|
|
287
246
|
/**
|
|
288
247
|
* Create a new optimizer state with the given parameters.
|
|
289
248
|
* @param {Uint32Array} head
|
|
@@ -319,6 +278,40 @@ class OptimizerState {
|
|
|
319
278
|
OptimizerStateFinalization.register(this, this.__wbg_ptr, this);
|
|
320
279
|
return this;
|
|
321
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Get the current embedding as a flat array.
|
|
283
|
+
* @returns {Float64Array}
|
|
284
|
+
*/
|
|
285
|
+
get head_embedding() {
|
|
286
|
+
const ret = wasm.optimizerstate_head_embedding(this.__wbg_ptr);
|
|
287
|
+
var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
288
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
289
|
+
return v1;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get a pointer to the embedding buffer (for zero-copy views).
|
|
293
|
+
* @returns {number}
|
|
294
|
+
*/
|
|
295
|
+
head_embedding_ptr() {
|
|
296
|
+
const ret = wasm.optimizerstate_head_embedding_ptr(this.__wbg_ptr);
|
|
297
|
+
return ret >>> 0;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get the length of the embedding buffer.
|
|
301
|
+
* @returns {number}
|
|
302
|
+
*/
|
|
303
|
+
head_embedding_len() {
|
|
304
|
+
const ret = wasm.optimizerstate_head_embedding_len(this.__wbg_ptr);
|
|
305
|
+
return ret >>> 0;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Get the current epoch number.
|
|
309
|
+
* @returns {number}
|
|
310
|
+
*/
|
|
311
|
+
get current_epoch() {
|
|
312
|
+
const ret = wasm.optimizerstate_current_epoch(this.__wbg_ptr);
|
|
313
|
+
return ret >>> 0;
|
|
314
|
+
}
|
|
322
315
|
/**
|
|
323
316
|
* Get the total number of epochs.
|
|
324
317
|
* @returns {number}
|
|
@@ -327,6 +320,13 @@ class OptimizerState {
|
|
|
327
320
|
const ret = wasm.optimizerstate_n_epochs(this.__wbg_ptr);
|
|
328
321
|
return ret >>> 0;
|
|
329
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Seed the internal RNG used by the optimizer.
|
|
325
|
+
* @param {bigint} seed
|
|
326
|
+
*/
|
|
327
|
+
set_rng_seed(seed) {
|
|
328
|
+
wasm.optimizerstate_set_rng_seed(this.__wbg_ptr, seed);
|
|
329
|
+
}
|
|
330
330
|
/**
|
|
331
331
|
* Get the current RNG seed/state.
|
|
332
332
|
* @returns {bigint}
|
|
@@ -363,53 +363,6 @@ class WasmSparseMatrix {
|
|
|
363
363
|
const ptr = this.__destroy_into_raw();
|
|
364
364
|
wasm.__wbg_wasmsparsematrix_free(ptr, 0);
|
|
365
365
|
}
|
|
366
|
-
/**
|
|
367
|
-
* Get all values
|
|
368
|
-
* @returns {Float64Array}
|
|
369
|
-
*/
|
|
370
|
-
get_values() {
|
|
371
|
-
const ret = wasm.wasmsparsematrix_get_values(this.__wbg_ptr);
|
|
372
|
-
return ret;
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Apply a scalar operation to all values (map with scalar)
|
|
376
|
-
* @param {string} operation
|
|
377
|
-
* @param {number} scalar
|
|
378
|
-
* @returns {WasmSparseMatrix}
|
|
379
|
-
*/
|
|
380
|
-
map_scalar(operation, scalar) {
|
|
381
|
-
const ptr0 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
382
|
-
const len0 = WASM_VECTOR_LEN;
|
|
383
|
-
const ret = wasm.wasmsparsematrix_map_scalar(this.__wbg_ptr, ptr0, len0, scalar);
|
|
384
|
-
if (ret[2]) {
|
|
385
|
-
throw takeFromExternrefTable0(ret[1]);
|
|
386
|
-
}
|
|
387
|
-
return WasmSparseMatrix.__wrap(ret[0]);
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Get all entries as flat arrays [rows, cols, values] - ordered by row then col
|
|
391
|
-
* @returns {Float64Array}
|
|
392
|
-
*/
|
|
393
|
-
get_all_ordered() {
|
|
394
|
-
const ret = wasm.wasmsparsematrix_get_all_ordered(this.__wbg_ptr);
|
|
395
|
-
var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
396
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
397
|
-
return v1;
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Get a value at the given row and column, with a default value if not present
|
|
401
|
-
* @param {number} row
|
|
402
|
-
* @param {number} col
|
|
403
|
-
* @param {number} default_value
|
|
404
|
-
* @returns {number}
|
|
405
|
-
*/
|
|
406
|
-
get(row, col, default_value) {
|
|
407
|
-
const ret = wasm.wasmsparsematrix_get(this.__wbg_ptr, row, col, default_value);
|
|
408
|
-
if (ret[2]) {
|
|
409
|
-
throw takeFromExternrefTable0(ret[1]);
|
|
410
|
-
}
|
|
411
|
-
return ret[0];
|
|
412
|
-
}
|
|
413
366
|
/**
|
|
414
367
|
* Create a new sparse matrix from rows, cols, values, and dimensions.
|
|
415
368
|
*
|
|
@@ -441,11 +394,19 @@ class WasmSparseMatrix {
|
|
|
441
394
|
return this;
|
|
442
395
|
}
|
|
443
396
|
/**
|
|
444
|
-
* Get number of
|
|
397
|
+
* Get the number of rows
|
|
445
398
|
* @returns {number}
|
|
446
399
|
*/
|
|
447
|
-
|
|
448
|
-
const ret = wasm.
|
|
400
|
+
get n_rows() {
|
|
401
|
+
const ret = wasm.wasmsparsematrix_n_rows(this.__wbg_ptr);
|
|
402
|
+
return ret >>> 0;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Get the number of columns
|
|
406
|
+
* @returns {number}
|
|
407
|
+
*/
|
|
408
|
+
get n_cols() {
|
|
409
|
+
const ret = wasm.wasmsparsematrix_n_cols(this.__wbg_ptr);
|
|
449
410
|
return ret >>> 0;
|
|
450
411
|
}
|
|
451
412
|
/**
|
|
@@ -461,28 +422,18 @@ class WasmSparseMatrix {
|
|
|
461
422
|
}
|
|
462
423
|
}
|
|
463
424
|
/**
|
|
464
|
-
* Get the
|
|
465
|
-
* @
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
const ret = wasm.wasmsparsematrix_n_cols(this.__wbg_ptr);
|
|
469
|
-
return ret >>> 0;
|
|
470
|
-
}
|
|
471
|
-
/**
|
|
472
|
-
* Get the number of rows
|
|
425
|
+
* Get a value at the given row and column, with a default value if not present
|
|
426
|
+
* @param {number} row
|
|
427
|
+
* @param {number} col
|
|
428
|
+
* @param {number} default_value
|
|
473
429
|
* @returns {number}
|
|
474
430
|
*/
|
|
475
|
-
get
|
|
476
|
-
const ret = wasm.
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
* @returns {Int32Array}
|
|
482
|
-
*/
|
|
483
|
-
get_cols() {
|
|
484
|
-
const ret = wasm.wasmsparsematrix_get_cols(this.__wbg_ptr);
|
|
485
|
-
return ret;
|
|
431
|
+
get(row, col, default_value) {
|
|
432
|
+
const ret = wasm.wasmsparsematrix_get(this.__wbg_ptr, row, col, default_value);
|
|
433
|
+
if (ret[2]) {
|
|
434
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
435
|
+
}
|
|
436
|
+
return ret[0];
|
|
486
437
|
}
|
|
487
438
|
/**
|
|
488
439
|
* Get the dimensions as [nRows, nCols]
|
|
@@ -502,6 +453,40 @@ class WasmSparseMatrix {
|
|
|
502
453
|
const ret = wasm.wasmsparsematrix_get_rows(this.__wbg_ptr);
|
|
503
454
|
return ret;
|
|
504
455
|
}
|
|
456
|
+
/**
|
|
457
|
+
* Get all column indices
|
|
458
|
+
* @returns {Int32Array}
|
|
459
|
+
*/
|
|
460
|
+
get_cols() {
|
|
461
|
+
const ret = wasm.wasmsparsematrix_get_cols(this.__wbg_ptr);
|
|
462
|
+
return ret;
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Get all values
|
|
466
|
+
* @returns {Float64Array}
|
|
467
|
+
*/
|
|
468
|
+
get_values() {
|
|
469
|
+
const ret = wasm.wasmsparsematrix_get_values(this.__wbg_ptr);
|
|
470
|
+
return ret;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Get all entries as flat arrays [rows, cols, values] - ordered by row then col
|
|
474
|
+
* @returns {Float64Array}
|
|
475
|
+
*/
|
|
476
|
+
get_all_ordered() {
|
|
477
|
+
const ret = wasm.wasmsparsematrix_get_all_ordered(this.__wbg_ptr);
|
|
478
|
+
var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
479
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
480
|
+
return v1;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Get number of non-zero entries
|
|
484
|
+
* @returns {number}
|
|
485
|
+
*/
|
|
486
|
+
nnz() {
|
|
487
|
+
const ret = wasm.wasmsparsematrix_nnz(this.__wbg_ptr);
|
|
488
|
+
return ret >>> 0;
|
|
489
|
+
}
|
|
505
490
|
/**
|
|
506
491
|
* Convert to dense 2D array (row-major, flattened)
|
|
507
492
|
* @returns {Float64Array}
|
|
@@ -510,6 +495,21 @@ class WasmSparseMatrix {
|
|
|
510
495
|
const ret = wasm.wasmsparsematrix_to_array(this.__wbg_ptr);
|
|
511
496
|
return ret;
|
|
512
497
|
}
|
|
498
|
+
/**
|
|
499
|
+
* Apply a scalar operation to all values (map with scalar)
|
|
500
|
+
* @param {string} operation
|
|
501
|
+
* @param {number} scalar
|
|
502
|
+
* @returns {WasmSparseMatrix}
|
|
503
|
+
*/
|
|
504
|
+
map_scalar(operation, scalar) {
|
|
505
|
+
const ptr0 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
506
|
+
const len0 = WASM_VECTOR_LEN;
|
|
507
|
+
const ret = wasm.wasmsparsematrix_map_scalar(this.__wbg_ptr, ptr0, len0, scalar);
|
|
508
|
+
if (ret[2]) {
|
|
509
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
510
|
+
}
|
|
511
|
+
return WasmSparseMatrix.__wrap(ret[0]);
|
|
512
|
+
}
|
|
513
513
|
}
|
|
514
514
|
if (Symbol.dispose) WasmSparseMatrix.prototype[Symbol.dispose] = WasmSparseMatrix.prototype.free;
|
|
515
515
|
exports.WasmSparseMatrix = WasmSparseMatrix;
|
|
Binary file
|
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
/* tslint:disable */
|
|
2
2
|
/* eslint-disable */
|
|
3
3
|
export const memory: WebAssembly.Memory;
|
|
4
|
-
export const __wbg_flattree_free: (a: number, b: number) => void;
|
|
5
|
-
export const __wbg_optimizerstate_free: (a: number, b: number) => void;
|
|
6
|
-
export const __wbg_wasmsparsematrix_free: (a: number, b: number) => void;
|
|
7
|
-
export const build_rp_tree: (a: number, b: number, c: number, d: number, e: number, f: bigint) => number;
|
|
8
|
-
export const cosine: (a: number, b: number, c: number, d: number) => number;
|
|
9
|
-
export const euclidean: (a: number, b: number, c: number, d: number) => number;
|
|
10
|
-
export const flattree_children: (a: number) => [number, number];
|
|
11
|
-
export const flattree_dim: (a: number) => number;
|
|
12
|
-
export const flattree_hyperplanes: (a: number) => any;
|
|
13
|
-
export const flattree_indices: (a: number) => [number, number];
|
|
14
|
-
export const flattree_n_nodes: (a: number) => number;
|
|
15
|
-
export const flattree_offsets: (a: number) => any;
|
|
16
|
-
export const nn_descent: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: bigint) => [number, number, number, number];
|
|
17
|
-
export const optimize_layout_batch: (a: number, b: number) => [number, number];
|
|
18
|
-
export const optimize_layout_batch_in_place: (a: number, b: number) => void;
|
|
19
|
-
export const optimize_layout_step: (a: number) => [number, number];
|
|
20
|
-
export const optimize_layout_step_in_place: (a: number) => void;
|
|
21
|
-
export const optimizerstate_current_epoch: (a: number) => number;
|
|
22
|
-
export const optimizerstate_head_embedding: (a: number) => [number, number];
|
|
23
|
-
export const optimizerstate_head_embedding_len: (a: number) => number;
|
|
24
|
-
export const optimizerstate_head_embedding_ptr: (a: number) => number;
|
|
25
|
-
export const optimizerstate_n_epochs: (a: number) => number;
|
|
26
|
-
export const optimizerstate_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number) => number;
|
|
27
|
-
export const optimizerstate_rng_seed: (a: number) => bigint;
|
|
28
|
-
export const optimizerstate_set_rng_seed: (a: number, b: bigint) => void;
|
|
29
|
-
export const search_flat_tree: (a: number, b: number, c: number, d: bigint) => [number, number];
|
|
30
|
-
export const sparse_add: (a: number, b: number) => number;
|
|
31
|
-
export const sparse_eliminate_zeros: (a: number) => number;
|
|
32
|
-
export const sparse_get_csr: (a: number) => any;
|
|
33
|
-
export const sparse_identity: (a: number) => number;
|
|
34
|
-
export const sparse_maximum: (a: number, b: number) => number;
|
|
35
|
-
export const sparse_multiply_scalar: (a: number, b: number) => number;
|
|
36
|
-
export const sparse_normalize: (a: number, b: number, c: number) => number;
|
|
37
|
-
export const sparse_pairwise_multiply: (a: number, b: number) => number;
|
|
38
|
-
export const sparse_subtract: (a: number, b: number) => number;
|
|
39
|
-
export const sparse_transpose: (a: number) => number;
|
|
40
4
|
export const version: () => [number, number];
|
|
5
|
+
export const euclidean: (a: number, b: number, c: number, d: number) => number;
|
|
6
|
+
export const cosine: (a: number, b: number, c: number, d: number) => number;
|
|
7
|
+
export const __wbg_wasmsparsematrix_free: (a: number, b: number) => void;
|
|
8
|
+
export const wasmsparsematrix_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number];
|
|
9
|
+
export const wasmsparsematrix_n_rows: (a: number) => number;
|
|
10
|
+
export const wasmsparsematrix_n_cols: (a: number) => number;
|
|
11
|
+
export const wasmsparsematrix_set: (a: number, b: number, c: number, d: number) => [number, number];
|
|
41
12
|
export const wasmsparsematrix_get: (a: number, b: number, c: number, d: number) => [number, number, number];
|
|
42
|
-
export const wasmsparsematrix_get_all_ordered: (a: number) => [number, number];
|
|
43
|
-
export const wasmsparsematrix_get_cols: (a: number) => any;
|
|
44
13
|
export const wasmsparsematrix_get_dims: (a: number) => [number, number];
|
|
45
14
|
export const wasmsparsematrix_get_rows: (a: number) => any;
|
|
15
|
+
export const wasmsparsematrix_get_cols: (a: number) => any;
|
|
46
16
|
export const wasmsparsematrix_get_values: (a: number) => any;
|
|
47
|
-
export const
|
|
48
|
-
export const wasmsparsematrix_n_cols: (a: number) => number;
|
|
49
|
-
export const wasmsparsematrix_n_rows: (a: number) => number;
|
|
50
|
-
export const wasmsparsematrix_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number];
|
|
17
|
+
export const wasmsparsematrix_get_all_ordered: (a: number) => [number, number];
|
|
51
18
|
export const wasmsparsematrix_nnz: (a: number) => number;
|
|
52
|
-
export const wasmsparsematrix_set: (a: number, b: number, c: number, d: number) => [number, number];
|
|
53
19
|
export const wasmsparsematrix_to_array: (a: number) => any;
|
|
20
|
+
export const wasmsparsematrix_map_scalar: (a: number, b: number, c: number, d: number) => [number, number, number];
|
|
21
|
+
export const sparse_transpose: (a: number) => number;
|
|
22
|
+
export const sparse_identity: (a: number) => number;
|
|
23
|
+
export const sparse_add: (a: number, b: number) => number;
|
|
24
|
+
export const sparse_subtract: (a: number, b: number) => number;
|
|
25
|
+
export const sparse_pairwise_multiply: (a: number, b: number) => number;
|
|
26
|
+
export const sparse_maximum: (a: number, b: number) => number;
|
|
27
|
+
export const sparse_multiply_scalar: (a: number, b: number) => number;
|
|
28
|
+
export const sparse_eliminate_zeros: (a: number) => number;
|
|
29
|
+
export const sparse_normalize: (a: number, b: number, c: number) => number;
|
|
30
|
+
export const sparse_get_csr: (a: number) => any;
|
|
31
|
+
export const nn_descent: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: bigint) => [number, number, number, number];
|
|
32
|
+
export const __wbg_optimizerstate_free: (a: number, b: number) => void;
|
|
33
|
+
export const optimizerstate_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number) => number;
|
|
34
|
+
export const optimizerstate_head_embedding: (a: number) => [number, number];
|
|
35
|
+
export const optimizerstate_head_embedding_ptr: (a: number) => number;
|
|
36
|
+
export const optimizerstate_head_embedding_len: (a: number) => number;
|
|
37
|
+
export const optimizerstate_current_epoch: (a: number) => number;
|
|
38
|
+
export const optimizerstate_n_epochs: (a: number) => number;
|
|
39
|
+
export const optimizerstate_set_rng_seed: (a: number, b: bigint) => void;
|
|
40
|
+
export const optimizerstate_rng_seed: (a: number) => bigint;
|
|
41
|
+
export const optimize_layout_step: (a: number) => [number, number];
|
|
42
|
+
export const optimize_layout_step_in_place: (a: number) => void;
|
|
43
|
+
export const optimize_layout_batch: (a: number, b: number) => [number, number];
|
|
44
|
+
export const optimize_layout_batch_in_place: (a: number, b: number) => void;
|
|
45
|
+
export const __wbg_flattree_free: (a: number, b: number) => void;
|
|
46
|
+
export const flattree_hyperplanes: (a: number) => any;
|
|
47
|
+
export const flattree_offsets: (a: number) => any;
|
|
48
|
+
export const flattree_children: (a: number) => [number, number];
|
|
49
|
+
export const flattree_indices: (a: number) => [number, number];
|
|
50
|
+
export const flattree_dim: (a: number) => number;
|
|
51
|
+
export const flattree_n_nodes: (a: number) => number;
|
|
52
|
+
export const build_rp_tree: (a: number, b: number, c: number, d: number, e: number, f: bigint) => number;
|
|
53
|
+
export const search_flat_tree: (a: number, b: number, c: number, d: bigint) => [number, number];
|
|
54
54
|
export const __wbindgen_externrefs: WebAssembly.Table;
|
|
55
|
+
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
55
56
|
export const __wbindgen_malloc: (a: number, b: number) => number;
|
|
56
|
-
export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
57
57
|
export const __externref_table_dealloc: (a: number) => void;
|
|
58
|
-
export const
|
|
58
|
+
export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
59
59
|
export const __wbindgen_start: () => void;
|