1#![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
77pub 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
115pub mod covariance;
117
118pub mod spm;
120
121pub 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
137pub use matrix::{FdCurveSet, FdMatrix};
139
140pub use multi_fdata::{FdComponent, MultiFunData};
142
143pub use pda::{principal_differential_analysis, Lfd, PdaResult};
145
146pub use density_fda::{
148 inverse_lqd, lqd_fpca, lqd_transform, normalize_density, wasserstein_barycenter, LqdFpcaResult,
149};
150
151pub 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
160pub use andrews::{andrews_loadings, andrews_transform, AndrewsLoadings, AndrewsResult};
162
163pub use covariance::{
165 covariance_matrix, generate_gaussian_process, CovKernel, GaussianProcessResult,
166};
167
168pub 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
203pub 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
213pub 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
219pub 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
227pub use landmark::{
229 detect_and_register, detect_landmarks, landmark_register, Landmark, LandmarkKind,
230 LandmarkResult,
231};
232
233pub use detrend::{DecomposeResult, StlConfig, StlResult, TrendResult};
235
236pub use simulation::{sim_farma, sim_fvarma, EFunType, EValType, FarmaResult, FvarmaResult};
238
239pub use irreg_fdata::{IrregFdata, KernelType};
241pub use irreg_fdata::{face_covariance, face_trajectory, mface_covariance, MfaceCovResult};
243
244pub 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
254pub 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
261pub 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
270pub 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
277pub use concurrent_regression::{concurrent_regression, ConcurrentRegrResult};
279
280pub use pace_fpca::{pace_fpca, PaceFpcaConfig, PaceFpcaResult};
282
283pub use fof_regression::{
285 fof_cv, fof_re_regression, fof_regression, predict_fof, predict_fof_re, FofCvResult,
286 FofReConfig, FofReResult, FofResult,
287};
288
289pub 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
295pub 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
312pub 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
321pub 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
346pub 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
354pub 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
365pub use gmm::{
367 funhddC_cluster, gmm_cluster, gmm_cluster_with_config, gmm_em, predict_gmm, CovType,
368 FunHddcConfig, FunHddcResult, GmmClusterConfig, GmmClusterResult, GmmResult,
369};
370
371pub use streaming_depth::{
373 FullReferenceState, RollingReference, SortedReferenceState, StreamingBd, StreamingDepth,
374 StreamingFraimanMuniz, StreamingMbd,
375};
376
377pub 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
385pub 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
391pub 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
401pub 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
421pub use elastic_changepoint::{
423 elastic_amp_changepoint, elastic_fpca_changepoint, elastic_ph_changepoint, ChangepointResult,
424 ChangepointType, FpcaChangepointMethod,
425};
426
427pub 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
435pub use distance::{
437 cross_distance_matrix, euclidean_distance_matrix, l2_distance_matrix, pairwise_distance_matrix,
438};
439
440pub use validation::{
442 validate_dist_mat, validate_fdata, validate_labels, validate_ncomp, validate_response,
443};
444
445pub use smoothing::{
447 aic_smoother, cv_smoother, gcv_smoother, knn_gcv, knn_lcv, optim_bandwidth, CvCriterion,
448 KnnCvResult, OptimBandwidthResult,
449};
450
451pub use regression::{fdata_to_pc_1d, fdata_to_pls_1d, FpcaResult, PlsResult};
453pub 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
460pub 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
466pub 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
473pub 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
482pub 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
494pub 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
503pub use utility::{
505 compute_adot, inner_product, inner_product_matrix, integrate_simpson, knn_loocv, knn_predict,
506 pcvm_statistic, rp_stat, RpStatResult,
507};
508
509pub 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
516pub 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
527pub use scoring::{
529 functional_explained_variance, functional_mae, functional_mape, functional_mse, functional_msle,
530};