@elarsaks/umap-wasm 0.1.1 → 0.1.4

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 (50) hide show
  1. package/dist/{src/heap.d.ts → heap.d.ts} +1 -1
  2. package/dist/heap.js +184 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +2 -0
  5. package/dist/lib.d.ts +2 -0
  6. package/dist/lib.js +2 -0
  7. package/dist/matrix.js +257 -0
  8. package/dist/{src/nn_descent.d.ts → nn_descent.d.ts} +4 -4
  9. package/dist/nn_descent.js +127 -0
  10. package/dist/{src/tree.d.ts → tree.d.ts} +2 -2
  11. package/dist/tree.js +228 -0
  12. package/dist/{src/umap.d.ts → umap.d.ts} +1 -1
  13. package/dist/umap.js +700 -0
  14. package/dist/{src/utils.d.ts → utils.d.ts} +1 -1
  15. package/dist/utils.js +98 -0
  16. package/dist/wasmBridge.js +188 -0
  17. package/lib/umap-js.js +6842 -7490
  18. package/lib/umap-js.min.js +1 -1
  19. package/package.json +64 -60
  20. package/dist/src/heap.js +0 -226
  21. package/dist/src/index.d.ts +0 -1
  22. package/dist/src/index.js +0 -5
  23. package/dist/src/lib.d.ts +0 -1
  24. package/dist/src/lib.js +0 -5
  25. package/dist/src/matrix.js +0 -360
  26. package/dist/src/nn_descent.js +0 -204
  27. package/dist/src/tree.js +0 -320
  28. package/dist/src/umap.js +0 -842
  29. package/dist/src/utils.js +0 -137
  30. package/dist/src/wasmBridge.js +0 -290
  31. package/dist/test/matrix.test.d.ts +0 -1
  32. package/dist/test/matrix.test.js +0 -169
  33. package/dist/test/nn_descent.test.d.ts +0 -1
  34. package/dist/test/nn_descent.test.js +0 -58
  35. package/dist/test/test_data.d.ts +0 -13
  36. package/dist/test/test_data.js +0 -1054
  37. package/dist/test/tree.test.d.ts +0 -1
  38. package/dist/test/tree.test.js +0 -60
  39. package/dist/test/umap.test.d.ts +0 -1
  40. package/dist/test/umap.test.js +0 -293
  41. package/dist/test/utils.test.d.ts +0 -1
  42. package/dist/test/utils.test.js +0 -128
  43. package/dist/test/wasmDistance.test.d.ts +0 -1
  44. package/dist/test/wasmDistance.test.js +0 -124
  45. package/dist/test/wasmMatrix.test.d.ts +0 -1
  46. package/dist/test/wasmMatrix.test.js +0 -389
  47. package/dist/test/wasmTree.test.d.ts +0 -1
  48. package/dist/test/wasmTree.test.js +0 -212
  49. /package/dist/{src/matrix.d.ts → matrix.d.ts} +0 -0
  50. /package/dist/{src/wasmBridge.d.ts → wasmBridge.d.ts} +0 -0
