Crate scirs2_interpolate

Source
Expand description

Interpolation module

This module provides implementations of various interpolation methods. These methods are used to estimate values at arbitrary points based on a set of known data points.

§Overview

  • 1D interpolation methods (interp1d module)
    • Linear, nearest, cubic interpolation
    • PCHIP (Piecewise Cubic Hermite Interpolating Polynomial) - shape-preserving interpolation
  • Spline interpolation (spline module)
  • B-spline basis functions and interpolation (bspline module):
    • BSpline - B-spline basis functions and interpolation
    • Support for derivatives, antiderivatives, and integration
    • Knot generation with different styles (uniform, average, clamped)
    • Least-squares fitting with B-splines
  • NURBS curves and surfaces (nurbs module):
    • NurbsCurve - Non-Uniform Rational B-Spline curves
    • NurbsSurface - Non-Uniform Rational B-Spline surfaces
    • Utility functions for creating common NURBS shapes (circles, spheres)
    • Support for control point weights and derivatives
  • Bezier curves and surfaces (bezier module):
    • BezierCurve - Parametric curves with control points
    • BezierSurface - Parametric surfaces with control points
    • Bernstein polynomial basis functions
    • Curve/surface evaluation, derivatives, and curve splitting
  • Bivariate splines (bivariate module):
    • BivariateSpline - Base class for bivariate splines
    • SmoothBivariateSpline - Smooth bivariate spline approximation
    • RectBivariateSpline - Bivariate spline approximation over a rectangular mesh
  • Multivariate interpolation (interpnd module)
  • Advanced interpolation methods (advanced module):
    • Akima spline interpolation - robust to outliers
    • Radial Basis Function (RBF) interpolation - for scattered data
    • Enhanced RBF interpolation - with automatic parameter selection and multi-scale capabilities
    • Kriging (Gaussian process regression) - with uncertainty quantification
    • Barycentric interpolation - stable polynomial interpolation
    • Thin-plate splines - special case of RBF for smooth interpolation
  • GPU-accelerated interpolation (gpu_accelerated module):
    • GPU-accelerated RBF interpolation for large datasets
    • Batch spline evaluation using GPU parallelism
    • Mixed CPU/GPU workloads for optimal performance
    • Multi-GPU support and memory-efficient operations
  • Grid transformation and resampling (grid module):
    • Resample scattered data onto regular grids
    • Convert between grids of different resolutions
    • Map grid data to arbitrary points
  • Tensor product interpolation (tensor module):
    • Efficient high-dimensional interpolation on structured grids
    • Higher-order interpolation using Lagrange polynomials
  • Penalized splines (penalized module):
    • P-splines with various penalty types (ridge, derivatives)
    • Cross-validation for optimal smoothing parameter selection
  • Constrained splines (constrained module):
    • Splines with explicit monotonicity and convexity constraints
    • Support for regional constraints and multiple constraint types
    • Constraint-preserving interpolation and least squares fitting
  • Tension splines (tension module):
    • Splines with adjustable tension parameters
    • Control over the “tightness” of interpolation curves
    • Smooth transition between cubic splines and linear interpolation
  • Hermite splines (hermite module):
    • Cubic and quintic Hermite interpolation with derivative constraints
    • Direct control over function values and derivatives at data points
    • Multiple derivative specification options (automatic, fixed, zero, periodic)
    • C1 and C2 continuity options (continuous first/second derivatives)
  • Multiscale B-splines (multiscale module):
    • Hierarchical B-splines with adaptive refinement
    • Different refinement criteria (error-based, curvature-based, combined)
    • Multi-level representation with control over precision-complexity tradeoffs
    • Efficient representation of functions with varying detail across the domain
  • Active learning for adaptive sampling (adaptive_learning module):
    • Intelligent sampling strategies for reducing function evaluations
    • Uncertainty-based, error-based, and gradient-based sampling
    • Exploration vs exploitation balance for optimal data collection
    • Expected improvement and combined sampling strategies
    • Statistics tracking and convergence monitoring
  • Physics-informed interpolation (physics_informed module):
    • Interpolation methods that respect physical constraints and conservation laws
    • Mass, energy, and momentum conservation enforcement
    • Positivity-preserving and monotonicity-preserving interpolation
    • Boundary condition enforcement and smoothness constraints
    • Multi-physics coupling and constraint satisfaction monitoring
  • Gaussian process regression with adaptive kernels (adaptive_gp module):
    • Automatic kernel selection and hyperparameter optimization
    • Multiple kernel types (RBF, Matérn, Periodic, Linear, Polynomial)
    • Uncertainty quantification and probabilistic interpolation
    • Model comparison and Bayesian model selection
    • Sparse GP methods for scalability to large datasets
  • Neural network enhanced interpolation (neural_enhanced module):
    • Hybrid interpolation combining traditional methods with neural networks
    • Residual learning to improve base interpolation accuracy
    • Multiple neural architectures (MLP, Bayesian, PINN, Transformer)
    • Adaptive training with early stopping and regularization
    • Uncertainty-aware neural interpolation with Bayesian networks
  • Advanced extrapolation methods (extrapolation module):
    • Configurable extrapolation beyond domain boundaries
    • Multiple methods: constant, linear, polynomial, periodic, reflected
    • Physics-informed extrapolation (exponential, power law)
    • Customizable for specific domain knowledge
  • Enhanced boundary handling (boundarymode module):
    • Physical boundary conditions for PDEs (Dirichlet, Neumann)
    • Domain extension via symmetry, periodicity, and custom mappings
    • Separate control of upper and lower boundary behavior
    • Support for mixed boundary conditions
  • Optimization-based parameter fitting (optimization module):
    • Cross-validation based model selection (K-fold, leave-one-out)
    • Regularization parameter optimization with grid search
    • Hyperparameter tuning for RBF kernels and spline smoothing
    • Model comparison and validation metrics (MSE, MAE, R²)
    • Bayesian optimization for efficient parameter search
  • Time series specific interpolation (timeseries module):
    • Temporal pattern recognition (trends, seasonality, irregularities)
    • Missing data handling with forward/backward fill and interpolation
    • Seasonal decomposition and trend-aware interpolation
    • Outlier detection and robust temporal smoothing
    • Uncertainty estimation for time-dependent predictions
    • Holiday and event-aware interpolation strategies
  • Geospatial interpolation methods (geospatial module):
    • Geographic coordinate handling (latitude/longitude, projections)
    • Spherical interpolation with great circle distances
    • Spatial autocorrelation and kriging for Earth science data
    • Multi-scale interpolation from local to global coverage
    • Elevation-aware 3D interpolation and topographic considerations
    • Boundary handling for coastal and land/water transitions
  • Utility functions (utils module):
    • Error estimation with cross-validation
    • Parameter optimization
    • Differentiation and integration of interpolated functions

