Skip to main content

GAM core (Rust) with sklearn-style Python bindings — beta

Project description

gamrs

Generalised Additive Models in Rust — clean-room reimplementation built on six composable trait layers (Basis, BasisTransform, Loss/Link/VarianceFn, InnerSolver, ScoreDerivatives, OuterSolver). Designed for parity with R's mgcv.

Status: beta (v0.11). Fastest where wall time matters — large n and high basis dimension (up to ~2.3× at n=1M and ~15× at k=50 vs mgcv_rust 0.23), competitive-to-slower on tiny fits, with a known multi-smooth-NegBin gap; see Performance for the honest breakdown. mgcv R-parity on µ across all ten families. Multi-smooth additive (y ~ s(x0) + s(x1)), n-margin tensor products (te(x0, x1, …) / ti(…)) and thin-plate splines (s(x0, x1, bs="tp")) all ship. NegBin and Tweedie fit multi-smooth, with Tweedie offering both profile-p (tw()) and fixed-p (Tweedie(p)).

Install

pip install gamrs            # base wheel
pip install gamrs[quantile]  # + scipy for SHASH-calibrated quantile fits

Quickstart

from gamrs import Gam, CrTerm, TeTerm

# Single 1-D smooth, Gaussian
g = Gam(family="gaussian").fit(X, y)
mu  = g.predict(X)
mu, lo, hi = g.predict_ci(X, level=0.95)

# Multi-smooth additive
g = Gam(terms=[CrTerm("x0", k=10), CrTerm("x1", k=15)]).fit(df, df["y"])

# Tensor product
g = Gam(terms=[TeTerm(cols=("x0", "x1"), k=(5, 5))]).fit(df, df["y"])

# Large-n GLM — switch to the bam()-style fREML optimiser
g = Gam(family="poisson", method="fREML").fit(X_big, y_big)

Full walkthrough: docs/quickstart.md. Optimiser & large-n notes: docs/perf.md.

Families

All ten families land 1-D parity against mgcv:

Family Link Inner solver Outer optimiser Parity (µ rel-err)
Gaussian identity one-Cholesky 1-D Newton ~3e-6
Bernoulli logit PIRLS 1-D Newton ~1e-3
Poisson log PIRLS 1-D Newton ~8e-5
QuasiPoisson log PIRLS 1-D Newton (prof φ) ~2e-4
QuasiBinomial logit PIRLS 1-D Newton (prof φ) ~7e-5
Gamma log PIRLS 1-D Newton (prof φ) ~2e-2
InverseGaussian log PIRLS 1-D Newton (prof φ) ~3e-4
NegBin log PIRLS ρ-Newton + profile-θ ~9e-7
Tweedie log PIRLS 3-D joint Newton ~5e-3
TDist (scat) identity PIRLS 3-D joint Newton ~2e-2
Ocat logit gam.fit5 joint β + threshold smoke
Quantile (ELF) identity Armijo BT ρ-Newton (per term) qgam OOS ~1.00×

Multi-smooth (s(x0) + s(x1) + …) ships with mgcv R parity tests for Gaussian / Bernoulli / Poisson / QuasiPoisson / QuasiBinomial / Gamma / InvGauss / NegBin / Tweedie / scat. scat / TDist multi-smooth now has mgcv reference parity tests too — 2-D µ rel-err ~9e-3, 3-D ~1.7e-2, with σ̂² matching mgcv to ~0.1% (tests/parity_additive_scat.rs, scripts/r/gen_scat_multismooth_fixtures.R). Quantile/ELF now fits multi-smooth additive too (y ~ s(x0) + s(x1) + … via the terms= arg of fit_quantile): on a 2-D additive heteroskedastic split its out-of-sample pinball loss matches qgam to within ±0.6% at τ ∈ {0.1, 0.5, 0.9} (scripts/r/gen_quantile_multismooth_fixture.R, test_parity_multismooth.py::test_additive_quantile_oos_parity).

