Crate scirs2_spatial

Crate scirs2_spatial 

Source
Expand description

Β§SciRS2 Spatial - Spatial Algorithms and Data Structures

scirs2-spatial provides comprehensive spatial algorithms modeled after SciPy’s spatial module, offering distance metrics, KD-trees, ball trees, Delaunay triangulation, convex hulls, Voronoi diagrams, and path planning with SIMD acceleration and parallel processing.

§🎯 Key Features

  • SciPy Compatibility: Drop-in replacement for scipy.spatial functions
  • Distance Metrics: 20+ metrics (Euclidean, Manhattan, Minkowski, cosine, etc.)
  • Spatial Trees: KD-tree and ball tree for efficient nearest neighbor queries
  • Computational Geometry: Delaunay triangulation, Voronoi diagrams, convex hulls
  • Set Distances: Hausdorff, Wasserstein (Earth Mover’s Distance)
  • Path Planning: A*, RRT, visibility graphs for robotics/navigation
  • Performance: SIMD-accelerated distance computations, parallel queries

Β§πŸ“¦ Module Overview

SciRS2 ModuleSciPy EquivalentDescription
distancescipy.spatial.distanceDistance metrics and matrices
KDTreescipy.spatial.KDTreeK-dimensional tree for nearest neighbors
cKDTreescipy.spatial.cKDTreeOptimized KD-tree (C-accelerated)
ConvexHullscipy.spatial.ConvexHullConvex hull computation
Delaunayscipy.spatial.DelaunayDelaunay triangulation
Voronoiscipy.spatial.VoronoiVoronoi diagram
transformscipy.spatial.transformRotation and transformation utilities

Β§πŸš€ Quick Start

[dependencies]
scirs2-spatial = "0.1.0-rc.2"
use scirs2_spatial::{KDTree, distance};
use scirs2_core::ndarray::array;

// KD-Tree for nearest neighbor search
let points = array![[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]];
let tree = KDTree::new(&points).unwrap();
let (indices, dists) = tree.query(&[0.5, 0.5], 2).unwrap();

// Distance computation
let d = distance::euclidean(&[1.0, 2.0], &[4.0, 6.0]);

Β§πŸ”’ Version: 0.1.0-rc.2 (October 03, 2025)

Re-exportsΒ§

