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