Skip to main content

Crate kriging_rs

Crate kriging_rs 

Source
Expand description

Geostatistical kriging library with ordinary and binomial kriging, variogram fitting, and optional WASM and GPU support.

This crate provides spatial interpolation via ordinary kriging and prevalence-surface estimation via binomial kriging. Default binomial kriging is empirical-Bayes (Beta-prior) logit on the link, calibrated ordinary kriging with per-site logit observation variance on the covariance diagonal, and logistic back to prevalence; see BinomialKrigingModel and BinomialBuildNotes (not a full binomial-likelihood spatial model). The crate also includes empirical variogram computation, parametric model fitting, and Haversine-based geographic coordinates. Build with wasm for browser bindings or gpu for GPU-accelerated batch prediction.

§Scope

  • Geographic by default. Coordinates are (latitude, longitude) in degrees and the default distance is Haversine (great-circle, kilometers). This works globally, including near the poles and across the antimeridian, to the precision allowed by the selected floating-point type (see the f64 feature below for double precision).
  • 2-D spatial fields and 2+1-D spatio-temporal fields. The root kriging module covers surfaces that are functions of two spatial coordinates; the spacetime module adds an additional scalar time axis with the same four kriging families (ordinary, simple, universal, binomial). There is no 3-D (volumetric) kriging in this crate.
  • Planar data is supported via projected. ProjectedCoord + Euclidean distance + Anisotropy2D let you krige (x, y) data in any linear unit (meters, grid cells, pixels). Convert between lat/lon and planar with ProjectedCoord::equirectangular for small areas where the sphere-vs-plane distortion is negligible. The spatio-temporal models are generic over the spatial geometry and accept both geographic and projected coordinates via the spacetime::SpatialMetric trait.

§WASM initialization

When using the kriging-rs-wasm npm wrapper, you must call and await init() once before constructing any model. The wrapper guards against the JS-glue-before-WASM race (it only marks the module ready after the underlying instantiation resolves) — but if you build your own bindings, make sure the WebAssembly instance is fully available before calling constructors, otherwise you will see cryptic TypeErrors from wasm_bindgen.

§Quick example

use kriging_rs::{GeoCoord, GeoDataset, OrdinaryKrigingModel, VariogramModel, VariogramType};

let coords = vec![
    GeoCoord::try_new(0.0, 0.0)?,
    GeoCoord::try_new(0.0, 1.0)?,
    GeoCoord::try_new(1.0, 0.0)?,
];
let values = vec![1.0, 2.0, 1.5];
let dataset = GeoDataset::new(coords, values)?;
let variogram = VariogramModel::new(0.01, 2.0, 300.0, VariogramType::Exponential)?;
let model = OrdinaryKrigingModel::new(dataset, variogram)?;
let prediction = model.predict(GeoCoord::try_new(0.3, 0.3)?)?;

§Module organization

§Features

Default build has no WASM or GPU. Enable with:

  • wasm — WASM bindings and browser support.
  • gpu — WebGPU-based batch prediction (native and web).
  • gpu-blocking — Blocking GPU helpers on native (includes gpu).

Re-exports§

pub use utils::Probability;
pub use utils::clamp_probability;
pub use utils::logistic;
pub use utils::logit;
pub use utils::logit_clamped;
pub use distance::GeoCoord;
pub use error::KrigingError;
pub use geo_dataset::GeoDataset;
pub use kriging::binomial::BINOMIAL_CALIBRATION_VERSION;
pub use kriging::binomial::BinomialBuildNotes;
pub use kriging::binomial::BinomialCalibratedResult;
pub use kriging::binomial::BinomialFit;
pub use kriging::binomial::BinomialKrigingModel;
pub use kriging::binomial::BinomialObservation;
pub use kriging::binomial::BinomialPrediction;
pub use kriging::binomial::BinomialPrior;
pub use kriging::binomial::HeteroskedasticBinomialConfig;
pub use kriging::binomial::build_binomial_observations_dropping_zero_trials;
pub use kriging::binomial::indices_of_zero_trials;
pub use kriging::binomial::logit_observation_variance_empirical_bayes;
pub use kriging::ordinary::Neighborhood;
pub use kriging::ordinary::OrdinaryKrigingModel;
pub use kriging::ordinary::Prediction;
pub use kriging::simple::SimpleKrigingModel;
pub use kriging::universal::UniversalKrigingModel;
pub use kriging::universal::UniversalTrend;
pub use projected::Anisotropy2D;
pub use projected::BinomialProjectedKrigingModel;
pub use projected::DirectionalConfig;
pub use projected::ProjectedBinomialFit;
pub use projected::ProjectedBinomialObservation;
pub use projected::ProjectedCoord;
pub use projected::ProjectedDataset;
pub use projected::ProjectedKrigingModel;
pub use projected::compute_directional_empirical_variogram;
pub use projected::euclidean_distance;
pub use projected::euclidean_distance_squared;
pub use variogram::fitting::FitResult;
pub use variogram::fitting::fit_variogram;
pub use variogram::models::VariogramModel;
pub use variogram::models::VariogramType;
pub use variogram::nested::NestedVariogram;
pub use variogram::EmpiricalEstimator;
pub use variogram::PositiveReal;
pub use variogram::VariogramConfig;
pub use variogram::compute_empirical_variogram;
pub use variogram::compute_empirical_variogram_binomial_calibrated;

Modules§

aggregate
Aggregation helpers over conditional simulation ensembles.
cv
Cross-validation for kriging models.
distance
error
geo_dataset
Coordinate–value datasets for kriging (pairs of locations and observed values).
kriging
Kriging models for spatial interpolation and prevalence surfaces.
projected
Projected (planar) coordinates with Euclidean distance and 2-D anisotropy.
simulation
Conditional simulation via sequential Gaussian simulation (SGS).
spacetime
Space–time kriging.
utils
variogram
Variogram computation, fitting, and parametric models.

Type Aliases§

Real
Floating-point type used for coordinates, values, and variogram parameters.