Fast rough path signatures - 1.6× faster than iisignature
Project description
chen-signatures
Fast rough path signatures for Python, powered by Julia.
1.6× faster than iisignature with support for modern Python (3.9-3.13).
Why chen-signatures?
| Feature | chen-signatures | iisignature |
|---|---|---|
| Speed | 187 ms | 299 ms |
| Python 3.10+ | ✅ Yes | ❌ No (≤3.9 only) |
| Python 3.13 | ✅ Yes | ❌ No |
| Autodiff | ✅ Yes (ForwardDiff) | ❌ No |
| Maintained | ✅ Active | ⚠️ Unmaintained |
Benchmark: N=1000 points, d=10 dims, level=5
Installation
pip install chen-signatures
First import will automatically install Julia (via juliacall). Takes ~2 minutes once.
Quick Start
import chen
import numpy as np
# Your time series data
path = np.random.randn(1000, 10) # 1000 timepoints, 10 dimensions
# Compute signature
signature = chen.sig(path, m=5)
# Compute log-signature
logsignature = chen.logsig(path, m=5)
API
sig(path, m)
Compute the truncated signature up to level m.
Parameters:
path:(N, d)numpy array - Path datam: int - Truncation level
Returns:
numpy.ndarray- Flattened signature coefficients
Example:
import chen
import numpy as np
path = np.array([[0., 0.], [1., 0.], [1., 1.]])
sig = chen.sig(path, m=3)
# Returns array of length d + d² + d³ = 2 + 4 + 8 = 14
logsig(path, m)
Compute the log-signature projected onto the Lyndon basis.
Parameters:
path:(N, d)numpy array - Path datam: int - Truncation level
Returns:
numpy.ndarray- Log-signature in Lyndon basis
Example:
logsig = chen.logsig(path, m=5)
Supported Types
float32andfloat64- Any numpy array-like input
Performance
Production-scale benchmark (N=1000, d=10, m=5):
import chen
import numpy as np
import time
path = np.random.randn(1000, 10)
t0 = time.time()
sig = chen.sig(path, 5)
print(f"Time: {(time.time()-t0)*1000:.1f} ms")
# Output: Time: 187.4 ms
Compare to iisignature: 299.3 ms (1.6× slower)
Use Cases
- Financial time series: Extract signature features from price data
- Sensor data: Process multivariate sensor streams
- Neural CDEs: Differentiable features for neural networks
- Anomaly detection: Signature-based feature engineering
Limitations
- First import is slow (~2 min to install Julia environment, one-time)
- Not GPU-accelerated (CPU only, but very fast)
- Memory usage: Uses more RAM than iisignature (but negligible for most applications)
Requirements
- Python ≥3.9
- NumPy ≥1.20
- ~500MB disk space (for Julia installation)
Citation
If you use this in research, please cite:
@software{chen_signatures,
author = {Combi, Alessandro},
title = {chen-signatures: Fast rough path signatures for Python},
year = {2025},
url = {https://github.com/aleCombi/Chen.jl}
}
License
MIT License - see LICENSE file.
Contributing
Issues and pull requests welcome at github.com/aleCombi/Chen.jl
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chen_signatures-0.1.2.tar.gz.
File metadata
- Download URL: chen_signatures-0.1.2.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f099ad0ba9caac98ab9e94e020c77ca79e17d50e2840e8da0f14fbaa4f2246a
|
|
| MD5 |
4b979470b8d7eab5f8b9e7073f166d7f
|
|
| BLAKE2b-256 |
0fd452fc81bdadf103470be1f781ec55b32a5b3fb087ee7efc9d882fea49e3ed
|
File details
Details for the file chen_signatures-0.1.2-py3-none-any.whl.
File metadata
- Download URL: chen_signatures-0.1.2-py3-none-any.whl
- Upload date:
- Size: 3.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82ed717fbd7fa7837f8c3485703d3eea83a24e245acdb048e444810e08da8986
|
|
| MD5 |
02886cddc6566d2ea1b44d4232723b6e
|
|
| BLAKE2b-256 |
3d24cb6fdf2fa9dd7aa561f911a3826360fb1b84b09c57a90068da210e1e52b7
|