Skip to main content

Rust implementation of Generalized Additive Models with Python bindings

Project description

mgcv_rust: Generalized Additive Models in Rust

A Rust implementation of Generalized Additive Models (GAMs) with automatic smoothing parameter selection using REML (Restricted Maximum Likelihood) and the PiRLS (Penalized Iteratively Reweighted Least Squares) algorithm, inspired by R's mgcv package.

Features

  • Multiple Distribution Families: Gaussian, Binomial, Poisson, and Gamma
  • Flexible Basis Functions:
    • Cubic B-splines with natural boundary conditions
    • Thin plate splines for smooth multivariate regression
  • Automatic Smoothing:
    • REML (Restricted Maximum Likelihood) criterion
    • GCV (Generalized Cross-Validation) criterion
  • PiRLS Algorithm: Efficient fitting via Penalized Iteratively Reweighted Least Squares
  • Pure Rust: No external BLAS/LAPACK dependencies
  • Test-Driven Development: Comprehensive test suite with 20+ passing tests

Installation

Add to your Cargo.toml:

[dependencies]
mgcv_rust = { path = "." }
ndarray = "0.16"

Quick Start

use mgcv_rust::{GAM, Family, SmoothTerm, OptimizationMethod};
use ndarray::{Array1, Array2};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Generate data: y = sin(2πx) + noise
    let n = 100;
    let x_data: Vec<f64> = (0..n).map(|i| i as f64 / n as f64).collect();
    let y_data: Vec<f64> = x_data
        .iter()
        .map(|&xi| (2.0 * std::f64::consts::PI * xi).sin() + noise())
        .collect();

    let x = Array1::from_vec(x_data);
    let y = Array1::from_vec(y_data);
    let x_matrix = x.into_shape((n, 1))?;

    // Create GAM with cubic spline smooth
    let mut gam = GAM::new(Family::Gaussian);
    let smooth = SmoothTerm::cubic_spline("x".to_string(), 20, 0.0, 1.0)?;
    gam.add_smooth(smooth);

    // Fit with REML smoothing parameter selection
    gam.fit(
        &x_matrix,
        &y,
        OptimizationMethod::REML,
        5,    // max outer iterations
        50,   // max inner iterations (PiRLS)
        1e-4  // convergence tolerance
    )?;

    // Make predictions
    let predictions = gam.predict(&x_test)?;

    Ok(())
}

Architecture

Core Components

  1. basis.rs: Basis function implementations

    • CubicSpline: Cubic B-spline basis with configurable knots
    • ThinPlateSpline: Radial basis functions for smooth regression
  2. penalty.rs: Penalty matrix construction

    • Second derivative penalties for smoothness
    • Supports multiple penalty types per basis
  3. pirls.rs: Penalized IRLS fitting algorithm

    • Implements PiRLS for GLMs with penalties
    • Supports all standard GLM families
    • Automatic weight computation and convergence checking
  4. reml.rs: Smoothing parameter selection

    • REML criterion for optimal smoothing
    • GCV criterion as alternative
    • Log-determinant computations
  5. smooth.rs: Smoothing parameter optimization

    • Coordinate descent optimization
    • Grid search for initialization
    • Works in log-space for numerical stability
  6. gam.rs: Main GAM model interface

    • Combines all components
    • Handles multiple smooth terms
    • Outer loop for lambda optimization
  7. linalg.rs: Linear algebra operations

    • Gaussian elimination with partial pivoting
    • Matrix inversion via Gauss-Jordan
    • Determinant computation via LU decomposition

Mathematical Background

GAM Model

g(E[Y]) = β₀ + f₁(x₁) + f₂(x₂) + ... + fₚ(xₚ)

Where:

  • g() is the link function
  • fᵢ() are smooth functions represented by basis expansions
  • Each smooth is penalized by λᵢ ∫ (f''ᵢ(x))² dx

