scRNA-seq解析:遺伝子プログラム・遺伝子モジュール(gene programs/modules)

scRNA-seq

 

📚 この記事について:「scRNA-seq解析 実践シリーズ」下流解析編。細胞を離散的な「型」に分けるクラスタリングでは捉えきれない、連続的な遺伝子プログラム遺伝子モジュールを取り出す方法(cNMF/Hotspot)を解説します。

🔙 前の記事遺伝子制御ネットワーク・転写因子活性(GRN) / 🔜 次の記事CNV 推定(文脈特化)

前提:正規化前のカウント(cNMF 用)またはアノテーション済みデータ。Python の基本。


この記事のゴール

クラスタに依らず、細胞が使う「プログラム」(identity/activity)や遺伝子モジュールを取り出す考え方を理解し、cNMFHotspot を使い分けられること。


なぜクラスタリングだけでは足りないか

クラスタリングは各細胞を1つの型に割り当てます。しかし細胞は、細胞型を決めるプログラム(identity)と、状態を表すプログラム(activity:細胞周期・低酸素・刺激応答など)同時に発現しえます。クラスタリングは identity は捉えても、重なり合う activity を分離できません

クラスタリングとプログラムの違い。クラスタリングは各細胞を1つの型に割り当てる(identity は捉えるが、重なる状態を分離できない)。プログラムの考え方では、1細胞は複数プログラムの重ね合わせとして表され、細胞型(identity)と細胞周期・低酸素などの状態(activity)を同時に表せる。
クラスタリングとプログラムの違い。クラスタリングは各細胞を1つの型に割り当てる(identity は捉えるが、重なる状態を分離できない)。プログラムの考え方では、1細胞は複数プログラムの重ね合わせとして表され、細胞型(identity)と細胞周期・低酸素などの状態(activity)を同時に表せる。

💡 identity と activity
「この細胞は興奮性ニューロンで、いま細胞周期に入っていて、軽く低酸素応答もしている」――こうした重なりは、1細胞=1型のクラスタリングでは表せません。プログラム分解はこれを別々の成分として取り出します。


2つの捉え方

遺伝子プログラム・モジュールの2アプローチ。cNMF は発現行列を「プログラム(遺伝子の重み)×細胞ごとの使用度」に分解し、identity と activity のプログラムを取り出す。Hotspot は k-NN グラフ上で自己相関する(似た細胞どうしで揃って動く)遺伝子を集めて遺伝子モジュールにする。
遺伝子プログラム・モジュールの2アプローチ。cNMF は発現行列を「プログラム(遺伝子の重み)×細胞ごとの使用度」に分解し、identity と activity のプログラムを取り出す。Hotspot は k-NN グラフ上で自己相関する(似た細胞どうしで揃って動く)遺伝子を集めて遺伝子モジュールにする。
  • cNMF(プログラム分解):発現行列を「プログラム(遺伝子の重み)× 細胞ごとの使用度」に分解。identity と activity のプログラムを取り出す。
  • Hotspot(遺伝子モジュール):k-NN グラフ上で自己相関する(似た細胞どうしで揃って動く)遺伝子を集めてモジュールにする。

cNMF(プログラム分解)

cNMF はコンセンサス非負値行列分解です。発現行列を K 個のプログラム(GEP)細胞ごとの使用度に分解します。NMF は実行ごとに解がぶれるため、多数回実行して統合(コンセンサス)し、安定なプログラムを得ます。

cNMF の分解。発現行列(細胞×遺伝子)を、使用度(細胞×K:各細胞が各プログラムをどれだけ使うか)と、プログラム=GEP(K×遺伝子:各プログラムでどの遺伝子が高いか)の積に近似する。K 個のプログラムには identity(細胞型)と activity(細胞周期・低酸素など)が混在する。
cNMF の分解。発現行列(細胞×遺伝子)を、使用度(細胞×K:各細胞が各プログラムをどれだけ使うか)と、プログラム=GEP(K×遺伝子:各プログラムでどの遺伝子が高いか)の積に近似する。K 個のプログラムには identity(細胞型)と activity(細胞周期・低酸素など)が混在する。
pythonfrom cnmf import cNMF

# 1) 準備:カウント行列(h5ad)と試す K の範囲を指定
cnmf_obj = cNMF(output_dir="./cnmf", name="run1")
cnmf_obj.prepare(counts_fn="counts.h5ad", components=[8, 10, 12], n_iter=100)

