2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「MountainSort」でスパイクソーティングをする

Last updated at Posted at 2020-02-13

スパイクソーティング(spike sorting)は電気生理学の細胞外電位計測で行われるもので、電極から得られた電気信号から、神経細胞ごとの活動を取り出すものです。
1つの電極には、たいていは近くに複数の神経細胞が存在し、複数の神経細胞からの電気活動(スパイク)が取れます。そのため、細胞ごとに分離すればより詳細な解析が行えます。

400px-QQ_Fig1.jpg
(Rodrigo Quian Quiroga (2007), Scholarpedia, 2(12):3583.より画像を引用
http://www.scholarpedia.org/article/Spike_sorting)

手動で行うのはとても労力がかかるため、自動化が望まれます。
基本的な方法論としては、まず信号からスパイクを取り出し、その波形の特徴を元にしてクラスタリングを行います。同じようなスパイクの波形なら、同じ細胞の活動とみなすということです。
波形自体はとても情報量が多いため、そこから特徴量を取り出して教師なしクラスタリングを行う、などが主な方法です。

このspike sortingの技術はまだベストな方法が分かっておらず、調べてみると新しいソフトが毎年発表されているようです。
日本人の方が開発したものではEToSがあります。私も以前に使用したことがあります。
(https://www.frontiersin.org/articles/10.3389/fninf.2012.00005/full)
また最近だとVISSORというソフトもあるようです。
(https://omictools.com/vissor-tool)

そんな中でNeuronで発表された「MountainSort」というソフトを見つけました。
(https://www.sciencedirect.com/science/article/pii/S0896627317307456)
特徴はスパイクの重なりや低周波のノイズ(ドリフト)に強く、そしてパラメータ無しで完全自動であることのようです。
現在は「MountainLab」というソフトの一部になったようです。
実際にインストールして使用してみました。

GitHubページ:https://github.com/flatironinstitute/mountainsort_examples
マニュアル:https://mountainsort.readthedocs.io/en/latest/mountainlab/mountainlab.html

##インストール
使用できるOSはMacかLinuxです。
私はUbuntu 16を使用しました。
Anacondaからcondaコマンドでインストール出来るようです。
ターミナルから以下のコマンドを打ちます。

conda create -n mountainlab
conda activate mountainlab
conda install -c flatiron -c conda-forge \
			mountainlab \
			mountainlab_pytools \
			ml_ephys \
			ml_ms3 \
			ml_ms4alg \
			ml_pyms

インストールしたら動作を確認しましょう。

ml-config
ml-list-processors

他にも可視化用のパッケージをインストールします。

conda install -c flatiron -c conda-forge ephys-viz
conda install -c flatiron -c conda-forge qt-mountainview

これでインストール出来ました。
もしJupyterを使用したい場合は、jupyterlabもインストールしましょう。

##デモを動かす
GitHubページの中に、いくつかのデモコードが入っているので、ダウンロードします。

git clone https://github.com/flatironinstitute/mountainsort_examples.git

この中のbash exampleにはランダムでデータを生成してデモをしてくれるコードがあるのでそれを使いましょう。

cd mountainsort_examples/bash_examples/001_ms4_bash_example
./synthesize_dataset.sh

データを生成されました。
次にデータを可視化します。

ev-dataset dataset

ephys-vizのエラーになりました。

スパイクソーティングを行います。

./ms4_sort_bash.sh

結果は以下のコマンドで可視化できます。

ev-templates output/templates.mda.prv
ev-timeseries dataset/raw.mda.prv --firings output/firings.mda.prv --samplerate=30000
qt-mountainview --raw dataset/raw.mda.prv --filt output/filt.mda.prv --pre output/pre.mda.prv --samplerate 30000 --firings output/firings.mda

evのコマンドはephys-vizのエラーになりましたが、
最後のコマンドのqt-mountainviewは正常に動いて、GUIツールが表示されました。
image.jpg

色んなコマンドで可視化が出来て便利そうです。

ephys-vizの方はエラーが解決したら、更新する予定です。

##感想など
電気活動のデータは実験環境によって様々あり、それがspike sortingの難しさの要因としてあるようです。
最近だとDeep Learningを使用したアルゴリズムもあるようです。
また、spikeforestというベンチマークソフトも出てくるようです。
いつか完全なspike sortingソフトが出てくるのを期待したいです。

MountainLabはspike sorting以外のデータにも使えるようなので、他の時系列データにも活用していきたいです。

また電気生理学実験を包括的に行うオープソースとしてOpen Ephysというソフトもあるようです。
これも非常に興味深いですね。
https://iopscience.iop.org/article/10.1088/1741-2552/aa5eea

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?