scATAC-seq のピークコール ─ MACS3 で「開いた領域」を定義する

scATAC-seq
📚 この記事について
フラグメントが密集した「開いた領域」をピークとして定義する工程です。ピークはクラスタごとに呼ぶ、という点が要になります。
🔙 前の記事scATAC-seq のダブレット検出
🔜 次の記事scATAC-seq の次元削減とクラスタリング
📌 前提:タイルでの次元削減・クラスタリングが済んでいること(本文で解説)

scATAC-seq(single-cell ATAC-seq/核を使う場合は snATAC-seq)のピークコールは、フラグメントが密集した「開いた領域」をピークとして切り出す工程です。ここでは、なぜクラスタごとに呼ぶのか、その手順を実際のコードとともに押さえます。

1. ピークコールとは


ピークコールは、フラグメントが密集した領域(=開いた領域)を ピークとして切り出す操作です。読み込みの回で見たタイルが機械的な区切りだったのに対し、ピークは生物学的に意味のある領域です。差次的アクセシビリティモチーフ解析といった下流解析は、このピークの上で行います。

2. なぜクラスタごとに呼ぶのか


ピークは、全細胞をまとめてではなく クラスタ(細胞型)ごとに呼びます。理由は希少な細胞型にあります。

図1:なぜクラスタごとにピークを呼ぶのか(希少細胞型のピークは全体では埋もれる)
図1:なぜクラスタごとにピークを呼ぶのか(希少細胞型のピークは全体では埋もれる)

全細胞をまとめて呼ぶと、希少な細胞型に特異的なピークは、多数派に薄められてしきい値に届かず見逃されます。クラスタごとに呼べば、その細胞型の中でシグナルが濃縮されるので、希少な領域も拾えます。

⚠️ そのため、実際の順序はクラスタリングの後
クラスタごとに呼ぶには、先にクラスタが決まっている必要があります。つまり SnapATAC2 では、タイルで次元削減・クラスタリングを済ませてから、ピークコールを行います。

3. 3ステップで統一ピークを作る


MACS3 が返すピークはクラスタごとで長さもばらばら、位置も重なります。これを統一するのが merge_peaks です。

図2:merge_peaks で可変長・重複を固定幅・非重複の統一ピークにまとめる
図2:merge_peaks で可変長・重複を固定幅・非重複の統一ピークにまとめる

流れは3ステップです。① macs3 でクラスタごとに検出 → ② merge_peaks で重なりを解消し固定幅・非重複のコンセンサスに → ③ make_peak_matrix で細胞×ピーク行列を作成。固定幅・非重複にしておくと、後のモチーフ解析などが扱いやすくなります。

💡 用語:MACS(MACS2 / MACS3)
MACS は Model-based Analysis of ChIP-Seq の略で、もともと ChIP-seq 用に作られたピーク検出の定番です(MACS2:Zhang et al., Genome Biology, 2008)。現行版は MACS3 で、SnapATAC2 はこれを内部で呼び出します。

4. コード:SnapATAC2(MACS3)


python
# 前提:クラスタリング済み(obs['leiden'] などのグループ列がある)

# 1. クラスタごとに MACS3 でピークを検出(可変長)
snap.tl.macs3(data, groupby="leiden")

# 2. 重なりを解消して統一ピークに(固定幅・非重複)
peaks = snap.tl.merge_peaks(data.uns["macs3"], snap.genome.hg38)

# 3. 細胞 × ピーク行列を作成
peak_mat = snap.pp.make_peak_matrix(data, use_rep=peaks["Peaks"])
print(peak_mat)

タイルは約600万列ありましたが、ピークは約30万に絞られます。ここからが「意味のある特徴量」での解析です。

text
# 出力例(タイル約600万 → ピーク約30万に絞られる)
AnnData object with n_obs × n_vars = 4437 × 302197

5. 注意点


  • groupby にはクラスタ列を渡す:クラスタリング後の obs 列(leiden や cell_type)を指定します。
  • qvalue でピークの厳しさを調整:既定 0.05。小さくすると確実だが数は減ります。
  • ブラックリスト領域を除くblacklist にBEDを渡すと、アーティファクトが多い既知の領域を除外できます。
  • 関数名の履歴:旧 tl.call_peaks は現在 tl.macs3。自動マージも廃止され、merge_peaks を明示的に呼びます。

まとめ


  • ピーク=開いた領域=意味のある特徴量。下流解析はこの上で行う。
  • クラスタごとに呼ぶと、希少細胞型のピークも拾える(=クラスタリングの後に実施)。
  • macs3 →merge_peaks(固定幅・非重複)→ make_peak_matrix の3ステップ。

関連記事


参考文献


  • Zhang, Y., Liu, T., Meyer, C. A., et al. (2008). Model-based Analysis of ChIP-Seq (MACS). Genome Biology, 9(9), R137. doi:10.1186/gb-2008-9-9-r137
  • 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

コメント

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