scATAC-seq(single-cell ATAC-seq/核を使う場合は snATAC-seq)は発現を測っていないため、マーカー遺伝子がそのまま使えません。この記事では、開閉を発現の代わりにする「遺伝子活性スコア」で細胞型を付ける方法を、実際のコードと検証手順とともに押さえます。
1. 遺伝子活性スコアとは
ATAC は発現を測っていないので、マーカー遺伝子がそのまま使えません。そこで、遺伝子まわりの開閉を「発現の代わり」にするのが遺伝子活性スコアです。遺伝子の制御領域(TSS 周辺、必要なら遺伝子body全体)にある Tn5 挿入を数え、その遺伝子の活性とします。
開いていれば発現できるという近似で、疑似的な「細胞×遺伝子」行列を作ります。これができれば、あとは scRNA-seq と同じマーカー・同じ作法でアノテーションできます。
2. 作り方(コード)
SnapATAC2 の make_gene_matrix で行列を作り、あとは Scanpy に渡します。この遺伝子活性スコアをまとめた行列は疎なので、MAGICという処理 で平滑化すると見やすくなります(MAGIC:van Dijk et al., Cell, 2018)。MAGICはScanpyに実装されているので、以下のプログラムで実行可能です。
python
import snapatac2 as snap, scanpy as sc
# 1. 遺伝子活性行列(細胞×遺伝子)を作る
gene_mat = snap.pp.make_gene_matrix(data, gene_anno=snap.genome.hg38)
# 2. RNAと同じ前処理(フィルタ・正規化・対数化)
sc.pp.filter_genes(gene_mat, min_cells=5)
sc.pp.normalize_total(gene_mat)
sc.pp.log1p(gene_mat)
# 3. 疎なのでMAGICで平滑化(要 pip install magic-impute)
sc.external.pp.magic(gene_mat, solver="approximate")
# 4. 可視化用に本体のUMAP座標とクラスタを移す
gene_mat.obsm["X_umap"] = data.obsm["X_umap"]
gene_mat.obs["leiden"] = data.obs["leiden"]
3. マーカーで細胞型を決め、UMAPで検証する
マーカー遺伝子の活性を UMAP に投影し、どのクラスタがどの細胞型かを判断します。
python
# マーカー遺伝子の活性をUMAPに投影(例:T細胞・B細胞・単球・NK)
markers = ["CD3D", "MS4A1", "CD14", "NKG7"]
sc.pl.umap(gene_mat, color=markers)
このとき、ただ色を見るだけでなく必ず次の3点を確認します。dotplot だけでなく、この UMAP 投影も合わせて行うのが本サイトの方針です。
💡 マーカー投影で確認する3点
① そのマーカーが目的のクラスタだけに出ているか(他クラスタにも出ていないか)。② クラスタ内の全細胞に出ているか、一部だけか、低くないか。③ 複数クラスタにまたがって出ていないか。良い例(左図)のように1クラスタに集中していれば信頼できます。
① そのマーカーが目的のクラスタだけに出ているか(他クラスタにも出ていないか)。② クラスタ内の全細胞に出ているか、一部だけか、低くないか。③ 複数クラスタにまたがって出ていないか。良い例(左図)のように1クラスタに集中していれば信頼できます。
4. 検証で異常が出たら
⚠️ ありえない細胞型にマーカーが出たら、前処理を疑う
もし組織学的にありえない細胞型にマーカーが出ている場合は、アノテーションを疑う前に QC不良やダブレット混入を疑ってください。マーカーが複数クラスタに散らばる(右図)ときも同様です。その場合は前処理(QC・ダブレット除去)に戻って見直すのが正解です。
もし組織学的にありえない細胞型にマーカーが出ている場合は、アノテーションを疑う前に QC不良やダブレット混入を疑ってください。マーカーが複数クラスタに散らばる(右図)ときも同様です。その場合は前処理(QC・ダブレット除去)に戻って見直すのが正解です。
5. 注意点
- あくまで近似:開いていても発現しない遺伝子(準備状態=poised)もあります。活性スコアは RNA そのものよりぼやけます。crisp でなくても不思議ではありません。
- MAGICは諸刃:平滑化で見やすくなる一方、過度にかけると陽性を広げすぎます。判断は元の分布も併せて。
- プロモーターが開いていない遺伝子:遺伝子body主体で発現する遺伝子は、TSS中心の既定設定だと拾いにくいことがあります(include_gene_body で調整)。
まとめ
- 遺伝子活性スコア=制御領域の開閉を発現の代わりにする近似。RNA風の行列になる。
make_gene_matrix→ 正規化 → MAGIC → マーカーを UMAP 投影。- 付けた型は必ず3点で検証。ありえない型に出たら前処理を疑う。
関連記事
参考文献
- van Dijk, D., Sharma, R., Nainys, J., et al. (2018). Recovering Gene Interactions from Single-Cell Data Using Data Diffusion. Cell, 174(3), 716–729. doi:10.1016/j.cell.2018.05.061
- Zhang, K., Zemke, N. R., Armand, E. J., & Ren, B. (2024). A fast, scalable and versatile tool for analysis of single-cell omics data. Nature Methods, 21(2), 217–227. doi:10.1038/s41592-023-02139-9


コメント