スパイクソーティング(spike sorting)は電気生理学の細胞外電位計測で行われるもので、電極から得られた電気信号から、神経細胞ごとの活動を取り出すものです。
1つの電極には、たいていは近くに複数の神経細胞が存在し、複数の神経細胞からの電気活動(スパイク)が取れます。そのため、細胞ごとに分離すればより詳細な解析が行えます。
(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ツールが表示されました。
色んなコマンドで可視化が出来て便利そうです。
ephys-vizの方はエラーが解決したら、更新する予定です。
##感想など
電気活動のデータは実験環境によって様々あり、それがspike sortingの難しさの要因としてあるようです。
最近だとDeep Learningを使用したアルゴリズムもあるようです。
また、spikeforestというベンチマークソフトも出てくるようです。
いつか完全なspike sortingソフトが出てくるのを期待したいです。
MountainLabはspike sorting以外のデータにも使えるようなので、他の時系列データにも活用していきたいです。
また電気生理学実験を包括的に行うオープソースとしてOpen Ephysというソフトもあるようです。
これも非常に興味深いですね。
https://iopscience.iop.org/article/10.1088/1741-2552/aa5eea