CaImAnの一連のパイプラインを動かす


前の記事(https://qiita.com/takeajioka/items/96effe312ac80f808d9e )では、
MATLAB版CaImAnの内部アルゴリズム(細胞抽出とデコンボリューション)について書きましたが、CaImAnの機能はそれだけではありません。
論文を読むと、Motion Correction機能や大規模データに対応するメモリマッピング機能も存在します。
wikiを見たところ、run_pipeline.mで全ての機能を使用することができるようです。
https://github.com/flatironinstitute/CaImAn-MATLAB/wiki/Complete-analysis-pipeline

run_pipeline.m動かしてみる

Motion Correction機能を使うには「CaImAn」とは別に「NoRMCorre」もダウンロードする必要があります。(https://github.com/flatironinstitute/NoRMCorre)
3行目に

addpath(genpath('../NoRMCorre'));    

とありましたので、「NoRMCorre-master」フォルダを「NoRMCorre」に名前を変更し、CaImAnのフォルダの親フォルダにおきます。

入力画像は複数の画像ファイルに対応しています。
これにより、同じ日に連続で取った画像など同じ場所を数回に分けて撮影した画像を一気に解析できます。
解析したい一連の画像ファイルを一つのフォルダにまとめて入れて、そのフォルダのパスを6行目のfoldernameで指定します。

foldername = '<画像が入っているファルダのパス>';

そうすれば後は実行するだけです。(パラメータは適宜調整)

run_pipeline

motion correction, source extraction, activity deconvolutionの全てが一気に行われました。
複数ファイルをまとめたROIが表示されました。
変数のA_keepにROIの情報、C_fullにトレースの情報が入っています。デコンボリューションされた結果はC_decです。
以下のコマンドで可視化できます。
ROI情報

plotControl.Cn=Cn;
plotControl.thr=0.95;
plotControl.option=1;
d1=options.d1;
d2=options.d2;
[coor, contourInfo] = plotROIContour( A_keep, d1, d2, plotControl );

トレースの情報

plotControl2.frameRate=6.7468;
plotControl2.normalization=1;   plotControl2.sep=1.2;   plotControl2.displayLabel=1;  plotControl2.rollingView=1;
plotControl2.plotInferred=1;    plotControl2.plotFiltered=1;   plotControl2.plotRaw=0;
plotActivityTrace(C_full, C_full, C_full, plotControl2 );

デコンボリューションの結果の情報

plotControl2.frameRate=6.7468;
plotControl2.normalization=1;   plotControl2.sep=1.2;   plotControl2.displayLabel=1;  plotControl2.rollingView=1;
plotControl2.plotInferred=1;    plotControl2.plotFiltered=1;   plotControl2.plotRaw=0;
plotActivityTrace(C_dec, C_dec, C_dec, plotControl2 );

これでカルシウムイメージングの解析がかなり自動できます。

その他

異なる日で取った場合などで、撮影した条件が異なる場合にはrun_pipeline.mがうまく機能しない場合があります。その場合はregister_ROIs.mによって、同一細胞を見つけることができるようです。wikiにも書いてありました。
https://github.com/flatironinstitute/CaImAn-MATLAB/wiki/Registering-ROIs-across-different-sessions-%5C--days

他にはdemo_GUI.mで、GUIを用いた解析ができるようです。