Skip to main content

Fast evaluation of SMC' likelihood for population genetic data

Project description

phlashlib

This library computes the log-likelihood of binary heterozygosity sequences under a sequentially Markov coalescent model with recombination.

API

phlashlib.loglik(
    data: Int[ArrayLike, "L"],
    iicr: IICRCurve,
    times: Float[ArrayLike, "T"],
    theta: ScalarLike,
    rho: ScalarLike,
    warmup: int = 500,
    chunk_size: int = None,
) -> Scalar

Features

  • JAX-compatible: vmap, jit, grad, etc.
  • GPU-accelerated via cuda.core.experimental (fallback to CPU if unavailable)

Example

from phlashlib.iicr import PiecewiseConstant
from phlashlib.loglik import loglik
import jax.numpy as jnp

times = jnp.array([0.0, 0.1, 0.5, 2.0])
rates = jnp.array([100.0, 10.0, 1.0])
iicr = PiecewiseConstant(t=times[:-1], c=rates)

data = jnp.array([0, 1, 1, 0, -1, 1, 0, 0], dtype=jnp.int8)
theta = 1.5
rho = 0.5

ll = loglik(data, iicr, times, theta, rho)

JAX Use

from jax import jit, vmap, grad

# JIT
f = jit(loglik)

# Vectorized over data
batched_ll = vmap(loglik, in_axes=(0, None, None, None, None))(batch_data, iicr, times, theta, rho)

# Gradient w.r.t. theta
dtheta = grad(loglik, argnums=3)(data, iicr, times, theta, rho)

Notes

  • data: 1D int8, values in {0, 1, -1}
  • iicr: subclass of IICRCurve, e.g. PiecewiseConstant
  • theta, rho: scalar mutation and recombination rates
  • Internally uses a fused CUDA kernel with jax.custom_vjp if available
  • Fallback implementation uses pure JAX

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

phlashlib-0.2.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

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

phlashlib-0.2.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file phlashlib-0.2.0.tar.gz.

File metadata

  • Download URL: phlashlib-0.2.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for phlashlib-0.2.0.tar.gz
Algorithm Hash digest
SHA256 60836342da04e0125f8ee661f3e24f6c4f4aeb158b4c3658408e82a0a4ea3abe
MD5 d96e173ceb34266946d50d48b3941674
BLAKE2b-256 8f3e4fe60159f95a5c519f9ac64f29182ab9f7865b507dc57de35ef4d9747ee3

See more details on using hashes here.

File details

Details for the file phlashlib-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: phlashlib-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for phlashlib-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc50661347ad1489ead950bc24cbc5cbe8caaead4043390211ea3362f20ddfa5
MD5 b99622d54891574c9f9b2acbe0f60532
BLAKE2b-256 2489e0a3a368e5b63c03782523de8e12d786f9b4a39141c828a84113e163ad23

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