Git Product home page Git Product logo

miv-os's People

Contributors

armantekinalp avatar bhosale2 avatar dependabot[bot] avatar eunice-chan avatar frthjf avatar gauravu2 avatar iraikov avatar jihugo avatar skim0119 avatar zhidou2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

miv-os's Issues

Invalid import in spike detection example

While working on #32, I've noticed an error in examples/post_processing/spike_detection.py that appears to be caused by a stale import from miv.io import load_data. I suspect that interface in miv.io was recently updated as it does not contain a load_data function. Full stack trace can be viewed here

MEA - Geometry module

Reference

  • Spike detection for large neural populations using high density multielectrode arrays

Milestone v0.3

Milestone v0.3

New Features

  • #83 @Gauravu2
    • Partial Information Decomposition Lattice (PID)
  • Spatiotemporal coherence #62 @Gauravu2
  • Data Encoding/Decoding to Spike (Coding)
    • Temporal
      • (Audio) Lyon's Ear Model @skim0119 #91
      • (Signal) Bens Spiker Algorithms Encoder @skim0119 #91
      • (Temporal Contrast) Threshold-based representation (TBR), Step-Forward (SF), Moving Windows (MW) @skim0119
      • (Signal) Hough Spiker Algorithm (HSA/mHSA)
      • (Audio) Spectrogram (scipy)
      • (Signal) LIF coding
    • Spatial
      • Gaussian Receptor Field
      • Bohte GRF
      • First-Spike (TTFS)
      • LIF coding
      • Rate-based encoding
    • Difference
      • Signal to noise ratio (SNR)
      • Root mean square error (RMSE)
      • Coefficient of regression
  • "Memory" Quantification
    • Fading Memory
    • Edge-of-Chaos
    • Separation and Generalization
  • TTL Digital input signal readout #99 @skim0119

Additional Functionality

Here is the list of functions we would like to implement using our code. Some could be accomplished by having "how-to" documentation, some might need additional implementations on the modules. Feel free to make a separate issue and propose ideas if you want to take a shot.

  • Adaptive filtering
  • #68 @jihugo
  • Open Sound Control (OSC) plugin

Data Organization

Documentation

  • Logo
  • About page

Test Coverage

Others

  • #37
  • Semi-online processing for long recording

DMD for spatiotemporal coherence

Neural data has been traditionally analyzed either temporally (spectral analysis) or spatially (connectivity measures). DMD can be used to extract spatiotemporal modes, hence combining the benefits of aforementioned techniques in one analysis and measure coherence between electrodes.
It is widely used for fluid mechanics problems, but not as common in neuroscience. However, some authors have started exploring DMD's for neuroscience [1].

References:

  1. https://www.sciencedirect.com/science/article/abs/pii/S0165027015003829
  2. https://www.annualreviews.org/doi/pdf/10.1146/annurev-control-071020-010108#article-denial

Improve coverage of MiV-OS

Currently, the coverage of MiV-OS sits at ~40%, indicating room for improvement. Below I will dynamically populate a checklist, listing the parts that are majorly untested, which will be resolved by adding tests step by step:

  • miv/visualization/waveform.py
  • miv/visualization/fft_domain.py
  • miv/visualization/event.py

and so on...

Burst Analysis

Sometimes neurons fire at a higher frequency for a short period of time. Such events are called bursts and are characterized by burst firing rate and length. Bursting is usually taken as an indication of culture's maturation and robustness. More details could be found here: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4725104/

OpenEphys - Dataset interface: binary

Functions

  • Load and unload the raw signal
  • Keep the meta-data structure
  • Iterable access
  • Mask channels, prune the datatree
  • Export(will be added in functional module)
  • Interface (neo provides interface with other data format)

Note

  • User should not be able to alter the raw data

Milestone v0.2

Milestone v0.2

Not all features will be included for v0.2, and the remaining will be pushed to the next release.
If an external package is already available, a simple wrapper (if needed) with detailed documentation on how to use that package could be sufficient.

New Features

For each category, the sublist is in the order of priority.

