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