pub use error::SpatialError;
pub use error::SpatialResult;
pub use distance::braycurtis;
pub use distance::canberra;
pub use distance::cdist;
pub use distance::chebyshev;
pub use distance::correlation;
pub use distance::cosine;
pub use distance::dice;
pub use distance::euclidean;
pub use distance::is_valid_condensed_distance_matrix;
pub use distance::jaccard;
pub use distance::kulsinski;
pub use distance::mahalanobis;
pub use distance::manhattan;
pub use distance::minkowski;
pub use distance::pdist;
pub use distance::rogerstanimoto;
pub use distance::russellrao;
pub use distance::seuclidean;
pub use distance::sokalmichener;
pub use distance::sokalsneath;
pub use distance::sqeuclidean;
pub use distance::squareform;
pub use distance::squareform_to_condensed;
pub use distance::yule;
pub use distance::ChebyshevDistance;
pub use distance::Distance;
pub use distance::EuclideanDistance;
pub use distance::ManhattanDistance;
pub use distance::MinkowskiDistance;
pub use kdtree::KDTree;
pub use kdtree::Rectangle;
pub use kdtree_optimized::KDTreeOptimized;
pub use kdtree_advanced::AdvancedKDTree;
pub use kdtree_advanced::BoundingBox as KDTreeBoundingBox;
pub use kdtree_advanced::KDTreeConfig;
pub use kdtree_advanced::TreeStatistics;
pub use balltree::BallTree;
pub use delaunay::Delaunay;
pub use voronoi::voronoi;
pub use voronoi::Voronoi;
pub use spherical_voronoi::SphericalVoronoi;
pub use procrustes::procrustes;
pub use procrustes::procrustes_extended;
pub use procrustes::ProcrustesParams;
pub use convex_hull::convex_hull;
pub use convex_hull::ConvexHull;
pub use alphashapes::AlphaShape;
pub use halfspace::Halfspace;
pub use halfspace::HalfspaceIntersection;
pub use boolean_ops::compute_polygon_area;
pub use boolean_ops::is_convex_polygon;
pub use boolean_ops::is_self_intersecting;
pub use boolean_ops::polygon_difference;
pub use boolean_ops::polygon_intersection;
pub use boolean_ops::polygon_symmetric_difference;
pub use boolean_ops::polygon_union;
pub use kriging::KrigingPrediction;
pub use kriging::OrdinaryKriging;
pub use kriging::SimpleKriging;
pub use kriging::VariogramModel;
pub use geospatial::cross_track_distance;
pub use geospatial::destination_point;
pub use geospatial::final_bearing;
pub use geospatial::geographic_to_utm;
pub use geospatial::geographic_to_web_mercator;
pub use geospatial::haversine_distance;
pub use geospatial::initial_bearing;
pub use geospatial::midpoint;
pub use geospatial::normalize_bearing;
pub use geospatial::point_in_spherical_polygon;
pub use geospatial::spherical_polygon_area;
pub use geospatial::vincenty_distance;
pub use geospatial::web_mercator_to_geographic;
pub use geospatial::EARTH_RADIUS_KM;
pub use geospatial::EARTH_RADIUS_M;
pub use set_distance::directed_hausdorff;
pub use set_distance::gromov_hausdorff_distance;
pub use set_distance::hausdorff_distance;
pub use set_distance::wasserstein_distance;
pub use polygon::convex_hull_graham;
pub use polygon::douglas_peucker_simplify;
pub use polygon::is_simple_polygon;
pub use polygon::point_in_polygon;
pub use polygon::point_on_boundary;
pub use polygon::polygon_area;
pub use polygon::polygon_centroid;
pub use polygon::polygon_contains_polygon;
pub use polygon::visvalingam_whyatt_simplify;
pub use rtree::RTree;
pub use rtree::Rectangle as RTreeRectangle;
pub use octree::BoundingBox as OctreeBoundingBox;
pub use octree::Octree;
pub use quadtree::BoundingBox2D;
pub use quadtree::Quadtree;
pub use interpolate::IDWInterpolator;
pub use interpolate::NaturalNeighborInterpolator;
pub use interpolate::RBFInterpolator;
pub use interpolate::RBFKernel;
pub use pathplanning::astar::AStarPlanner;
pub use pathplanning::astar::ContinuousAStarPlanner;
pub use pathplanning::astar::GridAStarPlanner;
pub use pathplanning::astar::Node;
pub use pathplanning::astar::Path;
pub use pathplanning::rrt::RRT2DPlanner;
pub use pathplanning::rrt::RRTConfig;
pub use pathplanning::rrt::RRTPlanner;
pub use collision::shapes::Box2D;
pub use collision::shapes::Box3D;
pub use collision::shapes::Circle;
pub use collision::shapes::LineSegment2D;
pub use collision::shapes::LineSegment3D;
pub use collision::shapes::Sphere;
pub use collision::shapes::Triangle2D;
pub use collision::shapes::Triangle3D;
pub use collision::narrowphase::box2d_box2d_collision;
pub use collision::narrowphase::box3d_box3d_collision;
pub use collision::narrowphase::circle_box2d_collision;
pub use collision::narrowphase::circle_circle_collision;
pub use collision::narrowphase::gjk_box_box_collision;
pub use collision::narrowphase::gjk_collision_detection;
pub use collision::narrowphase::gjk_sphere_box_collision;
pub use collision::narrowphase::gjk_sphere_sphere_collision;
pub use collision::narrowphase::point_box2d_collision;
pub use collision::narrowphase::point_box3d_collision;
pub use collision::narrowphase::point_circle_collision;
pub use collision::narrowphase::point_sphere_collision;
pub use collision::narrowphase::point_triangle2d_collision;
pub use collision::narrowphase::ray_box3d_collision;
pub use collision::narrowphase::ray_sphere_collision;
pub use collision::narrowphase::ray_triangle3d_collision;
pub use collision::narrowphase::sphere_box3d_collision;
pub use collision::narrowphase::sphere_sphere_collision;
pub use collision::narrowphase::GJKShape;
pub use collision::continuous::continuous_sphere_sphere_collision;
pub use spatial_stats::clark_evans_index;
pub use spatial_stats::distance_weights_matrix;
pub use spatial_stats::gearys_c;
pub use spatial_stats::getis_ord_gi;
pub use spatial_stats::local_morans_i;
pub use spatial_stats::morans_i;
pub use simd_distance::parallel_cdist;
pub use simd_distance::parallel_pdist;
pub use simd_distance::simd_euclidean_distance;
pub use simd_distance::simd_euclidean_distance_batch;
pub use simd_distance::simd_manhattan_distance;
pub use simd_distance::SimdMetric;
pub use simd_distance::advanced_simd_clustering::AdvancedSimdKMeans;
pub use simd_distance::advanced_simd_clustering::AdvancedSimdNearestNeighbors;
pub use simd_distance::bench::benchmark_distance_computation;
pub use simd_distance::bench::report_simd_features;
pub use simd_distance::bench::BenchmarkResults;
pub use simd_distance::mixed_precision_simd::simd_euclidean_distance_batch_f32;
pub use simd_distance::mixed_precision_simd::simd_euclidean_distance_f32;
pub use memory_pool::global_clustering_arena;
pub use memory_pool::global_distance_pool;
pub use memory_pool::ArenaStatistics;
pub use memory_pool::ClusteringArena;
pub use memory_pool::DistanceBuffer;
pub use memory_pool::DistancePool;
pub use memory_pool::IndexBuffer;
pub use memory_pool::MatrixBuffer;
pub use memory_pool::MemoryPoolConfig;
pub use memory_pool::PoolStatistics;
pub use gpu_accel::get_gpu_capabilities;
pub use gpu_accel::global_gpu_device;
pub use gpu_accel::is_gpu_acceleration_available;
pub use gpu_accel::report_gpu_status;
pub use gpu_accel::GpuCapabilities;
pub use gpu_accel::GpuDevice;
pub use gpu_accel::GpuDistanceMatrix;
pub use gpu_accel::GpuKMeans;
pub use gpu_accel::GpuNearestNeighbors;
pub use gpu_accel::HybridProcessor;
pub use gpu_accel::ProcessingStrategy;
pub use advanced_parallel::get_numa_topology;
pub use advanced_parallel::initialize_global_pool;
pub use advanced_parallel::report_advanced_parallel_capabilities;
pub use advanced_parallel::AdvancedParallelDistanceMatrix;
pub use advanced_parallel::AdvancedParallelKMeans;
pub use advanced_parallel::MemoryStrategy;
pub use advanced_parallel::NumaTopology;
pub use advanced_parallel::PoolStatistics as AdvancedPoolStatistics;
pub use advanced_parallel::ThreadAffinityStrategy;
pub use advanced_parallel::WorkStealingConfig;
pub use advanced_parallel::WorkStealingPool;
pub use quantum_inspired::algorithms::QuantumSpatialOptimizer;
pub use quantum_inspired::ErrorCorrectionConfig;
pub use quantum_inspired::ErrorCorrectionType;
pub use quantum_inspired::OptimizationConfig;
pub use quantum_inspired::OptimizerType;
pub use quantum_inspired::PerformanceMetrics;
pub use quantum_inspired::QuantumAmplitude;
pub use quantum_inspired::QuantumClusterer;
pub use quantum_inspired::QuantumConfig;
pub use quantum_inspired::QuantumNearestNeighbor;
pub use quantum_inspired::QuantumSpatialFramework;
pub use quantum_inspired::QuantumState;
pub use neuromorphic::AdaptiveSpikingNeuron;
pub use neuromorphic::CompetitiveNeuralClusterer;
pub use neuromorphic::HomeostaticNeuralClusterer;
pub use neuromorphic::HomeostaticSynapse;
pub use neuromorphic::MetaplasticSynapse;
pub use neuromorphic::NetworkStats;
pub use neuromorphic::NeuromorphicCapability;
pub use neuromorphic::NeuromorphicConfig;
pub use neuromorphic::NeuromorphicFactory;
pub use neuromorphic::NeuromorphicProcessor;
pub use neuromorphic::SpikeEvent;
pub use neuromorphic::SpikeSequence;
pub use neuromorphic::SpikingNeuralClusterer;
pub use neuromorphic::SpikingNeuron;
pub use neuromorphic::Synapse;
pub use tensor_cores::detect_tensor_core_capabilities;
pub use tensor_cores::GpuArchitecture;
pub use tensor_cores::PrecisionMode;
pub use tensor_cores::TensorCoreCapabilities;
pub use tensor_cores::TensorCoreClustering;
pub use tensor_cores::TensorCoreDistanceMatrix;
pub use tensor_cores::TensorCoreType;
pub use tensor_cores::TensorLayout;
pub use ml_optimization::ActivationFunction;
pub use ml_optimization::ClusteringParameters;
pub use ml_optimization::ClusteringResult;
pub use ml_optimization::DataState;
pub use ml_optimization::DistanceMetric;
pub use ml_optimization::Experience;
pub use ml_optimization::NeuralSpatialOptimizer;
pub use ml_optimization::ReinforcementLearningSelector;
pub use ml_optimization::SpatialAlgorithm;
pub use distributed::ClusterStatistics;
pub use distributed::DataPartition;
pub use distributed::DistributedMessage;
pub use distributed::DistributedSpatialCluster;
pub use distributed::LoadBalancer;
pub use distributed::LoadMetrics;
pub use distributed::NodeConfig;
pub use distributed::NodeStatus;
pub use distributed::QueryResults;
pub use distributed::QueryType;
pub use distributed::SpatialBounds;
pub use adaptive_selection::ActualPerformance;
pub use adaptive_selection::AdaptiveAlgorithmSelector;
pub use adaptive_selection::AlgorithmParameters;
pub use adaptive_selection::AlgorithmSelection;
pub use adaptive_selection::DataCharacteristics;
pub use adaptive_selection::ExecutionResult;
pub use adaptive_selection::PerformancePrediction;
pub use adaptive_selection::SelectedAlgorithm;
pub use adaptive_selection::SelectionContext;
pub use quantum_classical_hybrid::HybridClusterer;
pub use quantum_classical_hybrid::HybridClusteringMetrics;
pub use quantum_classical_hybrid::HybridOptimizationResult;
pub use quantum_classical_hybrid::HybridPerformanceMetrics;
pub use quantum_classical_hybrid::HybridSpatialOptimizer;
pub use quantum_classical_hybrid::OptimizationStepResult;
pub use neuromorphic_quantum_fusion::FusionMetrics;
pub use neuromorphic_quantum_fusion::NeuralQuantumOptimizationResult;
pub use neuromorphic_quantum_fusion::NeuralQuantumOptimizer;
pub use neuromorphic_quantum_fusion::QuantumSpikeEvent;
pub use neuromorphic_quantum_fusion::QuantumSpikePattern;
pub use neuromorphic_quantum_fusion::QuantumSpikingClusterer;
pub use neuromorphic_quantum_fusion::QuantumSpikingNeuron;
pub use next_gen_gpu_architecture::NextGenGpuArchitecture;
pub use next_gen_gpu_architecture::NextGenPerformanceMetrics;
pub use next_gen_gpu_architecture::PhotonicAccelerator;
pub use next_gen_gpu_architecture::PhotonicProcessingUnit;
pub use next_gen_gpu_architecture::QuantumGpuProcessor;
pub use next_gen_gpu_architecture::QuantumProcessingUnit;
pub use generic_traits::ChebyshevMetric;
pub use generic_traits::EuclideanMetric;
pub use generic_traits::ManhattanMetric;
pub use generic_traits::Point;
pub use generic_traits::SpatialArray;
pub use generic_traits::SpatialPoint;
pub use generic_traits::SpatialScalar;
pub use generic_algorithms::DBSCANResult;
pub use generic_algorithms::GMMResult;
pub use generic_algorithms::GenericConvexHull;
pub use generic_algorithms::GenericDBSCAN;
pub use generic_algorithms::GenericDistanceMatrix;
pub use generic_algorithms::GenericGMM;
pub use generic_algorithms::GenericKDTree;
pub use generic_algorithms::GenericKMeans;
pub use generic_algorithms::KMeansResult;
pub use ai_driven_optimization::AIAlgorithmSelector;
pub use ai_driven_optimization::AdaptationRecord;
pub use ai_driven_optimization::AlgorithmCandidate;
pub use ai_driven_optimization::AlgorithmKnowledgeBase;
pub use ai_driven_optimization::AlgorithmMetadata;
pub use ai_driven_optimization::ComplexityModel;
pub use ai_driven_optimization::MetaLearningModel;
pub use ai_driven_optimization::MetaLearningOptimizer;
pub use ai_driven_optimization::MetaOptimizationResult;
pub use ai_driven_optimization::PerformanceModel;
pub use ai_driven_optimization::PerformanceRecord;
pub use ai_driven_optimization::PredictionNetworks;
pub use ai_driven_optimization::ReinforcementLearningAgent;
pub use ai_driven_optimization::TaskMetadata;
pub use extreme_performance_optimization::benchmark_extreme_optimizations;
pub use extreme_performance_optimization::create_ultimate_optimizer;
pub use extreme_performance_optimization::AdvancedfastDistanceMatrix;
pub use extreme_performance_optimization::CacheHierarchyInfo;
pub use extreme_performance_optimization::CacheObliviousSpatialAlgorithms;
pub use extreme_performance_optimization::ExtremeMemoryAllocator;
pub use extreme_performance_optimization::ExtremeOptimizer;
pub use extreme_performance_optimization::ExtremePerformanceMetrics;
pub use extreme_performance_optimization::HardwarePerformanceCounters;
pub use extreme_performance_optimization::JitCompiler;
pub use extreme_performance_optimization::LockFreeSpatialStructures;
pub use extreme_performance_optimization::NumaTopologyInfo;
pub use extreme_performance_optimization::OptimizationRecord;
pub use extreme_performance_optimization::SelfOptimizingAlgorithm;