Additional Functions

Here is the list of functions we would like to implement using our code. Some could be accomplished by having "how-to" documentation, some might need additional implementations on the modules. Feel free to make a separate issue and propose ideas if you want to take a shot.

Data Organization

  • Simple practice dataset #38 #39
  • External data installation utilities #39
    • In-line download for Colab or remote-server
    • Hash check for large file
    • Archive extraction

Documentation

Coverage

Others

  • Plugin interface for MiV-Simulator

fft visualisation code duplication

# Welch (https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.welch.html)
f, Pxx_den = welch(signal, sampling_rate, nperseg=1024)
f_med, Pxx_den_med = welch(signal, sampling_rate, nperseg=1024, average="median")
plt.figure()
plt.semilogy(f, Pxx_den, label="mean")
plt.semilogy(f_med, Pxx_den_med, label="median")
plt.xlabel("frequency [Hz]")
plt.ylabel("PSD [uV**2/Hz]")
plt.legend()
return fig

Channel indexing after masking

Note

The data module has a masking feature, but the channel indexing needs to be preserved for later usage. We can have an explicit index map stored separately, while re-define getter returns a masked signal.

Signal conditioning before spike detection

Begg's group commented that subtracting the median across all electrodes at each time step might help in getting rid of the false spikes as they occur simultaneously. Then the conditioned signal can be passed to spike detection and checked if we get lesser false spikes.

Setup pyproject

Setup pyroject.toml

poetry

  • dependencies (requirements.txt)
  • transfer setup.py

  • black (21.12b0)
  • autoflake8
  • mypy
  • tox

Fano Factor

The Fano factor, defined as the variance-to-mean ratio of spike counts in a time window, is often used to measure the variability of neuronal spike trains.

Pypi deploy issue

Currently, pypi deployment is blocked by non-registered repositories.

Note

Blocked by #97

Channel Axis

Channel axis for readout signal is in column.

Automatic channel masking

Note

A feature should be included in miv.io.Data which automatically determines which channels to mask. Channels with no spike (white noise) or faulty spike (non-neural spike) should be masked.

Possible syntax

>>> data = Data(data_path)
>>> spontaneous_data = Data(spontaneous_data_path)
>>> data.mask_channel(spontaneous_data)

Multivariate information theory

Need to include the following:

  • Bivariate Partial Information Decomposition (Unique Information, redundant information, synergy)
  • Multivariate Partial Information Decomposition (,,)
  • Multivariate Conditional Entropy (Decomposition included)
  • Multivariate Transfer Entropy (Decomposition included)

Refer the following for more info:
https://arxiv.org/pdf/1004.2515.pdf
https://arxiv.org/pdf/1102.1507.pdf
https://pwollstadt.github.io/IDTxl/html/idtxl_process_analysis.html#bivariate-partial-information-decomposition-pid

Multi-channel signal replay

Multi-channel signal visualization

  • Output video file that played the recorded signal
  • The layout of the plot correspond to the MEA channels.

Note

  • You can implement in miv/visualization.

Dependencies

Candidates

  • quantities: scientific units
  • neo: spike data structure
  • elephant: spike data processing (rasterize, )

Visualization tool

  • ephyviewer
  • viziphant

Visualization

Update on basic set of visualization and reference documentation.

V0.1.0 Targeting Features

Update v0.1.0

We are targeting below set of post-analysis tools for first release.

Data Readout

Post-processing

  • Filter
  • Detection
    • #13
    • clustering - guide on using SciPy PCA
  • Statistics
  • Connectivity
    • transfer entropy
    • directed information (pushed to 0.2.0)
    • unitary event
    • SPADE (elephant)
    • CAD (elephant)
  • Visualization
    • Spike cutout and guide #16
    • Rasterplot + rate (viziphant)
    • Connectivty graph (graphviz)

Future

  • Wavelet clustering
  • Geometry of MEA module

basic spike detection

TODO

  • basic spike detection
  • protocol
  • test (left functionality test and integration test for future work)
  • doc

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.