scRNA-seq解析:細胞組成の差(differential abundance)

scRNA-seq

 

📚 この記事について:「scRNA-seq解析 実践シリーズ」下流解析編。条件間で細胞型の割合(組成)が変わるかを検定します。素朴な割合比較が陥る組成性の罠と、それを避ける2つの方法(scCODA/Milo)を解説します。

🔙 前の記事機能エンリッチメント / 🔜 次の記事軌道・擬時間と RNA velocity の全体像

前提細胞型アノテーション済み・条件ごとに複数個体のデータ。Python の基本。


この記事のゴール

条件間の細胞組成の差を、組成性(compositionality)の問題を踏まえて正しく検定できること。クラスタ単位の scCODA と、近傍単位の Milo を使い分けます。


何を問うか

「WT と KO で、ある細胞型が増えた/減ったか」――発生・疾患・遺伝子改変では、細胞組成の変化そのものが重要な表現型になります。


組成性の罠

細胞型の割合は合計が 100% に拘束されます。そのため、ある細胞型が増えると、他の細胞型は絶対数が変わらなくても割合が下がって見えます。素朴に「各細胞型の割合」を個別に検定すると、この見かけの変化を拾って偽陽性を出します。

組成性の罠。KO で細胞型 A の絶対数が増えると(左:絶対数)、B・C の絶対数が不変でも割合は下がって見える(右:割合)。割合は合計100%に拘束されるため、ある型の増加が他の「見かけの減少」を生む。素朴な割合検定はこれを偽陽性として拾う。
組成性の罠。KO で細胞型 A の絶対数が増えると(左:絶対数)、B・C の絶対数が不変でも割合は下がって見える(右:割合)。割合は合計100%に拘束されるため、ある型の増加が他の「見かけの減少」を生む。素朴な割合検定はこれを偽陽性として拾う。

💡 だから専用の方法が要る
組成性を無視した検定(各細胞型を独立に割合比較)は偽陽性を生みます。組成性を考慮する scCODA か、近傍ベースで頑健に検定する Milo を使います。


2つの主要アプローチ

細胞組成の差の2アプローチ。scCODA はクラスタ(細胞型)単位で、ベイズモデル(参照細胞型を基準)により組成性を考慮して有意な変化を検出する。Milo は離散クラスタを使わず、k-NN グラフ上の近傍ごとに細胞数を GLM で検定し、重み付き FDR で補正する(連続・遷移状態に強い)。
細胞組成の差の2アプローチ。scCODA はクラスタ(細胞型)単位で、ベイズモデル(参照細胞型を基準)により組成性を考慮して有意な変化を検出する。Milo は離散クラスタを使わず、k-NN グラフ上の近傍ごとに細胞数を GLM で検定し、重み付き FDR で補正する(連続・遷移状態に強い)。
  • scCODAクラスタ(細胞型)単位。ベイズモデル(Dirichlet-multinomial)で組成性を考慮参照細胞型を基準に「どの型が有意に変化したか」を出す。離散的な細胞型が定義できるときに向く。
  • Milo近傍単位(離散クラスタ不要)。k-NN グラフ上の部分的に重なる近傍ごとに細胞数を GLM で検定し、重み付き FDR で補正。連続的・遷移的な状態の変化に強い。

scCODA ― クラスタ単位・組成性を考慮

pythonimport pertpy as pt

# 細胞型×サンプルのカウントを集計し、組成データを作る
sccoda = pt.tl.Sccoda()
mdata = sccoda.load(
    adata, type="cell_level", generate_sample_level=True,
    cell_type_identifier="cell_type", sample_identifier="sample",
    covariate_obs=["condition"],
)

# 参照細胞型を指定してモデルを定義(組成性のため)→ サンプリング → 要約
mdata = sccoda.prepare(mdata, formula="condition", reference_cell_type="automatic")
sccoda.run_nuts(mdata)
sccoda.summary(mdata)        # credible effects(有意な変化)を確認

