Skip to main content

Fast path signatures

Project description

chen-signatures

Fast rough path signatures for Python, powered by a high-performance Julia backend.

PyPI Python

chen-signatures brings the speed and numerical stability of Julia’s ChenSignatures.jl to Python via juliacall, offering a modern, actively maintained alternative to existing signature libraries.

It has been benchmarked against both iisignature and pysiglib, showing:

  • Comparable performance to pysiglib, a modern C++/Python implementation
  • Consistently faster performance than iisignature across typical configurations

Full benchmark notebooks and articles will be published separately.


Installation

pip install chen-signatures

On first import, juliacall will automatically install a lightweight Julia runtime. This happens once per environment.


Quick Start

import chen
import numpy as np

path = np.random.randn(1000, 10)

# Compute signature
signature = chen.sig(path, m=5)

# Compute log-signature (requires prepare step)
basis = chen.prepare_logsig(d=10, m=5)  # d must match path dimension
logsignature = chen.logsig(path, basis)

API

sig(path, m)

Compute a truncated signature up to level m.

signature = chen.sig(path, m=3)

Args:

  • path: (N, d) array-like where N is path length, d is dimension
  • m: truncation level (positive integer)

Returns: 1D numpy array of signature coefficients


prepare_logsig(d, m)

Precompute and cache the Lyndon basis for log-signature computation.

basis = chen.prepare_logsig(d=10, m=5)

Args:

  • d: path dimension (positive integer)
  • m: truncation level (positive integer)

Returns: Basis cache object (reusable across multiple paths)


logsig(path, basis)

Compute log-signatures using a precomputed Lyndon basis.

basis = chen.prepare_logsig(d=10, m=5)
logsig = chen.logsig(path, basis)

Args:

  • path: (N, d) array-like where N is path length, d is dimension
  • basis: Basis object from prepare_logsig(d, m)

Returns: 1D numpy array of log-signature coefficients (Lyndon basis projection)

Note: The basis object should match the dimension of your path. Prepare it once and reuse for multiple paths of the same dimension.


Supported Types

  • float32, float64
  • Any NumPy array-like input
  • Contiguous arrays recommended (handled automatically)

Use Cases

  • Financial time series
  • Sensor data and IoT
  • Neural CDEs / differential ML
  • Representation learning
  • Anomaly detection

Limitations

  • First import is slow (Julia installation)
  • CPU-only execution
  • Uses more memory than minimal C++ libraries

Requirements

  • Python ≥ 3.9
  • NumPy ≥ 1.20
  • ~500MB disk space for Julia runtime

Citation

@software{chen_signatures,
  author = {Combi, Alessandro},
  title = {chen-signatures: Fast rough path signatures for Python},
  year = {2025},
  url = {https://github.com/aleCombi/ChenSignatures.jl}
}

Contributing

Issues and feedback are welcome at https://github.com/aleCombi/ChenSignatures.jl/issues

However, pull requests are not being accepted at this time.

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

chen_signatures-0.3.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

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

chen_signatures-0.3.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file chen_signatures-0.3.0.tar.gz.

File metadata

  • Download URL: chen_signatures-0.3.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for chen_signatures-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f2d09d634cfb722f2337f8819c6c0a4dd37433a13f36e4e25488a0f4ee5a94cd
MD5 cebae31208622d9a3300140826d5ad0d
BLAKE2b-256 4b6a4ae33cff4635b3c368a763c212eb7bf393868bf94c997738c70825c1272d

See more details on using hashes here.

File details

Details for the file chen_signatures-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for chen_signatures-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 32341359c8914a0e9a5770bd2765f2e1c04944f27a1b77b01ac15afb3bf1e4bb
MD5 0b27ef4992387c3d72563763d358e484
BLAKE2b-256 c22331f1d04e03b7209a3cef33a0cdde00a00105ed58139534e406f786f1193e

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