Re-exports§

pub use error::InterpolateError;
pub use error::InterpolateResult;
pub use adaptive_gp::make_adaptive_gp;
pub use adaptive_gp::AdaptiveGPConfig;
pub use adaptive_gp::AdaptiveGaussianProcess;
pub use adaptive_gp::GPStats;
pub use adaptive_gp::KernelHyperparameters;
pub use adaptive_gp::KernelModel;
pub use adaptive_gp::KernelType as GPKernelType;
pub use adaptive_learning::make_active_learner;
pub use adaptive_learning::ActiveLearner;
pub use adaptive_learning::ActiveLearningConfig;
pub use adaptive_learning::LearningStats;
pub use adaptive_learning::SamplingCandidate;
pub use adaptive_learning::SamplingStrategy;
pub use adaptive_singularity::apply_singularity_handling;
pub use adaptive_singularity::SingularityDetector;
pub use adaptive_singularity::SingularityDetectorConfig;
pub use adaptive_singularity::SingularityInfo;
pub use adaptive_singularity::SingularityType;
pub use adaptive_singularity::TreatmentStrategy;
pub use advanced::akima::make_akima_spline;
pub use advanced::akima::AkimaSpline;
pub use advanced::barycentric::make_barycentric_interpolator;
pub use advanced::barycentric::BarycentricInterpolator;
pub use advanced::barycentric::BarycentricTriangulation;
pub use advanced::enhanced_kriging::make_bayesian_kriging;
pub use advanced::enhanced_kriging::make_enhanced_kriging;
pub use advanced::enhanced_kriging::make_universal_kriging;
pub use advanced::enhanced_kriging::AnisotropicCovariance;
pub use advanced::enhanced_kriging::BayesianKrigingBuilder;
pub use advanced::enhanced_kriging::BayesianPredictionResult;
pub use advanced::enhanced_kriging::EnhancedKriging;
pub use advanced::enhanced_kriging::EnhancedKrigingBuilder;
pub use advanced::enhanced_kriging::TrendFunction;
pub use advanced::enhanced_rbf::make_accurate_rbf;
pub use advanced::enhanced_rbf::make_auto_rbf;
pub use advanced::enhanced_rbf::make_fast_rbf;
pub use advanced::enhanced_rbf::EnhancedRBFInterpolator;
pub use advanced::enhanced_rbf::EnhancedRBFKernel;
pub use advanced::enhanced_rbf::KernelType;
pub use advanced::enhanced_rbf::KernelWidthStrategy;
pub use advanced::fast_kriging::make_fixed_rank_kriging;
pub use advanced::fast_kriging::make_hodlr_kriging;
pub use advanced::fast_kriging::make_local_kriging;
pub use advanced::fast_kriging::make_tapered_kriging;
pub use advanced::fast_kriging::FastKriging;
pub use advanced::fast_kriging::FastKrigingBuilder;
pub use advanced::fast_kriging::FastKrigingMethod;
pub use advanced::fast_kriging::FastPredictionResult;
pub use advanced::kriging::make_kriging_interpolator;
pub use advanced::kriging::CovarianceFunction;
pub use advanced::kriging::KrigingInterpolator;
pub use advanced::rbf::RBFInterpolator;
pub use advanced::rbf::RBFKernel;
pub use advanced::thinplate::make_thinplate_interpolator;
pub use advanced::thinplate::ThinPlateSpline;
pub use bezier::bernstein;
pub use bezier::compute_bernstein_all;
pub use bezier::BezierCurve;
pub use bezier::BezierSurface;
pub use bivariate::BivariateInterpolator;
pub use bivariate::BivariateSpline;
pub use bivariate::RectBivariateSpline;
pub use bivariate::SmoothBivariateSpline;
pub use bivariate::SmoothBivariateSplineBuilder;
pub use boundarymode::make_antisymmetric_boundary;
pub use boundarymode::make_linear_gradient_boundary;
pub use boundarymode::make_periodic_boundary;
pub use boundarymode::make_symmetric_boundary;
pub use boundarymode::make_zero_gradient_boundary;
pub use boundarymode::make_zero_value_boundary;
pub use boundarymode::BoundaryMode;
pub use boundarymode::BoundaryParameters;
pub use boundarymode::BoundaryResult;
pub use bspline::generate_knots;
pub use bspline::make_interp_bspline;
pub use bspline::make_lsq_bspline;
pub use bspline::BSpline;
pub use bspline::BSplineWorkspace;
pub use bspline::ExtrapolateMode as BSplineExtrapolateMode;
pub use bspline::WorkspaceMemoryStats;
pub use cache::make_cached_bspline;
pub use cache::make_cached_bspline_with_config;
pub use cache::BSplineCache;
pub use cache::CacheConfig;
pub use cache::CacheStats;
pub use cache::CachedBSpline;
pub use cache::DistanceMatrixCache;
pub use cache_aware::make_cache_aware_rbf;
pub use cache_aware::CacheAwareBSpline;
pub use cache_aware::CacheAwareRBF;
pub use cache_aware::CacheOptimizedConfig;
pub use cache_aware::CacheOptimizedStats;
pub use cache_aware::CacheSizes;
pub use constrained::ConstrainedSpline;
pub use constrained::Constraint;
pub use constrained::ConstraintRegion;
pub use constrained::ConstraintType;
pub use constrained::FittingMethod;
pub use extrapolation::make_cubic_extrapolator;
pub use extrapolation::make_exponential_extrapolator;
pub use extrapolation::make_linear_extrapolator;
pub use extrapolation::make_periodic_extrapolator;
pub use extrapolation::make_reflection_extrapolator;
pub use extrapolation::ExtrapolationMethod;
pub use extrapolation::ExtrapolationParameters;
pub use extrapolation::Extrapolator;
pub use fast_bspline::make_cached_fast_bspline_evaluator;
pub use fast_bspline::make_fast_bspline_evaluator;
pub use fast_bspline::FastBSplineEvaluator;
pub use fast_bspline::TensorProductFastEvaluator;
pub use geospatial::make_climate_interpolator;
pub use geospatial::make_elevation_interpolator;
pub use geospatial::CoordinateSystem;
pub use geospatial::GeospatialConfig;
pub use geospatial::GeospatialInterpolator;
pub use geospatial::GeospatialResult;
pub use geospatial::InterpolationModel;
pub use geospatial::SpatialStats;
pub use gpu_accelerated::get_gpu_device_info;
pub use gpu_accelerated::is_gpu_acceleration_available;
pub use gpu_accelerated::make_gpu_rbf_interpolator;
pub use gpu_accelerated::GpuBatchSplineEvaluator;
pub use gpu_accelerated::GpuConfig;
pub use gpu_accelerated::GpuDeviceInfo;
pub use gpu_accelerated::GpuRBFInterpolator;
pub use gpu_accelerated::GpuRBFKernel;
pub use gpu_accelerated::GpuStats;
pub use grid::create_regular_grid;
pub use grid::map_grid_to_points;
pub use grid::resample_grid_to_grid;
pub use grid::resample_to_grid;
pub use grid::GridTransformMethod;
pub use hermite::make_hermite_spline;
pub use hermite::make_hermite_spline_with_derivatives;
pub use hermite::make_natural_hermite_spline;
pub use hermite::make_periodic_hermite_spline;
pub use hermite::make_quintic_hermite_spline;
pub use hermite::DerivativeSpec;
pub use hermite::HermiteSpline;
pub use high_dimensional::make_knn_interpolator;
pub use high_dimensional::make_local_rbf_interpolator;
pub use high_dimensional::make_pca_interpolator;
pub use high_dimensional::DimensionReductionMethod;
pub use high_dimensional::HighDimensionalInterpolator;
pub use high_dimensional::HighDimensionalInterpolatorBuilder;
pub use high_dimensional::InterpolatorStats;
pub use high_dimensional::LocalMethod;
pub use high_dimensional::LocalRBFType;
pub use high_dimensional::SparseStrategy;
pub use high_dimensional::SpatialIndexType;
pub use interp1d::cubic_interpolate;
pub use interp1d::hyman_interpolate;
pub use interp1d::linear_interpolate;
pub use interp1d::modified_akima_interpolate;
pub use interp1d::monotonic_interpolate;
pub use interp1d::nearest_interpolate;
pub use interp1d::pchip_interpolate;
pub use interp1d::steffen_interpolate;
pub use interp1d::Interp1d;
pub use interp1d::InterpolationMethod;
pub use interp1d::MonotonicInterpolator;
pub use interp1d::MonotonicMethod;
pub use interp1d::PchipInterpolator;
pub use interpnd::make_interp_nd;
pub use interpnd::make_interp_scattered;
pub use interpnd::map_coordinates;
pub use interpnd::ExtrapolateMode;
pub use interpnd::GridType;
pub use interpnd::RegularGridInterpolator;
pub use interpnd::ScatteredInterpolator;
pub use local::mls::MovingLeastSquares;
pub use local::mls::PolynomialBasis;
pub use local::mls::WeightFunction;
pub use local::polynomial::make_loess;
pub use local::polynomial::make_robust_loess;
pub use local::polynomial::LocalPolynomialConfig;
pub use local::polynomial::LocalPolynomialRegression;
pub use local::polynomial::RegressionResult;
pub use multiscale::make_adaptive_bspline;
pub use multiscale::MultiscaleBSpline;
pub use multiscale::RefinementCriterion;
pub use neural_enhanced::make_neural_enhanced_interpolator;
pub use neural_enhanced::ActivationType;
pub use neural_enhanced::EnhancementStrategy;
pub use neural_enhanced::NeuralArchitecture;
pub use neural_enhanced::NeuralEnhancedInterpolator;
pub use neural_enhanced::NeuralTrainingConfig;
pub use neural_enhanced::TrainingStats;
pub use numerical_stability::apply_tikhonov_regularization;
pub use numerical_stability::assess_matrix_condition;
pub use numerical_stability::check_safe_division;
pub use numerical_stability::machine_epsilon;
pub use numerical_stability::safe_reciprocal;
pub use numerical_stability::solve_with_stability_monitoring;
pub use numerical_stability::ConditionReport;
pub use numerical_stability::StabilityDiagnostics;
pub use numerical_stability::StabilityLevel;
pub use nurbs::make_nurbs_circle;
pub use nurbs::make_nurbs_sphere;
pub use nurbs::NurbsCurve;
pub use nurbs::NurbsSurface;
pub use optimization::make_cross_validator;
pub use optimization::CrossValidationResult;
pub use optimization::CrossValidationStrategy;
pub use optimization::CrossValidator;
pub use optimization::ModelSelector;
pub use optimization::OptimizationConfig;
pub use optimization::OptimizationResult;
pub use optimization::ValidationMetric;
pub use parallel::make_parallel_loess;
pub use parallel::make_parallel_mls;
pub use parallel::make_parallel_robust_loess;
pub use parallel::ParallelConfig;
pub use parallel::ParallelEvaluate;
pub use parallel::ParallelLocalPolynomialRegression;
pub use parallel::ParallelMovingLeastSquares;
pub use penalized::cross_validate_lambda;
pub use penalized::pspline_with_custom_penalty;
pub use penalized::PSpline;
pub use penalized::PenaltyType;
pub use physics_informed::make_mass_conserving_interpolator;
pub use physics_informed::make_monotonic_physics_interpolator;
pub use physics_informed::make_smooth_physics_interpolator;
pub use physics_informed::ConservationLaw;
pub use physics_informed::PhysicalConstraint;
pub use physics_informed::PhysicsInformedConfig;
pub use physics_informed::PhysicsInformedInterpolator;
pub use physics_informed::PhysicsInformedResult;
pub use scattered_optimized::make_optimized_scattered_interpolator;
pub use scattered_optimized::OptimizedScatteredInterpolator;
pub use scattered_optimized::OptimizedScatteredStats;
pub use scattered_optimized::ScatteredConfig;
pub use simd_optimized::get_simd_config;
pub use simd_optimized::is_simd_available;
pub use simd_optimized::simd_bspline_basis_functions;
pub use simd_optimized::simd_bspline_batch_evaluate;
pub use simd_optimized::simd_distance_matrix;
pub use simd_optimized::simd_rbf_evaluate;
pub use simd_optimized::RBFKernel as SimdRBFKernel;
pub use simd_optimized::SimdConfig;
pub use smoothing::make_adaptive_smoothing_spline;
pub use smoothing::make_error_based_smoothing_spline;
pub use smoothing::make_optimized_smoothing_spline;
pub use smoothing::KnotStrategy;
pub use smoothing::VariableKnotSpline;
pub use sparse_grid::make_adaptive_sparse_grid_interpolator;
pub use sparse_grid::make_sparse_grid_from_data;
pub use sparse_grid::make_sparse_grid_interpolator;
pub use sparse_grid::GridPoint;
pub use sparse_grid::MultiIndex;
pub use sparse_grid::SparseGridBuilder;
pub use sparse_grid::SparseGridInterpolator;
pub use sparse_grid::SparseGridStats;
pub use spatial::balltree::BallTree;
pub use spatial::kdtree::KdTree;
pub use spline::make_interp_spline;
pub use spline::BoundaryCondition;
pub use spline::CubicSpline;
pub use structured_matrix::create_bspline_band_matrix;
pub use structured_matrix::solve_band_system;
pub use structured_matrix::solve_sparse_system;
pub use structured_matrix::solve_structured_least_squares;
pub use structured_matrix::BandMatrix;
pub use structured_matrix::CSRMatrix;
pub use tension::make_tension_spline;
pub use tension::TensionSpline;
pub use tensor::lagrange_tensor_interpolate;
pub use tensor::tensor_product_interpolate;
pub use tensor::LagrangeTensorInterpolator;
pub use tensor::TensorProductInterpolator;
pub use timeseries::backward_fill;
pub use timeseries::forward_fill;
pub use timeseries::make_daily_interpolator;
pub use timeseries::make_weekly_interpolator;
pub use timeseries::MissingDataStrategy;
pub use timeseries::SeasonalityType;
pub use timeseries::TemporalPattern;
pub use timeseries::TemporalStats;
pub use timeseries::TimeSeriesConfig;
pub use timeseries::TimeSeriesInterpolator;
pub use timeseries::TimeSeriesResult;
pub use voronoi::constant_value_extrapolation;
pub use voronoi::inverse_distance_extrapolation;
pub use voronoi::linear_gradient_extrapolation;
pub use voronoi::make_laplace_interpolator;
pub use voronoi::make_natural_neighbor_interpolator;
pub use voronoi::make_parallel_laplace_interpolator;
pub use voronoi::make_parallel_natural_neighbor_interpolator;
pub use voronoi::make_parallel_sibson_interpolator;
pub use voronoi::make_sibson_interpolator;
pub use voronoi::nearest_neighbor_extrapolation;
pub use voronoi::Extrapolation;
pub use voronoi::ExtrapolationMethod as VoronoiExtrapolationMethod;
pub use voronoi::ExtrapolationParams;
pub use voronoi::GradientEstimation;
pub use voronoi::InterpolateWithGradient;
pub use voronoi::InterpolateWithGradientResult;
pub use voronoi::InterpolationMethod as VoronoiInterpolationMethod;
pub use voronoi::NaturalNeighborInterpolator;
pub use voronoi::ParallelNaturalNeighborInterpolator;

