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.

https://github.com/neuromorphic-polito/spikify

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

neuromorphic signal-processing
Last synced: 6 months ago · JSON representation

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
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 2
Topics
neuromorphic signal-processing
Created over 1 year ago · Last pushed 7 months ago
Metadata Files
Readme Contributing License Support Authors Codemeta

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

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

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 22 Last month
Rankings
Dependent packages count: 9.3%
Average: 30.9%
Dependent repos count: 52.6%
Maintainers (1)
Last synced: 6 months ago