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