scVIだけじゃない:scvi-tools の全体像 ― どのモデルをいつ使うか

scRNA-seq

📚 この記事について:「ツール解説」シリーズ。scvi-tools は「scVI という1つのツール」ではなく、共通の枠組みに乗った”モデル群”です。初心者がつまずきやすい「結局どれを使うのか」を、データの種類ごとに整理します。scVI 単体の使い方は別記事 scVI による統合・バッチ補正 を参照。

🧩 前提AnnData のデータ構造の基本。Python の基本。


この記事のゴール

scvi-tools1つのモデルではなく、共通設計のモデル群だと理解し、データの種類・目的に応じてどのモデルを選ぶかを掴むこと。


scvi-tools とは

Python の深層生成モデル(VAE:変分オートエンコーダ)にもとづく single-cell 解析フレームワークです。共通の発想は、細胞を低次元の潜在空間に圧縮し、バッチや技術ノイズを分離すること。その共通基盤の上に、データの種類(RNA・ATAC・タンパク質・空間…)やタスクごとに専用モデルが用意されています。

重要なのは、すべて同じ使い方の型に従う点です:setup_anndata → モデル定義 → train → 潜在表現や予測を取り出す。これを知っていれば、モデルが変わっても迷いません。

scvi-tools の全体像。共通の枠組み(VAE + 共通 API)の上に、データの種類ごとの専用モデルが並ぶ。scRNA-seq は scVI/scANVI、マルチモーダルは totalVI/MultiVI、ATAC は PeakVI、空間は DestVI/Stereoscope。
scvi-tools の全体像。共通の枠組み(VAE + 共通 API)の上に、データの種類ごとの専用モデルが並ぶ。scRNA-seq は scVI/scANVI、マルチモーダルは totalVI/MultiVI、ATAC は PeakVI、空間は DestVI/Stereoscope。

代表モデルの早見表

モデル データ / 用途 何をするか
scVI scRNA-seq バッチ補正・統合(潜在表現)・正規化・DE。基本の土台(→ 別記事
scANVI scRNA-seq+一部ラベル 半教師あり。既知ラベルで統合し、残りにラベルを転写(参照マッピング)
totalVI CITE-seq(RNA+タンパク質) RNA とタンパク質(ADT)を同時にモデル化・欠損タンパク質の補完
PeakVI scATAC-seq クロマチンアクセシビリティ(ピーク)の統合・潜在表現
MultiVI マルチオーム(RNA+ATAC) 複数モダリティを統合(ペア・非ペア、欠損モダリティも扱える)
DestVI / Stereoscope 空間トランスクリプトーム スポット内の細胞型割合を推定(デコンボリューション)

💡 なぜ”群”なのか
すべて「観測(カウント)を確率モデルで表し、潜在表現を学ぶ VAE」という同じ土台です。違いは「どのデータ種・どのタスクに特化しているか」だけ。だから共通の API で使え、片方を覚えれば他にも応用できます。

このほかにも、CondSCVI(DestVI 用の単一細胞参照)、LinearSCVI(LDVAE)(解釈しやすい線形版)、AUTOZI(ゼロ過剰の評価)、SOLO(ダブレット検出|→別記事)、CellAssign(マーカーベース注釈)、gimVI(空間の遺伝子補完)などが同じ枠組みに含まれます。


共通の使い方(型は1つ)

pythonimport scvi
import scanpy as sc

# 共通の流れ:setup_anndata → モデル定義 → train → 潜在表現を取得
# 入力は「生カウント」を layers に置く(log 正規化やスケール後ではない)
scvi.model.SCVI.setup_anndata(adata, layer="counts", batch_key="sample")
model = scvi.model.SCVI(adata, n_latent=30)
model.train()

# 学習した潜在表現(バッチ補正済み)を obsm に格納
adata.obsm["X_scVI"] = model.get_latent_representation()

# 以降は通常の scanpy フロー(近傍グラフ → クラスタリング → UMAP)
sc.pp.neighbors(adata, use_rep="X_scVI")
sc.tl.leiden(adata)
sc.tl.umap(adata)

他のモデルもほぼ同じ型です。scvi.model.SCANVI / TOTALVI / PEAKVI / MULTIVI などに替え、setup_anndata → モデル → trainget_latent_representation()(や predict())を呼びます。

⚠️ 入力は「生カウント」
scVI 系は生カウントを前提にします(自前で正規化・対数化・スケールした値ではない)。生カウントを adata.layers["counts"] に退避し、setup_anndata(..., layer="counts") で指定します。log 正規化済みを渡すと誤った結果になります。


どれを使えばよいか(データの種類で選ぶ)

  • scRNA-seq のバッチ統合だけscVI
  • 既知ラベルを活かして統合+アノテーションscANVI
  • CITE-seq(タンパク質併用)totalVI
  • scATAC-seqPeakVIRNA+ATAC のマルチオームMultiVI
  • 空間トランスクリプトームのデコンボリューションDestVI / Stereoscope
  • 既存アトラスに自分のデータを載せる(参照マッピング)scArches 枠組み(scVI/scANVI をベースに)

落とし穴

⚠️ つまずきやすい点
入力は生カウント(log/scale 後ではない)。layers に生カウントを保持する。
GPU 推奨:CPU でも動くが学習が遅い。
モデルとデータ種を合わせる:RNA 用モデルに ATAC を入れない、など。
再現性:乱数で結果が少し変わる。scvi.settings.seed = 0 などで固定する。
統合とアノテーションは別工程:scVI は統合まで、アノテーションは scANVI かアノテーション編の手法で行う。


まとめ

  • scvi-toolsVAE を共通基盤としたモデル群データの種類・目的でモデルを選ぶだけで、使い方の型は1つ(setup_anndatatrain → 取り出し)。
  • scRNA-seq は scVI/scANVI、CITE-seq は totalVI、ATAC は PeakVI、マルチオームは MultiVI、空間は DestVI/Stereoscope
  • 入力は生カウントGPU 推奨seed 固定が共通の注意点。

関連記事


参考文献

  • Gayoso, A., Lopez, R., Xing, G., et al. (2022). A Python library for probabilistic analysis of single-cell omics data. Nature Biotechnology, 40, 163–166. doi:10.1038/s41587-021-01206-w
  • Lopez, R., Regier, J., Cole, M. B., Jordan, M. I., & Yosef, N. (2018). Deep generative modeling for single-cell transcriptomics. Nature Methods, 15, 1053–1058. doi:10.1038/s41592-018-0229-2
  • Xu, C., Lopez, R., Mehlman, E., et al. (2021). Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models. Molecular Systems Biology, 17, e9620. doi:10.15252/msb.20209620
  • Gayoso, A., Steier, Z., Lopez, R., et al. (2021). Joint probabilistic modeling of single-cell multi-omic data with totalVI. Nature Methods, 18, 272–282. doi:10.1038/s41592-020-01050-x
  • Ashuach, T., Reidenbach, D. A., Gayoso, A., & Yosef, N. (2022). PeakVI: A deep generative model for single-cell chromatin accessibility analysis. Cell Reports Methods, 2, 100182. doi:10.1016/j.crmeth.2022.100182
  • Ashuach, T., Gabitto, M. I., Koodli, R. V., et al. (2023). MultiVI: deep generative model for the integration of multimodal data. Nature Methods, 20, 1222–1231. doi:10.1038/s41592-023-01909-9
  • Lopez, R., Li, B., Keren-Shaul, H., et al. (2022). DestVI identifies continuums of cell types in spatial transcriptomics data. Nature Biotechnology, 40, 1360–1369. doi:10.1038/s41587-022-01272-8

コメント

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