シングルセルRNA−seqデータのQuality Controlライブラリを調査してみた
バイオインフォマティシャンの是枝です。
皆さんはscRNA-seqデータのQuality Controlはどのようにやられていますか?「seuratのsubset関数でやるだけ」といった方も多いかと思います。しかし、Quality Controlは大変奥が深い領域なので、ライブラリも100を超えて開発されているほど注目されている技術です。
今回は、シングルセルRNA−seqデータのQuality Controlライブラリを網羅的に調査してみたのでその結果をまとめてみようと思います。
Quality Controlのライブラリについて
まず大前提としてQuality Controlの際には以下のポイントを意識して解析が必要です。
1. UMIカウントによる細胞バーコードのフィルタリング
- 説明:細胞バーコードと関連するUMIカウントは、ドロップレット内の観測されたトランスクリプトの絶対数を示す。フィルタリングで、単一細胞を表さないバーコードを排除可能。
- UMI ("Unique Molecular Identifier"):UMIは、同じ分子から派生したPCR増幅産物を識別するため、各cDNA分子にランダムに割り当てられる短い塩基配列。
2. 機能数による細胞のフィルタリング
- 説明:UMIカウントと同様、機能数が異常に高いバーコードはマルチプレットの可能性。
3. ミトコンドリアリードの割合による細胞のフィルタリング
- 説明:ミトコンドリアDNAの転写物が増えると、細胞の状態が不健康に関連。
4. コミュニティツールを使用したダブレット検出による細胞のフィルタリング
- 説明:ダブレットやマルチプレットが解析を混乱させる可能性。
- ツール:DoubletFinder、Scrublet、Solo など。
5. 発現プロファイルに基づく空のドロップレットの特定と除去
- 説明:Lunらの開発したemptyDrops方法、EmptyNN、CellBender、DIEMなどのツール利用可能。
6. バーコードに関連する環境RNAの除去
- 説明:環境RNAは汚染や不健康な細胞の放出RNAが原因。
- ツール:SoupX、DecontX、CellBenderなど。
1~3あたりはseuratの前処理の段階でseuratのsubset関数でやるだけの方も多いでしょう。scaterとSeuratを使ったQCは、中心や規模のロバストな尺度(中央値や中央絶対偏差、MADなど)を計算し、中心から指定した数の偏差を持つセルを除外することで機能します。一般的に、これらの手法は各サンプルに個別に適用されるため、バイアスが生じる 可能性があることが分かっています。
QC指標の分布が異なる複数の細胞種からなるサンプル(例えば、数が少ない、ミトコンドリア比率が高いなど)の場合、このようなフィルタリングは、より極端な値を持つ細胞種から優先的に細胞を排除し、特定の細胞種から細胞を排除する偏りにつながっていきます。低品質の細胞なのか、希少な細胞なのか恣意的に除去することは避けたい事態でしょう。いくつかのツールでは深層学習や機械学習アルゴリズムを駆使したQCを提案しており、個人で閾値を決める作業をしなくても良くなってきています。
QCを行う前に、データセットに含まれる細胞種をある程度想定しておくことをお勧めします。これにより、複雑性の低い細胞タイプ(少数の遺伝子からの転写物が多い)やミトコンドリア発現レベルの高い細胞があるかどうかを知ることができます。これにより、解析ワークフローにおいて、これらの生物学的要因を考慮することが可能になります。
PBMCsだと大まかに以下の細胞が含まれることは予め予測がつくでしょう。
- B cells
- T cells
- NK cells
- monocytes
- macrophages
- possibly megakaryocytes
etc....
scRNA-toolsでQCライブラリの選定
scRNA-toolsでは数多くのscRNA-seq関連のライブラリが紹介されています。ここからQCのライブラリだけで見ても100以上のツールが開発され、その中のいくつかは論文化もなされています。
そこでここからQCに関するライブラリを厳選することにしました。厳選する基準は以下を用いました。
- Github上のスターが多く、使用者から注目されている
- 最近までリリースされており、開発が現在でも活発
- 使用に関するドキュメントが充実している
- 10Xgenomics社のフォーマットが使えるかどうか
このような視点で調べてみた結果、以下のようなランキングとなりました。
Tool | Rating |
---|---|
CellBender | ◎ |
ddqc | ○ |
DoubletFInder | ○ |
DropletQC | △ |
scrublet | △ |
EnptyNN | △ |
miQC | △ |
scDblFInder | △ |
skewC | ○ |
SoCube | △ |
solo | △ |
SampleQC | ○ |
QCライブラリをそれぞれの役割で整理してみる
今回、選定してきたライブラリはいくつかの領域に分けられます。
- ダブレット検出:DoubletFinder, solo, scrublet, DropletQC, scDblFInder, SoCube
- 空のドロップレット検出:CellBender, EnptyNN
- 環境DNAやバックグラウンドRNA削除:CellBender
- 独自アルゴリズム:skewC, ddqc, SampleQC, miQC
このような場合分けで、以下の順で試してみるのがおすすめです。
- CellBenderをまずは試す。論文発表者の手順・ライブラリあるなしでQCが改善するかどうかを確かめる
- ダブレットが多い課題が見つかったらダブレット検出ライブラリを適用してみる
- 独自アルゴリズムライブラリを試す
以下の論文で、DoubletFinderは、ダブレット検出する9つのツールで行われた比較により、最も高い検出精度を持つことが明らかにされています。2の手順ではまずはDoubletFinderを試してみてはいかがでしょうか。
独自アルゴリズムライブラリの仕様
skewC
skewCは遺伝子本体のカバー率とその歪度を品質指標として使用して各単細胞の品質を測定します。遺伝子全体の一致した配列の分布から相対的な遺伝子体カバー率を決定し、シングルセルRNAシーケンシング(scRNA-seq)データにおいて、遺伝子本体全体にわたるリードの分布が一様ではない細胞を除居ていきます。
ddqc
ddqcは、細胞の各クラスタにおける絶対偏差の中央値(MAD)に基づいて適応的な閾値を設定し、この閾値を満たさない細胞をフィルタリングします。
ddqcとSeuratのQCの主な違いは、ddqcが適応的でデータ駆動型のアプローチを採用し、細胞タイプや細胞状態レベルでの生物学的変動を考慮するのに対し、SeuratのQCは一般的な閾値を使用して細胞をフィルタリングする点です。これにより、ddqcは従来の品質管理方法よりも細胞タイプや細胞状態の保持が改善されます。
SampleQC
ロバスト多変量ガウス混合モデルを適用
SampleQCは、複数のセルタイプのQC分布を同時に特定し、QCメトリック値が極端に高い健康なセルタイプを除外するバイアスを除去することで、外れ値検出の感度に関する問題を解決
各サンプルに独自の「サンプルシフト」項を持たせることで、複数のサンプルに対して同時にフィッティングを行い、統計的検出力を高め、面倒なプロセスを自動化します。
細胞およびサンプルの品質に関する包括的な自動生成レポートを提供し、ユーザーに結果を可視化することが可能。
miQC
miQCは、scRNA-seqデータの品質管理(QC)に使用されるデータ駆動型アプローチであり、ライブラリの複雑さとmtDNAの割合を用いて細胞を分類し、妥協した細胞を特定し、除去することで、より高品質な細胞を保持することを目的としています。 miQCは、生物学的および技術的なばらつきを考慮し、組織サンプルごとにパラメータの分布をモデル化することで、多様な組織や実験に適応することができます。
これら独自のアルゴリズムを持つQCライブラリは他のQCアルゴリズムと一風変わった仕組みなので解析とは別で試してみたら新たな結果が得られるかもしれません。
CellolineとCellity
今回、これまでの選定とは文献調査からもライブラリを探してみました。Pubmedで「low quality cell and quality control」というワードで検索した結果以下の論文が出てきました。
scRNA-seqデータを処理し、低品質細胞を検出するための新たなアプローチが紹介されており、それには2つのライブラリを用いることが書かれています。
- Celloline:scRNA-seqのfastqファイルをし、発現量マトリクスとリード統計情報を得るパイプラインツール
- Cellity:SVM分類モデルでネスティッドクロスバリデーションを実施するライブラリ
CD4+T細胞、骨髄樹状細胞、マウス胚性幹細胞を含む5,000以上の細胞でテストしたところ、従来の方法と比較して分類精度を30%以上向上させたとのことです。
実際にこのような低品質とラベルされた細胞が検出されてきています。
使ってみた感想・懸念点
実際にCellityを動かしてみた感想を箇条書きでまとめてみました。
- 2017年に出たツールなので古さが気になる
- SVMが一昔前のアルゴリズムという印象。今現在では、深層学習のアルゴリズムに取って代わられる。
- 論文のライブラリではマウスESC細胞でトレーニングしており、この学習データを使えるとは言っているが、我々の解析と細胞種が異なることは分離精度に影響しないのか懸念が残る
- 我々もトレーニングデータを用意して予測精度を上げる工数を挟まないといけない
- 2016年あたりは10XgenomicsフォーマットがなかったのでCellolineによるパイプライン処理は実用性があったが、現在はCellrengerに取って代わられている。
- 現在はほとんど保守されておらず、開発者から連絡も返ってこない。AMI のIDが記載されているものと異なるようで見つけられず著者に連絡してもかえってこなかった。
- Cellolineがpython2で書かれていることから直しつつ動かす必要があるので工数がかかる。実運用まで乗せるのに時間がかかるのでスピーディに研究を進められない。
- 10Xgenomicsフォーマットでの使用方法が不明
- fastqファイルから直接パイプライン処理を動かす必要がある。この工程は時間がかかる。
- 公共データベースには10Xgenomicsフォーマットで定量済みファイルが多く存在するので、それをうまく活用したいところ
特に、「2016年あたりは10XgenomicsフォーマットがなかったのでCellolineによるパイプライン処理は実用性があったが、現在はCellrengerに取って代わられている。」という点は、現在のscRNA-seqデータが10Xgenomicsフォーマットが大多数であることを考慮するとなかなか難しい点になってくると思います。以上の懸念点から、Cellityの他にQuality Controlを行うライブラリを探す必要があると判断しました。
終わりに
いかがだったでしょうか。気に入ったQCライブラリが見つかったのなら幸いです。scRNA-seqデータ解析の結果にシビアに関わってくるだけにしっかりとしたQC手順を見つけておきたいです。今回は触れませんでしたが、多くの論文にはQCの手順がきちんと書かれており、それらに準拠した形でまとめるのもありだと思います。本記事が参考になりましたら幸いです。
Discussion