Skip to content

Latest commit

 

History

671 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pySigLib logo

The high-performance toolkit for rough path computation

Documentation | Installation | API reference | Paper

PyPI - Version PyPI - Downloads Python Versions CI - Test Read the Docs License

pySigLib brings path signatures, log-signatures, branched signatures, and signature kernels into one accelerated toolkit. It provides NumPy, PyTorch, and JAX support, with automatic differentiation for PyTorch and JAX and multithreaded C++ or native CUDA execution.

Installation

pip install pysiglib

# Add CUDA support
pip install "pysiglib[cuda]"

The JAX integration is included in the wheel. Install JAX separately with pip install jax if you want to use it. For source builds and platform-specific guidance, see the installation guide.

Quick start

import numpy as np
import pysiglib

path = np.random.default_rng().normal(size=(32, 1000, 10))
signature = pysiglib.sig(path, degree=5)

Paths have shape (path length, dimension) or (batch size, path length, dimension). Computation runs on the device where the input already lives.

Why pySigLib?

  • A unified toolkit for rough path computations - signatures, log-signatures, branched signatures, and signature kernels.
  • Accelerated CPU and CUDA implementations for large workloads.
  • Native NumPy, PyTorch, and JAX support without moving data between frameworks.
  • Automatic differentiation with PyTorch and JAX, including jit and vmap support in JAX.
  • Cross-platform - Windows, Linux and Mac systems supported.

Capabilities

Signatures
Truncated signatures and individual coefficients.
Log-signatures
Truncated log signatures in full or compact Lyndon coordinates.
Signature kernels
Kernels and metrics for sequential data.
Branched signatures
Branched signatures, branched log signatures and branched signature kernels.
Signature streams
Online updates and constant-time interval queries.
Backpropagation
Manual and automatic backpropagation with PyTorch and JAX support.

Framework integrations

PyTorch autograd

Signatures compose directly with the rest of a PyTorch model:

import torch
from pysiglib.torch_api import sig

path = torch.randn(32, 1000, 10, device="cuda", requires_grad=True)
sig(path, degree=5).sum().backward()

JAX transforms

The JAX API supports jit, vmap, and grad:

import jax
import jax.numpy as jnp
from pysiglib.jax_api import sig

@jax.jit
def signature_norm(path):
    return jnp.sum(sig(path, degree=5) ** 2)

path = jax.random.normal(jax.random.key(0), (1000, 10))
gradient = jax.grad(signature_norm)(path)

See the documentation for complete examples and the full API reference.

Citation

If the library supports your research, please consider citing the paper:

@article{shmelev2025pysiglib,
  title={pySigLib -- Fast Signature-Based Computations on CPU and GPU},
  author={Shmelev, Daniil and Salvi, Cristopher},
  journal={arXiv preprint arXiv:2509.10613},
  year={2025}
}

Contributing

Contributions are welcome. Please open an issue first to discuss a change, then submit a pull request.

Sponsors

If you'd like to support development, please consider sponsoring the project.

About

Fast path signatures, log signatures, and signature kernels with PyTorch, JAX, and CUDA support

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages