u_insight/lib.rs
1//! # u-insight
2//!
3//! Statistical analysis and data profiling engine with C FFI bindings.
4//!
5//! u-insight transforms raw tabular data into actionable statistical
6//! insights. It operates in two distinct layers:
7//!
8//! - **Profiling** — tolerates dirty data, reports data quality and statistics
9//! - **Analysis** — requires clean data, discovers patterns and relationships
10//!
11//! ## Modules
12//!
13//! - [`dataframe`] — Column-major tabular data model (DataFrame, Column, DataType)
14//! - [`csv_parser`] — CSV parsing with automatic type inference
15//! - [`json_parser`] — JSON parsing with automatic type inference
16//! - [`profiling`] — Column-level and dataset-level data profiling
17//! - [`analysis`] — Correlation (Pearson/Spearman), regression (simple/multiple OLS), Cramér's V
18//! - [`clustering`] — K-Means++ (auto-K, Gap Statistic), Mini-Batch K-Means, DBSCAN, Hierarchical (4 linkages), HDBSCAN
19//! - [`distribution`] — ECDF, histogram, QQ-plot, normality tests (KS, JB, Shapiro-Wilk, Anderson-Darling), Grubbs, distribution fitting
20//! - [`pca`] — Principal Component Analysis (dimensionality reduction)
21//! - [`isolation_forest`] — Isolation Forest anomaly detection (Liu et al. 2008)
22//! - [`lof`] — Local Outlier Factor (LOF) density-based anomaly detection
23//! - [`mahalanobis`] — Mahalanobis distance multivariate outlier detection
24//! - [`feature_importance`] — Composite importance, ANOVA F-test, Mutual Information, Permutation Importance
25//! - [`ffi`] — C FFI bindings (32 functions, 20 structs, auto-generated C header via cbindgen)
26//! - [`error`] — Error types
27//!
28//! ## Quick Start
29//!
30//! ```
31//! use u_insight::csv_parser::CsvParser;
32//! use u_insight::dataframe::DataType;
33//!
34//! let csv = "name,value,active\nAlice,1.5,true\nBob,2.3,false\nCharlie,3.1,true\n";
35//! let df = CsvParser::new().parse_str(csv).unwrap();
36//!
37//! assert_eq!(df.row_count(), 3);
38//! assert_eq!(df.column_count(), 3);
39//!
40//! // Type inference: name=Text, value=Numeric, active=Boolean
41//! let schema = df.schema();
42//! assert_eq!(schema[1].1, DataType::Numeric);
43//! assert_eq!(schema[2].1, DataType::Boolean);
44//! ```
45
46pub mod analysis;
47pub mod clustering;
48pub mod csv_parser;
49pub mod dataframe;
50pub mod distribution;
51pub mod error;
52pub mod feature_importance;
53#[cfg(not(target_arch = "wasm32"))]
54pub mod ffi;
55pub mod isolation_forest;
56pub mod json_parser;
57pub mod lof;
58pub mod mahalanobis;
59pub mod pca;
60pub mod profiling;
61
62#[cfg(feature = "wasm")]
63pub mod wasm;