# 2) 多数回 NMF を実行 → 3) 統合 → 4) コンセンサス(K を選ぶ)
cnmf_obj.factorize(worker_i=0, total_workers=1)
cnmf_obj.combine()
cnmf_obj.k_selection_plot()                       # K 選択の目安を見る
usage, spectra, top_genes, _ = cnmf_obj.consensus(k=10, density_threshold=0.1)
# usage:   細胞 × プログラム使用度
# spectra: プログラム × 遺伝子(GEP)

🔧 環境メモpip install cnmf。入力は正規化前の生カウント(0 カウントの細胞・遺伝子は事前に除く)。K(プログラム数)の選択は再構成誤差や安定性の目安(k_selection_plot)で決めますが、やや主観的なので複数 K を見ます。得られたプログラムは機能エンリッチメントで意味づけします。


Hotspot(遺伝子モジュール)

Hotspot は、似た細胞どうしで揃って変動する遺伝子(自己相関の高い遺伝子)を見つけ、遺伝子モジュールにまとめます。細胞をクラスタリングせずにモジュールを得られます。

pythonimport hotspot

# k-NN グラフ上で自己相関する遺伝子 → モジュール
hs = hotspot.Hotspot(adata, model="danb", latent_obsm_key="X_scVI")
hs.create_knn_graph(n_neighbors=30)
hs_results = hs.compute_autocorrelations()                 # 情報量のある遺伝子
hs_genes = hs_results.index[hs_results.FDR < 0.05]
local_corr = hs.compute_local_correlations(hs_genes)
modules = hs.create_modules(min_gene_threshold=20, fdr_threshold=0.05)

🔧 環境メモpip install hotspothotspotsc)。model="danb" は生カウント向き。latent_obsm_key には統合表現(例:scVI 潜在空間)を渡すと、バッチに頑健なモジュールが得られます。


ツール早見表

ツール 言語 出力 特徴
cNMF Python プログラム(GEP)+使用度 identity/activity を分解・コンセンサスで安定
Hotspot Python 遺伝子モジュール グラフ自己相関・クラスタ不要
WGCNA / hdWGCNA R 共発現モジュール バルク由来・scRNA-seq 拡張あり
NMF(scikit-learn) Python 成分 単発 NMF(コンセンサスなし)

落とし穴

⚠️ つまずきやすい点
プログラム ≠ クラスタ:1細胞は複数プログラムを使う。割り当てではなく使用度で考える。
K の選択(cNMF):主観が入る。複数 K を比較し、生物学的な解釈可能性で選ぶ。
確率的(cNMF):単発 NMF はぶれる。コンセンサスで安定化。
解釈にはエンリッチメント:プログラム・モジュールは遺伝子集合。機能エンリッチメントで意味づけする。
グラフ依存(Hotspot):モジュールは k-NN グラフに依存。統合表現を使う。
前段の品質依存:低品質・ダブレット・バッチが残るとプログラムが汚れる。


まとめ

  • クラスタリングは細胞を1つの型に割り当てるが、細胞は identity と activity のプログラムを同時に発現しうる。プログラム分解はこれを分離する。
  • cNMF:発現をプログラム(GEP)× 使用度に分解。コンセンサスで安定化、K の選択に注意。
  • Hotspot:グラフ自己相関で遺伝子モジュールを抽出。クラスタ不要。
  • 得られたプログラム・モジュールは機能エンリッチメントで意味づけする。

次の記事:CNV 推定(文脈特化) — 主に腫瘍で、発現から大規模なコピー数異常を推定する方法に進みます。


関連記事

関連する手法・前後

基盤・位置づけ


参考文献

  • Kotliar, D., Veres, A., Nagy, M. A., et al. (2019). Identifying gene expression programs of cell-type identity and cellular activity with single-cell RNA-Seq. eLife, 8, e43803. doi:10.7554/eLife.43803
  • DeTomaso, D., & Yosef, N. (2021). Hotspot identifies informative gene modules across modalities of single-cell genomics. Cell Systems, 12, 446–456. doi:10.1016/j.cels.2021.04.005
  • Langfelder, P., & Horvath, S. (2008). WGCNA: an R package for weighted correlation network analysis. BMC Bioinformatics, 9, 559. doi:10.1186/1471-2105-9-559
  • 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をコピーしました