innuce-spikify
Convert your data into spike-based signals for efficient and biologically-inspired spiking neural network applications, enabling faster and more energy-efficient computations.
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: frontiersin.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.8%) to scientific vocabulary
Keywords
Repository
Convert your data into spike-based signals for efficient and biologically-inspired spiking neural network applications, enabling faster and more energy-efficient computations.
Basic Info
- Host: GitHub
- Owner: neuromorphic-polito
- License: apache-2.0
- Language: Python
- Default Branch: main
- Homepage: https://spikify.readthedocs.io/en/latest/
- Size: 16.6 MB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 2
Topics
Metadata Files
README.md
Spikify
Spikify is a Python package designed to transform raw signals into spike trains that can be fed into Spiking Neural Networks (SNNs). This package implements a variety of spike encoding techniques based on recent research to facilitate the integration of time-varying signals into neuromorphic computing frameworks.
Introduction
Spiking Neural Networks (SNNs) are a novel type of artificial neural network that operates using discrete events (spikes) in time, inspired by the behavior of biological neurons. They are characterized by their potential for low energy consumption and computational cost, making them suitable for edge computing and IoT applications. However, traditional digital signals must be encoded into spike trains before they can be processed by SNNs.
This package provides a suite of spike encoding techniques that convert time-varying signals into spikes, enabling seamless integration with neuromorphic computing technologies. The encoding techniques implemented in this package are based on the research article: "Spike Encoding Techniques for IoT Time-Varying Signals Benchmarked on a Neuromorphic Classification Task" (Forno et al., 2022).
Features
- Multiple Spike Encoding Techniques: Includes both rate-based and temporal encoding schemes
- Signal Preprocessing: Tools for preprocessing signals, including Gammatone and Butterworth filters
Installation
To install the Spikify package, use pip:
bash
pip install innuce-spikify
Usage
Here is a simple example to get started:
```python import numpy as np
Generate a sinusoidal signal
time = np.linspace(0, 2 * np.pi, 100) # Time from 0 to 2*pi amplitude = np.sin(time) # Sinusoidal signal
Encode the raw signal into a spike train using Poisson Rate Coding
from spikify.encoding.rate import poisson_rate
Set parameters for encoding
np.random.seed(0) # For reproducibility interval_length = 2 # Length of the encoding interval
Encode the sinusoidal signal
encodedsignal = poissonrate(amplitude, interval_length) ```
For more detailed examples and usage, please refer to the documentation.
Encoding Techniques
This package implements several spike encoding families techniques, including:
Rate Encoding
Rate encoding represents information by the firing rate of neurons. The higher the stimulus intensity, the higher the firing rate.
Algorithms: * Poisson Rate
Temporal Encoding
Temporal encoding conveys information through the precise timing of spikes. This family contains subcategories for contrast and deconvolution techniques:
Contrast-Based Temporal Encoding
Algorithms: * Moving Window * Step Forward * Threshold-Based * Zero-Cross Step Forward
Deconvolution-Based Temporal Encoding
Algorithms: * Ben Spiker * Hough Spiker * Modified Hough Spiker
Global Referenced Encoding
Algorithms: * Phase Encoding * Time-to-Spike
Latency Encoding
Algorithms: * Burst Encoding
Each technique has its advantages and can be selected based on the type of input data and the desired SNN architecture.
Encoded Datasets
The following datasets have been selected to serve as examples for benchmarking spike train encoding techniques:
- WISDM Dataset: 20 Hz recordings of human activity through mobile and wearable inertial sensors
These datasets are preprocessed and converted into spike trains to evaluate the performance of different encoding techniques.
Citation
If you use this framework in your research, please cite the following article:
bibtex
@ARTICLE{
10.3389/fnins.2022.999029,
AUTHOR={Forno, Evelina and Fra, Vittorio and Pignari, Riccardo and Macii, Enrico and Urgese, Gianvito },
TITLE={Spike encoding techniques for IoT time-varying signals benchmarked on a neuromorphic classification task},
JOURNAL={Frontiers in Neuroscience},
VOLUME={16},
YEAR={2022},
URL={https://www.frontiersin.org/journals/neuroscience/articles/10.3389/fnins.2022.999029},
DOI={10.3389/fnins.2022.999029},
ISSN={1662-453X},
}
Contributing
We welcome contributions from the community. Please see our CONTRIBUTING.rst file for more details on how to get involved.
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
Owner
- Name: Neuromorphic - EDA Group @ Politecnico di Torino
- Login: neuromorphic-polito
- Kind: organization
- Location: Turin
- Repositories: 1
- Profile: https://github.com/neuromorphic-polito
CodeMeta (codemeta.json)
{
"@context": "https://w3id.org/codemeta/3.0",
"type": "SoftwareSourceCode",
"applicationCategory": "Computer Science",
"author": [
{
"id": "https://orcid.org/0009-0007-8891-5051",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Department of Control and Computer Engineering, Politecnico di Torino"
},
"email": "benedetto.leto@polito.it",
"familyName": "Leto",
"givenName": "Benedetto"
},
{
"id": "https://orcid.org/0000-0001-9175-2838",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Interuniversity Department of Regional and Urban Studies and Planning, Politecnico di Torino"
},
"email": "vittorio.fra@polito.it",
"familyName": "Fra",
"givenName": "Vittorio"
},
{
"id": "https://orcid.org/0000-0003-2672-7593",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Interuniversity Department of Regional and Urban Studies and Planning, Politecnico di Torino"
},
"email": "gianvito.urgese@polito.it",
"familyName": "Urgese",
"givenName": "Gianvito"
},
{
"id": "https://orcid.org/0000-0001-6341-8613",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Department of Control and Computer Engineering, Politecnico di Torino"
},
"email": "riccardo.pignari@polito.it",
"familyName": "Pignari",
"givenName": "Riccardo"
}
],
"codeRepository": "https://github.com/neuromorphic-polito/spikify",
"contributor": {
"id": "https://orcid.org/0009-0007-8891-5051",
"type": "Person",
"affiliation": {
"type": "Organization",
"name": "Department of Control and Computer Engineering, Politecnico di Torino"
},
"email": "benedetto.letoi@polito.it",
"familyName": "Leto",
"givenName": "Benedetto"
},
"dateCreated": "2025-04-11",
"dateModified": "2025-04-11",
"datePublished": "2025-04-11",
"description": "A fully Convert your data into spike-based signals for efficient and biologically-inspired spiking neural network applications, enabling faster and more energy-efficient computations.",
"funder": {
"type": "Organization",
"name": "NRRP-RI, M4C2, funded by the European Union - NextGenerationEU"
},
"identifier": "https://doi.org/10.3389/fnins.2022.999029",
"isPartOf": "https://innuce.polito.it/",
"keywords": [
"Spiking Neural Networks",
"Events Data"
],
"license": "https://spdx.org/licenses/Apache-2.0",
"name": "spikify",
"operatingSystem": [
"Linux",
"maxOS",
"Windows"
],
"programmingLanguage": "Python",
"runtimePlatform": "Miniconda",
"version": "0.1.1",
"developmentStatus": "active",
"funding": "Project IR0000011, CUP B51E22000150006, EBRAINS-Italy",
"isSourceCodeOf": "inNuCE Lab",
"issueTracker": "https://github.com/neuromorphic-polito/spikify/issues",
"referencePublication": "https://doi.org/10.3389/fnins.2022.999029",
"downloadUrl": "https://github.com/neuromorphic-polito/spikify/releases/tag/0.1.1"
}
GitHub Events
Total
- Release event: 1
- Watch event: 1
- Delete event: 6
- Issue comment event: 1
- Public event: 1
- Push event: 50
- Pull request review event: 2
- Pull request event: 25
- Create event: 13
Last Year
- Release event: 1
- Watch event: 1
- Delete event: 6
- Issue comment event: 1
- Public event: 1
- Push event: 50
- Pull request review event: 2
- Pull request event: 25
- Create event: 13
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 0
- Total pull requests: 33
- Average time to close issues: N/A
- Average time to close pull requests: about 1 hour
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.24
- Merged pull requests: 32
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 29
- Average time to close issues: N/A
- Average time to close pull requests: about 1 hour
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.07
- Merged pull requests: 28
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- ben9809 (33)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 22 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 2
- Total maintainers: 1
pypi.org: innuce-spikify
A Python package to convert signal data to spike trains
- Homepage: https://github.com/neuromorphic-polito/spikify
- Documentation: https://spikify.readthedocs.io/en/latest/
- License: Apache-2.0
-
Latest release: 0.1.1
published 9 months ago