libsvm_rs/lib.rs
1//! # libsvm-rs
2//!
3//! A pure Rust reimplementation of [LIBSVM](https://github.com/cjlin1/libsvm),
4//! targeting numerical equivalence and model-file compatibility with the
5//! original C++ library.
6//!
7//! ## Status
8//!
9//! **Phases 0–4 complete**: types, I/O, kernels, cache, prediction, full
10//! SMO solver, probability estimates (Platt scaling), and cross-validation.
11//! Training works for all 5 SVM types (C-SVC, ν-SVC, one-class, ε-SVR,
12//! ν-SVR). See [`train::svm_train`] for training, [`predict::predict`]
13//! for inference, and [`predict::predict_probability`] for probabilistic
14//! outputs.
15//!
16//! ## Feature Flags
17//!
18//! - `rayon` — Enable parallel cross-validation (off by default).
19
20use std::sync::atomic::{AtomicBool, Ordering};
21
22static QUIET_MODE: AtomicBool = AtomicBool::new(false);
23
24/// Enable or disable quiet mode. When quiet, solver diagnostic messages
25/// are suppressed (equivalent to LIBSVM's `-q` flag).
26pub fn set_quiet(quiet: bool) {
27 QUIET_MODE.store(quiet, Ordering::Relaxed);
28}
29
30/// Print an info message to stderr (suppressed in quiet mode).
31pub(crate) fn info(msg: &str) {
32 if !QUIET_MODE.load(Ordering::Relaxed) {
33 eprint!("{}", msg);
34 }
35}
36
37pub mod cache;
38pub mod error;
39pub mod io;
40pub mod kernel;
41pub mod qmatrix;
42pub mod solver;
43pub mod train;
44pub mod types;
45
46pub mod cross_validation;
47pub mod predict;
48pub mod probability;
49
50pub use error::SvmError;
51pub use types::*;