Modules§

adaptive_gp
Gaussian process regression with adaptive kernels
adaptive_learning
Active learning approaches for adaptive sampling in interpolation
adaptive_singularity
Automatic singularity detection and handling for interpolation
advanced
Advanced interpolation methods for specialized use cases.
bezier
Bezier curve and surface implementations
bivariate
Bivariate interpolation modules
boundarymode
bspline
B-spline basis functions and B-spline curves
cache
Cache-aware algorithm implementations for interpolation
cache_aware
Cache-aware algorithm implementations for high-performance interpolation
constrained
Constrained splines with monotonicity and convexity constraints
error
Error types for the SciRS2 interpolation module
extrapolation
fast_bspline
Fast evaluation of B-splines using recursive algorithms
geospatial
Geospatial interpolation methods
gpu_accelerated
GPU-accelerated interpolation methods
grid
Grid transformation and resampling utilities
griddata
Grid data interpolation - SciPy-compatible griddata implementation
hermite
high_dimensional
High-dimensional interpolation methods
interp1d
One-dimensional interpolation methods
interp2d
2D interpolation - SciPy-compatible interp2d implementation
interpnd
N-dimensional interpolation methods
local
Local interpolation methods
multiscale
neural_enhanced
Neural network enhanced interpolation
numerical_stability
Numerical Stability Monitoring and Condition Assessment
nurbs
NURBS (Non-Uniform Rational B-Splines) implementation
optimization
Optimization-based parameter fitting for interpolation
parallel
Parallel processing utilities for interpolation
penalized
Penalized splines (P-splines) with various penalty terms
physics_informed
Physics-informed interpolation methods
scattered_optimized
Optimized scattered data interpolation for large datasets
simd_optimized
SIMD-optimized interpolation functions
smoothing
Variable knot smoothing splines
sparse_grid
Sparse grid interpolation methods
spatial
Spatial data structures for efficient nearest neighbor search
spline
Spline interpolation methods
structured_matrix
Structured coefficient matrix operations for interpolation algorithms
tension
tensor
Tensor product interpolation
timeseries
Time series specific interpolation methods
utils
Utility functions for interpolation
voronoi
Voronoi-based interpolation methods