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 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>;