Computational single cell analysis

MikuHatsune2016-12-18

いくつか読んだ。
FCM やsingle cell trinscriptome などの一細胞解析で、多次元行列データが得られるが、それを機械的に解析する手法をいくつかまとめて読んだ。
R で実装されているものは頑張ってみたかったが、bioconductor でインストールしてもlibrary() で読み込んでからのエラー多発で断念した。
要点としては、時系列を気にして分化のtrajectory を見たいのか、複数の症例から得たfcs データを統合して意味のあるクラスターやマーカーを見つけたいのかそれとも単一のfcs データの解析でいいのか、とか気にするとよさそう。
 
Citrus 2014年
Proc Natl Acad Sci U S A. 2014 Jul 1;111(26):E2770-7.
github
Citrus は複数の症例から取られたfcs データを解析する。(i) で解析者が任意に適当な数だけ各症例から細胞を取ってきて、(ii) でマーカーの発現類似度で階層的クラスタリングする。
FCM がわからない人向けに、マーカーというのは細胞が出している抗原(目印、実験自体は抗原抗体反応を利用して、目印がある細胞を標識する。これをマーカーといい、マーカーは全く持っていないの0 からすごい持っているの大きい値が連続値で出る)を数値化する。
(iii) では、各症例が持っている特徴量、例えば、(ii) で決まったクラスターがどれほどいるかとか、マーカーの比率だとかを出す。(iv) では病気か健康かのラベルがついているので、(v) で\lambda による正則化回帰をして、subset X に含まれる細胞のマーカー分布を見て、病気と病気でないかを判別できるかを見る。正則化パラメータ\lambda は交差検証で適当に決まる。最終的に、どのsubset ID のどのマーカー発現量がキモかが勝手に解析できる。
論文では5000個の細胞を選んで、subset に5% 以上の細胞が含まれるようにいろいろいじって、解析する細胞数とsubset を減らして計算量を削減している。

 
R での実装は存在している。インストールはdevtools から行う。行列データをfcs ファイルに変換するのはこちら

library("citrus")
citrus.launchUI()

GUI が開いてfcs ファイルを選択すればたぶん勝手にCitrus が実行されるんだろうけど、動かない。
 
SCUBA 2014年
Proc Natl Acad Sci U S A. 2014 Dec 30;111(52):E5643-50.
github
トランスクリプトームの発現パターンが時系列でどう変わっていくかを解析して、自動的に分化系統樹を作る。データとしては、おそらくいろいろな分化タイミングが混ざっているバルクだが、一細胞技術で各細胞の発現データが取れる。しかし時系列はわからない。ただ、各細胞のもつ分化時期に応じて、発現パターンは変わるだろうから、これを検出して系統樹化するのだと思う。
最初はkmeans でクラスターを作っておき、時間の変化に応じてそのクラスターがさらにkmeans で細かいクラスターに分かれるかをgap statistic と呼ばれる統計量ではかり、ひとつのクラスターがふたつにわかれたほうがいいのかどうかを決める。
その後、系統樹を作るが、正則化つき尤度関数
L(\theta)=logP(x|\theta)-\lambda\sum_c||\mu_c-\mu_{a(c)}||^2
をいい感じに決めることで系統樹を作る。
分化するのは4a^3-27b^2=0 で決まる平面を滑るような感じらしい。実際にデータにやってみると、受精後2^6 細胞期になるまでにどのような遺伝子が発現するかはわかっているので、これをメルクマールにすると、上図A では8細胞期の水色、16細胞期の青から、32細胞期にはピンクと緑のクラスターが生じている。また、ピンクは64細胞期で黒と黄色のクラスターを生じている。これのポテンシャル的なものを図示すると、下図になる。


実装はmatlab、一部R を使うらしい。Wanderlust ではtrajectory の開始点を決める必要があったが、principal curve analysis というものを使うことで勝手に決まるらしい。
 