Multi-smooth Ocat now has an mgcv reference parity test (tests/parity_additive_scat.rs's ocat sibling in test_parity_multismooth.py::test_additive_ocat_parity, scripts/r/gen_ocat_multismooth_fixtures.R): on a well-posed noisy-latent DGP gamrs and mgcv ocat(R=4) both converge cleanly and agree on predict_proba to ~1.8e-3 mean abs / 98% class agreement.

v0.10 ports the full mgcv R outer-Newton stabilisation stack (smart θ-init from category frequencies, diagonal Hessian preconditioning, Gill-Murray-Wright eigen-fix, subset Newton, rank-deficient KKT convergence check). After the ports, single- and (well-posed) multi-smooth ocat converge cleanly. The residual converged_=False appears only on near-separable fixtures (noiseless quantile-cut categories) where the latent scale wants to blow up — the exact regime mgcv itself either converges to a degenerate θ≈181 solution or aborts with "inner loop 1; can't correct step size". There gamrs's θ∈(−3,3) bound keeps it stable (99% accuracy) and the conservative flag is correct. See ~/ObsidianVault/Projects/gamrs/gamrs - mgcv outer-Newton stabilisation techniques (port catalogue) 2026-06-03.md for the full port story.

Smooths

  • Single 1-Ds(x0) via CrTerm (cubic regression spline default).
  • Additive multis(x0) + s(x1) + s(x2).
  • Tensor productte(x0, x1, …) via TeTerm, ti(…) via TiTerm, any n-margin.
  • Thin-plates(x0, x1, bs="tp") via TpsTerm.
  • Random effectss(g, bs="re") via ReTerm.
  • Parametric (linear) — unsmoothed raw column via ParametricTerm or predictor_basis_map={"x": "parametric"} (alias "linear"). Use for 0/1 indicators, counts, or anything you want unpenalised. mgcv R's "pterms" block.

Performance

gamrs vs mgcv_rust 0.23.2, best-of-7 median wall time after 3 warmup iters (>1× = gamrs faster). Reproduce with scripts/bench_matters.py. Numbers below are an i7-8565U (8th-gen, AVX2); the ratios are same-box-comparable but absolute times differ on your hardware.

gamrs wins at scale. Single-smooth, k=20 — as n grows the constant-factor setup overhead amortises and gamrs pulls ahead:

family n=10K n=100K n=1M
Gaussian 0.58× 1.49× 2.27×
Poisson 0.24× 1.01× 1.89×
Bernoulli 0.39× 1.12× 1.84×

It also wins as the basis dimension k grows (Gaussian, n=2K): k=10 → 1.7×, k=20 → 4.0×, k=50 → 15×. (Those fits are <2ms — read them as above-the-noise ratios, not headline wall-time claims.)

Shape-aware families (n=2K, k=10):

family speedup note
Tweedie 1-D 1.93×
ocat 1-D 14.5× mgcv_rust's ocat path is slow by construction
ocat 2-D 0.69×
NegBin 1-D 0.64×
NegBin 2-D 0.06× multi-smooth profile-θ scaling gap (known)
scat 1-D 0.58× <2ms — sub-noise

Honest aggregate (16 above-20ms cells across all sweeps): gamrs is faster in 8 — median 0.89×, geomean 0.83×, range 0.06×–14.5×. The wins concentrate where wall time actually matters — large n, large k, and Tweedie/ocat. Tiny fits (<20ms) and multi-smooth NegBin still trail mgcv_rust; the NegBin multi-smooth slowdown is a known profile-θ scaling issue under investigation.

scat climbed from v0.10.0's 0.07× to v0.11's ~0.77× (at the 6K-row profiling fixture) via analytic gradient + Level-2 analytic Hessian + observed-W PIRLS + warm-start (v0.11.0) and broadcast-expression conversion + batched-h_diag matmul (v0.11.1). The residual gap is per-pair Hessian-assembly work at small p.

For GLM families at large n, set method="fREML" (mgcv R's bam() equivalent — Wood & Fasiolo 2017 Fellner-Schall multiplicative updates with single-step IRLS per outer iteration). The defaults are sensible at small/medium n; the perf guide covers when to switch.

Parallel fits across threads

As of v0.11.7 the fit releases the GIL (PyO3 py.detach) for the entire solve, so independent Gam.fit(...) / fit_quantile(...) calls run truly concurrently on a ThreadPoolExecutor — no process pool, no pickling of inputs. When fanning many fits across a thread pool, set OPENBLAS_NUM_THREADS=1 so the BLAS backend doesn't oversubscribe cores against your own threads: on a 6K-row scat/fREML fit that turns the pre-0.11.7 0.58× (GIL-bound, serialised) into ~1.95× on 4 worker threads.

Rust API

use gamrs::{TermSpec, MarginKind, DesignStrategy};
use ndarray::Array2;

let x: Array2<f64> = /* (n, n_input_dims) */;
let y = /* Array1<f64> */;

let fit = gamrs::fit(gamrs::family::gaussian_identity(), x.view(), y.view(), None, 10)?;

let fit = gamrs::fit_with_design(
    gamrs::family::gaussian_identity(),
    DesignStrategy::Additive { terms: vec![
        TermSpec::Cr { col: 0, k: 10 },
        TermSpec::Cr { col: 1, k: 15 },
    ]},
    x.view(), y.view(), None,
)?;

let fit = gamrs::fit_with_design(
    gamrs::family::gaussian_identity(),
    DesignStrategy::Additive { terms: vec![
        TermSpec::Tensor { col_a: 0, col_b: 1, k_a: 5, k_b: 5,
                           bs_a: MarginKind::Cr, bs_b: MarginKind::Cr },
    ]},
    x.view(), y.view(), None,
)?;

let mu = fit.predict(x.view())?;

Python API

PyO3 bindings + numpy. sklearn-like surface: fit / predict / predict_ci / predict_diff / vcov_ / coef_ / lambda_ / edf_ / fit_stats_, plus serialize / deserialize and GamPredictor for inference-only deployment.

Architecture

Trait layering (src/traits.rs):

Layer 1   Basis              ←  CrBasis, RandomEffectsBasis, TensorProductBasis<A, B>
Layer 1.5 BasisTransform     ←  SumToZero, StableReparam
Layer 2   Loss/Link/Variance ←  10 families (see table above)
Layer 3   InnerSolver        ←  GaussianClosedFormInner, PirlsInner, GamFit5Inner, ArmijoInner
Layer 4   ScoreDerivatives   ←  EnvelopeScore, ShapeAwareEnvelopeScore
Layer 5   OuterSolver        ←  NewtonWithHalving, FellnerSchall
Layer 6   FittedGam          ←  predict, predict_ci, predict_diff, vcov, serialize

Outer optimisers (Newton, Fellner-Schall) and per-family tolerances are selected through Loss::outer_tuning() and Loss::allows_no_refresh(), so adding a family is a Loss impl, not a fork of the optimiser.

Versioning

Beta (0.11.x). The API is stabilising; minor bumps may carry breaking changes until the 1.0 surface is locked. All ten families plus Ocat and Quantile/ELF now fit multi-smooth additive designs.

License

MIT.

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

gamrs-0.11.8.tar.gz (3.9 MB view details)

Uploaded Source

Built Distributions

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

gamrs-0.11.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

gamrs-0.11.8-cp314-cp314-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.14Windows x86-64

gamrs-0.11.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

gamrs-0.11.8-cp314-cp314-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

gamrs-0.11.8-cp313-cp313-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.13Windows x86-64

gamrs-0.11.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gamrs-0.11.8-cp313-cp313-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gamrs-0.11.8-cp312-cp312-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.12Windows x86-64

gamrs-0.11.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gamrs-0.11.8-cp312-cp312-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gamrs-0.11.8-cp311-cp311-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.11Windows x86-64

gamrs-0.11.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gamrs-0.11.8-cp311-cp311-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gamrs-0.11.8-cp310-cp310-win_amd64.whl (3.9 MB view details)

Uploaded CPython 3.10Windows x86-64

gamrs-0.11.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

gamrs-0.11.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file gamrs-0.11.8.tar.gz.

File metadata

  • Download URL: gamrs-0.11.8.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for gamrs-0.11.8.tar.gz
Algorithm Hash digest
SHA256 a1b6611f64933784857e63a12752f5b2417e6e50595334a1fdf84fc4f49f183f
MD5 d5ea2ec75dcf78e1184eaeee8b461ddb
BLAKE2b-256 931a61d04593df5f1cf2571ab2ee80b71354e2e74ab52d246b6e609b27d09b9a

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6cb13879ae5fc620f354c96e440aa70e9b67e90911d58125026cfc7846250fb3
MD5 1728e993517456cdbaa7b24f59321725
BLAKE2b-256 27d1ba6be80166159d49af90196b1a0958435215c73114d439e364a32ebffeeb

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: gamrs-0.11.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for gamrs-0.11.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a81d63d0d09a1e409c5dac1159abfe7e0f48198b37a832b679fc1d8adbc6d1ba
MD5 e26536922d7fd921f36959e580baf069
BLAKE2b-256 08bcf0485343fda529377c38191da62da5106a42aecf3a3645ba4b2663dd1d10

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8d8c65d0628c961d139eb8bed63b4323ff4a95884723e02ad38c4b1fe53a3d0
MD5 ecf5b6110c287e88f7f45ca607307ceb
BLAKE2b-256 4a808f6374c52d0c7e0505dff358440e21e801b3fac56f63231a3459aac23638

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61557edc0c051d88b8a8e00bf0020b5ddbd4f569dcab690fa61bb023cc4ca6a5
MD5 e9bf8500a9ca28af778225b602a21a62
BLAKE2b-256 395ede87cbcc43548f86b73c1ea613d46d6ef31263f2ecfad4404fc1d072543f

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: gamrs-0.11.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for gamrs-0.11.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 93e3d1284093985d6c2b6e1d11a560f2e493d8c82085e9343c00afc9baf60f0a
MD5 f3327222d5efa3e4b068b6ca5f7eddb1
BLAKE2b-256 54655022953f6f7d80710be407dfb81246229ddbf8853bc4dc2ed492af5b05b9

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2eee0ecbd3294ecde9b06f81a7c56df42c1119d013d3d34f0461cf2e13737777
MD5 06a0b997c194c04ea9baf6a286b66c2e
BLAKE2b-256 7f304d6d20314855ab43d869e8c34eba8df00a394baf823a3f22be2bb43b63ca

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 451800b1c86bd5636319a1d652259f5d5db7ae3c90b58491e9b0e736f90c5d95
MD5 7f9e7127e2d40de8a5dac19a6b9c909f
BLAKE2b-256 16c1a9be69fc2857a21454c3b2a1879c1b4c6b6a91185dd1c0d24a33cb36a3c7

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: gamrs-0.11.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for gamrs-0.11.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2e9053f9455a926e60bbc574e03b88d2cbb9fd3d6d37bc289f7460922b4ccc79
MD5 b5c457e1d9393f4d6cbbba85f18a9ecd
BLAKE2b-256 c2dd477c5af378bed181bd7eba114b1fbb98c22201e5c9ef9b12b35db970d142

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 207b6de2fd037efa0ff8efe33db3c72b3cd00a7b40ec259a2a36ace268a09378
MD5 ef7bfe2b2554102e76707aee1e755bc3
BLAKE2b-256 9990c52fb898acd8c46dce549eb269f09463a7d2eadd3426158e65b7f1e60884

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f62dc925249726cbdc8c52145b2c45341558783d62fedd26664827a6d612704
MD5 908417f22e9067ef85a37df97f4055e8
BLAKE2b-256 ed9a5c1863014f3b653336f75ec842626a59de1b79cd346969ce2e26a5f79041

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: gamrs-0.11.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for gamrs-0.11.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f144c32654a20e1ba0cd26a5689110f3ab69e75c3c3dbfb60bc928cb0408ffeb
MD5 241742323a30f3f0e098711a4f416064
BLAKE2b-256 67d5fa773935f3d2e639a2cece88af5d7d3544cb4f24ab9708874b3a0e1462ae

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ea5d5c011c64a02772754cc0ec09f43aab697830ee7886ea8b0236a67a8a51a
MD5 0893aca9f1b256a1ae65e932fee97a6c
BLAKE2b-256 0b12b706c331009c8d1a3b6a3491bbcfbbeb530984dc139cf88e152a13ebb583

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc7c57c0b21f50d57055d900cda0feb1e91366d85aa007e9907ef0ec92195202
MD5 1b00ec2dff81ac9bdde89e2d3687e277
BLAKE2b-256 7ecbc570e06c82c84e1f4a5fa1ef0931e34725b7c8aa1ed95ba37171e01b991e

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: gamrs-0.11.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for gamrs-0.11.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4b14a7a19a08106faf0d21e461bbbeba611e12941a7ac91b0572c58db2f8ed83
MD5 05497909d267830780a273789683b970
BLAKE2b-256 6b63f45f4c75e0b31ef37feaa157f230b9b86493f716e97fbfa51430c4fa54f9

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 849961d9b6599e4e9df32e8dcc697653947e5442d4723c753a9d761e2c5cb514
MD5 11e66e51f62819a06cc78c1f8cc124d4
BLAKE2b-256 fcc84b410cd0dac3aff7b5f09e10f63c23728f42efe81cb6134b81553a686d7a

See more details on using hashes here.

File details

Details for the file gamrs-0.11.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gamrs-0.11.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69ed62cd855041134a074a763ec92f902b6aaf71b56031cf9016117c7c8470a0
MD5 176249c4091b4889a066baaf91d8073d
BLAKE2b-256 92a874ac5a9f6f0ade725036a2e0c78e2241090596450cdfba18214c35d90df4

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