Skip to main content

fdars_core/
lib.rs

1//! # fdars-core
2//!
3//! Core algorithms for Functional Data Analysis in Rust.
4//!
5//! This crate provides pure Rust implementations of various FDA methods including:
6//! - Functional data operations (mean, derivatives, norms)
7//! - Depth measures (Fraiman-Muniz, modal, band, random projection, etc.)
8//! - Distance metrics (Lp, Hausdorff, DTW, Fourier, etc.)
9//! - Basis representations (B-splines, P-splines, Fourier)
10//! - Clustering (k-means, fuzzy c-means)
11//! - Smoothing (Nadaraya-Watson, local linear/polynomial regression)
12//! - Outlier detection
13//! - Regression (PCA, PLS, ridge)
14//! - Seasonal analysis (period estimation, peak detection, seasonal strength)
15//! - Detrending and decomposition for non-stationary data
16//!
17//! ## Imports
18//!
19//! Items are organized into domain-specific submodules. Prefer importing from
20//! the submodule for clarity:
21//!
22//! ```rust,no_run
23//! use fdars_core::matrix::FdMatrix;
24//! use fdars_core::alignment::{karcher_mean, elastic_align_pair, AlignmentOutput};
25//! use fdars_core::spm::{spm_phase1, spm_monitor, SpmConfig};
26//! use fdars_core::regression::fdata_to_pc_1d;
27//! use fdars_core::scalar_on_function::{fregre_lm, fregre_pls};
28//! use fdars_core::cv::{cv_fdata_with_metrics, regression_metrics};
29//! use fdars_core::distance::pairwise_distance_matrix;
30//! ```
31//!
32//! All public items are also re-exported at the crate root for convenience:
33//! ```rust,no_run
34//! use fdars_core::{FdMatrix, karcher_mean, spm_phase1, fdata_to_pc_1d};
35//! ```
36//!
37//! The [`prelude`] module provides the most commonly used types:
38//! ```rust,no_run
39//! use fdars_core::prelude::*;
40//! ```
41//!
42//! ## Feature Flags
43//!
44//! | Feature | Default | Description |
45//! |---------|---------|-------------|
46//! | `parallel` | **yes** | Enables rayon-based parallelism via `iter_maybe_parallel!` macro |
47//! | `linalg` | no | Enables `faer` and `anofox-regression` dependencies (requires Rust 1.84+). Gates `ridge_regression_fit`. Not WASM-compatible. |
48//! | `serde` | no | Adds `Serialize`/`Deserialize` to core types (`FdMatrix`, `FpcaResult`, `SpmChart`, etc.) and enables `serde_json::Value` in `ExplainLayer.extra`. |
49//! | `js` | no | Enables `getrandom/js` for WASM builds. |
50//!
51//! ## Data Layout
52//!
53//! Functional data is represented using the [`FdMatrix`] type, a column-major matrix
54//! wrapping a flat `Vec<f64>` with safe `(i, j)` indexing and dimension tracking:
55//! - For n observations with m evaluation points: `data[(i, j)]` gives observation i at point j
56//! - 2D surfaces (n observations, m1 x m2 grid): stored as n x (m1*m2) matrices
57//! - Zero-copy column access via `data.column(j)`, row gather via `data.row(i)`
58//! - nalgebra interop via `to_dmatrix()` / `from_dmatrix()` for SVD operations
59
60#![allow(clippy::needless_range_loop)]
61#![allow(clippy::too_many_arguments)]
62#![allow(clippy::type_complexity)]
63
64pub mod error;
65pub(crate) mod linalg;
66pub mod matrix;
67pub mod parallel;
68
69pub use error::FdarError;
70
71#[cfg(test)]
72pub(crate) mod test_helpers;
73
74pub mod alignment;
75pub mod andrews;
76
77// Shared utility modules
78pub mod basis;
79pub mod boosting_regression;
80pub mod classification;
81pub mod clustering;
82pub mod clustering_advanced;
83pub mod coclustering;
84pub mod concurrent_regression;
85pub mod cv;
86pub mod density_fda;
87pub mod depth;
88pub mod detrend;
89pub mod distance;
90pub mod famm;
91pub mod fdata;
92pub mod fem_smoothing;
93pub mod fof_regression;
94pub mod fpca_variants;
95pub mod frechet;
96pub mod fts;
97pub mod function_on_scalar;
98pub mod function_on_scalar_2d;
99pub mod gmm;
100pub mod helpers;
101pub mod inference;
102pub mod irreg_fdata;
103pub mod landmark;
104pub mod metric;
105pub mod outliers;
106pub mod regression;
107pub mod scalar_on_function;
108pub mod seasonal;
109pub mod simulation;
110pub mod smoothing;
111pub mod streaming_depth;
112pub mod tolerance;
113pub mod utility;
114pub mod validation;
115pub mod warping;
116pub mod wire;
117
118// Covariance kernels and Gaussian processes
119pub mod covariance;
120
121// Statistical Process Monitoring
122pub mod spm;
123
124// Elastic analysis modules
125pub mod conformal;
126pub mod elastic;
127pub mod elastic_changepoint;
128pub mod elastic_explain;
129pub mod elastic_fpca;
130pub mod elastic_regression;
131pub mod explain;
132pub mod explain_generic;
133pub mod multi_fdata;
134pub mod pace_fpca;
135pub mod pda;
136pub mod prelude;
137pub mod scoring;
138pub mod smooth_basis;
139
140// Re-export matrix types
141pub use matrix::{FdCurveSet, FdMatrix};
142
143// Re-export multi-domain functional data container
144pub use multi_fdata::{FdComponent, MultiFunData};
145
146// Re-export linear differential operator and principal differential analysis
147pub use pda::{principal_differential_analysis, Lfd, PdaResult};
148
149// Re-export density-valued FDA entry points
150pub use density_fda::{
151    inverse_lqd, lqd_fpca, lqd_transform, normalize_density, wasserstein_barycenter, LqdFpcaResult,
152};
153
154// Re-export Fréchet / object-data regression types (FRE-01 + FRE-02 object spaces)
155pub use frechet::{
156    frechet_anova, frechet_anova_space, frechet_global_reg, frechet_global_reg_space,
157    frechet_local_reg, frechet_local_reg_space, frechet_mean, frechet_variance,
158    wasserstein2_distance, CorrelationMatrixSpace, FrechetAnovaResult, FrechetGlobalRegResult,
159    FrechetLocalRegResult, MetricSpace, NetworkSpace, PointProcessSpace, SpdMatrixSpace, SpdMetric,
160    SphericalSpace, WassersteinDensitySpace,
161};
162
163// Re-export Andrews curves types
164pub use andrews::{andrews_loadings, andrews_transform, AndrewsLoadings, AndrewsResult};
165
166// Re-export covariance kernel types
167pub use covariance::{
168    covariance_matrix, generate_gaussian_process, CovKernel, GaussianProcessResult,
169};
170
171// Re-export alignment types and functions
172pub use alignment::{
173    align_to_target, alignment_quality, amplitude_distance, amplitude_self_distance_matrix,
174    bayesian_align_pair, compose_warps, curve_geodesic, curve_geodesic_nd, cut_dendrogram,
175    diagnose_alignment, diagnose_pairwise, elastic_align_pair, elastic_align_pair_closed,
176    elastic_align_pair_constrained, elastic_align_pair_multires, elastic_align_pair_nd,
177    elastic_align_pair_penalized, elastic_align_pair_with_landmarks, elastic_cross_distance_matrix,
178    elastic_cross_distance_matrix_banded, elastic_cross_distance_matrix_with_band,
179    elastic_decomposition, elastic_depth, elastic_distance, elastic_distance_closed,
180    elastic_distance_nd, elastic_outlier_detection, elastic_partial_match,
181    elastic_self_distance_matrix, elastic_self_distance_matrix_banded,
182    elastic_self_distance_matrix_with_band, gauss_model, hierarchical_from_distances, horiz_fpns,
183    invert_warp, joint_gauss_model, karcher_covariance_nd, karcher_mean, karcher_mean_banded,
184    karcher_mean_closed, karcher_mean_nd, karcher_mean_with_band, karcher_median,
185    kmedoids_from_distances, lambda_cv, least_squares_score, least_squares_shift_registration,
186    orbit_representative, pairwise_consistency, pairwise_correlation_score, pca_nd,
187    peak_persistence, phase_boxplot, phase_distance_pair, phase_self_distance_matrix,
188    reparameterize_curve, robust_karcher_mean, shape_confidence_interval, shape_distance,
189    shape_mean, shape_self_distance_matrix, sobolev_least_squares_score, srsf_inverse,
190    srsf_inverse_nd, srsf_transform, srsf_transform_nd, transfer_alignment, tsrvf_from_alignment,
191    tsrvf_from_alignment_with_method, tsrvf_inverse, tsrvf_transform, tsrvf_transform_with_method,
192    warp_complexity, warp_inverse_error, warp_smoothness, warp_statistics, AlignmentDiagnostic,
193    AlignmentDiagnosticSummary, AlignmentQuality, AlignmentResult, AlignmentResultNd,
194    AlignmentSetResult, BayesianAlignConfig, BayesianAlignmentResult, ClosedAlignmentResult,
195    ClosedKarcherMeanResult, ConstrainedAlignmentResult, DecompositionResult, Dendrogram,
196    DiagnosticConfig, ElasticDepthResult, ElasticOutlierConfig, ElasticOutlierResult, FpnsResult,
197    GenerativeModelResult, GeodesicPath, GeodesicPathNd, KMedoidsConfig, KMedoidsResult,
198    KarcherMeanResult, KarcherMeanResultNd, LambdaCvConfig, LambdaCvResult, Linkage,
199    MultiresConfig, OrbitRepresentative, PartialMatchConfig, PartialMatchResult, PcaNdResult,
200    PersistenceDiagramResult, PhaseBoxplot, RobustKarcherConfig, RobustKarcherResult,
201    ShapeCiConfig, ShapeCiResult, ShapeDistanceResult, ShapeMeanResult, ShapeQuotient,
202    ShiftRegistrationResult, TransferAlignConfig, TransferAlignResult, TransportMethod,
203    TsrvfResult, WarpPenaltyType, WarpStatistics,
204};
205
206// Re-export commonly used items
207pub use helpers::{
208    aic, bandwidth_candidates_from_dists, bic, cumulative_trapz, extract_curves, fdata_interpolate,
209    fdata_interpolate_with_policy, gaussian_kernel, gradient, gradient_nonuniform,
210    gradient_uniform, impute_missing_values, l2_distance, linear_interp, quantile_sorted,
211    r_squared, r_squared_adj, simpsons_weights, simpsons_weights_2d, spline_interpolate,
212    spline_interpolate_with_policy, trapz, ExtrapolationPolicy, ImputationMethod,
213    InterpolationMethod, DEFAULT_CONVERGENCE_TOL, NUMERICAL_EPS,
214};
215
216// Re-export warping utilities
217pub use warping::{
218    exp_map_sphere, gam_to_psi, gam_to_psi_smooth, inner_product_l2, inv_exp_map_sphere,
219    invert_gamma, l2_norm_l2, normalize_warp, phase_distance, psi_to_gam,
220};
221
222// Re-export seasonal analysis types
223pub use seasonal::{
224    autoperiod, autoperiod_fdata, cfd_autoperiod, cfd_autoperiod_fdata, hilbert_transform, sazed,
225    sazed_fdata, AutoperiodCandidate, AutoperiodResult, CfdAutoperiodResult, ChangeDetectionResult,
226    ChangePoint, ChangeType, DetectedPeriod, InstantaneousPeriod, Peak, PeakDetectionResult,
227    PeriodEstimate, SazedComponents, SazedResult, StrengthMethod,
228};
229
230// Re-export landmark registration types
231pub use landmark::{
232    detect_and_register, detect_landmarks, landmark_register, Landmark, LandmarkKind,
233    LandmarkResult,
234};
235
236// Re-export detrending types
237pub use detrend::{DecomposeResult, StlConfig, StlResult, TrendResult};
238
239// Re-export simulation types (incl. FTS-03-04/05 functional VAR/VMA + FARMA simulators, plan 41-02)
240pub use simulation::{sim_farma, sim_fvarma, EFunType, EValType, FarmaResult, FvarmaResult};
241
242// Re-export irregular fdata types
243pub use irreg_fdata::{IrregFdata, KernelType};
244// Re-export FACE sparse covariance (Phase 38)
245pub use irreg_fdata::{face_covariance, face_trajectory, mface_covariance, MfaceCovResult};
246
247// Re-export tolerance band types
248pub use tolerance::{
249    conformal_prediction_band, elastic_tolerance_band, elastic_tolerance_band_with_config,
250    equivalence_test, equivalence_test_one_sample, exponential_family_tolerance_band,
251    fpca_tolerance_band, phase_tolerance_band, scb_mean_degras, BandType,
252    ElasticToleranceBandResult, ElasticToleranceConfig, EquivalenceBootstrap,
253    EquivalenceTestResult, ExponentialFamily, MultiplierDistribution, NonConformityScore,
254    PhaseToleranceBand, ToleranceBand,
255};
256
257// Re-export functional inference types and two-sample tests
258pub use inference::{
259    f_perm_test, flm_f_test, flm_gof_test, itp_flm, itp_one_pop, itp_two_pop, mean_scb,
260    oneway_anova_vstat, scb_two_sample_test, t_perm_test, two_sample_mean_test, ItpResult,
261    TestResult, DEFAULT_N_PERM,
262};
263
264// Re-export functional time series serial-dependence types (FTS-02) and
265// spectral / dynamic-FPCA types (FTS-03, plan 41-01)
266pub use fts::{
267    dpca, dpca_reconstruct, fplsr, ftsm, ftsm_forecast, ftsm_forecast_multistep, ftsm_update,
268    functional_acf, functional_difference, functional_pacf, long_run_covariance, spectral_density,
269    stationarity_test, ArModelResult, DpcaReconstruction, DpcaResult, FacfResult, FplsrResult,
270    FtsmForecastResult, FtsmResult, LongRunCovResult, SpectralDensityResult, StationarityResult,
271};
272
273// Re-export FAMM types
274pub use famm::{
275    dense_flmm, fast_fmm, fmm, fmm_predict, fmm_test_fixed, multi_famm, DenseFlmmConfig,
276    DenseFlmmResult, FastFmmConfig, FastFmmResult, FmmResult, FmmTestResult, MultiFammConfig,
277    MultiFammResult,
278};
279
280// Re-export concurrent (varying-coefficient) regression types
281pub use concurrent_regression::{concurrent_regression, ConcurrentRegrResult};
282
283// Re-export PACE sparse FPCA types
284pub use pace_fpca::{pace_fpca, PaceFpcaConfig, PaceFpcaResult};
285
286// Re-export function-on-function regression types
287pub use fof_regression::{
288    fof_cv, fof_re_regression, fof_regression, predict_fof, predict_fof_re, FofCvResult,
289    FofReConfig, FofReResult, FofResult,
290};
291
292// Re-export function-on-scalar regression types
293pub use function_on_scalar::{
294    fanova, fosr, fosr_fpc, predict_fosr, FanovaResult, FosrFpcResult, FosrResult,
295};
296pub use function_on_scalar_2d::{fosr_2d, predict_fosr_2d, FosrResult2d, Grid2d};
297
298// Re-export scalar-on-function regression types
299pub use scalar_on_function::{
300    bootstrap_ci_fregre_lm, bootstrap_ci_functional_logistic, fam, fregre_basis_cv, fregre_cv,
301    fregre_gkam, fregre_gsam, fregre_huber, fregre_l1, fregre_lm, fregre_lm_multi,
302    fregre_lm_multi_cv, fregre_np_cv, fregre_np_from_distances, fregre_np_mixed, fregre_pls,
303    functional_glm, functional_logistic, history_index, model_selection_ncomp,
304    permutation_test_fam, predict_fregre_lm, predict_fregre_lm_multi, predict_fregre_np,
305    predict_fregre_np_from_distances, predict_fregre_pls, predict_fregre_robust,
306    predict_functional_glm, predict_functional_logistic, variable_selection, BootstrapCiResult,
307    FamConfig, FamResult, FregreBasisCvResult, FregreCvResult, FregreLmResult, FregreNpCvResult,
308    FregreNpResult, FregreRobustResult, FunctionalGlmResult, FunctionalLogisticResult, GkamConfig,
309    GkamResult, GlmFamily, GsamConfig, GsamResult, HistoryIndexConfig, HistoryIndexResult,
310    ModelSelectionResult, MultiCvResult, MultiFregreLmResult, PermTestConfig, PermTestResult,
311    PermTestStatistic, PlsRegressionResult, SelectionCriterion, VarSelectConfig, VarSelectPenalty,
312    VarSelectResult,
313};
314
315// Re-export generic explainability types
316pub use explain_generic::{
317    generic_ale, generic_anchor, generic_conditional_permutation_importance,
318    generic_counterfactual, generic_domain_selection, generic_friedman_h, generic_lime,
319    generic_pdp, generic_permutation_importance, generic_prototype_criticism, generic_saliency,
320    generic_shap_values, generic_sobol_indices, generic_stability, generic_vif, FpcPredictor,
321    TaskType,
322};
323
324// Re-export explainability types
325pub use elastic_explain::{elastic_pcr_attribution, ElasticAttributionResult};
326pub use explain::{
327    anchor_explanation, anchor_explanation_logistic, beta_decomposition,
328    beta_decomposition_logistic, calibration_diagnostics, conditional_permutation_importance,
329    conditional_permutation_importance_logistic, conformal_prediction_residuals,
330    counterfactual_logistic, counterfactual_regression, dfbetas_dffits, domain_selection,
331    domain_selection_logistic, expected_calibration_error, explanation_stability,
332    explanation_stability_logistic, fpc_ale, fpc_ale_logistic, fpc_permutation_importance,
333    fpc_permutation_importance_logistic, fpc_shap_values, fpc_shap_values_logistic, fpc_vif,
334    fpc_vif_logistic, friedman_h_statistic, friedman_h_statistic_logistic, functional_pdp,
335    functional_pdp_logistic, functional_saliency, functional_saliency_logistic,
336    influence_diagnostics, lime_explanation, lime_explanation_logistic, loo_cv_press,
337    pointwise_importance, pointwise_importance_logistic, prediction_intervals, prototype_criticism,
338    regression_depth, regression_depth_logistic, significant_regions, significant_regions_from_se,
339    sobol_indices, sobol_indices_logistic, AleResult, AnchorCondition, AnchorResult, AnchorRule,
340    BetaDecomposition, CalibrationDiagnosticsResult, ConditionalPermutationImportanceResult,
341    ConformalPredictionResult, CounterfactualResult, DepthType, DfbetasDffitsResult,
342    DomainSelectionResult, EceResult, FpcPermutationImportance, FpcShapValues, FriedmanHResult,
343    FunctionalPdpResult, FunctionalSaliencyResult, ImportantInterval, InfluenceDiagnostics,
344    LimeResult, LooCvResult, PointwiseImportanceResult, PredictionIntervalResult,
345    PrototypeCriticismResult, RegressionDepthResult, SignificanceDirection, SignificantRegion,
346    SobolIndicesResult, StabilityAnalysisResult, VifResult,
347};
348
349// Re-export classification types
350pub use classification::{
351    fclassif_cv, fclassif_cv_with_config, fclassif_dd, fclassif_kernel, fclassif_knn,
352    fclassif_knn_fit, fclassif_lda, fclassif_lda_fit, fclassif_qda, fclassif_qda_fit,
353    kernel_classify_from_distances, knn_classify_from_distances, ClassifCvConfig, ClassifCvResult,
354    ClassifFit, ClassifMethod, ClassifResult,
355};
356
357// Re-export conformal prediction types
358pub use conformal::{
359    conformal_classif, conformal_elastic_logistic, conformal_elastic_pcr,
360    conformal_elastic_pcr_with_config, conformal_elastic_regression,
361    conformal_elastic_regression_with_config, conformal_fregre_lm, conformal_fregre_np,
362    conformal_generic_classification, conformal_generic_regression, conformal_logistic,
363    cv_conformal_classification, cv_conformal_regression, jackknife_plus_regression,
364    ClassificationScore, ConformalClassificationResult, ConformalConfig, ConformalMethod,
365    ConformalRegressionResult,
366};
367
368// Re-export GMM clustering types
369pub use gmm::{
370    funhddC_cluster, gmm_cluster, gmm_cluster_with_config, gmm_em, predict_gmm, CovType,
371    FunHddcConfig, FunHddcResult, GmmClusterConfig, GmmClusterResult, GmmResult,
372};
373
374// Re-export streaming depth types
375pub use streaming_depth::{
376    FullReferenceState, RollingReference, SortedReferenceState, StreamingBd, StreamingDepth,
377    StreamingFraimanMuniz, StreamingMbd,
378};
379
380// Re-export FEM smoothing types (wave-1 + wave-2: mesh assembly, basis evaluation, SR-PDE smoothing)
381pub use fem_smoothing::{
382    assemble_fem_matrices, fem_basis_eval, fem_predict, fem_smooth, fem_smooth_gcv, FemSmoothResult,
383};
384
385// Re-export smooth basis types
386pub use smooth_basis::{
387    basis_nbasis_cv, basis_nbasis_cv_with_config, bspline_penalty_matrix, fourier_penalty_matrix,
388    smooth_basis, smooth_basis_aic, smooth_basis_gcv, smooth_basis_gcv_with_config,
389    smooth_monotone, smooth_positive, BasisCriterion, BasisNbasisCvConfig, BasisNbasisCvResult,
390    BasisType, FdPar, SmoothBasisGcvConfig, SmoothBasisResult, SmoothMonotoneResult,
391    SmoothPositiveResult,
392};
393
394// Re-export elastic FPCA types
395pub use elastic_fpca::{
396    horiz_fpca, horiz_fpca_from_alignment, joint_fpca, joint_fpca_from_alignment, vert_fpca,
397    vert_fpca_from_alignment, HorizFpcaResult, JointFpcaResult, VertFpcaResult,
398};
399
400// Re-export elastic regression types
401pub use elastic_regression::{
402    elastic_logistic, elastic_logistic_with_config, elastic_multinomial, elastic_pcr,
403    elastic_pcr_with_config, elastic_regression, elastic_regression_with_config,
404    predict_elastic_logistic, predict_elastic_multinomial, predict_elastic_regression,
405    predict_scalar_on_shape, scalar_on_shape, ElasticConfig, ElasticLogisticResult,
406    ElasticMultinomialResult, ElasticPcrConfig, ElasticPcrResult, ElasticRegressionResult,
407    IndexMethod, PcaMethod, ScalarOnShapeConfig, ScalarOnShapeResult,
408};
409
410// Re-export SPM types
411pub use spm::{
412    arl0_ewma_t2, arl0_spe, arl0_t2, arl1_t2, elastic_spm_monitor, elastic_spm_phase1,
413    evaluate_rules, ewma_scores, frcc_monitor, frcc_phase1, hotelling_t2, hotelling_t2_regularized,
414    mf_spm_monitor, mf_spm_phase1, mfpca, nelson_rules, profile_monitor, profile_phase1,
415    select_ncomp, spe_contributions, spe_control_limit, spe_limit_robust,
416    spe_moment_match_diagnostic, spe_multivariate, spe_univariate, spm_amewma_monitor,
417    spm_cusum_monitor, spm_cusum_monitor_with_restart, spm_ewma_monitor, spm_mewma_monitor,
418    spm_monitor, spm_monitor_from_fields, spm_monitor_partial, spm_monitor_partial_batch,
419    spm_phase1, spm_phase1_iterative, t2_contributions, t2_contributions_mfpca, t2_control_limit,
420    t2_limit_robust, t2_pc_contributions, t2_pc_significance, western_electric_rules, AmewmaConfig,
421    AmewmaMonitorResult, ArlConfig, ArlResult, ChartRule, ControlLimit, ControlLimitMethod,
422    CusumConfig, CusumMonitorResult, DomainCompletion, ElasticSpmChart, ElasticSpmConfig,
423    ElasticSpmMonitorResult, EwmaConfig, EwmaMonitorResult, FrccChart, FrccConfig,
424    FrccMonitorResult, IterativePhase1Config, IterativePhase1Result, MewmaConfig,
425    MewmaMonitorResult, MfSpmChart, MfpcaConfig, MfpcaResult, NcompMethod, PartialDomainConfig,
426    PartialMonitorResult, ProfileChart, ProfileMonitorConfig, ProfileMonitorResult, RuleViolation,
427    SpmChart, SpmConfig, SpmMonitorResult,
428};
429
430// Re-export elastic changepoint types
431pub use elastic_changepoint::{
432    elastic_amp_changepoint, elastic_fpca_changepoint, elastic_ph_changepoint, ChangepointResult,
433    ChangepointType, FpcaChangepointMethod,
434};
435
436// Re-export cross-validation utilities
437pub use cv::{
438    classification_metrics, create_folds, create_stratified_folds, cv_fdata, cv_fdata_with_metrics,
439    fold_indices, metric_accuracy, metric_f1, metric_mae, metric_precision, metric_r_squared,
440    metric_recall, metric_rmse, regression_metrics, subset_rows, subset_vec, CvFdataResult,
441    CvMetrics, CvSelectionResult, CvType, MetricFn,
442};
443
444// Re-export distance utilities
445pub use distance::{
446    cross_distance_matrix, euclidean_distance_matrix, l2_distance_matrix, pairwise_distance_matrix,
447};
448
449// Re-export validation utilities
450pub use validation::{
451    validate_dist_mat, validate_fdata, validate_labels, validate_ncomp, validate_response,
452};
453
454// Re-export smoothing CV types
455pub use smoothing::{
456    aic_smoother, cv_smoother, gcv_smoother, knn_gcv, knn_lcv, optim_bandwidth, CvCriterion,
457    KnnCvResult, OptimBandwidthResult,
458};
459
460// Re-export regression types
461pub use regression::{fdata_to_pc_1d, fdata_to_pls_1d, FpcaResult, PlsResult};
462// Re-export specialized FPCA variants (Phase 37)
463pub use fpca_variants::{
464    cross_covariance, dynamical_correlation, fpca_der, fsvd, ssvd, FsvdResult,
465};
466#[cfg(feature = "linalg")]
467pub use regression::{ridge_regression_fit, RidgeResult};
468
469// Re-export co-clustering types (funLBM latent block model)
470pub use coclustering::{
471    co_cluster, co_cluster_select, BlockParams, CoClusterConfig, CoClusterResult,
472    CoClusterSelectResult,
473};
474
475// Re-export clustering types
476pub use clustering::{
477    calinski_harabasz, calinski_harabasz_from_distances, fuzzy_cmeans_fd, kmeans_fd,
478    silhouette_score, silhouette_score_from_distances, FuzzyCmeansResult, KmeansResult,
479};
480
481// Re-export advanced clustering types (DBSCAN, kCFC, funFEM, align-cluster)
482pub use clustering_advanced::{
483    align_cluster_fd, dbscan_fd, funfem_cluster, kcfc_cluster, AlignClusterConfig,
484    AlignClusterResult, DbscanConfig, DbscanResult, FunFemConfig, FunFemResult, KcfcConfig,
485    KcfcResult,
486};
487
488// Re-export distance metric types and functions
489pub use metric::{
490    dtw_cross_1d, dtw_distance, dtw_self_1d, fourier_cross_1d, fourier_self_1d, hausdorff_3d,
491    hausdorff_cross_1d, hausdorff_cross_2d, hausdorff_self_1d, hausdorff_self_2d, hshift_cross_1d,
492    hshift_self_1d, lp_cross_1d, lp_cross_2d, lp_self_1d, lp_self_2d, soft_dtw_barycenter,
493    soft_dtw_cross_1d, soft_dtw_distance, soft_dtw_div_cross_1d, soft_dtw_div_self_1d,
494    soft_dtw_divergence, soft_dtw_self_1d, SoftDtwBarycenterResult,
495};
496
497// Re-export depth measure functions
498pub use depth::{
499    band_1d, epigraph_index_1d, extremal_depth_1d, extreme_rank_length_depth_1d, fraiman_muniz_1d,
500    fraiman_muniz_2d, functional_boxplot, functional_depth, functional_spatial_1d,
501    functional_spatial_2d, half_region_depth_1d, hypograph_index_1d, kernel_functional_spatial_1d,
502    kernel_functional_spatial_2d, linfinity_depth_1d, modal_1d, modal_2d, modified_band_1d,
503    modified_epigraph_index_1d, modified_half_region_depth_1d, modified_hypograph_index_1d,
504    random_projection_1d, random_projection_1d_seeded, random_projection_2d, random_tukey_1d,
505    random_tukey_1d_seeded, random_tukey_2d, total_variation_depth_1d, DepthMethod,
506    FunctionalBoxplotResult, TvdMssResult,
507};
508
509// Re-export outlier detection functions
510pub use outliers::{
511    depthgram, detect_outliers_lrt, magnitude_shape_outlyingness, muod, outliergram,
512    outliers_threshold_lrt, outliers_threshold_lrt_with_dist, sequential_transform_outliers,
513    tvdmss, DepthgramConfig, DepthgramResult, MagnitudeShapeResult, MuodConfig, MuodResult,
514    OutligramResult, SeqTransform, SeqTransformConfig, SeqTransformOutliers, TvdMssConfig,
515    TvdMssOutliers,
516};
517
518// Re-export utility functions
519pub use utility::{
520    compute_adot, inner_product, inner_product_matrix, integrate_simpson, knn_loocv, knn_predict,
521    pcvm_statistic, rp_stat, RpStatResult,
522};
523
524// Re-export functional data operation types and functions
525pub use fdata::{
526    center_1d, depth_based_median, deriv_1d, deriv_2d, functional_covariance, functional_std,
527    functional_variance, geometric_median_1d, geometric_median_2d, mean_1d, mean_2d, norm_lp_1d,
528    normalize, normalize_with_argvals, trim_mean, Deriv2DResult, NormalizationMethod,
529};
530
531// Re-export basis representation types and functions
532pub use basis::{
533    basis_to_fdata, basis_to_fdata_1d, bspline_basis, bspline_basis_from_knots, constant_basis,
534    construct_bspline_knots, difference_matrix, exponential_basis, fdata_to_basis,
535    fdata_to_basis_1d, fourier_basis, fourier_basis_with_period, fourier_fit_1d, monomial_basis,
536    polygonal_basis, power_basis, pspline_evaluate, pspline_fit_1d, pspline_fit_gcv,
537    select_basis_auto_1d, select_fourier_nbasis_gcv, BasisAutoSelectionResult,
538    BasisProjectionResult, BasisSystem, FourierFitResult, ProjectionBasisType, PsplineFitResult,
539    SingleCurveSelection,
540};
541
542// Re-export functional scoring metrics
543pub use scoring::{
544    functional_explained_variance, functional_mae, functional_mape, functional_mse, functional_msle,
545};
546
547// Re-export boosting and Bayesian functional regression types (Phase 43 REG-06)
548pub use boosting_regression::{
549    bayesian_fosr, boost_fofr, boost_fosr, gamlss_fosr, stability_selection, BayesianConfig,
550    BayesianFosrResult, BoostFofrResult, BoostFosrResult, BoostingConfig, GamlssResult,
551    StabilityConfig, StabilityResult,
552};