見出し画像

シングルセル解析の基本:どでかい行列を人が理解できるかたちにする

シングルセル解析だけではなく,オミクス解析全般に言えるのですが,得られたデータを解釈するために必要なステップが2つあります。それは,「得られたシーケンスリードから行列を作り出すこと」,そして「行列を人間が解釈できる形に落とし込むこと」です。

最初のステップは,10XだとCellRangerがそれをやってくれますし,BD Rhapsodyだとウェブ上のSingle-Cell Analysis Toolで出力してくれます。これはもちろん(かなりざっくりいうと)リードを各遺伝子に当てるということになるのですが,今回は省略します。

さて,結論から入りますが,シングルセルRNA-seqで目指すのは
似た細胞をまとめること」と
その細胞の集まりが何であるか特定・推定すること」であると言えます。

我々は,一次解析ツールから吐き出された細胞x遺伝子のとんでもなく巨大な行列と対峙することになります。シングルセルRNA解析から得られるデータは,「非常に高次元である」と表現できますが,これはつまり、数千から数万の遺伝子に関する情報が各細胞について得られるということです。これら全ての情報を直接扱うのは非常に困難で、データの可視化や解釈を行う上で障害となります。

そこで重要になるのが「次元削減」というプロセスです。次元削減も奥が深くていろいろな手法があります。Seuratは素晴らしいパッケージで,コマンド流せば中身がわからなくてもある程度できてしまいますが,中身は基本中の基本であるので,ある程度理解しておくと,後々応用が効きます。

せっかくなので,コマンドでみていきましょう。

データの正規化と変動遺伝子の同定

ここでは,各遺伝子のカウント数の行列(最初の行列)を正規化しています。バルクのようにcounts per millionにしてしまうと,非常に扱いづらい数値(過度に大きくなる)となるので,10000をかけて,対数を取ります。

そして,細胞間でばらつきの大きい上位2000遺伝子を抽出します。これをクラスタリングで使用します。

seu <- NormalizeData(seu, normalization.method = "LogNormalize", scale.factor = 10000)
seu <- FindVariableFeatures(seu, selection.method = "vst", nfeatures = 2000)

データをスケールし,主成分分析を行う

ここでは上記の2000遺伝子の発現量に対して,細胞間の平均0,分散1になるようにスケーリングを行います。そしてこの2000遺伝子を使用して,主成分分析を行います。

seu <- ScaleData(seu)
seu <- RunPCA(seu)

お気づきかと思いますが,分散が大きい2000遺伝子を取ってくる時点で次元が削減(というか削除?)されています。最初の行列に含まれる遺伝子数が30,000遺伝子とすると,一気に2,000に減らされて,そしてさらに主成分に削減されます。デフォルトでは,第1主成分〜第50主成分までが計算されます。

クラスタリングとデータの可視化

まず上記で計算された主成分のうち,どの主成分を使うかを決めます。これは,Elbow Plotなどで,どれくらいの主成分を使えばデータをうまく説明できるかを解析者自身が決定します。ここでは1~30としましょう。

seu <- FindNeighbors(seu, dims = 1:30)
seu <- RunUMAP(seu, dims = 1:30)

ここがややこしいポイントです。

FindNeighbors()は,まさにクラスタリングです。Seuratはグラフベースのクラスタリングアプローチを採用しており,PCAによって得られた低次元データを使用して、k-近傍グラフ(kNNグラフ)が構築されます。このグラフでは、各細胞がノードとして表され、類似した細胞間にエッジが引かれます。この方法で細胞と細胞の関係性が計算されて,解析者が設定する解像度に応じて,クラスタが決定されます。

さて,RunUMAP()も同様に主成分を利用してUMAP(Uniform Manifold Approximation and Projection)を行うのですが,この手順は上のクラスタリングと独立しています。ここでの目的は「細胞の関係性を,(人が理解できる)2次元上空間に落とし込むこと」です。もちろん,同じ情報を扱っているので,クラスタリングの結果とほとんどの場合同様に見えますが,たまに「同じクラスタなのにUMAP空間では離れている細胞」が存在することがありますが,UMAPからクラスタリングしたわけではないことを理解できていると,困惑せずに済みます。

さて,ここまででお気づきの方もいらっしゃると思うのですが,この解析には大きな問題があります。それは「0」の扱いです。シングルセルRNA-seqのような一細胞あたりの情報量が非常に少ないデータについては,0をどう解釈するかが難しく,(1) 実際に発現していない,(2) 発現しているが検出できていない,という2つのパターンが存在します。分散の大きい遺伝子に依存するこの解析は「0」の遺伝子,すなわち実際には意味合いの違う遺伝子群が混ざって,クラスタリングに影響を与えます。

この影響を取り除くために,Non-negative matrix factorization (NMF)を用いて解析する手法が考案されていますが,これはまた今度解説できればと思います。

それでは,楽しいシングルセル解析ライフを!

この記事が気に入ったらサポートをしてみませんか?