package/package.json CHANGED
@@ -1,60 +1,64 @@
1
- {
2
- "name": "@elarsaks/umap-wasm",
3
- "version": "0.1.1",
4
- "description": "JavaScript implementation of UMAP",
5
- "author": {
6
- "name": "Andy Coenen",
7
- "email": "andycoenen@google.com"
8
- },
9
- "license": "MIT",
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/elarsaks/umap-wasm.git"
13
- },
14
- "main": "lib/umap-js.js",
15
- "module": "lib/umap-js.js",
16
- "unpkg": "lib/umap-js.min.js",
17
- "jsdelivr": "lib/umap-js.min.js",
18
- "types": "dist/index.d.ts",
19
- "exports": {
20
- ".": {
21
- "import": "./lib/umap-js.js",
22
- "require": "./lib/umap-js.js"
23
- }
24
- },
25
- "files": [
26
- "lib",
27
- "dist",
28
- "wasm/pkg"
29
- ],
30
- "packageManager": "yarn@4.12.0",
31
- "scripts": {
32
- "test": "vitest run",
33
- "test:watch": "vitest",
34
- "bundle": "rm -rf lib && webpack --config ./webpack/lib.config.ts && webpack --config ./webpack/lib.min.config.ts",
35
- "build": "rm -rf dist && tsc && yarn bundle",
36
- "build:wasm": "cd wasm && wasm-pack build --target web --out-dir pkg",
37
- "prepublishOnly": "yarn build:wasm && yarn build"
38
- },
39
- "devDependencies": {
40
- "@types/jest": "^30.0.0",
41
- "@types/node": "^25.0.3",
42
- "jest": "^30.2.0",
43
- "prando": "^5.1.2",
44
- "prettier": "^3.7.4",
45
- "ts-jest": "^29.4.6",
46
- "ts-loader": "^9.5.4",
47
- "ts-node": "^10.9.2",
48
- "typescript": "^5.9.3",
49
- "vitest": "^1.4.0",
50
- "webpack": "^5.104.1",
51
- "webpack-cli": "^6.0.1"
52
- },
53
- "dependencies": {
54
- "ml-levenberg-marquardt": "^2.1.1"
55
- },
56
- "publishConfig": {
57
- "access": "public",
58
- "registry": "https://registry.npmjs.org/"
59
- }
60
- }
1
+ {
2
+ "name": "@elarsaks/umap-wasm",
3
+ "version": "0.1.4",
4
+ "description": "JavaScript implementation of UMAP",
5
+ "author": {
6
+ "name": "Andy Coenen",
7
+ "email": "andycoenen@google.com"
8
+ },
9
+ "license": "MIT",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/elarsaks/umap-wasm.git"
13
+ },
14
+ "main": "lib/umap-js.js",
15
+ "module": "dist/index.js",
16
+ "unpkg": "lib/umap-js.min.js",
17
+ "jsdelivr": "lib/umap-js.min.js",
18
+ "types": "dist/src/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "import": "./dist/index.js",
22
+ "require": "./lib/umap-js.js",
23
+ "types": "./dist/index.d.ts"
24
+ }
25
+ },
26
+ "files": [
27
+ "lib",
28
+ "dist",
29
+ "wasm/pkg"
30
+ ],
31
+ "packageManager": "yarn@4.12.0",
32
+ "scripts": {
33
+ "test": "vitest run",
34
+ "test:watch": "vitest",
35
+ "test:playwright": "playwright test",
36
+ "preview": "npx serve . -p 4173",
37
+ "bundle": "rm -rf lib && webpack --config ./webpack/lib.config.mjs && webpack --config ./webpack/lib.min.config.mjs",
38
+ "build": "rm -rf dist && tsc && yarn bundle",
39
+ "build:wasm": "cd wasm && wasm-pack build --target web --out-dir pkg",
40
+ "prepublishOnly": "yarn build:wasm && yarn build"
41
+ },
42
+ "devDependencies": {
43
+ "@playwright/test": "^1.57.0",
44
+ "@types/jest": "^30.0.0",
45
+ "@types/node": "^25.0.3",
46
+ "jest": "^30.2.0",
47
+ "prando": "^5.1.2",
48
+ "prettier": "^3.7.4",
49
+ "ts-jest": "^29.4.6",
50
+ "ts-loader": "^9.5.4",
51
+ "ts-node": "^10.9.2",
52
+ "typescript": "^5.9.3",
53
+ "vitest": "^1.4.0",
54
+ "webpack": "^5.104.1",
55
+ "webpack-cli": "^6.0.1"
56
+ },
57
+ "dependencies": {
58
+ "ml-levenberg-marquardt": "^2.1.1"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public",
62
+ "registry": "https://registry.npmjs.org/"
63
+ }
64
+ }
package/dist/src/heap.js DELETED
@@ -1,226 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.makeHeap = makeHeap;
37
- exports.rejectionSample = rejectionSample;
38
- exports.heapPush = heapPush;
39
- exports.uncheckedHeapPush = uncheckedHeapPush;
40
- exports.buildCandidates = buildCandidates;
41
- exports.deheapSort = deheapSort;
42
- exports.smallestFlagged = smallestFlagged;
43
- var utils = __importStar(require("./utils"));
44
- function makeHeap(nPoints, size) {
45
- var makeArrays = function (fillValue) {
46
- return utils.empty(nPoints).map(function () {
47
- return utils.filled(size, fillValue);
48
- });
49
- };
50
- var heap = [];
51
- heap.push(makeArrays(-1));
52
- heap.push(makeArrays(Infinity));
53
- heap.push(makeArrays(0));
54
- return heap;
55
- }
56
- function rejectionSample(nSamples, poolSize, random) {
57
- var result = utils.zeros(nSamples);
58
- for (var i = 0; i < nSamples; i++) {
59
- var rejectSample = true;
60
- var j = 0;
61
- while (rejectSample) {
62
- j = utils.tauRandInt(poolSize, random);
63
- var broken = false;
64
- for (var k = 0; k < i; k++) {
65
- if (j === result[k]) {
66
- broken = true;
67
- break;
68
- }
69
- }
70
- if (!broken)
71
- rejectSample = false;
72
- }
73
- result[i] = j;
74
- }
75
- return result;
76
- }
77
- function heapPush(heap, row, weight, index, flag) {
78
- row = Math.floor(row);
79
- var indices = heap[0][row];
80
- var weights = heap[1][row];
81
- var isNew = heap[2][row];
82
- if (weight >= weights[0]) {
83
- return 0;
84
- }
85
- for (var i = 0; i < indices.length; i++) {
86
- if (index === indices[i]) {
87
- return 0;
88
- }
89
- }
90
- return uncheckedHeapPush(heap, row, weight, index, flag);
91
- }
92
- function uncheckedHeapPush(heap, row, weight, index, flag) {
93
- var indices = heap[0][row];
94
- var weights = heap[1][row];
95
- var isNew = heap[2][row];
96
- if (weight >= weights[0]) {
97
- return 0;
98
- }
99
- weights[0] = weight;
100
- indices[0] = index;
101
- isNew[0] = flag;
102
- var i = 0;
103
- var iSwap = 0;
104
- while (true) {
105
- var ic1 = 2 * i + 1;
106
- var ic2 = ic1 + 1;
107
- var heapShape2 = heap[0][0].length;
108
- if (ic1 >= heapShape2) {
109
- break;
110
- }
111
- else if (ic2 >= heapShape2) {
112
- if (weights[ic1] > weight) {
113
- iSwap = ic1;
114
- }
115
- else {
116
- break;
117
- }
118
- }
119
- else if (weights[ic1] >= weights[ic2]) {
120
- if (weight < weights[ic1]) {
121
- iSwap = ic1;
122
- }
123
- else {
124
- break;
125
- }
126
- }
127
- else {
128
- if (weight < weights[ic2]) {
129
- iSwap = ic2;
130
- }
131
- else {
132
- break;
133
- }
134
- }
135
- weights[i] = weights[iSwap];
136
- indices[i] = indices[iSwap];
137
- isNew[i] = isNew[iSwap];
138
- i = iSwap;
139
- }
140
- weights[i] = weight;
141
- indices[i] = index;
142
- isNew[i] = flag;
143
- return 1;
144
- }
145
- function buildCandidates(currentGraph, nVertices, nNeighbors, maxCandidates, random) {
146
- var candidateNeighbors = makeHeap(nVertices, maxCandidates);
147
- for (var i = 0; i < nVertices; i++) {
148
- for (var j = 0; j < nNeighbors; j++) {
149
- if (currentGraph[0][i][j] < 0) {
150
- continue;
151
- }
152
- var idx = currentGraph[0][i][j];
153
- var isn = currentGraph[2][i][j];
154
- var d = utils.tauRand(random);
155
- heapPush(candidateNeighbors, i, d, idx, isn);
156
- heapPush(candidateNeighbors, idx, d, i, isn);
157
- currentGraph[2][i][j] = 0;
158
- }
159
- }
160
- return candidateNeighbors;
161
- }
162
- function deheapSort(heap) {
163
- var indices = heap[0];
164
- var weights = heap[1];
165
- for (var i = 0; i < indices.length; i++) {
166
- var indHeap = indices[i];
167
- var distHeap = weights[i];
168
- for (var j = 0; j < indHeap.length - 1; j++) {
169
- var indHeapIndex = indHeap.length - j - 1;
170
- var distHeapIndex = distHeap.length - j - 1;
171
- var temp1 = indHeap[0];
172
- indHeap[0] = indHeap[indHeapIndex];
173
- indHeap[indHeapIndex] = temp1;
174
- var temp2 = distHeap[0];
175
- distHeap[0] = distHeap[distHeapIndex];
176
- distHeap[distHeapIndex] = temp2;
177
- siftDown(distHeap, indHeap, distHeapIndex, 0);
178
- }
179
- }
180
- return { indices: indices, weights: weights };
181
- }
182
- function siftDown(heap1, heap2, ceiling, elt) {
183
- while (elt * 2 + 1 < ceiling) {
184
- var leftChild = elt * 2 + 1;
185
- var rightChild = leftChild + 1;
186
- var swap = elt;
187
- if (heap1[swap] < heap1[leftChild]) {
188
- swap = leftChild;
189
- }
190
- if (rightChild < ceiling && heap1[swap] < heap1[rightChild]) {
191
- swap = rightChild;
192
- }
193
- if (swap === elt) {
194
- break;
195
- }
196
- else {
197
- var temp1 = heap1[elt];
198
- heap1[elt] = heap1[swap];
199
- heap1[swap] = temp1;
200
- var temp2 = heap2[elt];
201
- heap2[elt] = heap2[swap];
202
- heap2[swap] = temp2;
203
- elt = swap;
204
- }
205
- }
206
- }
207
- function smallestFlagged(heap, row) {
208
- var ind = heap[0][row];
209
- var dist = heap[1][row];
210
- var flag = heap[2][row];
211
- var minDist = Infinity;
212
- var resultIndex = -1;
213
- for (var i = 0; i > ind.length; i++) {
214
- if (flag[i] === 1 && dist[i] < minDist) {
215
- minDist = dist[i];
216
- resultIndex = i;
217
- }
218
- }
219
- if (resultIndex >= 0) {
220
- flag[resultIndex] = 0;
221
- return Math.floor(ind[resultIndex]);
222
- }
223
- else {
224
- return -1;
225
- }
226
- }
@@ -1 +0,0 @@
1
- export { UMAP, UMAPParameters } from './umap';
package/dist/src/index.js DELETED
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UMAP = void 0;
4
- var umap_1 = require("./umap");
5
- Object.defineProperty(exports, "UMAP", { enumerable: true, get: function () { return umap_1.UMAP; } });
package/dist/src/lib.d.ts DELETED
@@ -1 +0,0 @@
1
- export { UMAP } from './umap';
package/dist/src/lib.js DELETED
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UMAP = void 0;
4
- var umap_1 = require("./umap");
5
- Object.defineProperty(exports, "UMAP", { enumerable: true, get: function () { return umap_1.UMAP; } });