@buley/hexgrid-3d 3.1.0 → 3.2.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/dist/HexGridEnhanced.d.ts +15 -0
- package/dist/HexGridEnhanced.d.ts.map +1 -0
- package/dist/HexGridEnhanced.js +1 -0
- package/dist/Snapshot.d.ts +594 -0
- package/dist/Snapshot.d.ts.map +1 -0
- package/dist/Snapshot.js +757 -0
- package/dist/adapters/DashAdapter.d.ts +18 -0
- package/dist/adapters/DashAdapter.d.ts.map +1 -0
- package/dist/adapters/DashAdapter.js +42 -0
- package/dist/adapters.d.ts +53 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +14 -0
- package/dist/algorithms/AdvancedStatistics.d.ts +52 -0
- package/dist/algorithms/AdvancedStatistics.d.ts.map +1 -0
- package/dist/algorithms/AdvancedStatistics.js +307 -0
- package/dist/algorithms/BayesianStatistics.d.ts +86 -0
- package/dist/algorithms/BayesianStatistics.d.ts.map +1 -0
- package/dist/algorithms/BayesianStatistics.js +263 -0
- package/dist/algorithms/FlowField.d.ts +55 -0
- package/dist/algorithms/FlowField.d.ts.map +1 -0
- package/dist/algorithms/FlowField.js +80 -0
- package/dist/algorithms/FlowField3D.d.ts +166 -0
- package/dist/algorithms/FlowField3D.d.ts.map +1 -0
- package/dist/algorithms/FlowField3D.js +327 -0
- package/dist/algorithms/FluidEngineFactory.d.ts +15 -0
- package/dist/algorithms/FluidEngineFactory.d.ts.map +1 -0
- package/dist/algorithms/FluidEngineFactory.js +41 -0
- package/dist/algorithms/FluidSimulation.d.ts +41 -0
- package/dist/algorithms/FluidSimulation.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation.js +74 -0
- package/dist/algorithms/FluidSimulation3D.d.ts +137 -0
- package/dist/algorithms/FluidSimulation3D.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation3D.js +464 -0
- package/dist/algorithms/FluidSimulation3DGPU.d.ts +41 -0
- package/dist/algorithms/FluidSimulation3DGPU.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulation3DGPU.js +468 -0
- package/dist/algorithms/FluidSimulationWebNN.d.ts +56 -0
- package/dist/algorithms/FluidSimulationWebNN.d.ts.map +1 -0
- package/dist/algorithms/FluidSimulationWebNN.js +84 -0
- package/dist/algorithms/GraphAlgorithms.d.ts +48 -0
- package/dist/algorithms/GraphAlgorithms.d.ts.map +1 -0
- package/dist/algorithms/GraphAlgorithms.js +122 -0
- package/dist/algorithms/OutlierDetection.d.ts +49 -0
- package/dist/algorithms/OutlierDetection.d.ts.map +1 -0
- package/dist/algorithms/OutlierDetection.js +284 -0
- package/dist/algorithms/ParticleSystem.d.ts +36 -0
- package/dist/algorithms/ParticleSystem.d.ts.map +1 -0
- package/dist/algorithms/ParticleSystem.js +59 -0
- package/dist/algorithms/ParticleSystem3D.d.ts +206 -0
- package/dist/algorithms/ParticleSystem3D.d.ts.map +1 -0
- package/dist/algorithms/ParticleSystem3D.js +371 -0
- package/dist/algorithms/index.d.ts +19 -0
- package/dist/algorithms/index.d.ts.map +1 -0
- package/{src/algorithms/index.ts → dist/algorithms/index.js} +4 -2
- package/dist/compat.d.ts +24 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +88 -0
- package/dist/components/HexGrid.d.ts +5 -0
- package/dist/components/HexGrid.d.ts.map +1 -0
- package/dist/components/HexGrid.js +39 -0
- package/dist/components/NarrationOverlay.d.ts +16 -0
- package/dist/components/NarrationOverlay.d.ts.map +1 -0
- package/dist/components/NarrationOverlay.js +132 -0
- package/{src/components/index.ts → dist/components/index.d.ts} +1 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +1 -0
- package/dist/features.d.ts +54 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +74 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +0 -9
- package/dist/lib/narration.d.ts +12 -0
- package/dist/lib/narration.d.ts.map +1 -0
- package/dist/lib/narration.js +8 -0
- package/dist/lib/stats-tracker.d.ts +7 -0
- package/dist/lib/stats-tracker.d.ts.map +1 -0
- package/dist/lib/stats-tracker.js +22 -0
- package/dist/lib/theme-colors.d.ts +7 -0
- package/dist/lib/theme-colors.d.ts.map +1 -0
- package/dist/lib/theme-colors.js +10 -0
- package/dist/math/HexCoordinates.d.ts +140 -0
- package/dist/math/HexCoordinates.d.ts.map +1 -0
- package/dist/math/HexCoordinates.js +741 -0
- package/dist/math/Matrix4.d.ts +9 -0
- package/dist/math/Matrix4.d.ts.map +1 -0
- package/dist/math/Matrix4.js +19 -0
- package/dist/math/Quaternion.d.ts +11 -0
- package/dist/math/Quaternion.d.ts.map +1 -0
- package/dist/math/Quaternion.js +23 -0
- package/dist/math/SpatialIndex.d.ts +34 -0
- package/dist/math/SpatialIndex.d.ts.map +1 -0
- package/dist/math/SpatialIndex.js +75 -0
- package/dist/math/Vector3.d.ts +110 -0
- package/dist/math/Vector3.d.ts.map +1 -0
- package/dist/math/Vector3.js +426 -0
- package/dist/math/index.d.ts +11 -0
- package/dist/math/index.d.ts.map +1 -0
- package/{src/math/index.ts → dist/math/index.js} +0 -1
- package/dist/note-adapter.d.ts +44 -0
- package/dist/note-adapter.d.ts.map +1 -0
- package/dist/note-adapter.js +86 -0
- package/dist/ontology-adapter.d.ts +13 -0
- package/dist/ontology-adapter.d.ts.map +1 -0
- package/dist/ontology-adapter.js +65 -0
- package/dist/stores/index.d.ts +2 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/uiStore.d.ts +18 -0
- package/dist/stores/uiStore.d.ts.map +1 -0
- package/dist/stores/uiStore.js +77 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types.d.ts +126 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/utils/image-utils.d.ts +13 -0
- package/dist/utils/image-utils.d.ts.map +1 -0
- package/dist/utils/image-utils.js +23 -0
- package/dist/wasm/HexGridWasmWrapper.d.ts +131 -0
- package/dist/wasm/HexGridWasmWrapper.d.ts.map +1 -0
- package/dist/wasm/HexGridWasmWrapper.js +610 -0
- package/dist/wasm/index.d.ts +7 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/{src/wasm/index.ts → dist/wasm/index.js} +0 -1
- package/dist/webgpu/WebGPUContext.d.ts +20 -0
- package/dist/webgpu/WebGPUContext.d.ts.map +1 -0
- package/dist/webgpu/WebGPUContext.js +60 -0
- package/dist/webnn/WebNNContext.d.ts +38 -0
- package/dist/webnn/WebNNContext.d.ts.map +1 -0
- package/dist/webnn/WebNNContext.js +66 -0
- package/dist/workers/hexgrid-math.d.ts +79 -0
- package/dist/workers/hexgrid-math.d.ts.map +1 -0
- package/dist/workers/hexgrid-math.js +136 -0
- package/dist/workers/hexgrid-worker.worker.d.ts +35 -0
- package/dist/workers/hexgrid-worker.worker.d.ts.map +1 -0
- package/dist/workers/hexgrid-worker.worker.js +2014 -0
- package/package.json +24 -7
- package/.eslintrc.json +0 -28
- package/build_log.txt +0 -500
- package/build_src_log.txt +0 -8
- package/examples/basic-usage.tsx +0 -52
- package/public/hexgrid-worker.js +0 -2475
- package/rust/Cargo.toml +0 -41
- package/rust/src/lib.rs +0 -740
- package/rust/src/math.rs +0 -574
- package/rust/src/spatial.rs +0 -245
- package/rust/src/statistics.rs +0 -496
- package/site/.eslintrc.json +0 -3
- package/site/DEPLOYMENT.md +0 -196
- package/site/INDEX.md +0 -127
- package/site/QUICK_START.md +0 -86
- package/site/README.md +0 -85
- package/site/SITE_SUMMARY.md +0 -180
- package/site/next.config.js +0 -12
- package/site/package.json +0 -26
- package/site/src/app/docs/page.tsx +0 -272
- package/site/src/app/examples/page.tsx +0 -151
- package/site/src/app/globals.css +0 -160
- package/site/src/app/layout.tsx +0 -39
- package/site/src/app/page.tsx +0 -235
- package/site/tsconfig.json +0 -29
- package/site/vercel.json +0 -6
- package/src/HexGridEnhanced.ts +0 -16
- package/src/Snapshot.ts +0 -1607
- package/src/adapters/DashAdapter.ts +0 -57
- package/src/adapters.ts +0 -63
- package/src/algorithms/AdvancedStatistics.ts +0 -362
- package/src/algorithms/BayesianStatistics.ts +0 -348
- package/src/algorithms/FlowField.ts +0 -150
- package/src/algorithms/FlowField3D.ts +0 -573
- package/src/algorithms/FluidEngineFactory.ts +0 -44
- package/src/algorithms/FluidSimulation.ts +0 -115
- package/src/algorithms/FluidSimulation3D.ts +0 -664
- package/src/algorithms/FluidSimulation3DGPU.ts +0 -408
- package/src/algorithms/FluidSimulationWebNN.ts +0 -141
- package/src/algorithms/GraphAlgorithms.ts +0 -191
- package/src/algorithms/OutlierDetection.ts +0 -425
- package/src/algorithms/ParticleSystem.ts +0 -95
- package/src/algorithms/ParticleSystem3D.ts +0 -567
- package/src/compat.ts +0 -96
- package/src/components/HexGrid.tsx +0 -61
- package/src/components/NarrationOverlay.tsx +0 -309
- package/src/features.ts +0 -125
- package/src/lib/narration.ts +0 -17
- package/src/lib/stats-tracker.ts +0 -25
- package/src/lib/theme-colors.ts +0 -12
- package/src/math/HexCoordinates.ts +0 -863
- package/src/math/Matrix4.ts +0 -25
- package/src/math/Quaternion.ts +0 -37
- package/src/math/SpatialIndex.ts +0 -114
- package/src/math/Vector3.ts +0 -540
- package/src/note-adapter.ts +0 -132
- package/src/ontology-adapter.ts +0 -84
- package/src/stores/uiStore.ts +0 -85
- package/src/types/index.ts +0 -3
- package/src/types/shared-utils.d.ts +0 -10
- package/src/types/wgsl.d.ts +0 -4
- package/src/types.ts +0 -164
- package/src/utils/image-utils.ts +0 -28
- package/src/wasm/HexGridWasmWrapper.ts +0 -801
- package/src/webgpu/WebGPUContext.ts +0 -71
- package/src/webgpu/shaders/fluid_sim.wgsl +0 -140
- package/src/webnn/WebNNContext.ts +0 -99
- package/src/workers/hexgrid-math.ts +0 -182
- package/src/workers/hexgrid-worker.worker.ts +0 -2781
- package/tsconfig.json +0 -26
- /package/{src/stores/index.ts → dist/stores/index.js} +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter for Zero-Copy Data Sync between Dash 2.0 and HexGrid-3D.
|
|
3
|
+
*
|
|
4
|
+
* This adapter subscribes to a Dash "LiveQuery" which returns pointers to shared memory (SharedArrayBuffer)
|
|
5
|
+
* or Float32Arrays. It then syncs this data directly to the HexGridWasm instance.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DashAdapter {
|
|
8
|
+
private dash;
|
|
9
|
+
constructor(dashInstance: any);
|
|
10
|
+
/**
|
|
11
|
+
* Subscribe to a semantic query in Dash and sync results to HexGrid.
|
|
12
|
+
*
|
|
13
|
+
* @param query The vector search query
|
|
14
|
+
* @param gridInstance The WASM instance of the HexGrid
|
|
15
|
+
*/
|
|
16
|
+
bindSemanticSearch(query: string, particleSystem: any): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=DashAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/DashAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAM;gBAEN,YAAY,EAAE,GAAG;IAI7B;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG;CA6BtD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter for Zero-Copy Data Sync between Dash 2.0 and HexGrid-3D.
|
|
3
|
+
*
|
|
4
|
+
* This adapter subscribes to a Dash "LiveQuery" which returns pointers to shared memory (SharedArrayBuffer)
|
|
5
|
+
* or Float32Arrays. It then syncs this data directly to the HexGridWasm instance.
|
|
6
|
+
*/
|
|
7
|
+
export class DashAdapter {
|
|
8
|
+
constructor(dashInstance) {
|
|
9
|
+
this.dash = dashInstance;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Subscribe to a semantic query in Dash and sync results to HexGrid.
|
|
13
|
+
*
|
|
14
|
+
* @param query The vector search query
|
|
15
|
+
* @param gridInstance The WASM instance of the HexGrid
|
|
16
|
+
*/
|
|
17
|
+
bindSemanticSearch(query, particleSystem) {
|
|
18
|
+
console.log('[DashAdapter] Binding semantic search:', query);
|
|
19
|
+
// Hypothetical Zero-Copy API from Dash 2.0
|
|
20
|
+
if (this.dash.liveQueryPtr) {
|
|
21
|
+
this.dash.liveQueryPtr(`SELECT embedding FROM dash_vec_idx WHERE embedding MATCH '${query}'`).subscribe((handle) => {
|
|
22
|
+
console.log(`[DashAdapter] Received ${handle.size} bytes from Dash.`);
|
|
23
|
+
// Assume the handle.buffer contains [pos, color, scale] interleaved or tightly packed
|
|
24
|
+
// For this MVP, we treat it as just positions
|
|
25
|
+
const floatView = new Float32Array(handle.buffer);
|
|
26
|
+
// Zero-Copy Injection logic would go here
|
|
27
|
+
// We can't strictly "inject" one buffer into 3 separate Float32Arrays unless they are contiguous in the SAB
|
|
28
|
+
// or we create views into offsets.
|
|
29
|
+
// Hypothetical offset logic:
|
|
30
|
+
const count = handle.size / 4 / 7; // pos + color + scale = 3+3+1 = 7 floats
|
|
31
|
+
// particleSystem.setSharedBuffers({
|
|
32
|
+
// positions: floatView.subarray(0, count * 3),
|
|
33
|
+
// colors: floatView.subarray(count * 3, count * 6),
|
|
34
|
+
// scales: floatView.subarray(count * 6, count * 7)
|
|
35
|
+
// });
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.warn('[DashAdapter] Dash instance does not support Zero-Copy liveQueryPtr yet.');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe adapter pattern for converting domain objects to GridItems
|
|
3
|
+
*/
|
|
4
|
+
import type { GridItem } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Options for adapter conversion
|
|
7
|
+
*/
|
|
8
|
+
export interface AdapterOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Custom velocity calculation override
|
|
11
|
+
*/
|
|
12
|
+
velocity?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Custom visual URL override
|
|
15
|
+
*/
|
|
16
|
+
visualUrl?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Additional metadata to merge
|
|
19
|
+
*/
|
|
20
|
+
metadata?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Type-safe adapter for converting domain objects to GridItems
|
|
24
|
+
*/
|
|
25
|
+
export interface ItemAdapter<T> {
|
|
26
|
+
/**
|
|
27
|
+
* Convert a domain object to a GridItem
|
|
28
|
+
*/
|
|
29
|
+
toGridItem(data: T, options?: AdapterOptions): GridItem<T>;
|
|
30
|
+
/**
|
|
31
|
+
* Extract the original domain object from a GridItem
|
|
32
|
+
*/
|
|
33
|
+
fromGridItem(item: GridItem<T>): T;
|
|
34
|
+
/**
|
|
35
|
+
* Calculate velocity for the item (optional)
|
|
36
|
+
*/
|
|
37
|
+
calculateVelocity?(data: T): number;
|
|
38
|
+
/**
|
|
39
|
+
* Extract visual URL for the item (optional)
|
|
40
|
+
*/
|
|
41
|
+
extractVisualUrl?(data: T): string | undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Helper to create adapters for common patterns
|
|
45
|
+
*/
|
|
46
|
+
export declare function createAdapter<T>(config: {
|
|
47
|
+
type: string;
|
|
48
|
+
toGridItem: (data: T, options?: AdapterOptions) => GridItem<T>;
|
|
49
|
+
fromGridItem: (item: GridItem<T>) => T;
|
|
50
|
+
calculateVelocity?: (data: T) => number;
|
|
51
|
+
extractVisualUrl?: (data: T) => string | undefined;
|
|
52
|
+
}): ItemAdapter<T>;
|
|
53
|
+
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC;;OAEG;IACH,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IACpC;;OAEG;IACH,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IACxC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;CACpD,GAAG,WAAW,CAAC,CAAC,CAAC,CAOjB"}
|
package/dist/adapters.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe adapter pattern for converting domain objects to GridItems
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Helper to create adapters for common patterns
|
|
6
|
+
*/
|
|
7
|
+
export function createAdapter(config) {
|
|
8
|
+
return {
|
|
9
|
+
toGridItem: config.toGridItem,
|
|
10
|
+
fromGridItem: config.fromGridItem,
|
|
11
|
+
calculateVelocity: config.calculateVelocity,
|
|
12
|
+
extractVisualUrl: config.extractVisualUrl,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export interface TrendResult {
|
|
2
|
+
slope: number;
|
|
3
|
+
direction: 'increasing' | 'decreasing' | 'stable';
|
|
4
|
+
rSquared?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function giniCoefficient(values: number[]): number;
|
|
7
|
+
export declare function theilIndex(values: number[]): number;
|
|
8
|
+
export declare function atkinsonIndex(values: number[], epsilon: number): number;
|
|
9
|
+
export declare function paretoRatio(values: number[], topFraction: number): {
|
|
10
|
+
ratioHeld: number;
|
|
11
|
+
paretoIndex: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function zipfCoefficient(values: number[]): number;
|
|
14
|
+
export declare function herfindahlIndex(values: number[]): number;
|
|
15
|
+
export declare function shannonEntropy(values: number[]): number;
|
|
16
|
+
export declare function normalizedEntropy(values: number[]): number;
|
|
17
|
+
export declare function renyiEntropy(values: number[], alpha: number): number;
|
|
18
|
+
export declare function tsallisEntropy(values: number[], q: number): number;
|
|
19
|
+
export declare function detectTrend(values: number[]): TrendResult;
|
|
20
|
+
export declare function detectChangePoints(values: number[]): number[];
|
|
21
|
+
export declare function movingAverage(values: number[], windowSize: number): number[];
|
|
22
|
+
export declare function exponentialMovingAverage(values: number[], alpha: number): number[];
|
|
23
|
+
export declare function predictWinner(values: number[]): number;
|
|
24
|
+
export declare function sparkline(values: number[]): string;
|
|
25
|
+
export declare function sparklineSvg(values: number[], width?: number, height?: number): string;
|
|
26
|
+
export declare function klDivergence(p: number[], q: number[]): number;
|
|
27
|
+
export declare function jsDivergence(p: number[], q: number[]): number;
|
|
28
|
+
export declare function bhattacharyyaCoefficient(p: number[], q: number[]): number;
|
|
29
|
+
export declare function hellingerDistance(p: number[], q: number[]): number;
|
|
30
|
+
export declare function doubleExponentialSmoothing(values: number[], alpha?: number, beta?: number): number[];
|
|
31
|
+
export declare function eulerCharacteristic(vertices: number, edges: number, faces: number): number;
|
|
32
|
+
export declare function estimateBettiNumbers(complex: {
|
|
33
|
+
vertices: number;
|
|
34
|
+
edges: number;
|
|
35
|
+
faces: number;
|
|
36
|
+
}): {
|
|
37
|
+
b0: number;
|
|
38
|
+
b1: number;
|
|
39
|
+
};
|
|
40
|
+
export declare function compactness(area: number, perimeter: number): number;
|
|
41
|
+
export interface TerritoryStats {
|
|
42
|
+
totalTerritories: number;
|
|
43
|
+
averageSize: number;
|
|
44
|
+
largestTerritory: number;
|
|
45
|
+
smallestTerritory: number;
|
|
46
|
+
compactness: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function computeTerritoryStats(territories: Array<{
|
|
49
|
+
area: number;
|
|
50
|
+
perimeter: number;
|
|
51
|
+
}>): TerritoryStats;
|
|
52
|
+
//# sourceMappingURL=AdvancedStatistics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdvancedStatistics.d.ts","sourceRoot":"","sources":["../../src/algorithms/AdvancedStatistics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
export function giniCoefficient(values) {
|
|
2
|
+
if (values.length === 0)
|
|
3
|
+
return 0;
|
|
4
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
5
|
+
const total = sorted.reduce((sum, val) => sum + val, 0);
|
|
6
|
+
if (total === 0)
|
|
7
|
+
return 0;
|
|
8
|
+
const n = sorted.length;
|
|
9
|
+
let cumulative = 0;
|
|
10
|
+
for (let i = 0; i < n; i++) {
|
|
11
|
+
cumulative += (i + 1) * sorted[i];
|
|
12
|
+
}
|
|
13
|
+
return (2 * cumulative) / (n * total) - (n + 1) / n;
|
|
14
|
+
}
|
|
15
|
+
export function theilIndex(values) {
|
|
16
|
+
if (values.length === 0)
|
|
17
|
+
return 0;
|
|
18
|
+
const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
|
|
19
|
+
if (avg === 0)
|
|
20
|
+
return 0;
|
|
21
|
+
return (values.reduce((sum, val) => {
|
|
22
|
+
const ratio = val / avg;
|
|
23
|
+
return sum + (ratio === 0 ? 0 : ratio * Math.log(ratio));
|
|
24
|
+
}, 0) / values.length);
|
|
25
|
+
}
|
|
26
|
+
export function atkinsonIndex(values, epsilon) {
|
|
27
|
+
if (values.length === 0)
|
|
28
|
+
return 0;
|
|
29
|
+
const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
|
|
30
|
+
if (avg === 0)
|
|
31
|
+
return 0;
|
|
32
|
+
if (epsilon === 1) {
|
|
33
|
+
const geomMean = Math.exp(values.reduce((sum, val) => sum + Math.log(Math.max(val, 1e-9)), 0) /
|
|
34
|
+
values.length);
|
|
35
|
+
return 1 - geomMean / avg;
|
|
36
|
+
}
|
|
37
|
+
const meanPower = values.reduce((sum, val) => sum + Math.pow(val, 1 - epsilon), 0) /
|
|
38
|
+
values.length;
|
|
39
|
+
const eq = Math.pow(meanPower, 1 / (1 - epsilon));
|
|
40
|
+
return 1 - eq / avg;
|
|
41
|
+
}
|
|
42
|
+
export function paretoRatio(values, topFraction) {
|
|
43
|
+
if (values.length === 0)
|
|
44
|
+
return { ratioHeld: 0, paretoIndex: 0 };
|
|
45
|
+
const sorted = [...values].sort((a, b) => b - a);
|
|
46
|
+
const total = sorted.reduce((sum, val) => sum + val, 0);
|
|
47
|
+
if (total === 0)
|
|
48
|
+
return { ratioHeld: 0, paretoIndex: 0 };
|
|
49
|
+
const topCount = Math.max(1, Math.floor(values.length * topFraction));
|
|
50
|
+
const topSum = sorted.slice(0, topCount).reduce((sum, val) => sum + val, 0);
|
|
51
|
+
return { ratioHeld: topSum / total, paretoIndex: topFraction };
|
|
52
|
+
}
|
|
53
|
+
export function zipfCoefficient(values) {
|
|
54
|
+
if (values.length === 0)
|
|
55
|
+
return 0;
|
|
56
|
+
const sorted = [...values].sort((a, b) => b - a);
|
|
57
|
+
const total = sorted.reduce((sum, val) => sum + val, 0);
|
|
58
|
+
if (total === 0)
|
|
59
|
+
return 0;
|
|
60
|
+
return sorted.reduce((sum, val, idx) => sum + val / (idx + 1), 0) / total;
|
|
61
|
+
}
|
|
62
|
+
export function herfindahlIndex(values) {
|
|
63
|
+
if (values.length === 0)
|
|
64
|
+
return 0;
|
|
65
|
+
const total = values.reduce((sum, val) => sum + val, 0);
|
|
66
|
+
if (total === 0)
|
|
67
|
+
return 0;
|
|
68
|
+
return values.reduce((sum, val) => {
|
|
69
|
+
const share = val / total;
|
|
70
|
+
return sum + share * share;
|
|
71
|
+
}, 0);
|
|
72
|
+
}
|
|
73
|
+
export function shannonEntropy(values) {
|
|
74
|
+
if (values.length === 0)
|
|
75
|
+
return 0;
|
|
76
|
+
const total = values.reduce((sum, val) => sum + val, 0);
|
|
77
|
+
if (total === 0)
|
|
78
|
+
return 0;
|
|
79
|
+
return values.reduce((sum, val) => {
|
|
80
|
+
const p = val / total;
|
|
81
|
+
return p === 0 ? sum : sum - p * Math.log2(p);
|
|
82
|
+
}, 0);
|
|
83
|
+
}
|
|
84
|
+
export function normalizedEntropy(values) {
|
|
85
|
+
if (values.length === 0)
|
|
86
|
+
return 0;
|
|
87
|
+
const entropy = shannonEntropy(values);
|
|
88
|
+
const maxEntropy = Math.log2(values.length || 1);
|
|
89
|
+
return maxEntropy === 0 ? 0 : entropy / maxEntropy;
|
|
90
|
+
}
|
|
91
|
+
export function renyiEntropy(values, alpha) {
|
|
92
|
+
if (values.length === 0)
|
|
93
|
+
return 0;
|
|
94
|
+
const total = values.reduce((sum, val) => sum + val, 0);
|
|
95
|
+
if (total === 0)
|
|
96
|
+
return 0;
|
|
97
|
+
const sum = values.reduce((acc, val) => {
|
|
98
|
+
const p = val / total;
|
|
99
|
+
return acc + Math.pow(p, alpha);
|
|
100
|
+
}, 0);
|
|
101
|
+
return (1 / (1 - alpha)) * Math.log2(sum || 1);
|
|
102
|
+
}
|
|
103
|
+
export function tsallisEntropy(values, q) {
|
|
104
|
+
if (values.length === 0)
|
|
105
|
+
return 0;
|
|
106
|
+
const total = values.reduce((sum, val) => sum + val, 0);
|
|
107
|
+
if (total === 0)
|
|
108
|
+
return 0;
|
|
109
|
+
const sum = values.reduce((acc, val) => {
|
|
110
|
+
const p = val / total;
|
|
111
|
+
return acc + Math.pow(p, q);
|
|
112
|
+
}, 0);
|
|
113
|
+
return (1 - sum) / (q - 1);
|
|
114
|
+
}
|
|
115
|
+
export function detectTrend(values) {
|
|
116
|
+
if (values.length < 2) {
|
|
117
|
+
return { slope: 0, direction: 'stable', rSquared: 0 };
|
|
118
|
+
}
|
|
119
|
+
const n = values.length;
|
|
120
|
+
const xMean = (n - 1) / 2;
|
|
121
|
+
const yMean = values.reduce((sum, v) => sum + v, 0) / n;
|
|
122
|
+
let num = 0;
|
|
123
|
+
let den = 0;
|
|
124
|
+
let ssRes = 0;
|
|
125
|
+
let ssTot = 0;
|
|
126
|
+
for (let i = 0; i < n; i++) {
|
|
127
|
+
const dx = i - xMean;
|
|
128
|
+
num += dx * (values[i] - yMean);
|
|
129
|
+
den += dx * dx;
|
|
130
|
+
}
|
|
131
|
+
const slope = den === 0 ? 0 : num / den;
|
|
132
|
+
const intercept = yMean - slope * xMean;
|
|
133
|
+
// Calculate R-squared
|
|
134
|
+
for (let i = 0; i < n; i++) {
|
|
135
|
+
const predicted = slope * i + intercept;
|
|
136
|
+
ssRes += Math.pow(values[i] - predicted, 2);
|
|
137
|
+
ssTot += Math.pow(values[i] - yMean, 2);
|
|
138
|
+
}
|
|
139
|
+
const rSquared = ssTot === 0 ? 0 : 1 - ssRes / ssTot;
|
|
140
|
+
const direction = slope > 0.1 ? 'increasing' : slope < -0.1 ? 'decreasing' : 'stable';
|
|
141
|
+
return { slope, direction, rSquared };
|
|
142
|
+
}
|
|
143
|
+
export function detectChangePoints(values) {
|
|
144
|
+
if (values.length < 3)
|
|
145
|
+
return [];
|
|
146
|
+
const changes = [];
|
|
147
|
+
const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
|
|
148
|
+
const variance = values.reduce((sum, val) => sum + (val - avg) ** 2, 0) / values.length;
|
|
149
|
+
const threshold = Math.sqrt(variance) * 1.5;
|
|
150
|
+
for (let i = 1; i < values.length; i++) {
|
|
151
|
+
if (Math.abs(values[i] - values[i - 1]) > threshold) {
|
|
152
|
+
changes.push(i);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return changes;
|
|
156
|
+
}
|
|
157
|
+
export function movingAverage(values, windowSize) {
|
|
158
|
+
if (values.length === 0)
|
|
159
|
+
return [];
|
|
160
|
+
const result = [];
|
|
161
|
+
for (let i = 0; i < values.length; i++) {
|
|
162
|
+
const start = Math.max(0, i - windowSize + 1);
|
|
163
|
+
const window = values.slice(start, i + 1);
|
|
164
|
+
const avg = window.reduce((sum, val) => sum + val, 0) / window.length;
|
|
165
|
+
result.push(avg);
|
|
166
|
+
}
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
export function exponentialMovingAverage(values, alpha) {
|
|
170
|
+
if (values.length === 0)
|
|
171
|
+
return [];
|
|
172
|
+
const result = [];
|
|
173
|
+
let current = values[0] ?? 0;
|
|
174
|
+
result.push(current);
|
|
175
|
+
for (let i = 1; i < values.length; i++) {
|
|
176
|
+
current = alpha * values[i] + (1 - alpha) * current;
|
|
177
|
+
result.push(current);
|
|
178
|
+
}
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
export function predictWinner(values) {
|
|
182
|
+
if (values.length === 0)
|
|
183
|
+
return 0;
|
|
184
|
+
const max = Math.max(...values);
|
|
185
|
+
return values.indexOf(max);
|
|
186
|
+
}
|
|
187
|
+
export function sparkline(values) {
|
|
188
|
+
if (values.length === 0)
|
|
189
|
+
return '';
|
|
190
|
+
const min = Math.min(...values);
|
|
191
|
+
const max = Math.max(...values);
|
|
192
|
+
const range = max - min || 1;
|
|
193
|
+
const ticks = '▁▂▃▄▅▆▇█';
|
|
194
|
+
return values
|
|
195
|
+
.map((value) => {
|
|
196
|
+
const idx = Math.round(((value - min) / range) * (ticks.length - 1));
|
|
197
|
+
return ticks[idx] ?? ticks[0];
|
|
198
|
+
})
|
|
199
|
+
.join('');
|
|
200
|
+
}
|
|
201
|
+
export function sparklineSvg(values, width = 100, height = 20) {
|
|
202
|
+
if (values.length === 0)
|
|
203
|
+
return '';
|
|
204
|
+
const min = Math.min(...values);
|
|
205
|
+
const max = Math.max(...values);
|
|
206
|
+
const range = max - min || 1;
|
|
207
|
+
const step = width / Math.max(1, values.length - 1);
|
|
208
|
+
return values
|
|
209
|
+
.map((value, index) => {
|
|
210
|
+
const x = index * step;
|
|
211
|
+
const y = height - ((value - min) / range) * height;
|
|
212
|
+
return `${index === 0 ? 'M' : 'L'}${x},${y}`;
|
|
213
|
+
})
|
|
214
|
+
.join(' ');
|
|
215
|
+
}
|
|
216
|
+
// KL Divergence (Kullback-Leibler)
|
|
217
|
+
export function klDivergence(p, q) {
|
|
218
|
+
if (p.length !== q.length || p.length === 0)
|
|
219
|
+
return 0;
|
|
220
|
+
return p.reduce((sum, pi, i) => {
|
|
221
|
+
if (pi === 0)
|
|
222
|
+
return sum;
|
|
223
|
+
const qi = q[i] ?? 1e-10;
|
|
224
|
+
return sum + pi * Math.log2(pi / qi);
|
|
225
|
+
}, 0);
|
|
226
|
+
}
|
|
227
|
+
// JS Divergence (Jensen-Shannon)
|
|
228
|
+
export function jsDivergence(p, q) {
|
|
229
|
+
if (p.length !== q.length || p.length === 0)
|
|
230
|
+
return 0;
|
|
231
|
+
const m = p.map((pi, i) => (pi + (q[i] ?? 0)) / 2);
|
|
232
|
+
return (klDivergence(p, m) + klDivergence(q, m)) / 2;
|
|
233
|
+
}
|
|
234
|
+
// Bhattacharyya Coefficient
|
|
235
|
+
export function bhattacharyyaCoefficient(p, q) {
|
|
236
|
+
if (p.length !== q.length || p.length === 0)
|
|
237
|
+
return 0;
|
|
238
|
+
return p.reduce((sum, pi, i) => {
|
|
239
|
+
const qi = q[i] ?? 0;
|
|
240
|
+
return sum + Math.sqrt(pi * qi);
|
|
241
|
+
}, 0);
|
|
242
|
+
}
|
|
243
|
+
// Hellinger Distance
|
|
244
|
+
export function hellingerDistance(p, q) {
|
|
245
|
+
if (p.length !== q.length || p.length === 0)
|
|
246
|
+
return 0;
|
|
247
|
+
const bc = bhattacharyyaCoefficient(p, q);
|
|
248
|
+
return Math.sqrt(1 - bc);
|
|
249
|
+
}
|
|
250
|
+
// Double Exponential Smoothing (Holt's method)
|
|
251
|
+
export function doubleExponentialSmoothing(values, alpha = 0.3, beta = 0.1) {
|
|
252
|
+
if (values.length === 0)
|
|
253
|
+
return [];
|
|
254
|
+
const result = [];
|
|
255
|
+
let level = values[0] ?? 0;
|
|
256
|
+
let trend = 0;
|
|
257
|
+
result.push(level);
|
|
258
|
+
for (let i = 1; i < values.length; i++) {
|
|
259
|
+
const prevLevel = level;
|
|
260
|
+
level = alpha * values[i] + (1 - alpha) * (level + trend);
|
|
261
|
+
trend = beta * (level - prevLevel) + (1 - beta) * trend;
|
|
262
|
+
result.push(level + trend);
|
|
263
|
+
}
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
// Euler Characteristic (simplified for 2D)
|
|
267
|
+
export function eulerCharacteristic(vertices, edges, faces) {
|
|
268
|
+
return vertices - edges + faces;
|
|
269
|
+
}
|
|
270
|
+
// Estimate Betti Numbers (simplified - returns basic topological invariants)
|
|
271
|
+
export function estimateBettiNumbers(complex) {
|
|
272
|
+
const euler = eulerCharacteristic(complex.vertices, complex.edges, complex.faces);
|
|
273
|
+
// Simplified: b0 = number of connected components (assume 1 for now)
|
|
274
|
+
// b1 = edges - vertices + 1 (for a connected graph)
|
|
275
|
+
const b0 = 1;
|
|
276
|
+
const b1 = Math.max(0, complex.edges - complex.vertices + 1);
|
|
277
|
+
return { b0, b1 };
|
|
278
|
+
}
|
|
279
|
+
// Compactness measure
|
|
280
|
+
export function compactness(area, perimeter) {
|
|
281
|
+
if (perimeter === 0)
|
|
282
|
+
return 0;
|
|
283
|
+
// 4π * area / perimeter^2 (circularity measure)
|
|
284
|
+
return (4 * Math.PI * area) / (perimeter * perimeter);
|
|
285
|
+
}
|
|
286
|
+
export function computeTerritoryStats(territories) {
|
|
287
|
+
if (territories.length === 0) {
|
|
288
|
+
return {
|
|
289
|
+
totalTerritories: 0,
|
|
290
|
+
averageSize: 0,
|
|
291
|
+
largestTerritory: 0,
|
|
292
|
+
smallestTerritory: 0,
|
|
293
|
+
compactness: 0,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
const sizes = territories.map((t) => t.area);
|
|
297
|
+
const totalSize = sizes.reduce((sum, s) => sum + s, 0);
|
|
298
|
+
const avgCompactness = territories.reduce((sum, t) => sum + compactness(t.area, t.perimeter), 0) /
|
|
299
|
+
territories.length;
|
|
300
|
+
return {
|
|
301
|
+
totalTerritories: territories.length,
|
|
302
|
+
averageSize: totalSize / territories.length,
|
|
303
|
+
largestTerritory: Math.max(...sizes),
|
|
304
|
+
smallestTerritory: Math.min(...sizes),
|
|
305
|
+
compactness: avgCompactness,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export declare class BetaDistribution {
|
|
2
|
+
alpha: number;
|
|
3
|
+
beta: number;
|
|
4
|
+
constructor(alpha: number, beta: number);
|
|
5
|
+
mean(): number;
|
|
6
|
+
variance(): number;
|
|
7
|
+
}
|
|
8
|
+
export declare class MarkovChain {
|
|
9
|
+
private transitions;
|
|
10
|
+
addTransition(from: string, to: string): void;
|
|
11
|
+
probabilities(from: string): Array<{
|
|
12
|
+
to: string;
|
|
13
|
+
probability: number;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare class KalmanFilter {
|
|
17
|
+
private state;
|
|
18
|
+
private uncertainty;
|
|
19
|
+
private processNoise;
|
|
20
|
+
private measurementNoise;
|
|
21
|
+
constructor(initialState: number, initialUncertainty: number, processNoise: number, measurementNoise: number);
|
|
22
|
+
update(measurement: number): void;
|
|
23
|
+
step(): number;
|
|
24
|
+
predict(steps?: number): number;
|
|
25
|
+
forecast(steps: number): {
|
|
26
|
+
predictions: number[];
|
|
27
|
+
uncertainties: number[];
|
|
28
|
+
};
|
|
29
|
+
getState(): number;
|
|
30
|
+
getUncertainty(): number;
|
|
31
|
+
}
|
|
32
|
+
export declare function bayesianWinProbability(wins: number, losses: number): number;
|
|
33
|
+
export declare function bayesianConquestRate(successes: number, trials: number): number;
|
|
34
|
+
export declare function bayesianChangepoint(values: number[]): number;
|
|
35
|
+
export interface ProbabilitySnapshot {
|
|
36
|
+
probabilities: Array<{
|
|
37
|
+
label: string;
|
|
38
|
+
probability: number;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
export declare function generateProbabilitySnapshot(labels: string[]): ProbabilitySnapshot;
|
|
42
|
+
export declare class DirichletDistribution {
|
|
43
|
+
private alphas;
|
|
44
|
+
constructor(alphas: number[]);
|
|
45
|
+
mean(): number[];
|
|
46
|
+
}
|
|
47
|
+
export declare class NormalDistribution {
|
|
48
|
+
private mean;
|
|
49
|
+
private variance;
|
|
50
|
+
constructor(mean: number, variance: number);
|
|
51
|
+
sample(): number;
|
|
52
|
+
}
|
|
53
|
+
export declare class PoissonDistribution {
|
|
54
|
+
private lambda;
|
|
55
|
+
constructor(lambda: number);
|
|
56
|
+
sample(): number;
|
|
57
|
+
}
|
|
58
|
+
export declare class ExponentialDistribution {
|
|
59
|
+
private lambda;
|
|
60
|
+
constructor(lambda: number);
|
|
61
|
+
sample(): number;
|
|
62
|
+
}
|
|
63
|
+
export declare class HiddenMarkovModel {
|
|
64
|
+
private states;
|
|
65
|
+
private transitions;
|
|
66
|
+
private emissions;
|
|
67
|
+
constructor(states: string[]);
|
|
68
|
+
addTransition(from: string, to: string, probability: number): void;
|
|
69
|
+
addEmission(state: string, observation: string, probability: number): void;
|
|
70
|
+
}
|
|
71
|
+
export declare function bayesianABTest(successA: number, trialsA: number, successB: number, trialsB: number): number;
|
|
72
|
+
export declare function bayesFactor(priorOdds: number, likelihoodRatio: number): number;
|
|
73
|
+
export declare function mapEstimate(data: number[], prior: {
|
|
74
|
+
alpha: number;
|
|
75
|
+
beta: number;
|
|
76
|
+
}): number;
|
|
77
|
+
export declare function learnMarkovChain(sequence: string[]): MarkovChain;
|
|
78
|
+
export declare function bootstrapConfidenceInterval(data: number[], iterations?: number, confidence?: number): {
|
|
79
|
+
lower: number;
|
|
80
|
+
upper: number;
|
|
81
|
+
};
|
|
82
|
+
export declare function monteCarloIntegrate(fn: (x: number) => number, a: number, b: number, samples?: number): number;
|
|
83
|
+
export declare function mutualInformation(x: number[], y: number[]): number;
|
|
84
|
+
export declare function conditionalEntropy(x: number[], y: number[]): number;
|
|
85
|
+
export declare function normalizedMutualInformation(x: number[], y: number[]): number;
|
|
86
|
+
//# sourceMappingURL=BayesianStatistics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BayesianStatistics.d.ts","sourceRoot":"","sources":["../../src/algorithms/BayesianStatistics.ts"],"names":[],"mappings":"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"}
|