scATAC-seq(single-cell ATAC-seq/核を使う場合は snATAC-seq)の QC では、解析の邪魔になる細胞を除きます。ここでは ATAC 固有の指標と、その使い方を実際のコードとともに押さえます。
1. QC のゴール
QC(品質管理)の目的は、解析の邪魔になる細胞を除くことです。具体的には、空の液滴(細胞が入っていない)、シグナルが弱い低品質な細胞、死んだ細胞を除去します。
良い細胞の条件はシンプルで、開いているべき場所(TSS など)にシグナルが集中し、かつ十分な量のフラグメントを持つことです。この2つを軸に選別します。
2. 主要なQC指標
| 指標 | 意味 | 悪いサイン |
|---|---|---|
| TSS濃縮(TSSe) | 転写開始点まわりにシグナルが集まる度合い | 低い=ノイズ的でシグナルが散らばる |
| フラグメント数(リード数) | 1細胞あたりの深度 | 少なすぎ=空・低品質/多すぎ=ダブレット疑い |
| ヌクレオソーム周期 | フラグメント長分布の約200bp周期 | 周期が崩れる=ライブラリ不良 |
| ミトコンドリア遺伝子の含有率(frac_mito) | ミトコンドリア由来の割合 | 高い=死細胞・低品質 |
この中で最重要は TSS濃縮とフラグメント数です。この2つを散布図にして、右上(濃縮も深度も十分)の細胞だけを残すのが基本の型です。
もう一つ、ライブラリ全体の品質を見るのがフラグメント長の分布です。DNAが約147bpごとにヌクレオソームに巻かれているため、良いデータでは約200bpごとに山が現れます。
💡 用語:TSS濃縮(TSS enrichment)
TSS(転写開始点=遺伝子の読み始め)の周囲は、働ける遺伝子で強く開いています。良い細胞ほど、フラグメントがTSS周辺に集中します。この「集中度」を数値化したものが TSS濃縮スコアです(周期性の原理:Buenrostro et al., Nature Methods, 2013)。
TSS(転写開始点=遺伝子の読み始め)の周囲は、働ける遺伝子で強く開いています。良い細胞ほど、フラグメントがTSS周辺に集中します。この「集中度」を数値化したものが TSS濃縮スコアです(周期性の原理:Buenrostro et al., Nature Methods, 2013)。
3. FRiP の位置づけ(誤解しやすい点)
QCでよく聞く FRiP(Fraction of Reads in Peaks=ピーク内に入るフラグメントの割合)は直感的で有用な指標です。ただし名前の通りピークが必要です。
⚠️ FRiP は初期QCの主役ではない(peak-free フローの場合)
本サイトの流れでは、この段階でまだピークを作っていません(タイル先行で進めるため)。そのため FRiP は初期フィルタの主役にはなりません。初期QCは TSS濃縮+フラグメント数で行い、FRiP はピーク作成後に確認するか、参照CRE集合を使って推定します。「FRiPが標準」という一般論をそのまま初期QCに当てはめない、という点だけ注意してください。
本サイトの流れでは、この段階でまだピークを作っていません(タイル先行で進めるため)。そのため FRiP は初期フィルタの主役にはなりません。初期QCは TSS濃縮+フラグメント数で行い、FRiP はピーク作成後に確認するか、参照CRE集合を使って推定します。「FRiPが標準」という一般論をそのまま初期QCに当てはめない、という点だけ注意してください。
python
# FRiP はピークが必要。初期QCでは参照CRE集合で推定できる(任意)
snap.metrics.frip(data, {"frip": snap.datasets.cre_HEA()})
4. コード:SnapATAC2 でQC
TSS濃縮を計算し、プロットで確認してからフィルタする、という順です。
python
# 前提:import_fragments 済みの data(obs に n_fragment・frac_mito あり)
# 1. TSS濃縮スコアを計算
snap.metrics.tsse(data, snap.genome.hg38)
# 2. QCプロットを見る(TSS濃縮 × フラグメント数)
snap.pl.tsse(data)
# 3. プロットを見てしきい値を決め、フィルタ(数値は例。必ずプロットで調整)
snap.pp.filter_cells(data, min_counts=5000, min_tsse=10)
# 4. フラグメント長分布(ヌクレオソーム周期)を確認
snap.pl.frag_size_distr(data)
⚠️ しきい値は必ずプロットで決める
min_counts や min_tsse の数値はデータ依存です。組織やプロトコルで分布が変わるため、固定値を鵜呑みにせず、必ず pl.tsse のプロットを見て、雲の切れ目に合わせて決めてください(目安:TSSe 5〜10、フラグメント 1000〜5000 程度から検討)。まとめ
- 良い細胞=TSSにシグナルが集中し、フラグメントが十分。散布図の右上を残す。
- フラグメント長の約200bp周期でライブラリ品質を確認。
- FRiP はピークが要るので、peak-free の初期QCでは主役にしない。
- しきい値は固定値ではなくプロットを見て決める。
関連記事
- scATAC-seq のデータ読み込みとデータ構造
- scATAC-seq のダブレット検出
- scATAC-seq のピークコール
- scATAC-seq 前処理の全体像 ─ QC からクラスタリングまで
- scATAC-seq の次元削減とクラスタリング ─ なぜ PCA ではないのか
参考文献
- Buenrostro, J. D., Giresi, P. G., Zaba, L. C., Chang, H. Y., & Greenleaf, W. J. (2013). Transposition of native chromatin for fast and sensitive epigenomic profiling of open chromatin, DNA-binding proteins and nucleosome position. Nature Methods, 10(12), 1213–1218. doi:10.1038/nmeth.2688
- 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


コメント