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