Skip to main content

Inner ear models in Python

Project description

cochlea is a collection of inner ear models. All models are easily accessible as Python functions. They take sound signal as input and return spike trains of the auditory nerve fibers:

                         +-----------+     __|______|______|____
 .-.     .-.     .-.     |           |-->  _|________|______|___
/   \   /   \   /   \ -->|  Cochlea  |-->  ___|______|____|_____
     '-'     '-'         |           |-->  __|______|______|____
                         +-----------+
          Sound                               Spike Trains
                                            (Auditory Nerve)

The package contains state-of-the-art biophysical models, which give realistic approximation of the auditory nerve activity.

The models are implemented using the original code from their authors whenever possible. Therefore, they return the same results as the original models. We made an effort to verify it with unit testing (see tests directory for details).

The implementation is also fast. It is easy to generate responses of hundreds or even thousands of auditory nerve fibers (ANFs). It is possible, for example, to generate responses of the whole human auditory nerve (around 30,000 ANFs). We usually tested the models with sounds up to 1 second in duration.

I developed cochlea during my PhD in the group of Werner Hemmert (Bio-Inspired Information Processing) at the TUM. It went through several versions and rewrites. Now, it is quite stable and we decided to release it for the community.

Features

  • State of the art inner ear models accessible from Python.

  • Contains full biophysical inner ear models: sound in, spikes out.

  • Fast; can generate thousands of spike trains.

  • Interoperability with neuron simulation software such as NEURON and Brian.

Implemented Models

  • Holmberg, M. (2007). Speech Encoding in the Human Auditory Periphery: Modeling and Quantitative Assessment by Means of Automatic Speech Recognition. PhD thesis, Technical University Darmstadt.

  • Zilany, M. S., Bruce, I. C., Nelson, P. C., & Carney, L. H. (2009). A phenomenological model of the synapse between the inner hair cell and auditory nerve: long-term adaptation with power-law dynamics. The Journal of the Acoustical Society of America, 126(5), 2390-2412.

  • Zilany, M. S., Bruce, I. C., & Carney, L. H. (2014). Updated parameters and expanded simulation options for a model of the auditory periphery. The Journal of the Acoustical Society of America, 135(1), 283-286.

  • MATLAB Auditory Periphery by Meddis et al. (external model, not implemented in the package, but easily accessible through matlab_wrapper).

Usage

Check our online DEMO and examples (probably the easiest is to start with run_zilany2014.py).

Initialize the modules:

import cochlea
import thorns as th
import thorns.waves as wv

Generate sound:

fs = 100e3
sound = wv.ramped_tone(
    fs=fs,
    freq=1000,
    duration=0.1,
    dbspl=50
)

Run the model (responses of 200 cat HSR fibers):

anf_trains = cochlea.run_zilany2014(
    sound,
    fs,
    anf_num=(200,0,0),
    cf=1000,
    seed=0,
    species='cat'
)

Plot the results:

th.plot_raster(anf_trains)
th.show()

You can browse through the API documentation at: https://pythonhosted.org/cochlea/

Installation

pip install cochlea

Check INSTALL.rst for details.

Spike Train Format

Spike train data format is based on a standard DataFrame format from the excellent pandas library. Spike trains and their meta data are stored in DataFrame, where each row corresponds to a single neuron:

index

duration

type

cf

spikes

0

0.15

hsr

8000

[0.00243, 0.00414, 0.00715, 0.01089, 0.01358, …

1

0.15

hsr

8000

[0.00325, 0.01234, 0.0203, 0.02295, 0.0268, 0….

2

0.15

hsr

8000

[0.00277, 0.00594, 0.01104, 0.01387, 0.0234, 0…

3

0.15

hsr

8000

[0.00311, 0.00563, 0.00971, 0.0133, 0.0177, 0….

4

0.15

hsr

8000

[0.00283, 0.00469, 0.00929, 0.01099, 0.01779, …

5

0.15

hsr

8000

[0.00352, 0.00781, 0.01138, 0.02166, 0.02575, …

6

0.15

hsr

8000

[0.00395, 0.00651, 0.00984, 0.0157, 0.02209, 0…

7

0.15

hsr

8000

[0.00385, 0.009, 0.01537, 0.02114, 0.02377, 0….

The column ‘spikes’ is the most important and stores an array with spike times (time stamps) in seconds for every action potential. The column ‘duration’ is the duration of the sound. The column ‘cf’ is the characteristic frequency (CF) of the fiber. The column ‘type’ tells us what auditory nerve fiber generated the spike train. ‘hsr’ is for high-spontaneous rate fiber, ‘msr’ and ‘lsr’ for medium- and low-spontaneous rate fibers.

Advantages of the format:

  • easy addition of new meta data,

  • efficient grouping and filtering of trains using _DataFrame functionality,

  • export to MATLAB struct array through mat files:

    scipy.io.savemat(
        "spikes.mat",
        {'spike_trains': spike_trains.to_records()}
    )

Please, check thorns for more information and functions to manipulate spike trains.

Contribute

Support

If you are having issues, please let us know. We have a mailing list located at: cochlea-and-thorns@googlegroups.com

Other Implementations

Citing

If you are using this software in your research, please make a reference: Rudnicki, M. and Hemmert, W. (2014) Cochlea: inner ear models in Python, https://github.com/mrkrd/cochlea.

When you use any of the models, always cite the original publications describing the model.

Acknowledgments

We would like to thank Muhammad S.A. Zilany, Ian C. Bruce and Laurel H. Carney for developing inner ear models and allowing us to use their code in cochlea.

Thanks goes to Marcus Holmberg, who developed the traveling wave based model. His work was supported by the General Federal Ministry of Education and Research within the Munich Bernstein Center for Computational Neuroscience (reference No. 01GQ0441, 01GQ0443 and 01GQ1004B).

We are grateful to Ray Meddis for support with the Matlab Auditory Periphery model.

And last, but not least, I would like to thank Werner Hemmert for supervising my PhD.

This work was supported by the General Federal Ministry of Education and Research within the Munich Bernstein Center for Computational Neuroscience (reference No. 01GQ0441 and 01GQ1004B) and the German Research Foundation Foundation’s Priority Program PP 1608 Ultrafast and temporally precise information processing: Normal and dysfunctional hearing.

License

The project is licensed under the GNU General Public License v3 or later (GPLv3+).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cochlea-1.2.tar.gz (293.0 kB view details)

Uploaded Source

Built Distribution

cochlea-1.2-cp27-none-win_amd64.whl (224.9 kB view details)

Uploaded CPython 2.7 Windows x86-64

File details

Details for the file cochlea-1.2.tar.gz.

File metadata

  • Download URL: cochlea-1.2.tar.gz
  • Upload date:
  • Size: 293.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cochlea-1.2.tar.gz
Algorithm Hash digest
SHA256 fb06867041dcac0868b21f4bb46e6985152523be5a3ce16d2ccb8aaee8551b94
MD5 a8b24f1b3648d10aa3092eeb83db7794
BLAKE2b-256 d23bbc5710506fac0621ec749294f22f9699a124ea7715e4354a63f041bfdb95

See more details on using hashes here.

File details

Details for the file cochlea-1.2-cp27-none-win_amd64.whl.

File metadata

File hashes

Hashes for cochlea-1.2-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 c381b61fc656102907399e233b1e740af5ef62c74e26ac6cd67a7c83f0c711de
MD5 0c4d80464f8a441eb7c412e64664e807
BLAKE2b-256 990f3a6a031959cdc327f6689da51d4456bc1c26cc32b0c3fdb1e136e206b238

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page