All Projects → patrick-kidger → signatory

patrick-kidger / signatory

Licence: Apache-2.0 License
Differentiable computations of the signature and logsignature transforms, on both CPU and GPU. (ICLR 2021)

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to signatory

Deep-Signature-Transforms
Code for "Deep Signature Transforms" (NeurIPS 2019)
Stars: ✭ 65 (-57.52%)
Mutual labels:  signature, signatures, rough-paths
neuralRDEs
Code for: "Neural Rough Differential Equations for Long Time Series", (ICML 2021)
Stars: ✭ 102 (-33.33%)
Mutual labels:  signatures, rough-paths
Sig
The most powerful and customizable binary pattern scanner
Stars: ✭ 131 (-14.38%)
Mutual labels:  signature, signatures
AutomatedOutlookSignature
PowerShell script to automate the creation of Outlook signatures using Active Directory attributes.
Stars: ✭ 36 (-76.47%)
Mutual labels:  signature, signatures
email-signature
My E-mail Signature
Stars: ✭ 34 (-77.78%)
Mutual labels:  signature
SignatureView
【Android View】:好用的Android电子签名板,能保存所签名的图片
Stars: ✭ 89 (-41.83%)
Mutual labels:  signature
blind-signatures
Chaum's Blind Signatures
Stars: ✭ 24 (-84.31%)
Mutual labels:  signature
rsign2
A command-line tool to sign files and verify signatures in pure Rust.
Stars: ✭ 102 (-33.33%)
Mutual labels:  signatures
libdigidocpp
Libdigidocpp library offers creating, signing and verification of digitally signed documents, according to XAdES and XML-DSIG standards. Documentation http://open-eid.github.io/libdigidocpp
Stars: ✭ 80 (-47.71%)
Mutual labels:  signature
okhttp-awssigner
An OkHttp interceptor for signing requests with AWSv4 signatures
Stars: ✭ 14 (-90.85%)
Mutual labels:  signature
python-makefun
Dynamically create python functions with a proper signature.
Stars: ✭ 62 (-59.48%)
Mutual labels:  signature
wasmsign2
PoC implementation of the WebAssembly Modules Signatures proposal.
Stars: ✭ 18 (-88.24%)
Mutual labels:  signatures
SINCERA
An R implementation of the SINCERA pipeline for single cell RNA-seq profiling analysis
Stars: ✭ 20 (-86.93%)
Mutual labels:  signature
sig
Validate Method Arguments & Results in Ruby
Stars: ✭ 54 (-64.71%)
Mutual labels:  signatures
egnature
Egnature is an email signature generator tool, which is an open source and free to use.
Stars: ✭ 26 (-83.01%)
Mutual labels:  signature
multi-party-eddsa
Rust implementation of multi party Ed25519 signature scheme.
Stars: ✭ 86 (-43.79%)
Mutual labels:  signature
SnortRules
This is an open source Snort rules repository
Stars: ✭ 18 (-88.24%)
Mutual labels:  signature
DigiDoc4-Client
DigiDoc4 Client is an application for digitally signing and encrypting documents; the software includes functionality to manage Estonian ID-card - change pin codes etc.
Stars: ✭ 91 (-40.52%)
Mutual labels:  signature
channelHelper
基于walle工具的多渠道打包脚本
Stars: ✭ 35 (-77.12%)
Mutual labels:  signature
gostcoin
GOST R 34.11-2012 algo, GOST R 34.10-2012 signature
Stars: ✭ 31 (-79.74%)
Mutual labels:  signature

Signatory

Differentiable computations of the signature and logsignature transforms, on both CPU and GPU.

What is the signature transform?

The signature transform is roughly analogous to the Fourier transform, in that it operates on a stream of data (often a time series). Whilst the Fourier transform extracts information about frequency, the signature transform extracts information about order and area. Furthermore (and unlike the Fourier transform), order and area represent all possible nonlinear effects: the signature transform is a universal nonlinearity, meaning that every continuous function of the input stream may be approximated arbitrary well by a linear function of its signature. If you're doing machine learning then you probably understand why this is such a desirable property!

Besides this, the signature transform has many other nice properties -- robustness to missing or irregularly sampled data; optional translation invariance; optional sampling invariance. Furthermore it can be used to encode certain physical quantities, and may be used for data compression.

Check out this for a primer on the use of the signature transform in machine learning, just as a feature transformation, and this for a more in-depth look at integrating the signature transform into neural networks.

Installation

pip install signatory==<SIGNATORY_VERSION>.<TORCH_VERSION> --no-cache-dir --force-reinstall

where <SIGNATORY_VERSION> is the version of Signatory you would like to download (the most recent version is 1.2.6) and <TORCH_VERSION> is the version of PyTorch you are using.

Available for Python 3.6--3.9 on Linux and Windows. Requires PyTorch 1.6.0--1.9.0.

(If you need it, then previous versions of Signatory included support for older versions of Python, PyTorch, and MacOS, see here.)

After installation, just import signatory inside Python.

Take care not to run pip install signatory, as this will likely download the wrong version.

Example:

For example, if you are using PyTorch 1.7.1 and want Signatory 1.2.4, then you should run:

pip install signatory==1.2.4.1.7.1 --no-cache-dir --force-reinstall

Why you need to specify all of this:

Yes, this looks a bit odd. This is needed to work around limitations of PyTorch and pip.

The --no-cache-dir --force-reinstall flags are because pip doesn't expect to need to care about versions quite as much as this, so it will sometimes erroneously use inappropriate caches if not told otherwise.

Installation from source is also possible; please consult the documentation. This also includes information on how to run the tests and benchmarks.

If you have any problems with installation then check the FAQ. If that doesn't help then feel free to open an issue.

Documentation

The documentation is available here.

Example

Usage is straightforward. As a simple example,

import signatory
import torch
batch, stream, channels = 1, 10, 2
depth = 4
path = torch.rand(batch, stream, channels)
signature = signatory.signature(path, depth)
# signature is a PyTorch tensor

For further examples, see the documentation.

Citation

If you found this library useful in your research, please consider citing the paper.

@inproceedings{kidger2021signatory,
  title={{S}ignatory: differentiable computations of the signature and logsignature transforms, on both {CPU} and {GPU}},
  author={Kidger, Patrick and Lyons, Terry},
  booktitle={International Conference on Learning Representations},
  year={2021},
  note={\url{https://github.com/patrick-kidger/signatory}}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].