{"id":15362524,"url":"https://github.com/patrick-kidger/signatory","last_synced_at":"2025-11-17T15:34:20.279Z","repository":{"id":34934572,"uuid":"191430912","full_name":"patrick-kidger/signatory","owner":"patrick-kidger","description":"Differentiable computations of the signature and logsignature transforms, on both CPU and GPU. (ICLR 2021)","archived":false,"fork":false,"pushed_at":"2024-01-11T16:33:10.000Z","size":1472,"stargazers_count":268,"open_issues_count":20,"forks_count":35,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-28T18:13:49.271Z","etag":null,"topics":["deep-learning","deep-neural-networks","logsignature","logsignatures","machine-learning","pytorch","rough-paths","signature","signatures"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patrick-kidger.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.txt","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["patrick-kidger"]}},"created_at":"2019-06-11T18:43:15.000Z","updated_at":"2025-03-26T12:52:10.000Z","dependencies_parsed_at":"2024-06-18T21:32:30.531Z","dependency_job_id":"1d39511d-3682-4195-80e7-af2328f37e7a","html_url":"https://github.com/patrick-kidger/signatory","commit_stats":{"total_commits":263,"total_committers":3,"mean_commits":87.66666666666667,"dds":"0.034220532319391594","last_synced_commit":"2ce3b4af491dde96707b949528cdb648086dbce7"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-kidger%2Fsignatory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-kidger%2Fsignatory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-kidger%2Fsignatory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-kidger%2Fsignatory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrick-kidger","download_url":"https://codeload.github.com/patrick-kidger/signatory/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234920,"owners_count":20905854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","deep-neural-networks","logsignature","logsignatures","machine-learning","pytorch","rough-paths","signature","signatures"],"created_at":"2024-10-01T13:02:07.690Z","updated_at":"2025-11-17T15:34:15.228Z","avatar_url":"https://github.com/patrick-kidger.png","language":"C++","funding_links":["https://github.com/sponsors/patrick-kidger"],"categories":[],"sub_categories":[],"readme":"\n|Signatory|\n###########\n\n.. |Signatory| image:: https://raw.githubusercontent.com/patrick-kidger/signatory/master/docs/_static/signatory.png\n\nDifferentiable computations of the signature and logsignature transforms, on both CPU and GPU.\n\n\n\n\nWhat is the signature transform?\n################################\nThe *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!\n\nBesides 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.\n\n\nCheck out `this \u003chttps://arxiv.org/abs/1603.03788\u003e`__ for a primer on the use of the signature transform in machine learning, just as a feature transformation, and `this \u003chttps://papers.nips.cc/paper/8574-deep-signature-transforms\u003e`__ for a more in-depth look at integrating the signature transform into neural networks.\n\n\n\n\nInstallation\n############\n\n.. code-block:: bash\n\n    pip install signatory==\u003cSIGNATORY_VERSION\u003e.\u003cTORCH_VERSION\u003e --no-cache-dir --force-reinstall\n\nwhere ``\u003cSIGNATORY_VERSION\u003e`` is the version of Signatory you would like to download (the most recent version is 1.2.7) and ``\u003cTORCH_VERSION\u003e`` is the version of PyTorch you are using.\n\nAvailable for Python 3.7--3.9 on Linux and Windows. Requires `PyTorch \u003chttp://pytorch.org/\u003e`__ 1.8.0--1.11.0.\n\n(If you need it, then previous versions of Signatory included support for older versions of Python, PyTorch, and MacOS, see `here \u003chttps://signatory.readthedocs.io/en/latest/pages/usage/installation.html#older-versions\u003e`__.)\n\nAfter installation, just ``import signatory`` inside Python.\n\nTake care **not** to run ``pip install signatory``, as this will likely download the wrong version.\n\nExample:\n--------\n\nFor example, if you are using PyTorch 1.11.0 and want Signatory 1.2.7, then you should run:\n\n.. code-block:: bash\n\n    pip install signatory==1.2.7.1.11.0 --no-cache-dir --force-reinstall\n        \nWhy you need to specify all of this:\n------------------------------------\n\nYes, this looks a bit odd. This is needed to work around `limitations of PyTorch \u003chttps://github.com/pytorch/pytorch/issues/28754\u003e`__ and `pip \u003chttps://www.python.org/dev/peps/pep-0440/\u003e`__.\n\nThe ``--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.\n\nInstallation from source is also possible; please consult the `documentation \u003chttps://signatory.readthedocs.io/en/latest/pages/usage/installation.html#usage-install-from-source\u003e`__. This also includes information on how to run the tests and benchmarks.\n\nIf you have any problems with installation then check the `FAQ \u003chttps://signatory.readthedocs.io/en/latest/pages/miscellaneous/faq.html#miscellaneous-faq-importing\u003e`__. If that doesn't help then feel free to `open an issue \u003chttps://github.com/patrick-kidger/signatory/issues\u003e`__.\n\n\n\nDocumentation\n#############\nThe documentation is available `here \u003chttps://signatory.readthedocs.io\u003e`__.\n\nExample\n#######\nUsage is straightforward. As a simple example,\n\n.. code-block:: python\n\n    import signatory\n    import torch\n    batch, stream, channels = 1, 10, 2\n    depth = 4\n    path = torch.rand(batch, stream, channels)\n    signature = signatory.signature(path, depth)\n    # signature is a PyTorch tensor\n\nFor further examples, see the `documentation \u003chttps://signatory.readthedocs.io/en/latest/pages/examples/examples.html\u003e`__.\n\n\nCitation\n########\nIf you found this library useful in your research, please consider citing `the paper \u003chttps://arxiv.org/abs/2001.00706\u003e`__.\n\n.. code-block:: bibtex\n\n    @inproceedings{kidger2021signatory,\n      title={{S}ignatory: differentiable computations of the signature and logsignature transforms, on both {CPU} and {GPU}},\n      author={Kidger, Patrick and Lyons, Terry},\n      booktitle={International Conference on Learning Representations},\n      year={2021},\n      note={\\url{https://github.com/patrick-kidger/signatory}}\n    }\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrick-kidger%2Fsignatory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrick-kidger%2Fsignatory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrick-kidger%2Fsignatory/lists"}