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