ruvector-math-wasm 0.1.31
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/package.json +30 -0
- package/ruvector_math_wasm.d.ts +331 -0
- package/ruvector_math_wasm.js +1375 -0
- package/ruvector_math_wasm_bg.wasm +0 -0
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ruvector-math-wasm",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"collaborators": [
|
|
5
|
+
"Ruvector Team"
|
|
6
|
+
],
|
|
7
|
+
"description": "WebAssembly bindings for ruvector-math: Optimal Transport, Information Geometry, Product Manifolds",
|
|
8
|
+
"version": "0.1.31",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/ruvnet/ruvector"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"ruvector_math_wasm_bg.wasm",
|
|
16
|
+
"ruvector_math_wasm.js",
|
|
17
|
+
"ruvector_math_wasm.d.ts"
|
|
18
|
+
],
|
|
19
|
+
"main": "ruvector_math_wasm.js",
|
|
20
|
+
"types": "ruvector_math_wasm.d.ts",
|
|
21
|
+
"sideEffects": [
|
|
22
|
+
"./snippets/*"
|
|
23
|
+
],
|
|
24
|
+
"keywords": [
|
|
25
|
+
"wasm",
|
|
26
|
+
"wasserstein",
|
|
27
|
+
"vector-search",
|
|
28
|
+
"optimal-transport"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
|
|
4
|
+
/** Sliced Wasserstein distance for comparing point cloud distributions */
|
|
5
|
+
export interface SlicedWassersteinOptions {
|
|
6
|
+
numProjections?: number;
|
|
7
|
+
power?: number;
|
|
8
|
+
seed?: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** Sinkhorn optimal transport options */
|
|
12
|
+
export interface SinkhornOptions {
|
|
13
|
+
regularization?: number;
|
|
14
|
+
maxIterations?: number;
|
|
15
|
+
threshold?: number;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Product manifold configuration */
|
|
19
|
+
export interface ProductManifoldConfig {
|
|
20
|
+
euclideanDim: number;
|
|
21
|
+
hyperbolicDim: number;
|
|
22
|
+
sphericalDim: number;
|
|
23
|
+
hyperbolicCurvature?: number;
|
|
24
|
+
sphericalCurvature?: number;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
export class TransportResult {
|
|
30
|
+
private constructor();
|
|
31
|
+
free(): void;
|
|
32
|
+
[Symbol.dispose](): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get number of iterations
|
|
35
|
+
*/
|
|
36
|
+
readonly iterations: number;
|
|
37
|
+
/**
|
|
38
|
+
* Get total transport cost
|
|
39
|
+
*/
|
|
40
|
+
readonly cost: number;
|
|
41
|
+
/**
|
|
42
|
+
* Get transport plan as flat array
|
|
43
|
+
*/
|
|
44
|
+
readonly plan: Float64Array;
|
|
45
|
+
/**
|
|
46
|
+
* Whether algorithm converged
|
|
47
|
+
*/
|
|
48
|
+
readonly converged: boolean;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export class WasmFisherInformation {
|
|
52
|
+
free(): void;
|
|
53
|
+
[Symbol.dispose](): void;
|
|
54
|
+
/**
|
|
55
|
+
* Compute diagonal FIM from gradient samples
|
|
56
|
+
*/
|
|
57
|
+
diagonalFim(gradients: Float64Array, _num_samples: number, dim: number): Float64Array;
|
|
58
|
+
/**
|
|
59
|
+
* Set damping factor
|
|
60
|
+
*/
|
|
61
|
+
withDamping(damping: number): WasmFisherInformation;
|
|
62
|
+
/**
|
|
63
|
+
* Compute natural gradient
|
|
64
|
+
*/
|
|
65
|
+
naturalGradient(fim_diag: Float64Array, gradient: Float64Array, damping: number): Float64Array;
|
|
66
|
+
/**
|
|
67
|
+
* Create a new Fisher Information calculator
|
|
68
|
+
*/
|
|
69
|
+
constructor();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export class WasmGromovWasserstein {
|
|
73
|
+
free(): void;
|
|
74
|
+
[Symbol.dispose](): void;
|
|
75
|
+
/**
|
|
76
|
+
* Create a new Gromov-Wasserstein calculator
|
|
77
|
+
*/
|
|
78
|
+
constructor(regularization: number);
|
|
79
|
+
/**
|
|
80
|
+
* Compute GW distance between point clouds
|
|
81
|
+
*/
|
|
82
|
+
distance(source: Float64Array, target: Float64Array, dim: number): number;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export class WasmNaturalGradient {
|
|
86
|
+
free(): void;
|
|
87
|
+
[Symbol.dispose](): void;
|
|
88
|
+
/**
|
|
89
|
+
* Set damping factor
|
|
90
|
+
*/
|
|
91
|
+
withDamping(damping: number): WasmNaturalGradient;
|
|
92
|
+
/**
|
|
93
|
+
* Use diagonal approximation
|
|
94
|
+
*/
|
|
95
|
+
withDiagonal(use_diagonal: boolean): WasmNaturalGradient;
|
|
96
|
+
/**
|
|
97
|
+
* Create a new Natural Gradient optimizer
|
|
98
|
+
*/
|
|
99
|
+
constructor(learning_rate: number);
|
|
100
|
+
/**
|
|
101
|
+
* Compute update step
|
|
102
|
+
*/
|
|
103
|
+
step(gradient: Float64Array, gradient_samples: Float64Array | null | undefined, dim: number): Float64Array;
|
|
104
|
+
/**
|
|
105
|
+
* Reset optimizer state
|
|
106
|
+
*/
|
|
107
|
+
reset(): void;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export class WasmProductManifold {
|
|
111
|
+
free(): void;
|
|
112
|
+
[Symbol.dispose](): void;
|
|
113
|
+
/**
|
|
114
|
+
* Fréchet mean
|
|
115
|
+
*/
|
|
116
|
+
frechetMean(points: Float64Array, _num_points: number): Float64Array;
|
|
117
|
+
/**
|
|
118
|
+
* Pairwise distances
|
|
119
|
+
*/
|
|
120
|
+
pairwiseDistances(points: Float64Array): Float64Array;
|
|
121
|
+
/**
|
|
122
|
+
* K-nearest neighbors
|
|
123
|
+
*/
|
|
124
|
+
knn(query: Float64Array, points: Float64Array, k: number): Uint32Array;
|
|
125
|
+
/**
|
|
126
|
+
* Create a new product manifold
|
|
127
|
+
*
|
|
128
|
+
* @param euclidean_dim - Dimension of Euclidean component
|
|
129
|
+
* @param hyperbolic_dim - Dimension of hyperbolic component
|
|
130
|
+
* @param spherical_dim - Dimension of spherical component
|
|
131
|
+
*/
|
|
132
|
+
constructor(euclidean_dim: number, hyperbolic_dim: number, spherical_dim: number);
|
|
133
|
+
/**
|
|
134
|
+
* Exponential map
|
|
135
|
+
*/
|
|
136
|
+
expMap(x: Float64Array, v: Float64Array): Float64Array;
|
|
137
|
+
/**
|
|
138
|
+
* Logarithmic map
|
|
139
|
+
*/
|
|
140
|
+
logMap(x: Float64Array, y: Float64Array): Float64Array;
|
|
141
|
+
/**
|
|
142
|
+
* Project point onto manifold
|
|
143
|
+
*/
|
|
144
|
+
project(point: Float64Array): Float64Array;
|
|
145
|
+
/**
|
|
146
|
+
* Compute distance in product manifold
|
|
147
|
+
*/
|
|
148
|
+
distance(x: Float64Array, y: Float64Array): number;
|
|
149
|
+
/**
|
|
150
|
+
* Geodesic interpolation
|
|
151
|
+
*/
|
|
152
|
+
geodesic(x: Float64Array, y: Float64Array, t: number): Float64Array;
|
|
153
|
+
/**
|
|
154
|
+
* Get total dimension
|
|
155
|
+
*/
|
|
156
|
+
readonly dim: number;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export class WasmSinkhorn {
|
|
160
|
+
free(): void;
|
|
161
|
+
[Symbol.dispose](): void;
|
|
162
|
+
/**
|
|
163
|
+
* Solve optimal transport and return transport plan
|
|
164
|
+
*/
|
|
165
|
+
solveTransport(cost_matrix: Float64Array, source_weights: Float64Array, target_weights: Float64Array, n: number, m: number): TransportResult;
|
|
166
|
+
/**
|
|
167
|
+
* Create a new Sinkhorn solver
|
|
168
|
+
*
|
|
169
|
+
* @param regularization - Entropy regularization (0.01-0.1 typical)
|
|
170
|
+
* @param max_iterations - Maximum iterations (100-1000 typical)
|
|
171
|
+
*/
|
|
172
|
+
constructor(regularization: number, max_iterations: number);
|
|
173
|
+
/**
|
|
174
|
+
* Compute transport cost between point clouds
|
|
175
|
+
*/
|
|
176
|
+
distance(source: Float64Array, target: Float64Array, dim: number): number;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export class WasmSlicedWasserstein {
|
|
180
|
+
free(): void;
|
|
181
|
+
[Symbol.dispose](): void;
|
|
182
|
+
/**
|
|
183
|
+
* Set Wasserstein power (1 for W1, 2 for W2)
|
|
184
|
+
*/
|
|
185
|
+
withPower(p: number): WasmSlicedWasserstein;
|
|
186
|
+
/**
|
|
187
|
+
* Compute weighted distance
|
|
188
|
+
*/
|
|
189
|
+
weightedDistance(source: Float64Array, source_weights: Float64Array, target: Float64Array, target_weights: Float64Array, dim: number): number;
|
|
190
|
+
/**
|
|
191
|
+
* Create a new Sliced Wasserstein calculator
|
|
192
|
+
*
|
|
193
|
+
* @param num_projections - Number of random 1D projections (100-1000 typical)
|
|
194
|
+
*/
|
|
195
|
+
constructor(num_projections: number);
|
|
196
|
+
/**
|
|
197
|
+
* Compute distance between two point clouds
|
|
198
|
+
*
|
|
199
|
+
* @param source - Source points as flat array [x1, y1, z1, x2, y2, z2, ...]
|
|
200
|
+
* @param target - Target points as flat array
|
|
201
|
+
* @param dim - Dimension of each point
|
|
202
|
+
*/
|
|
203
|
+
distance(source: Float64Array, target: Float64Array, dim: number): number;
|
|
204
|
+
/**
|
|
205
|
+
* Set random seed for reproducibility
|
|
206
|
+
*/
|
|
207
|
+
withSeed(seed: bigint): WasmSlicedWasserstein;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export class WasmSphericalSpace {
|
|
211
|
+
free(): void;
|
|
212
|
+
[Symbol.dispose](): void;
|
|
213
|
+
/**
|
|
214
|
+
* Fréchet mean of points
|
|
215
|
+
*/
|
|
216
|
+
frechetMean(points: Float64Array, dim: number): Float64Array;
|
|
217
|
+
/**
|
|
218
|
+
* Create a new spherical space S^{n-1} embedded in R^n
|
|
219
|
+
*/
|
|
220
|
+
constructor(ambient_dim: number);
|
|
221
|
+
/**
|
|
222
|
+
* Exponential map: move from x in direction v
|
|
223
|
+
*/
|
|
224
|
+
expMap(x: Float64Array, v: Float64Array): Float64Array;
|
|
225
|
+
/**
|
|
226
|
+
* Logarithmic map: tangent vector at x pointing toward y
|
|
227
|
+
*/
|
|
228
|
+
logMap(x: Float64Array, y: Float64Array): Float64Array;
|
|
229
|
+
/**
|
|
230
|
+
* Project point onto sphere
|
|
231
|
+
*/
|
|
232
|
+
project(point: Float64Array): Float64Array;
|
|
233
|
+
/**
|
|
234
|
+
* Geodesic distance on sphere
|
|
235
|
+
*/
|
|
236
|
+
distance(x: Float64Array, y: Float64Array): number;
|
|
237
|
+
/**
|
|
238
|
+
* Geodesic interpolation at fraction t
|
|
239
|
+
*/
|
|
240
|
+
geodesic(x: Float64Array, y: Float64Array, t: number): Float64Array;
|
|
241
|
+
/**
|
|
242
|
+
* Get ambient dimension
|
|
243
|
+
*/
|
|
244
|
+
readonly ambientDim: number;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export function start(): void;
|
|
248
|
+
|
|
249
|
+
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
250
|
+
|
|
251
|
+
export interface InitOutput {
|
|
252
|
+
readonly memory: WebAssembly.Memory;
|
|
253
|
+
readonly __wbg_transportresult_free: (a: number, b: number) => void;
|
|
254
|
+
readonly __wbg_wasmfisherinformation_free: (a: number, b: number) => void;
|
|
255
|
+
readonly __wbg_wasmgromovwasserstein_free: (a: number, b: number) => void;
|
|
256
|
+
readonly __wbg_wasmnaturalgradient_free: (a: number, b: number) => void;
|
|
257
|
+
readonly __wbg_wasmproductmanifold_free: (a: number, b: number) => void;
|
|
258
|
+
readonly __wbg_wasmslicedwasserstein_free: (a: number, b: number) => void;
|
|
259
|
+
readonly transportresult_converged: (a: number) => number;
|
|
260
|
+
readonly transportresult_cost: (a: number) => number;
|
|
261
|
+
readonly transportresult_iterations: (a: number) => number;
|
|
262
|
+
readonly transportresult_plan: (a: number, b: number) => void;
|
|
263
|
+
readonly wasmfisherinformation_diagonalFim: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
264
|
+
readonly wasmfisherinformation_naturalGradient: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
265
|
+
readonly wasmfisherinformation_new: () => number;
|
|
266
|
+
readonly wasmfisherinformation_withDamping: (a: number, b: number) => number;
|
|
267
|
+
readonly wasmgromovwasserstein_distance: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
268
|
+
readonly wasmgromovwasserstein_new: (a: number) => number;
|
|
269
|
+
readonly wasmnaturalgradient_new: (a: number) => number;
|
|
270
|
+
readonly wasmnaturalgradient_reset: (a: number) => void;
|
|
271
|
+
readonly wasmnaturalgradient_step: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
272
|
+
readonly wasmnaturalgradient_withDamping: (a: number, b: number) => number;
|
|
273
|
+
readonly wasmnaturalgradient_withDiagonal: (a: number, b: number) => number;
|
|
274
|
+
readonly wasmproductmanifold_dim: (a: number) => number;
|
|
275
|
+
readonly wasmproductmanifold_distance: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
276
|
+
readonly wasmproductmanifold_expMap: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
277
|
+
readonly wasmproductmanifold_frechetMean: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
278
|
+
readonly wasmproductmanifold_geodesic: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
279
|
+
readonly wasmproductmanifold_knn: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
280
|
+
readonly wasmproductmanifold_logMap: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
281
|
+
readonly wasmproductmanifold_new: (a: number, b: number, c: number) => number;
|
|
282
|
+
readonly wasmproductmanifold_pairwiseDistances: (a: number, b: number, c: number, d: number) => void;
|
|
283
|
+
readonly wasmproductmanifold_project: (a: number, b: number, c: number, d: number) => void;
|
|
284
|
+
readonly wasmsinkhorn_distance: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
285
|
+
readonly wasmsinkhorn_new: (a: number, b: number) => number;
|
|
286
|
+
readonly wasmsinkhorn_solveTransport: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
|
|
287
|
+
readonly wasmslicedwasserstein_distance: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
288
|
+
readonly wasmslicedwasserstein_new: (a: number) => number;
|
|
289
|
+
readonly wasmslicedwasserstein_weightedDistance: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
|
|
290
|
+
readonly wasmslicedwasserstein_withPower: (a: number, b: number) => number;
|
|
291
|
+
readonly wasmslicedwasserstein_withSeed: (a: number, b: bigint) => number;
|
|
292
|
+
readonly wasmsphericalspace_ambientDim: (a: number) => number;
|
|
293
|
+
readonly wasmsphericalspace_distance: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
294
|
+
readonly wasmsphericalspace_expMap: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
295
|
+
readonly wasmsphericalspace_frechetMean: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
296
|
+
readonly wasmsphericalspace_geodesic: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
297
|
+
readonly wasmsphericalspace_logMap: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
298
|
+
readonly wasmsphericalspace_new: (a: number) => number;
|
|
299
|
+
readonly wasmsphericalspace_project: (a: number, b: number, c: number, d: number) => void;
|
|
300
|
+
readonly start: () => void;
|
|
301
|
+
readonly __wbg_wasmsinkhorn_free: (a: number, b: number) => void;
|
|
302
|
+
readonly __wbg_wasmsphericalspace_free: (a: number, b: number) => void;
|
|
303
|
+
readonly __wbindgen_export: (a: number) => void;
|
|
304
|
+
readonly __wbindgen_export2: (a: number, b: number, c: number) => void;
|
|
305
|
+
readonly __wbindgen_export3: (a: number, b: number) => number;
|
|
306
|
+
readonly __wbindgen_export4: (a: number, b: number, c: number, d: number) => number;
|
|
307
|
+
readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
|
|
308
|
+
readonly __wbindgen_start: () => void;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export type SyncInitInput = BufferSource | WebAssembly.Module;
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Instantiates the given `module`, which can either be bytes or
|
|
315
|
+
* a precompiled `WebAssembly.Module`.
|
|
316
|
+
*
|
|
317
|
+
* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
|
|
318
|
+
*
|
|
319
|
+
* @returns {InitOutput}
|
|
320
|
+
*/
|
|
321
|
+
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
|
|
325
|
+
* for everything else, calls `WebAssembly.instantiate` directly.
|
|
326
|
+
*
|
|
327
|
+
* @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
|
|
328
|
+
*
|
|
329
|
+
* @returns {Promise<InitOutput>}
|
|
330
|
+
*/
|
|
331
|
+
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;
|