ModulesΒ§

adaptive_selection
Real-time adaptive algorithm selection system
advanced_parallel
Advanced-parallel algorithms with work-stealing and NUMA-aware optimizations
ai_driven_optimization
AI-Driven Algorithm Selection and Optimization (Advanced Mode)
alphashapes
Alpha shapes implementation for spatial analysis
balltree
Ball tree for efficient nearest neighbor searches
boolean_ops
Boolean operations for polygons and polyhedra
collision
Collision detection algorithms for various geometric primitives
convex_hull
Convex hull algorithms and utilities
delaunay
Delaunay triangulation algorithms
distance
Distance metrics for spatial data
distributed
Distributed spatial computing framework
error
Error types for the SciRS2 spatial module
extreme_performance_optimization
Extreme Performance Optimization (Advanced Mode)
generic_algorithms
Generic implementations of spatial algorithms
generic_traits
Generic traits and type parameters for spatial algorithms
geospatial
Geospatial functionality for working with geographic coordinates
gpu_accel
GPU acceleration for spatial algorithms
halfspace
Halfspace intersection and convex polytope construction
interpolate
Spatial interpolation methods
kdtree
KD-Tree for efficient nearest neighbor searches
kdtree_advanced
Advanced-optimized KD-Tree implementations with advanced performance features
kdtree_optimized
KD-Tree optimizations for common spatial operations
kriging
Kriging interpolation methods
memory_pool
Advanced-optimized memory pool system for spatial algorithms
ml_optimization
Machine learning-based spatial optimization
neuromorphic
Neuromorphic Computing for Spatial Data Processing
neuromorphic_quantum_fusion
Neuromorphic-Quantum Fusion Algorithms (Advanced Mode)
next_gen_gpu_architecture
Next-Generation GPU Architecture Support (Advanced Mode)
octree
Octree data structure for 3D space
pathplanning
Path planning algorithms
polygon
Polygon operations module
procrustes
Procrustes analysis
quadtree
Quadtree data structure for 2D space
quantum_classical_hybrid
Quantum-Classical Hybrid Spatial Algorithms (Advanced Mode)
quantum_inspired
Quantum-Inspired Spatial Algorithms
rtree
R-tree implementation for efficient spatial indexing
set_distance
Set-based distance metrics
simd_distance
SIMD-accelerated distance calculations for spatial operations
spatial_stats
Spatial statistics module for analyzing spatial patterns and relationships
spherical_voronoi
SphericalVoronoi Implementation
tensor_cores
Advanced GPU Tensor Core utilization for spatial algorithms
transform
voronoi
Voronoi diagrams