ACCENSE 2013年
Proc Natl Acad Sci U S A. 2014 Jan 7;111(1):202-7.
windowsmacos ならソフトウェアがある。
(B) 普通はmanual gating によりFCM をいじるが、(C) tSNE により多次元データを2次元に落とし、(D) 落としたあとはカーネル密度推定を用いて密になっている部分を推定する。等高線がかけるのでその山頂がクラスターになっていると考える。viSNE っぽさはある。
K_{\gamma}(y)=(2\pi\gamma^2)^{-1}\sum_{y^{'}\in y}exp(\frac{||y-y^{'}||^2}{2\gamma^2})
カーネル\gamma を適当にいじると山頂の数が変わるが、これは\gamma と山頂の数のプロットがかけて、エルボーになるところをいい感じにとれば適当な\gamma が決められる、という寸法(supple)。

 
COMPASS 2015年
Nature Biotechnology 33, 610–616 (2015)
bioconductor
I 人の各症例に対して、免疫刺激を与えたもの(ワクチンや感染)と与えない対照を用意して免疫反応の違い、つまりはマーカー発現量の違いを見る。
マーカーはM 個あって、最大でK_M=2^M パターンのsubset が存在するが、K 個のsubset を想定する。刺激された集団のindex s と、対照のindex u について、細胞数をn_{sik}, n_{uik} とそれぞれおく。小文字と大文字は対応している。クラスターsubset について総和をとると、N_{si}=\sum_k n_{sik}, N_{ui}=\sum_k n_{uik} である。
さて、ここで、免疫反応の違いというのは、subset の存在割合の違いから生じる、と考えたい。すると、確率p で細胞数が(多項分布で)決まると考え、刺激群と対照でそれぞれ(n_{si}|p_{si})\sim MN(N_{si},p_{si}), (n_{ui}|p_{ui})\sim MN(N_{ui},p_{ui}) と書ける。
とすると、検定としては、H_0; p_{ui}=p_{si}, H_1;p_{sik}>p_{uik} となる。
実際には、functionality score (FS) とpolyfunctionality score (PFS) という[0,1] の統計量で刺激群と対照が分離できるか比較される。この計算に\gamma_{ik} という、症例i のカテゴリーk が抗原特異的かどうかの{0,1} ラベルをMCMC で決めているらしい。
Linux で実装してないのね、うん。

 
Monocle 2014年
Nature Biotechnology 32, 381–386 (2014)
bioconductor
Monocle は分岐を許して分化のtrajectory を作る。(a) 多次元データをICA によって次元削減して、MST により細胞をつなぐ。
でも木の構築にはPQ tree というものを使っているらしい。(b) では増殖期の赤、分化期の青にtrajectory が大きく分類され、途中で間葉系になる緑の分岐がある。
(c) 遺伝子発現を時系列(psuedotime という擬似時系列を想定している)に並べるとheatmap になり、early phase で発現するMEF2C と、late phase で発現するMYH2 の発現時系列がそれとなく分かれる。(ef) も似たようなものである。
R でも実装されているけどいざ試してみたらデータセット DSMM がロードされなくてイラッ☆

 
Wishborn 2016年
Nat Biotechnol. 2016 Jun;34(6):637-45.
uSORT
Wanderlust もできるようになっている。Wanderlust は一本線のtrajectory を想定していたが、Wishborn は分岐できる。
R でできるようになっているので楽そう。
 
Diffusion map 2015年
Bioinformatics. 2015 Sep 15;31(18):2989-98.
matlab
blog
もともとdiffusion map (Proc Natl Acad Sci U S A. 2005 May 24;102(21):7426-31.) というものがあり、それをトランスクリプトームの時系列データに応用できるようにしたものらしい。(A) のようなn 細胞のG 個の遺伝子発現データがあり、これを(B) のような分化(diffusion) map に載せたい。これは(C) のようなn\times n 次元のマルコフ推移確率行列によって時系列変化が定量化され、これの特異値分解のeigenvalue 上位2つをとれば、(D) のような2次元図ができる、という話。

 
以下は積んでる。
DREMI-DREVI 2014年
Science. 2014 Nov 28; 346(6213): 1250689.
matlab
 
Cytofkit 2016年
PLoS Comput Biol. 2016 Sep 23;12(9):e1005112.
 
SINCERA 2015年
PLoS Comput Biol. 2015 Nov 24;11(11):e1004575.
 
TSCAN 2016年
Nucleic Acids Res. 2016 Jul 27;44(13):e117.