🔧 環境メモpip install pertpy。scCODA は参照細胞型の選び方で結果が変わります("automatic" か、変化しないと考えられる型を指定)。有意性は p 値ではなくcredible effect(事後確率に基づく)で判断します。


Milo ― 近傍単位・連続状態に強い

pythonimport pertpy as pt
import scanpy as sc

milo = pt.tl.Milo()
mdata = milo.load(adata)

# 統合表現上で近傍グラフ → 近傍を構成 → 近傍×サンプルのカウント
sc.pp.neighbors(mdata["rna"], use_rep="X_scVI", n_neighbors=15)
milo.make_nhoods(mdata["rna"])
milo.count_nhoods(mdata, sample_col="sample")

# GLM で差次的存在量(DA)を検定(重み付き FDR)
milo.da_nhoods(mdata, design="~condition")

🔧 環境メモ:Milo は内部で R(edgeR)を使う実装があり、pertpy[de]rpy2 等が要ります。離散クラスタを前提にしないため、細胞型ラベルが曖昧でも適用でき、連続的な遷移状態の偏りを捉えられます。近傍グラフの基盤となる use_rep="X_scVI"scVI によるサンプル統合・バッチ補正で得た統合表現です。API はバージョンで変わるため公式チュートリアル参照。


ツール早見表

ツール 言語 単位 特徴
scCODA Python(pertpy) クラスタ ベイズで組成性を考慮・参照細胞型が必要
Milo Python(pertpy, R backend) 近傍 離散クラスタ不要・連続/遷移状態に強い
MELD Python 細胞 条件らしさの密度推定
DA-seq Python/R 近傍 2条件のペア比較向き
propeller (speckle) / DCATS R クラスタ 割合の検定(補正あり)

落とし穴

⚠️ つまずきやすい点
組成性:素朴な割合検定は偽陽性。scCODA / Milo を使う。
生物学的反復が必須:条件ごとに複数個体。1個体ずつでは検定できない。
参照細胞型(scCODA):選び方で結論が変わる。変化しないと考えられる型か "automatic"
クラスタ vs 近傍:明確な細胞型なら scCODA、連続/遷移状態や曖昧なラベルなら Milo。
バッチ・交絡:条件と技術要因が混ざらないように。design に含める。
絶対数 vs 割合:scRNA-seq は絶対数を直接は測れない。あくまで相対組成の変化を見ている点に注意。


まとめ

  • 細胞組成の差は、割合が合計100%に拘束される(組成性)ため、素朴な割合検定では偽陽性が出る。
  • scCODA(クラスタ単位・ベイズ・参照細胞型)か Milo(近傍単位・連続状態に強い)を使う。
  • 生物学的反復が必須。明確な細胞型なら scCODA、連続/遷移状態なら Milo。
  • scRNA-seq が見ているのは相対組成であり、絶対数の変化とは限らない点に注意。

次の記事:軌道・擬時間と RNA velocity の全体像 — 「順序・方向・運命」をどう捉えるか、3つの解析の関係を整理します。


関連記事

下流解析の地図と前後

解析の基盤


参考文献

  • Dann, E., Henderson, N. C., Teichmann, S. A., Morgan, M. D., & Marioni, J. C. (2022). Differential abundance testing on single-cell data using k-nearest neighbor graphs. Nature Biotechnology, 40, 245–253. doi:10.1038/s41587-021-01033-z
  • Büttner, M., Ostner, J., Müller, C. L., Theis, F. J., & Schubert, B. (2021). scCODA is a Bayesian model for compositional single-cell data analysis. Nature Communications, 12, 6876. doi:10.1038/s41467-021-27150-6
  • Burkhardt, D. B., Stanley, J. S., Tong, A., et al. (2021). Quantifying the effect of experimental perturbations at single-cell resolution. Nature Biotechnology, 39, 619–629. doi:10.1038/s41587-020-00803-5
  • Heumos, L., Schaar, A. C., Lance, C., et al. (2023). Best practices for single-cell analysis across modalities. Nature Reviews Genetics, 24, 550–572. doi:10.1038/s41576-023-00586-w

 

コメント

タイトルとURLをコピーしました