Skip to main content

Fast Signature Computations on CPU and GPU

Project description

Logo

Fast Signature, Log Signature and Signature Kernel Computations on CPU and GPU

PyPI - Version PyPI - Downloads CI - Test codecov Read the Docs License

Installation

Before installing, please ensure you have a compatible C++ compiler installed (MSVC for Windows, GCC or Clang for Linux and MacOS), then run

pip install pysiglib

pySigLib will automatically detect CUDA, provided the CUDA_PATH environment variable is set correctly. To manually disable CUDA and build pySigLib for CPU only, create an environment variable CUSIG and set it to 0:

set CUSIG=0
pip install pysiglib

For detailed and up-to-date installation instructions on Windows, Linux and MacOS, see the installation guide.

Documentation

Full documentation is available at https://pysiglib.readthedocs.io

Examples

Signatures

pySigLib implements truncated signature transforms through the function pysiglib.sig, which takes as input a path or batch of paths X, and a truncation degree.

X can be a numpy array or a torch tensor. For a single path, X must be of shape (path length, path dimension). For a batch of paths, it must be of shape (batch size, path length, path dimension).

The computation will run on whichever device X is on. For example, passing X = np.random.uniform(size=(32, 1000, 10)) will trigger the computation to run on the CPU, whilst X = torch.rand(32, 1000, 10, device = "cuda") will run on the CUDA device.

import numpy as np
import pysiglib

X = np.random.uniform(size=(32, 1000, 10))
s = pysiglib.sig(X, degree = 5)

Signature Coefficients

In addition to truncated signatures, pySigLib allows for the computation of individual signature coefficients through the pysiglib.sig_coef function, which takes as input a path or batch of paths X and a word or list of words indexing the coefficients.

import numpy as np
import pysiglib

path = np.random.uniform(size=(32, 1000, 5))
words = [(0,), (1,0), (1,2,4)]
coefs = pysiglib.sig_coef(path, words)

Log Signatures

Similarly to signatures, pySigLib implements truncated log signature transforms through the function pysiglib.log_sig. The function takes a method parameter, which determines the method used to compute the log signature and the form of the output. For details, please see the documentation.

import numpy as np
import pysiglib
pysiglib.prepare_log_sig(dimension = 10, degree = 5, method = 1)

X = np.random.uniform(size=(32, 1000, 10))
ls = pysiglib.log_sig(X, degree = 5, method = 1)

Signature Kernels

pySigLib implements signature kernels through the function pysiglib.sig_kernel, which takes as input a pair of paths or a pair of batches of paths X, Y. The dyadic_order parameter can be used to refine the PDE grid, giving more accurate results. If specified as an integer, the same refinement factor is applied to both X and Y. To apply different factors to the two paths, dyadic_order can be specified as a tuple.

As with signatures, X,Y can be numpy arrays or torch tensors, and must have the same shapes as described above. Again, the computation will run on whichever device X,Y are located on.

import numpy as np
import pysiglib

X = np.random.uniform(size=(32, 1000, 10))
Y = np.random.uniform(size=(32, 1000, 10))
k = pysiglib.sig_kernel(X, Y, dyadic_order=1)

# In cases where the paths differ in length, it may
# be advantageous to refine the PDE grid by different
# amounts for X and Y:

X = np.random.uniform(size=(32, 100, 10))
Y = np.random.uniform(size=(32, 5000, 10))
k = pysiglib.sig_kernel(X, Y, dyadic_order=(3, 0))

Contribution

Pull requests are not being accepted at this time, but issues and suggestions are welcome.

Citation

If you found this library useful in 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}
}

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

pysiglib-1.1.1.tar.gz (247.8 kB view details)

Uploaded Source

File details

Details for the file pysiglib-1.1.1.tar.gz.

File metadata

  • Download URL: pysiglib-1.1.1.tar.gz
  • Upload date:
  • Size: 247.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pysiglib-1.1.1.tar.gz
Algorithm Hash digest
SHA256 256c36c2f9af9438f9dbc02789b303890b2fa67b0f1cd7e373ebadc38ca3533c
MD5 315c1f2c54011cb4acc1e90e3233db0d
BLAKE2b-256 78bf55f9fc9d0ca30492e1dcc2a6154b9895e4abc84b04c06f3a639b9b06b9d5

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