spike_sorting

Python implementation of signal processing techniques and K-means clustering to sort spikes. (by akcarsten)

spike_sorting reviews and mentions

Posts with mentions or reviews of spike_sorting. We have used some of these posts to build our list of alternatives and similar projects.
  • EEG channels with low-cost PiEEG device
    1 project | news.ycombinator.com | 30 Mar 2024
    It's worth noting that if each electrode is thin enough to be placed in extracellular medium getting signals from several neurons around it, you can do some fairly simple signal processing to separate the signals of individual neurons. This is called spike sorting [0] (a "spike" is an impulse transmitted by a single neuron).

    So, continuing with the microphone analogy, with the right setup, recording a few voices is almost as good as recording each voice separately. It's not perfect because sometimes people talk over each other, and people distant from the mic may have muffed voices, and stuff like that. But generally speaking, we can roughly understand each individual people in a recording, because each people speak in a different way (and just like that, neurons spike in a different way).

    Here's some academic code that does this [1] (it has accompanying articles [2] [3]) (Random article found in Google, no affiliation).

    The first thing it does is removing the low frequency component of the signal (the LFP [4], that doesn't originate from any specific neuron), then it stores an individual spike waveform as a time series (a vector of N dimensions, where each dimension is the value of the signal at a moment in time), and then just does some k-means clustering to separate spikes in clusters, then assign each cluster to an individual neuron (by hypothesizing that each neuron likes to spike in a specific way which depends on its characteristics). This is all very vanilla / undergraduate stuff, and it's been done for more than 10 years [5] or perhaps even 20 years or more.

    Trouble is, with EEG all you have is essentially an average of the LFP over a large area; you don't get single-neuron spikes. So EEG fundamentally can't listen to each neuron individually. However it isn't right to simply throw away LFP information, and you can still do stuff with it.

    [0] http://www.scholarpedia.org/article/Spike_sorting

    [1] https://github.com/akcarsten/spike_sorting

    [2] https://towardsdatascience.com/using-signal-processing-to-ex...

    [3] https://towardsdatascience.com/whos-talking-using-k-means-cl...

    [4] https://en.wikipedia.org/wiki/Local_field_potential

    [5] https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3657693/

Stats

Basic spike_sorting repo stats
1
75
-
almost 5 years ago

akcarsten/spike_sorting is an open source project licensed under MIT License which is an OSI approved license.

The primary programming language of spike_sorting is Jupyter Notebook.


Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com