Skip to main content

Fast likelihood-free PET kinetic modelling in JAX

Project description

vPET-ABC-JAX

Fast, likelihood‑free PET kinetic modelling implemented in JAX


1 · What is this repository?

vpetabc is a pure‑Python re‑implementation of the vPET‑ABC framework (Grazian et al., 2021) for large‑scale dynamic PET kinetic modelling, written from the ground up in JAX.

Compared with the earlier CuPy version, the JAX rewrite

  • removes CUDA‑specific boiler‑plate – the same code runs on CPU, multi‑GPU, or TPU via XLA;
  • exposes a clean, PyTorch‑like API centred on an abstract KineticModel;
  • relies on vectorised primitives (vmap, lax.scan) so that even > 40 M‑voxel datasets fit into a single JIT‑compiled graph;
  • delivers further speed‑ups;
  • depends only on jax, pandas, and tqdm – no CuPy, no manual builds.

2 · Repository layout

.
├── data/
│   ├── sample_2TCM.csv
│   └── sample_lpntPET.csv
├── dist/                     # wheels/sdists created by `python -m build`
├── example_usage.ipynb
├── pyproject.toml
├── README.md
├── src/
    └── vpetabc/
        ├── __init__.py       # package namespace
        ├── engine.py         # ABC engine + helpers
        ├── models.py         # TwoTissueModel, lpntPETModel, …
        ├── priors.py         # prior samplers
        └── utilities.py      # I/O + posterior utilities
Module Description
engine.py ABCRejection, the fully vectorised, JIT‑compiled rejection‑ABC driver
models.py KineticModel base‑class + TwoTissueModel, lpntPETModel implementations
priors.py Uniform × Bernoulli prior samplers (TwoTissuePrior, lpntPETPrior)
utilities.py preprocess_table, get_conditional_posterior_mean, misc. helpers

3 · Installation

TL;DRpip install vpet-abc[cuda]

3.1  Stable release from PyPI

# create & activate a virtual environment
python -m venv .venv && source .venv/bin/activate

# CPU‑only:
pip install vpet-abc

# NVIDIA GPUs
pip install vpet-abc[cuda]

jax[cuda] wheels already bundle matching CUDA/cuDNN libraries; you only need a driver on Linux / Windows. For TPU, Metal (macOS), or ROCm see the official
JAX installation guide.

3.2  Tested environments

OS Python jax / jaxlib Accelerator
macOS 15.5 (arm64) 3.11.12 0.6.1 (CPU) Apple M2
Rocky Linux 8.10 3.9.2 0.4.30 [cuda12] NVIDIA V100

4 · Quick start

See example_usage.ipynb for an executable walkthrough, or run:

import jax
import jax.numpy as jnp
import jax.random as jr
import pandas as pd
from vpetabc import *

df = pd.read_csv("data/sample_2TCM.csv", index_col=0)
Cp_fine, A, TACs, _ = preprocess_table(df)

engine = ABCRejection(
    TwoTissueModel(),
    prior_sampler = TwoTissuePrior,
    num_sims      = 200_000,
    accept_frac   = 0.005,
)

post = engine.run(jr.PRNGKey(0), TACs, Cp_fine, A, batch_size=50_000)
means, chosen = get_conditional_posterior_mean(post)
print(means[:3])            # first 3 voxels

5 · Extending the framework

  1. Define your kinetic model
class MyModel(KineticModel):
    @partial(jax.jit, static_argnums=(0,))
    def simulate(self, θ, Cp, dt):
        # return Ct(t) as a (T_fine,) array
        ...
  1. Write a prior
def MyPrior(key, n, lows, highs):
    return jr.uniform(key, (n, P), lows, highs)
  1. Pass MyModel and MyPrior to ABCRejection.
    Batching, GPU kernels, and distance evaluation are handled automatically.

6 · Benchmarks

TBD


7 · Citation

TBA soon.


8 · Licence

vpetabc is released under the MIT Licence (see LICENCE).
The sample dataset is provided for non‑commercial research use only.

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

vpet_abc-0.1.2.tar.gz (761.8 kB view details)

Uploaded Source

Built Distribution

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

vpet_abc-0.1.2-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file vpet_abc-0.1.2.tar.gz.

File metadata

  • Download URL: vpet_abc-0.1.2.tar.gz
  • Upload date:
  • Size: 761.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.12

File hashes

Hashes for vpet_abc-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e1d7b9dce68d385a6bf31fbcc02f055489648110fbb6508874d442e85699e446
MD5 532d97787c7f30c234d4acde6c0ff6ff
BLAKE2b-256 0c82fc7b13d8bf18f99185bf9f398dffdb76462d13d806dd29eb0e81393e7339

See more details on using hashes here.

File details

Details for the file vpet_abc-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: vpet_abc-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.12

File hashes

Hashes for vpet_abc-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f8801d9321596628354f02cbd2d1abcde6953a9e78391cc7e8b5ff9906362a64
MD5 3c24a8154ecd358dbf0f6560d40a15e7
BLAKE2b-256 c88d261a763012f328bbca973ead7d9bfea012c6f18ed906b5f1ef8f7c1f096d

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