PiRLS Algorithm

  1. Initialize: η = g(y)
  2. Until convergence:
    • Compute μ = g⁻¹(η)
    • Compute weights: w = (g'(μ))² / V(μ)
    • Compute working response: z = η + (y - μ) / g'(μ)
    • Solve: β = (X'WX + λS)⁻¹ X'Wz
    • Update: η = Xβ

REML Criterion

REML(λ) = n·log(RSS) + log|X'WX + λS| - log|S|

Minimized with respect to λ to select optimal smoothing parameters.

Examples

See examples/simple_gam.rs for a complete working example:

cargo run --example simple_gam --release

Testing

Run the test suite:

cargo test

All 20 tests should pass, covering:

  • Basis function evaluation
  • Penalty matrix construction
  • Linear algebra operations
  • REML/GCV criteria
  • PiRLS convergence
  • Full GAM fitting pipeline

Implementation Notes

  • TDD Approach: Every feature was implemented with tests first
  • No External Dependencies: Custom linear algebra to avoid BLAS/LAPACK issues
  • Numerical Stability: Operations performed in log-space where appropriate
  • Extensible Design: Easy to add new basis types, families, or criteria

Limitations & Future Work

  • Smoothing parameter optimization could be improved with better algorithms (e.g., Newton-Raphson)
  • Eigendecomposition for handling penalty null spaces more rigorously
  • Confidence intervals and standard errors
  • Model diagnostics and residual analysis
  • Tensor product smooths for multivariate terms
  • Parallel processing for large datasets

References

  • Wood, S.N. (2017). Generalized Additive Models: An Introduction with R (2nd ed.). Chapman and Hall/CRC.
  • Wood, S.N. (2011). Fast stable restricted maximum likelihood and marginal likelihood estimation of semiparametric generalized linear models. JRSS-B, 73(1), 3-36.

License

MIT License - see LICENSE file for details

Author

Implemented as a Rust port of R's mgcv package core functionality.

Update: REML Implementation Fixed! ✅

You were absolutely right - the REML implementation had bugs that caused it to always select λ ≈ 0.

What Was Wrong

  1. Singular Penalty Handling: REML was incorrectly handling rank-deficient penalty matrices, setting log|S| = 0 which broke the criterion
  2. Lambda Passing: Optimization was passing λ = 1.0 with pre-multiplied penalties, confusing the rank(S)*log(λ) term
  3. Insufficient Data: Examples used n=30 with p=15 (ratio 2:1), which is too small for REML/GCV

What Was Fixed

  1. REML Criterion: Now correctly uses log|λS| = rank(S)*log(λ) + constant
  2. Optimization: Passes actual λ values to criterion functions
  3. Data Size: Increased to n=300 for proper n/p ratio (20:1)
  4. REML Search: Uses fine grid search (gradient descent had issues)

Current Performance (n=300)

GCV:  λ = 0.067, Test RMSE = 0.480  ✅
REML: λ = 0.058, Test RMSE = 0.480  ✅

Both methods now select nearly optimal smoothing parameters!

See IMPLEMENTATION_SUMMARY.md for complete details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mgcv_rust-0.1.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mgcv_rust-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (461.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (407.2 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (406.7 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (460.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (406.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (388.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

mgcv_rust-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl (442.0 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

mgcv_rust-0.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (407.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (461.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (406.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (390.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

mgcv_rust-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl (443.2 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

mgcv_rust-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (461.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (406.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (390.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

mgcv_rust-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl (443.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

mgcv_rust-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (461.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (407.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (392.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

mgcv_rust-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (444.9 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

mgcv_rust-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl (14.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

mgcv_rust-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (462.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (409.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (464.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (411.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

mgcv_rust-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (464.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

mgcv_rust-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (411.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

Details for the file mgcv_rust-0.1.0.tar.gz.

File metadata

  • Download URL: mgcv_rust-0.1.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for mgcv_rust-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c72c7a7bcfddd3ea5cd1b473559ee6e11dd49c7da2a79a9ba5bab2f9f1fe66ed
MD5 b91269585e40ae5468e9f1270c6b661f
BLAKE2b-256 d34b9c28503434839d281b005c0c1025391c36bd695215a660b203b25e174f57

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c4b655a181e5a8012854e6840f6fb8ab975ec18ce8be6239a065fb1f98ad86c
MD5 795875c9d530397794a91b4a2ce02d7a
BLAKE2b-256 07ec0a1f3f07f0d644c59749bb018cce3abc3aab307359254a2b2bea09fb07c5

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dfd61bdd745f424c399c36757fabe69b7b4aa69d34ad6f21d62c45da85635b33
MD5 0d607968cfacdc26e71866491fcd8580
BLAKE2b-256 7be776773f8c2077abea2b4ac7ebdddf306ed50f1b73c0725cc18ebb0b2b0613

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f8b860a7f08e81ee87cc08e649c9dd3bea95c96f0638af2eab4e277759aef67a
MD5 1912dcb100ff1c59f3f35458dc258b41
BLAKE2b-256 8c3e9be271a54f8a12bbb631f4ecf0abe3b1f0cbc3250f5943a0aa9edb0b7bc5

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2df87774238974594a858a952e45c0dc09db5685799ed1f1411e6a89ce99b93
MD5 3df4ad5cb1b1094ce62b1544b34643d7
BLAKE2b-256 8b1690346ccf06afd326541cb99daee46989f454e6b27579d93751eaafe1cbe8

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5a2c22f8207f745d3491b96e9732cc0071eaee7cdb4166e1cb61e063cb70c945
MD5 6c9d859c58a63835c16b14b549ac6a3f
BLAKE2b-256 3bd6261c208083574a8ed9e86f491b8ef8aa6935a992f1958ab6667fafba5cd8

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9661843110b03ee7ac32aa370b0f4bff0f24f4674bd4223249a9eb92448b57b6
MD5 f19940ae1072c835c78f68f65f908f18
BLAKE2b-256 1284259895b1187195a84924a0695152b2ef877b8c5295a354e2c847a2802148

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 12c834805cdce4e9e3a4e8f86d54df85437f9be07f1b84bd961d3bef4531ab0a
MD5 1d2413cbe96584fdea259e2e34740a9b
BLAKE2b-256 c8a5abed47819fb67125280784c58e2b1b4b1be6eec3bcea5d32d56ca916efd1

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a7d90fc4b99615849723ce7403633361c84f32ab324fb3cd81ffab779841dfb9
MD5 40b4cc7bcacb92486b5e73ef57dec5d5
BLAKE2b-256 23b41a1ca2b7594b082094cf88fadd0537729ba2a6cc4c69775d73dbcbc2a6c4

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b9fdba3285ddc56e4392805cedd0a9bfde568703e31cd496a2e82a6fd5483b9
MD5 e95676ef705bbc89d3fdb8c86999cd05
BLAKE2b-256 9764e5548874d5695465140e9649566b4ceec3511106b080f31e235bed562dec

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 39b869c2a1f78324b0ac812fc8b32f937a1012193349b3ee35a13f912a146e11
MD5 c596724b93e4ec4dbb66081d66f41b6c
BLAKE2b-256 787a34833d3cdd99bd5cccacf49148976016d554c591de93883f5ff2de06cbd0

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c0200a6280db22827da5334d096bfce85feb4fb91e32d300632c724806246c6a
MD5 ff4ed674fdb7f76739e868e80d0f69e3
BLAKE2b-256 217a53da984c6855b5ee4951a92537a8e8e5b045dc7dd6bc4885272514971496

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8ae0facafc7b6c9aab43b6f37a0abeeb0df38cb4f439760dfe44d83760f545f5
MD5 2797b3e8954374e289cdc1fa01b1d583
BLAKE2b-256 49e12c0c921e156b3c4aced3e980fb5109c517c9e115eb85698cf812a039b717

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a607ccb0da174ba28c30ccbcb40048a25213b98aaf5fc6e38ce47bcbec82c851
MD5 2a72ab17611cf4f36e67938002f84592
BLAKE2b-256 4cb7164d99d39776723431cfacb2d32404e4e4c45b88c4eaf1ee6048b4b2f690

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 15082d1ddb08b7ee6c36e082cdc1bd5003a14f3ce984c2ed59dccc2f3b1d9b4d
MD5 4f996fa440c6dba51c049bb37503fdba
BLAKE2b-256 26d156d8407d150ed29ff76d2dcc44149b1c19d6eade0cb8aa2a9c590e726aea

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aca175a89f97a56dad9cd8027995a01adea0a32f0d47fda36685ec170e64f3a8
MD5 1ebf02f27f6d6a21ee06b1aeea75b2f1
BLAKE2b-256 f653447d29794854598f00337e8e9b8d169a73f5f64687e55a668b0ee24ddc4c

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1756fce63b55cdbbd6fa48110353e01d645f8bcaa41fe5d2ecefa5322de409ae
MD5 af172b7b94196a9a0ac510e9e5c251c5
BLAKE2b-256 958a0d94b719e91cf853f3dab3988e42f000dc567c598c4c2ca7976fc7115260

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e708bdae5a68703841050c1693dd0cd88c4927c55933704e019e94ed7a471861
MD5 433f3d0794a41728e1bc07b04ad730be
BLAKE2b-256 a434322edcab7a08e354075042f0ea836bca0a7b7de9789a4c85f990baa05ed2

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8d37545572632801154dfb5233fc0b313062614966d91e996a5b295e2236e3f3
MD5 2a905aa008b2fb61d33326e44460f358
BLAKE2b-256 ad033cb0966fcd4b7dac40d13f7cfe5161276a3f3a14ce21d7cd8a2a3918387c

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce1b890121498d9e769072cd028516be7635e2a8a33c83b554b4a1c83175e53c
MD5 2831d3f9c55fe972b7bc69593e015f29
BLAKE2b-256 0be8590b9d735e7f771778b9337515debf506251ee9cf60d78e40e51d7c7e9db

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 04a8be1d089dd7b4a224f43822f1b78fd3a91057ff9216b1eadc42d2739b404e
MD5 9d0744876f7bb7abefca7eca00dfdc3a
BLAKE2b-256 5b388ed4774ed163c8ee7ba63c93e8804ee27990811fa0656531add2b31abb36

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0b229404f31e15c28595c3f9ea86abba4354565f7c1de9053f52b9f58b965d3d
MD5 fad9b5e33cf370658bde79200fd9d642
BLAKE2b-256 35302bf3d4228a439666e0e3af1f308fb3b1301c360a4d6dcd4112d25cdefc33

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 931066a943b3a27e48c320d0a11f2e61e6ae9237d6af9be923ab9fe4f1a90dbf
MD5 55c90e8f20fe132bab7fe12d161283ac
BLAKE2b-256 82724d11ec8fd34a3a979e6218da104d13adceff28065a3d6fb8967cbd171b3f

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 faa7030263026b2500cea87dac216bd7784dca322f1f1f58de5a6dec3bc7a0f8
MD5 b8c13dc71e868c7d8fac9a801e90d4e6
BLAKE2b-256 7e553afa140c9e9d667b5255ba7d5bc28553d4e6658972ae8010349208686d31

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2468c4b2f908735ec268b0160a1de6f932fff38bfa0eae011f4e9cbdfc6519d9
MD5 c0209e67099f65e6de805750c118e1ff
BLAKE2b-256 9af4611d54d1b82db3f4c2ceb18c7f2889ebd5aa568be732656fbaa0677d851a

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a31f13a1f137ee957bf9ff38ffe3fcbb74dd34b4917d832b8ed01a865013939b
MD5 75cd92596d545ea13e19ce7ec9da74cf
BLAKE2b-256 4a95edb45fc89bd02aad4e35fcc2c15acf8baa4edafa19c3d0831a542ca7f180

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7c2c91e7b7405028f654a3487274c1b96d149aa44c2220de9db10bf8e639c4d8
MD5 e99ff10b56e7f1a3be1c48a14a37d4e9
BLAKE2b-256 b52ec30ff6650f674af0a101641fa3b079129f788e2f8ac831e333c3c60e7ee5

See more details on using hashes here.

File details

Details for the file mgcv_rust-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mgcv_rust-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d22cde86b7dc4abe6818b82c66410c82bfed386df8a05b5c24a888b291098ab1
MD5 11a5e0abeec8828debbdace28aa0de21
BLAKE2b-256 164c735fc68589c7ff76d6c1adca531610e2dec4653a6f57ba6c898e9ac76d44

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page