日付;2024/04/28(日)
先日にPythonを用いたシングルセルRNAシークエンス(scRNA-seq)解析のためのパッケージをインストールした。Pythonのパッケージは比較的(最近ではもう随分と安定してきたように思う。だから「比較的」という言葉を使う必要があると思う。)先進的で格好の良い解析方法が多く、かつ、Rよりも計算速度が圧倒的に早いという特徴があり、個人的にはpythonのようがRよりも必須感はある。しかし、Rはpythonに比べて圧倒的に統計の性能が良いと思う。結局、scRNA-seqは生物学的な発見に結びついているわけであり、しっかりした統計解析を欠かすことができない。いくら先進的っぽい解析を行っても、統計が弱ければデータの信頼性を欠くわけである。scanpyとscVeloで格好の良いデータを出したけれど、scanpyの統計では不十分(scanpyが持っているsparseなデータセットに対して適用できそうな統計は、wilcoxonの順位和検定くらいらしい。多分これって激甘な検定だと思う。)だし、負の二項分布へのフィッティングはSeuratのほうが強い(気がする。)しクラスタ間の分離も何故かSeuratが良い(気がする。)し、DEG(Differentially expressed gene)解析にはMASTが堅いって感じである。言いたいことは、両方必要ってことである。そういうことなので、scRNA-seqに使用するRまたのライブラリもインストールしていくことにする。
しかし、Rのライブラリのインストールなんて、大体がinstall.packages(“XXX”)とかBiocManager::install(“YYY”)とかである。それは以前からたくさん述べているので、ここでは個人的におすすめなscRNA-seq解析用(それ以外もあるけど)のRのライブラリを挙げていこうと思う。その依存関係を解消するために必要なライブラリなどは、それらをインストールしながら適宜入れていく必要があるだろう。
おすすめRライブラリ
以下の表が、個人的に利用しているRのライブラリである。
目的 | ライブラリ | 使いどころ |
データ整形・wrangling | rtracklayer | GTFファイルの読み込み |
データ整形・wrangling | anndata | scanpy他で作成されたデータの読み込み |
データ整形・wrangling | singlecellexperiment | SeuratObjectの変換用。この型のオブジェクトを扱うライブラリも多い。 |
データ整形・wrangling | SummarizedExperiment | SeuratObjectの変換用。この型のオブジェクトを扱うライブラリも多い。 |
データ整形・wrangling | dior | anndataがうまく動かないときの予備の入出力用ライブラリ。 |
QC・次元削減・クラスタリング・遺伝子発現解析・細胞タイピング・可視化 | Seurat | 解析の基盤となるライブラリ。空間トランスクリプトーム解析にも対応する定番かつ最強のシングルセルRNAシークエンス解析用ライブラリ。細胞タイピングにはクロスマッチングを使う。 |
ダブレット推定 | doubletfinder | ベンチマークが良く、かつ、ライブラリの利便性が高い(ちゃんと動く。) |
遺伝子発現解析 | MAST | Hurdle Negative Binomial Regressionを使うらしい。zero inflated matrix(sparsityの高いデータセット)のDEG解析にはこれが最も信頼できそう。sparsityの低いデータセット(smart-seqなど)ではZimb-WAVEなんかが有用らしい。 |
細胞タイピング | singleR | マウスの免疫細胞のタイピングでは最強と思う。 |
細胞タイピング | escape | シングルセル用のエンリッチメント/GSEA解析 |
細胞タイピング | ssGESA | シングルセル用のエンリッチメント/GSEA解析 |
細胞タイピング | fgsea | scRNA-seqだけでなく、通常のGSEAとしても使用できる。 |
細胞タイピング | sc-type | いまいち怪しいが、実は結構ちゃんとしているかも。 |
Trajectory inference | monocle3 | なんか格好が良いが、スタート地点を主観的に決めているように思うのであまり好きではない。 |
Trajectory inference | slingshot | monocle3よりわかりやすいくて良いが、計算が案外長く、明確なTrajectoryを形成していなければ解析が難しいかもしれない。 |
Trajectory inference | tradeSeq | monocle3を使う場合でも、slingshotを使う場合でも、Trajectoryに沿ったDEGを行う場合には必要。個人レベルのコンピューターで解析する場合、カウントデータのダウンサンプリングが必要。 |
細胞間相互作用 | cellchat | 個人的に一番信頼できる細胞間相互作用解析ライブラリ。解析結果に関して、群間の検定を行ってくれる。 |
細胞間相互作用 | liana | 個人的には好印象。 |
細胞間相互作用 | multinichnetr | これも、定番だと思う。 |
細胞間相互作用 | nichnetr | マウスとヒト間の相同遺伝子の変換で活躍する。というか、それだけ。 |
他のソフト
上述したが、上記の表の依存関係を解消するためのライブラリは必須である。また、例えばヒートマップを書くためのライブラリや、並列化に関するライブラリ(doParallel, foreachとか)なんかも必要だろうと思うが、キリがないのでそれは適宜インストールしなければならない。
また、読んだ細胞数が多く、各クラスタ間の細胞数が各々を比較するだけに十分な数が取れていたり、リード数が多かったりする場合は、通常のバルクRNAシークエンスのライブラリなんかも使用できる可能性がある。経験があるのは、クラスタごとの細胞数が多かったりすると、clusterProfilerでの結果が良かったりしたことがある。なので、もしかしたらそれらのライブラリも使える可能性がある。
どのソフトを使うか
こうしてみていると、かなり多いなって感じである。これ以外にも星の数ほどライブラリがあるので、なかなか迷うこともある。そんなときは以下のようにする。
scRNA-toolsで確認してみる
scRNA-tools(https://www.scrna-tools.org/)というデータベースがある。これは、どのライブラリがいつリリースされて、どのくらい論文で引用されて、pythonなのかRなのか何なのかをまとめたデータベースである。自分が使おうとするライブラリがどのくらいアクティブに開発、利用されているのかわかるようになっている。ただし、その他の情報が何もないので、調べたところで結局そのライブラリが良いものなのか中途半端なのか良くわからないということも有り得る。「これって、こんなに利用されているんだ…」だとか、「これ、あんなに有名なジャーナルなのにあまり使っているヒトいないんだ…」とかがわかる感じである。結局、そのライブラリの使用人口が多いということは、それだけ広く普及し、使用した解析が論文誌のレビューを通ってアクセプトされているってことなので、あまりにも使用人口が少ないものは、もしかしたら避けるべきなのかもしれない。あとは使用人口が多いってことはマニュアル、ビネット、使用例が豊富でわかりやすいとか、豊富ということはしっかりと開発されている、とかそういうことも意味すると思う。そういうことを見るためにこのscRNA-toolsは有用である。それに、見ていてもけっこう面白かったりする。例えば、「何このソフトこんなことできるんだ…」的な。
インパクトファクターが高いジャーナルで発表されていること
別の指標としてはそのライブラリがNature MethodsやScienceなどで発表されているかどうかがある。個人的にはNature Communications以上であれば、ひとまずOKで、それで迷ったら以下のようにベンチマークを探してみるかって感じである。
別の記事に書いたことがあるが、昨今では「研究にインパクトファクターなんてもの関係ない。内容を読んで判断する」的な風潮が少なからずあるが、そんなことを考えているのは学生がド三流の研究者である。偉い先生だとしても研究能力としてはカ*であり、単に人柄採用やたまたまラッキーだった奴である。キャリアが発展してくるにつれて、インパクトファクターの高いジャーナルでの発表が必要になってくる。逆にMDPIやFrontiersのジャーナルでファーストとラストを飾って心から喜んで、かつイキっている研究者はどうなのかってところである。そういったビ*グ*研究者は、インパクトファクターの高いジャーナルと低いジャーナルの違いについて理解していないどク**たれのど三一と断言できる。
まず、インパクトファクターの高いジャーナルは、その内容を、少なくとも科学的に非常に厳しく審査する。また、社会的な影響も大きくなければエディターから一発不採択を食らうことが多いと思う。これが違いである。すなわち、これにアクセプトされた時点である程度優れたライブラリであることは保証されている、ということにる。だから、迷った場合、Nature Communications以上に受理されたライブラリを選ぶっていうのは、不確定ではあるが、おそらくは信頼性が高いだろうライブラリを選ぶってことを意味する。
ベンチマークをした論文があること
正直、それでも良くわからないときがある。例えば、あるライブラリがNatureに載っていたとしよう。その内容で、開発に使ってきた学習データとテストデータを使って、他のライブラリと比較して、予測の結果が良かったからそのライブラリが一番良かった、とか言っている論文があったとする。考えてみれば、開発に使用してきた学習データとテストデータを使ってベンチマークを取ったら、そのライブラリが他よりも成績が良いのは当然である。そして、他のライブラリはその学習データで開発されていないのだから、成績があまり振るわないってのもよくわかる。それを時々感じるときがある。
そんなときは、そもそもの目的が「最近はたくさんライブラリが出てるので、どれが最も成績がよいのかをベンチマークにより評価した。」という、開発元とは別(とは限らないかもしれないが)の研究グループの論文を読んで、そのベンチマークの結果が出来る限り良いライブラリを選ぶのが良いと思う。次元削減でも遺伝子発現解析でもダブレット推定でも、その手のベンチマークの論文が出ている。ベンチマークでは結果の良し悪しに加えて、例えば、Seuratをメインに使っていたらR、Scanpyをメインに使っていたらpythonというように、メインで使っている環境や、時間的、コンピューターリソース的なパフォーマンスとの兼ね合いで使うかどうか決めれば良いと思う。個人的には、多少ベンチマークが劣るライブラリをだったとしても、それらを使用して得られた結果をちゃんと説明できさえすればどのライブラリでも良いと思っている。しかし、そもそも性能能の低いライブラリを使うってのは結果の解釈にも影響するわけなので、ベンチマークのなるべく良いライブラリってのは有用である。
まとめ
先日に書いたpythonパッケージに加えて、これらのRのライブラリを使えば、かなり良い解析ができるはずであり、それはとても面白いものになると思う。それに、scRNA-toolsやベンチマークもされているわけでもなく、ライブラリ開発の論文がインパクトファクターの高い論文ではなくても、どこかの論文で興味深い結果を出していたライブラリなどがあれば、それを使ってみるはとてもありである。そんなのは結構頻繁にある。だから、このあたりは柔軟に使っていくってのが必要だと思う。要はそのライブラリを使って得られた結果について、しっかりと説明することができれば良いと思う。