présentation OE0.3 gispa V2 - Gipsa-lab

Transcription

présentation OE0.3 gispa V2 - Gipsa-lab
Samuel Garcia, Nicolas FourcaudTrocmé
Centre de Recherche en Neuroscience de Lyon (CRNL)
Samuel Garcia
Data processing Engineer position at CNRS
Lab thematics : olfactory and auditory system.
Intro: electrophysiologie
● Neo : Data format and data representation
● View on OpenElectrophy project
● OpenElectrophy time frequency
● OpenElectrophy spikesorting : framework and UI
●
Electrophysiologie en très très
bref
Electrophysiologie en très très
bref
NEO project:
2 goals:
Data object representation for electrophysiology -> precise set of objects
● File Reader (and write for some) → replacement of neuroshare in pure python
●
Features:
● Developed in neuralensemble group involving 4 labs at the moment.
● Python written
Utility :
● a common nomenclature for naming object we deal with (SpikeTrain, AnalogSignal,
RecordingChannel, …)
● Multi platform file Reader (which neuroshare is not)
Version 0.2.1 : nov 2012
http://neuralensemble.org/trac/neo
Liste des format de
fichiers:
AlphaOmegaIO
●AsciiSignalIO
●AsciiSpikeTrainIO
●AxonIO
●BlackrockIO
●ElanIO
●HDF5IO
●KlustakwikIO
●MicromedIO
●NeoMatlabIO
●NeuroExplorerIO
●PickleIO
●PlexonIO
●PyNNIO
●RawBinarySignalIO
●Spike2IO
●TdtIO
●WinEdrIO
●WinWcpIO
●
2 levels users
Simple and intuitive user
interface
A lower script level with python.
Goal : pre processing for:
Spike sorting
LFP oscillations
Software architecture
Experimentalist
user
Analysis
user
User interface local client
Specific scripts
OpenElectrophy toolbox
Storage : sqlalchemy
Neo IO
Spike sorting
framework
Oscillation
analysis
Python
Plexon
NeuroExp
Spike2
TdT
Axon
Elphy
Alpha
Omega
Algorithm
in:
Matlab
C/C++
R
Python
Comment sauver un vecteur ou matrice ou
un cube dans une table SQL ?
Utilisation d'un ''Mapper''
SQLAlchemy
ORM python compatible (SQLite, MySQL, Oracle, PQSQL, …)
Une table SQL = Une class Python
Un champ SQL = Un attribut de la class
Dans python les tableau N dimentionel → numpy
Numpy = calcul vectoriel de matlab
Chaque numpy.ndarray = 3 champs dans la table SQL:
● Buffer → BLOB
● Shape (dimensions) → Str
● Dtype (taille de chaque element) → Str
● Moteur de compression → Str
Module temps fréquence
Différents rythmes oscillatoires dans le cerveau:
Gamma 25 - 70Hz
● Beta 15 – 30 Hz
● Alpha 2-10Hz
●
Reflet d'assemblé de neurones.
Rappel :
Carte temps fréquence de morlet
Carte temps fréquence de morlet :principe de calcul
Ondelette
Convolution
multi échelle
Signal
Module
= carte complexe (module + phase)
Principe de la méthode : Étape 1
Carte temps fréquences sur le signal
sous échantillonné : à 2*Fmax
Principe de la méthode : Étape 2
Calcul dans un voisinage du max la ligne de crête temps fréquence
sur le signal haute fréquence échantillonnage
Résultat : ligne temps fréquence complexe (module et phase)
Application : calage des spikes sur la phase des oscillations
Application : afficher les oscillations en timeline
avec code couleur
Spike sorting
Source:
Spikesorting pipeline : multi method for multi steps
Filtering
Detection
Waveform alignment
Features extraction
Clustering
FFT-based
Sliding median
Butterworth
Bessel
Abs Threshold
Std Threshold
Median Threshold
(K-TEO)
(optimal filter)
Peak alignment
Thresh alignment
(Over sampling)
(sinc)
ICA
PCA
Haar wavelet
(laplacian)
K-Mean
Superparamegnetic
Affinity propagation
Gaussian mixture
Bagged clustering
Goal and features :
● Give access good methods to experimentalist ( that hardly script )
● A bridge algorithms and good UI
● Mono-electrode, tetrode, N-trode
● Multi segment auto concatenation
● GGOBI-like viewer integrated
● Several method for each steps
● Object implementation = UI or/and script manipulation
Main idea : the user can choose the best method by himself.
SpikeSorting UI
The user can easy try several methods for each steps
User custom layout:
● Widgets for manual clustering
● Widgets for validation
What OpenElectrophy can offer to community :
Intuitive GUI for experimentalists
● Easy way to open multiple formats (neo)
● The neo data representation could be a common nomenclature for spike sorting
methods benchmark.
● The developer friendly framework allow easy implementation of new methods
●
What we plan to do :
Implement as many as possible open sourced algorithms
● Improve the UI.
●
Pas de conclusion mais demo sur demande