GithubHelp home page GithubHelp logo

jpdominguez / pynavis Goto Github PK

View Code? Open in Web Editor NEW
16.0 3.0 3.0 27.64 MB

An open-source cross-platform package to analyze and post-process spiking information obtained from neuromorphic cochleas

License: GNU General Public License v3.0

Python 100.00%
neuromorphic-engineering neuromorphic-auditory-sensors python

pynavis's Introduction

pyNAVIS: an open-source cross-platform Neuromorphic Auditory VISualizer

pyNAVIS is an open-source cross-platform Python module for analyzing and processing spiking information obtained from neuromorphic auditory sensors. It is primarily focused to be used with a NAS, but can work with any other cochlea sensor.

Installing

pyNAVIS is distributed on PyPi and can be installed with pip:

pip install pyNAVIS

For more information, head over to the ReadTheDocs Documentation.

Getting started

Now that you have everything set up, you can create a new Python file and import the package:

from pyNAVIS import *

With this, you can now use all the functionalities that pyNAVIS provides. A more detailed guide with examples can be read here.

Software package

The Python code has been documented using docstrings, which is very convenient for users that want to either use the software or develop new features and functionalities.

To see all the information for the different Python modules, classes, methods and all the possible configuration options, read the pyNAVIS package section.

Contributing

New functionalities or improvements to the existing project are welcome. To contribute to this project please follow these guidelines:

  1. Search previous suggestions before making a new one, as yours may be a duplicate.
  2. Fork the project.
  3. Create a branch.
  4. Commit your changes to improve the project.
  5. Push this branch to your GitHub project.
  6. Open a Pull Request.
  7. Discuss, and optionally continue committing.
  8. Wait untill the project owner merges or closes the Pull Request.
If it is a new feature request (e.g., a new functionality), post an issue to discuss this new feature before you start coding. If the project owner approves it, assign the issue to yourself and then do the steps above.

Thank you for contributing to pyNAVIS!

Cite this work

APA: Dominguez-Morales, J. P., Gutierrez-Galan, D., Rios-Navarro, A., Duran-Lopez, L., Dominguez-Morales, M., & Jimenez-Fernandez, A. (2021). pyNAVIS: An open-source cross-platform software for spike-based neuromorphic audio information processing. Neurocomputing, 449, 172-175.

ISO 690: DOMINGUEZ-MORALES, Juan P., et al. pyNAVIS: An open-source cross-platform software for spike-based neuromorphic audio information processing. Neurocomputing, 2021, vol. 449, p. 172-175.

MLA: Dominguez-Morales, Juan P., et al. "pyNAVIS: An open-source cross-platform software for spike-based neuromorphic audio information processing." Neurocomputing 449 (2021): 172-175.

BibTeX: @article{dominguez2021pynavis, title={pyNAVIS: An open-source cross-platform software for spike-based neuromorphic audio information processing}, author={Dominguez-Morales, Juan P and Gutierrez-Galan, D and Rios-Navarro, A and Duran-Lopez, L and Dominguez-Morales, M and Jimenez-Fernandez, A}, journal={Neurocomputing}, volume={449}, pages={172--175}, year={2021}, publisher={Elsevier} }

License

This project is licensed under the GPL License - see the LICENSE.md file for details.

Copyright © 2018 Juan P. Dominguez-Morales
[email protected]

pynavis's People

Contributors

alvayus avatar dependabot[bot] avatar jpdominguez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

pynavis's Issues

Missing adapt_SpikesFile function and plt.show() call in the documentation examples

The ReadTheDocs Documentation shows some examples that reference the function adapt_SpikesFile, which is missing in the current version of PyNAVIS. It could be solved by renaming Functions.adapt_SpikesFile to Functions.adapt_timestamps, whose name is the real function name. This should be done at the sections:

  • Load files (subsections 2 & 3)
  • Manually split spiking information (subsections 1 & 2)
  • Phaselock

Furthermore, it could be nice to complete some examples with the plt.show() call, which is necessary to show the plots. These examples are:

  • Load files (subsection 3)
  • Convert from mono to stereo files and vice versa

Use data.log file format as allowed input file

In order to use the pyNAVIS within the python code from YCM library (YARP project - IIT), it would be good to provide to the pyNAVIS software a data.log file with a specific format instead of a .aedat file. The format would be:

Example of a single line:
0.003041,0,1,0,0,23,0

Each field, separated by a comma, means:
ts, auditory_model, channel, xso_type, neuron_id, freq_ch, pol

Where:

  • pol = polarity (0 --> pos; 1 --> neg), 
    
  • freq_ch = frequency channel(from 0 to 31),
    
  • neuron_id = neuron ID from ITD network(from 0 to 15),
    
  • xso_type = olive model (0 --> MSO; 1 --> LSO),
    
  • channel = left or right cochlea (0 --> left; 1 --> right)
    
  • auditory_model = spikes coming from NAS or SOC (0 --> NAS; 1 --> SOC),
    
  • ts = timestamps (in seconds)
    

Average of the MSO position estimation

In the MSO position estimation plot, it would be useful to also plot a line showing the average of the estimation signal. This could be added like an optional parameter.

Plots organization in a grid

For some files, it's interesting to have a full overview of all the plots. So it would be nice to automatically organize all the plot's windows in a grid when generated.

Function "Functions.PDF_report" does not close any Figure

When generating multiple PDF reports (e.g., PDF reports from a dataset), all the figures are kept open. This leads that the computer runs slow and slow... Or even a memory problem.

Inside the function Functions.PDF_report, at the end, when the pdf.close() is called, maybe it could be good to call also to plt.close('all') in order to close all the generated and showed figures.

Add another loader function for supporting events from a NAS with the SOC model

We need to modify a little bit the loader function in order to support the new AER package format. In this new format, information about the sound source localization model is included. Therefore, the loader function has to parse the package in more fields and compute the read values.
To do this, a new branch should be created.

Implementation of a function to calculate the Interspike Interval

It would be nice to have a function that calculates the Interspike Interval (ISI) of a list of timestamps. The ISI of the spike-pair i_th can be defined as:

ISI ( i ) = ts ( i + 1) - ts ( i )

where ts is the timestamp.

Note that if the timestamp list contains X elements, the ISI list will contain X-1 elements. An implementation example could be:

# For each pair of timestamps (i+1, i), calculate the ISI
for index in range (0, num_extracted_events-1):
    isi_values.append(channel_extracted_data.timestamps[index+1] - channel_extracted_data.timestamps[index])

AEDAT splitter's parameters

Is it necessary to indicate a range when splitting an AEDAT? I mean, I would like to remove a small part from the beginning of the document, so I would like to do something like: split(300, the_end_of_the_aedat_file), where the range 0-299 should be removed.

Thanks in advance! :)

Time-based MSO heatmap plot

It would be nice to generate the MSO heatmap but splitting the file into time bins, so it could be seen the winner for each time bin. Similar to this one:
imagen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.