跳转至

染色质可及性ATAC-seq全流程


一句话概述

ATAC-seq(Assay for Transposase-Accessible Chromatin using sequencing)通过Tn5转座酶切割开放染色质区域来检测基因组的可及性,本教程覆盖从原始数据处理到peak calling和motif分析的完整计算流程。


目录


1. 核心知识点

序号步骤工具目的输入输出关键参数
1质控与接头去除FastQC/Trim Galore去除低质量reads和接头Raw FASTQClean FASTQNextera接头
2基因组比对Bowtie2/BWA将reads比对到参考基因组Clean FASTQ + 基因组索引BAM--very-sensitive -X 2000
3BAM后处理SAMtools/Picard去重、过滤、排序BAM处理后BAMMAPQ≥30, 去重
4线粒体和黑名单过滤SAMtools/BEDTools去除MT reads和黑名单区域BAM过滤后BAM黑名单BED
5Tn5偏移校正deepTools/自定义校正Tn5插入位点偏移BAM偏移校正BAM+4/-5 shift
6片段大小分布ATACseqQC/Picard检查核小体信号BAM片段大小直方图周期~200bp
7Peak callingMACS2/HMMRATAC识别开放染色质区域BAMNarrowpeak/BED-f BAMPE --nomodel
8差异可及性分析DiffBind/DESeq2识别条件间差异peaksPeak集合+BAMs差异peaksFDR<0.05,
9转录因子足迹TOBIAS/HINT识别TF结合足迹BAM + Peaks + MotifsTF足迹分数覆盖度校正
10Motif富集分析HOMER/MEME发现富集的TF motifPeak序列Motif列表背景选择

2. 各步骤详解

步骤1:质控与接头去除

白话解释:ATAC-seq使用Nextera转座酶接头(与标准Illumina接头不同)。由于ATAC-seq的片段长度分布很广(从<100bp的无核小体区域到~200bp的单核小体片段),短片段reads中接头污染比例很高,必须彻底去除。

技术细节

ATAC-seq的接头特殊性: - Tn5转座酶使用Nextera接头序列 - 接头序列:CTGTCTCTTATACACATCT - 因为有大量短片段(<150bp),PE150测序时接头读穿率很高 - Trim Galore可自动检测Nextera接头

质控指标特殊关注: - 片段大小分布应呈现核小体周期性(~200bp间隔的峰) - GC含量可能因开放染色质的GC偏好而略偏 - 过高的重复率可能表示起始材料太少

# FastQC质控
fastqc -t 8 sample_R1.fastq.gz sample_R2.fastq.gz -o qc_raw/

# Trim Galore(自动检测Nextera接头)
trim_galore --paired --nextera --quality 20 --length 20 \
  --cores 4 --fastqc \
  sample_R1.fastq.gz sample_R2.fastq.gz \
  -o trimmed/

# 或手动指定Nextera接头
trim_galore --paired \
  -a CTGTCTCTTATACACATCT -a2 CTGTCTCTTATACACATCT \
  --quality 20 --length 20 \
  --cores 4 \
  sample_R1.fastq.gz sample_R2.fastq.gz \
  -o trimmed/

步骤2:基因组比对

白话解释:将质控后的reads比对到参考基因组。ATAC-seq片段的长度范围很广(100-1000bp+),所以需要设置足够大的最大插入片段长度参数。

技术细节

Bowtie2是ATAC-seq比对的首选工具(比BWA对短片段处理更好)。关键参数: - --very-sensitive:使用最灵敏的比对模式 - -X 2000:允许的最大片段长度(ATAC-seq可有很长的片段) - --no-mixed --no-discordant:只保留配对比对正确的reads - --dovetail:允许reads重叠(短片段可能导致PE reads互相穿过)

为什么不用STAR/HISAT2:ATAC-seq数据来自基因组DNA(不是RNA),没有剪接,所以不需要splice-aware的比对工具。

# Bowtie2索引(如未建立)
bowtie2-build --threads 16 genome.fa genome_bt2_idx

# Bowtie2比对
bowtie2 -x genome_bt2_idx \
  -1 trimmed/sample_R1_val_1.fq.gz \
  -2 trimmed/sample_R2_val_2.fq.gz \
  --very-sensitive \
  -X 2000 \
  --no-mixed --no-discordant \
  --threads 16 \
  2> align_stats.txt \
  | samtools sort -@ 8 -o aligned/sample.bam

samtools index aligned/sample.bam

# 查看比对统计
cat align_stats.txt

步骤3:BAM后处理

白话解释:比对后的BAM文件需要进一步清理:去除PCR重复(同一个DNA片段被多次测序)、去除低比对质量的reads、去除未正确配对的reads。这些过滤确保后续分析基于真实的、可靠的信号。

技术细节

过滤步骤: 1. 去除PCR重复:Picard MarkDuplicates或sambamba markdup 2. MAPQ过滤:只保留高质量比对(MAPQ≥30,对应错误概率<0.1%) 3. 去除未配对/不一致reads:SAMtools flag过滤 4. 去除多比对reads:ATAC-seq中多比对reads通常来自重复序列区域 5. 仅保留常染色体:去除随机contigs和未定位scaffolds

ATAC-seq的PCR重复率通常为10-40%。如果重复率>50%,说明建库起始材料可能太少。使用UMI可以更准确地去重。

# 标记并去除PCR重复
picard MarkDuplicates \
  I=aligned/sample.bam \
  O=aligned/sample_dedup.bam \
  M=aligned/sample_dup_metrics.txt \
  REMOVE_DUPLICATES=true

# 多步过滤
samtools view -@ 8 -b -f 2 -F 1804 -q 30 \
  aligned/sample_dedup.bam \
  > aligned/sample_filtered.bam

# Flag解释:
# -f 2: 保留properly paired
# -F 1804: 去除unmapped(4), mate unmapped(8), not primary(256), 
#           fails QC(512), duplicate(1024)
# -q 30: MAPQ >= 30

samtools index aligned/sample_filtered.bam

# 统计过滤前后reads数
echo "原始比对reads: $(samtools view -c aligned/sample.bam)"
echo "过滤后reads: $(samtools view -c aligned/sample_filtered.bam)"

步骤4:线粒体和黑名单过滤

白话解释:ATAC-seq中线粒体DNA是一个大问题——线粒体DNA没有组蛋白包装,完全"开放",会消耗大量测序能力。此外,基因组中有些区域(ENCODE黑名单)无论什么实验都会产生异常高的信号,应该排除。

技术细节

线粒体reads的影响: - 线粒体DNA完全开放(无核小体),Tn5会大量切割 - 好的ATAC-seq实验线粒体reads<20%(理想<5%) - 高线粒体比例(>50%)通常表示细胞活力差或核提取不完全 - 一些建库方案使用差异离心或核分离来减少线粒体

ENCODE黑名单区域: - 这些区域在各种ChIP-seq/ATAC-seq实验中都产生异常高信号 - 原因包括:重复序列过多、基因组组装错误、卫星DNA - 应在peak calling之前去除这些区域的reads - 可从ENCODE下载物种特异的黑名单BED文件

# 去除线粒体reads
samtools view -@ 8 -b aligned/sample_filtered.bam \
  $(samtools view -H aligned/sample_filtered.bam | grep "^@SQ" | \
    awk '{print $2}' | sed 's/SN://' | grep -v "chrM" | tr '\n' ' ') \
  > aligned/sample_noMT.bam

# 或者用samtools idxstats计算线粒体比例后直接过滤
echo "线粒体reads比例:"
samtools idxstats aligned/sample_filtered.bam | \
  awk '{if($1=="chrM") mt=$3; total+=$3} END{print mt/total*100 "%"}'

# 去除黑名单区域
bedtools intersect -v -abam aligned/sample_noMT.bam \
  -b encode_blacklist_hg38.bed \
  > aligned/sample_final.bam

samtools index aligned/sample_final.bam

echo "最终分析reads: $(samtools view -c aligned/sample_final.bam)"

步骤5:Tn5偏移校正

白话解释:Tn5转座酶实际切割DNA时,会产生一个9bp的间隔(staggered cut)——正链切割点比负链的切割点偏移9bp。为了精确定位真正的"切割点"(即开放染色质位点),需要将正链reads向3'方向偏移+4bp,负链reads向5'方向偏移-5bp。

技术细节

Tn5偏移的生物学原因: - Tn5以二聚体形式工作,在DNA双链上交错切割 - 两个切割位点之间有9bp的间距 - 因此每个插入事件产生9bp的TSD(Target Site Duplication) - 校正后的位点代表Tn5二聚体中心的真正插入位置

校正方法: - 正链(+)reads的5'端位置+4 → 真实切割位点 - 负链(-)reads的5'端位置-5 → 真实切割位点

这个校正对于TF footprint分析至关重要(需要碱基水平的精度),但对peak calling影响不大(peak通常跨越数百bp)。

# 使用alignmentSieve(deepTools)进行Tn5偏移校正
alignmentSieve \
  --bam aligned/sample_final.bam \
  --outFile aligned/sample_shifted.bam \
  --ATACshift \
  --numberOfProcessors 16

samtools sort -@ 8 -o aligned/sample_shifted_sorted.bam aligned/sample_shifted.bam
samtools index aligned/sample_shifted_sorted.bam

# 或使用自定义脚本(基于pysam)
python3 << 'EOF'
import pysam

inbam = pysam.AlignmentFile("aligned/sample_final.bam", "rb")
outbam = pysam.AlignmentFile("aligned/sample_shifted.bam", "wb", template=inbam)

for read in inbam:
    if read.is_unmapped or read.is_secondary or read.is_supplementary:
        continue
    if read.is_reverse:
        read.reference_start = read.reference_start - 5
    else:
        read.reference_start = read.reference_start + 4
    outbam.write(read)

inbam.close()
outbam.close()
EOF

步骤6:片段大小分布与质量评估

白话解释:好的ATAC-seq数据应该呈现明显的核小体周期性:最小的片段(<150bp)来自无核小体区域(NFR),~200bp的片段跨过1个核小体,~400bp跨过2个核小体。这个分布是判断ATAC-seq数据质量的关键指标。

技术细节

期望的片段大小分布模式: - 第一个峰(<150bp):无核小体区域(NFR)/亚核小体片段,代表TF结合位点和启动子区域 - 第二个峰(~200bp):单核小体片段 - 第三个峰(~400bp):双核小体片段 - 峰之间的谷应该明显

如果看不到周期性: - 可能细胞核提取不完全 - 或转座酶用量不当(过量会切太碎,不足会切不够) - 或数据质量差

TSS(转录起始位点)富集也是重要的质量指标:ATAC-seq信号应该在活跃基因的TSS附近富集。

# 使用Picard计算插入片段大小
picard CollectInsertSizeMetrics \
  I=aligned/sample_final.bam \
  O=qc/insert_size_metrics.txt \
  H=qc/insert_size_histogram.pdf

# 使用ATACseqQC(R包,更全面的QC)
library(ATACseqQC)
library(ggplot2)

# 片段大小分布
fragSize <- fragSizeDist("aligned/sample_final.bam", "Sample1")

# 或直接从BAM提取
library(Rsamtools)
param <- ScanBamParam(what="isize")
bam <- scanBam("aligned/sample_final.bam", param=param)
frag_sizes <- abs(bam[[1]]$isize)
frag_sizes <- frag_sizes[frag_sizes > 0 & frag_sizes < 1000]

ggplot(data.frame(size=frag_sizes), aes(x=size)) +
  geom_histogram(bins=500, fill="steelblue", color="white", linewidth=0.1) +
  geom_vline(xintercept=c(150, 200, 400), linetype="dashed", color="red") +
  labs(x="Fragment size (bp)", y="Count",
       title="ATAC-seq Fragment Size Distribution") +
  xlim(0, 800) +
  theme_minimal(base_size=14)
ggsave("qc/fragment_size_distribution.pdf", width=8, height=5)

# TSS富集图
library(ChIPseeker)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)
txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene

# 读取peaks用于TSS注释(先做peak calling再回来看)
peaks <- readPeakFile("peaks/sample_peaks.narrowPeak")
peakAnno <- annotatePeak(peaks, TxDb=txdb, tssRegion=c(-3000, 3000))
plotAnnoPie(peakAnno)

步骤7:Peak calling

白话解释:找到基因组上那些Tn5切割频率异常高的区域——即开放染色质区域。MACS2是最常用的peak caller,对ATAC-seq需要使用特定参数(无control、paired-end模式)。

技术细节

MACS2用于ATAC-seq的关键参数: - -f BAMPE:使用配对reads的片段信息(比单端模型更准确) - --nomodel:不需要估计fragment size(因为我们已知片段大小分布) - --keep-dup all:保留所有reads(已经去过重了) - --nolambda-g:基因组有效大小 - --shift -75 --extsize 150:如果用单端模式(不推荐),这模拟了NFR的大小 - 不需要input/control样本(不同于ChIP-seq)

HMMRATAC是专门为ATAC-seq设计的替代工具: - 使用隐马尔可夫模型识别开放区域和核小体位置 - 能区分NFR和核小体区域 - 对核小体定位信号更好

建议:先用MACS2做标准分析,对于需要精细核小体定位的研究可以加用HMMRATAC。

# MACS2 peak calling(推荐:BAMPE模式)
macs2 callpeak \
  -t aligned/sample_final.bam \
  -f BAMPE \
  -g hs \
  -n sample \
  --outdir peaks/ \
  --nomodel \
  --keep-dup all \
  -B --SPMR \
  -q 0.01

# 输出文件:
# peaks/sample_peaks.narrowPeak  - peak坐标和信号
# peaks/sample_summits.bed       - peak顶点
# peaks/sample_treat_pileup.bdg  - 信号track

# HMMRATAC(替代方案)
HMMRATAC \
  -b aligned/sample_final.bam \
  -i aligned/sample_final.bam.bai \
  -g genome.genome \
  -o peaks/sample_hmmratac

# 统计
echo "Peak数: $(wc -l < peaks/sample_peaks.narrowPeak)"
echo "Peak中位数宽度: $(awk '{print $3-$2}' peaks/sample_peaks.narrowPeak | sort -n | awk 'NR==int(NR/2)')"

# 生成bigWig用于可视化
bamCoverage \
  -b aligned/sample_final.bam \
  -o tracks/sample.bw \
  --normalizeUsing RPGC \
  --effectiveGenomeSize 2913022398 \
  --binSize 10 \
  -p 16

步骤8:差异可及性分析

白话解释:比较不同条件(如处理vs对照、不同细胞类型)之间的染色质开放程度差异。哪些区域变得更开放了?哪些关闭了?这反映了调控程序的改变。

技术细节

差异可及性分析流程: 1. 建立共识peak集(consensus peaks):合并所有样本的peaks,保留在一定比例样本中出现的peaks 2. 计数矩阵:对每个consensus peak区域,计算每个样本的reads数 3. 差异分析:使用DESeq2或edgeR框架进行统计检验

DiffBind是专为ChIP-seq/ATAC-seq差异分析设计的R包: - 自动处理peak合并和计数 - 内置DESeq2和edgeR方法 - 支持多因素实验设计 - 提供MA图、火山图等可视化

最少需要每组2-3个生物学重复。

library(DiffBind)

# 创建DiffBind样本表
samples <- data.frame(
  SampleID = c("Control_1","Control_2","Control_3","Treatment_1","Treatment_2","Treatment_3"),
  Condition = c(rep("Control",3), rep("Treatment",3)),
  bamReads = paste0("aligned/", c("ctrl1","ctrl2","ctrl3","treat1","treat2","treat3"), "_final.bam"),
  Peaks = paste0("peaks/", c("ctrl1","ctrl2","ctrl3","treat1","treat2","treat3"), "_peaks.narrowPeak"),
  PeakCaller = rep("macs", 6)
)

# DiffBind分析
dba_obj <- dba(sampleSheet=samples)
dba_obj <- dba.count(dba_obj, bUseSummarizeOverlaps=TRUE)
dba_obj <- dba.normalize(dba_obj)
dba_obj <- dba.contrast(dba_obj, contrast=c("Condition","Treatment","Control"))
dba_obj <- dba.analyze(dba_obj, method=DBA_DESEQ2)

# 获取差异peaks
diff_peaks <- dba.report(dba_obj, th=0.05, fold=1)
cat("差异peaks数:", length(diff_peaks), "\n")
cat("  开放增加:", sum(diff_peaks$Fold > 0), "\n")
cat("  开放减少:", sum(diff_peaks$Fold < 0), "\n")

# MA图
dba.plotMA(dba_obj)
# 火山图
dba.plotVolcano(dba_obj)

# 保存差异peaks
export(diff_peaks, "results/differential_peaks.bed")

步骤9:转录因子足迹分析

白话解释:当转录因子(TF)结合在DNA上时,它会保护其结合位点免受Tn5的切割。因此在TF结合位点中心会看到一个ATAC-seq信号的"凹陷"——称为"足迹"(footprint)。检测这些足迹可以推断哪些TF在特定条件下活跃。

技术细节

足迹分析工具: - TOBIAS(最推荐):校正Tn5序列偏好,比较不同条件间的footprint差异 - HINT-ATAC:使用HMM检测footprint - pyDNase/Wellington:经典的DNase-seq footprint方法,也可用于ATAC-seq

TOBIAS的流程: 1. Tn5偏好校正(ATACorrect):消除Tn5的序列切割偏好 2. 足迹评分(ScoreBigwig):为每个motif位点计算footprint分数 3. 差异足迹(BINDetect):比较条件间的TF活性差异

Tn5偏好校正非常重要:Tn5转座酶对特定DNA序列有偏好(不完全随机),如果不校正,会产生假足迹或掩盖真足迹。

# TOBIAS流程
# 1. Tn5偏好校正
TOBIAS ATACorrect \
  --bam aligned/sample_final.bam \
  --genome genome.fa \
  --peaks peaks/sample_peaks.narrowPeak \
  --outdir tobias_output/ \
  --cores 16

# 2. 足迹评分
TOBIAS ScoreBigwig \
  --signal tobias_output/sample_final_corrected.bw \
  --regions peaks/sample_peaks.narrowPeak \
  --output tobias_output/sample_footprints.bw \
  --cores 16

# 3. TF结合检测(差异比较)
TOBIAS BINDetect \
  --motifs JASPAR2024_CORE_vertebrates.meme \
  --signals treatment_footprints.bw control_footprints.bw \
  --genome genome.fa \
  --peaks consensus_peaks.bed \
  --outdir tobias_output/bindetect \
  --cores 16 \
  --cond_names Treatment Control

步骤10:Motif富集分析

白话解释:分析peak区域中富集的DNA序列模式(motif),推断哪些转录因子可能在这些开放染色质区域中结合。这是连接表观基因组数据和转录调控网络的关键步骤。

技术细节

HOMER是ATAC-seq motif分析最常用的工具: - findMotifsGenome.pl:从peak序列中从头发现和数据库匹配motif - 自动生成背景序列(GC%和长度匹配) - 同时做de novo motif发现和已知motif富集 - 输出包含html报告,非常直观

关键考虑: - 背景选择:使用GC%匹配的随机基因组区域作为背景;也可以用所有peaks作为背景分析子集peaks中的富集(如差异peaks vs 所有peaks) - Peak大小:通常使用peak summit±150bp的区域(富集更集中) - 去除重复序列:重复区域中的motif不代表TF结合

MEME-ChIP是另一个选择,包含MEME(de novo)和AME(已知motif富集)。

# HOMER motif分析
# 安装HOMER后需要下载motif数据库
# perl configureHomer.pl -install hg38

findMotifsGenome.pl \
  peaks/sample_summits.bed \
  hg38 \
  motif_results/ \
  -size 200 \
  -mask \
  -p 16

# 对差异peaks分别分析
# 开放增加的peaks
findMotifsGenome.pl \
  results/peaks_gained.bed \
  hg38 \
  motif_gained/ \
  -size 200 -mask -p 16

# 开放减少的peaks
findMotifsGenome.pl \
  results/peaks_lost.bed \
  hg38 \
  motif_lost/ \
  -size 200 -mask -p 16

# MEME-ChIP(替代方案)
# 先提取peak序列
bedtools getfasta -fi genome.fa -bed peaks/sample_summits_200bp.bed > peak_seqs.fa
meme-chip -meme-maxw 20 -meme-nmotifs 10 peak_seqs.fa -o meme_output/

3. 实战命令/代码(完整流程)

#!/bin/bash
# ====================================================
# ATAC-seq完整分析流程
# ====================================================

set -euo pipefail

SAMPLE="sample1"
THREADS=16
GENOME="ref/hg38.fa"
BT2_INDEX="ref/hg38_bt2"
BLACKLIST="ref/hg38_blacklist_v2.bed"
GENOME_SIZE="2913022398"  # hg38 effective genome size

R1="raw/${SAMPLE}_R1.fastq.gz"
R2="raw/${SAMPLE}_R2.fastq.gz"
OUTDIR="results/${SAMPLE}"

mkdir -p ${OUTDIR}/{qc,trimmed,aligned,peaks,tracks,motifs}

# ==== Step 1: 质控 ====
echo "[Step 1] 质控与接头去除..."
trim_galore --paired --nextera --quality 20 --length 20 \
  --cores 4 --fastqc \
  ${R1} ${R2} \
  -o ${OUTDIR}/trimmed/

# ==== Step 2: 比对 ====
echo "[Step 2] Bowtie2比对..."
bowtie2 -x ${BT2_INDEX} \
  -1 ${OUTDIR}/trimmed/${SAMPLE}_R1_val_1.fq.gz \
  -2 ${OUTDIR}/trimmed/${SAMPLE}_R2_val_2.fq.gz \
  --very-sensitive -X 2000 \
  --no-mixed --no-discordant \
  --threads ${THREADS} \
  2> ${OUTDIR}/qc/bowtie2_stats.txt \
  | samtools sort -@ 8 -o ${OUTDIR}/aligned/raw.bam

samtools index ${OUTDIR}/aligned/raw.bam

# ==== Step 3: 去重和过滤 ====
echo "[Step 3] 去重和过滤..."
picard MarkDuplicates \
  I=${OUTDIR}/aligned/raw.bam \
  O=${OUTDIR}/aligned/dedup.bam \
  M=${OUTDIR}/qc/dup_metrics.txt \
  REMOVE_DUPLICATES=true

samtools view -@ 8 -b -f 2 -F 1804 -q 30 \
  ${OUTDIR}/aligned/dedup.bam \
  > ${OUTDIR}/aligned/filtered.bam

# ==== Step 4: 去MT和黑名单 ====
echo "[Step 4] 去除线粒体和黑名单..."
# 计算MT比例
MT_PCT=$(samtools idxstats ${OUTDIR}/aligned/filtered.bam | \
  awk '{if($1=="chrM") mt=$3; total+=$3} END{printf "%.1f", mt/total*100}')
echo "线粒体reads比例: ${MT_PCT}%"

# 去除chrM
samtools view -@ 8 -b ${OUTDIR}/aligned/filtered.bam \
  $(seq 1 22 | sed 's/^/chr/' | tr '\n' ' ') chrX chrY \
  > ${OUTDIR}/aligned/noMT.bam

# 去除黑名单
bedtools intersect -v -abam ${OUTDIR}/aligned/noMT.bam \
  -b ${BLACKLIST} \
  > ${OUTDIR}/aligned/final.bam

samtools index ${OUTDIR}/aligned/final.bam
FINAL_READS=$(samtools view -c ${OUTDIR}/aligned/final.bam)
echo "最终有效reads: ${FINAL_READS}"

# ==== Step 5: Tn5偏移校正 ====
echo "[Step 5] Tn5偏移校正..."
alignmentSieve \
  --bam ${OUTDIR}/aligned/final.bam \
  --outFile ${OUTDIR}/aligned/shifted.bam \
  --ATACshift \
  --numberOfProcessors ${THREADS}

samtools sort -@ 8 -o ${OUTDIR}/aligned/shifted_sorted.bam ${OUTDIR}/aligned/shifted.bam
samtools index ${OUTDIR}/aligned/shifted_sorted.bam

# ==== Step 6: 片段大小分布 ====
echo "[Step 6] 片段大小分布..."
picard CollectInsertSizeMetrics \
  I=${OUTDIR}/aligned/final.bam \
  O=${OUTDIR}/qc/insert_metrics.txt \
  H=${OUTDIR}/qc/insert_histogram.pdf

# ==== Step 7: Peak calling ====
echo "[Step 7] MACS2 Peak calling..."
macs2 callpeak \
  -t ${OUTDIR}/aligned/final.bam \
  -f BAMPE -g hs \
  -n ${SAMPLE} \
  --outdir ${OUTDIR}/peaks/ \
  --nomodel --keep-dup all \
  -B --SPMR -q 0.01

echo "Peak数: $(wc -l < ${OUTDIR}/peaks/${SAMPLE}_peaks.narrowPeak)"

# ==== Step 8: BigWig生成 ====
echo "[Step 8] 生成信号track..."
bamCoverage \
  -b ${OUTDIR}/aligned/final.bam \
  -o ${OUTDIR}/tracks/${SAMPLE}.bw \
  --normalizeUsing RPGC \
  --effectiveGenomeSize ${GENOME_SIZE} \
  --binSize 10 -p ${THREADS}

# ==== Step 9: Motif分析 ====
echo "[Step 9] Motif富集分析..."
findMotifsGenome.pl \
  ${OUTDIR}/peaks/${SAMPLE}_summits.bed \
  hg38 ${OUTDIR}/motifs/ \
  -size 200 -mask -p ${THREADS}

# ==== QC汇总 ====
echo ""
echo "========== QC Summary =========="
echo "样本: ${SAMPLE}"
echo "比对率: $(grep 'overall' ${OUTDIR}/qc/bowtie2_stats.txt)"
echo "重复率: $(grep 'PERCENT' ${OUTDIR}/qc/dup_metrics.txt | cut -f9)"
echo "线粒体: ${MT_PCT}%"
echo "有效reads: ${FINAL_READS}"
echo "Peak数: $(wc -l < ${OUTDIR}/peaks/${SAMPLE}_peaks.narrowPeak)"
echo "================================"

4. 面试常问点

Q1:ATAC-seq的实验原理是什么?与ChIP-seq、DNase-seq有什么区别?

ATAC-seq使用Tn5转座酶(预装测序接头)切割开放染色质区域并同时整合测序接头,一步完成染色质可及性检测和建库。与ChIP-seq的区别:ChIP-seq检测特定蛋白结合位点(需要抗体),ATAC-seq检测所有开放区域(不需要抗体)。与DNase-seq的区别:原理相似(都检测可及性),但ATAC-seq只需500-50000个细胞(DNase-seq需要百万级),操作更简单快速。

Q2:为什么需要进行Tn5偏移校正(+4/-5 shift)?

Tn5以二聚体形式工作,在DNA双链上产生交错切割(staggered cut),两个切割位点间隔9bp。正链读取的5'端比实际切割点偏移4bp,负链偏移5bp。校正后才能精确定位Tn5的真实插入位点(代表染色质开放位点)。对peak calling影响不大(数百bp的peak),但对TF footprint分析至关重要(需要碱基级精度)。

Q3:ATAC-seq数据质量如何判断?

关键QC指标:(1)片段大小分布应呈核小体周期性(~200bp间隔的峰);(2)线粒体reads比例<20%(理想<5%);(3)TSS周围信号富集(FRiP score);(4)PCR重复率<30%;(5)比对率>80%;(6)最终有效reads≥25M(建议≥50M)。如果看不到核小体周期性或线粒体比例>50%,数据质量可能有问题。

Q4:ATAC-seq的peak calling为什么不需要input/control?

因为ATAC-seq检测的是开放区域vs关闭区域的信号差异,背景就是关闭的染色质区域(Tn5无法切割)。不像ChIP-seq中信号是特异性的(抗体富集),需要input来估计非特异性背景。MACS2使用局部lambda估计基因组背景水平,足以区分真实的开放区域。但在某些特殊情况下(如比较不同条件),使用genomic DNA input可以改善标准化。

Q5:如何从ATAC-seq数据中推断核小体定位?

利用片段大小信息:(1)短片段(<150bp)代表无核小体区域(NFR),提取这些reads可以精确定位开放区域中心;(2)单核小体片段(150-300bp)的中心对应核小体位置;(3)NucleoATAC等专门工具从ATAC-seq信号解卷积出核小体定位。HMMRATAC也能同时输出NFR和核小体位置。

Q6:差异可及性分析和差异基因表达分析的方法论有什么异同?

相同:都使用计数数据+负二项分布模型(DESeq2/edgeR框架)。不同:(1)ATAC-seq中"特征"是peak区域而非基因;(2)需要先建立consensus peak集合;(3)标准化方法可能不同(ATAC-seq常用library size或FRiP标准化);(4)ATAC-seq重复间变异通常大于RNA-seq(建议≥3个重复)。DiffBind包封装了这些差异。


5. 易错/易混淆点

  1. 使用错误的接头序列进行修剪:ATAC-seq使用Nextera接头(不是标准TruSeq接头)。如果用TruSeq接头参数,会遗漏大量接头污染,影响后续比对。

  2. 忽略线粒体reads:不去除线粒体reads会浪费大量有效测序深度,且线粒体区域在peak calling中可能产生假阳性。务必检查并报告MT比例。

  3. Peak calling时使用ChIP-seq的默认参数:MACS2默认参数是为ChIP-seq设计的。ATAC-seq必须使用-f BAMPE --nomodel(paired-end模式且不建模fragment size)。使用默认参数会产生大量错误的peak。

  4. 混淆"开放染色质"和"TF结合":ATAC-seq peak代表染色质可及的区域,不一定意味着有TF在结合。同样,不是所有TF结合都能被ATAC-seq检测到(如果结合在已经开放的大区域中间)。

  5. 生物学重复不足:ATAC-seq的技术变异较大(特别是单细胞水平的变异),差异分析至少需要3个生物学重复。2个重复的统计功效很低。

  6. 不做ENCODE黑名单过滤:黑名单区域在几乎所有ATAC-seq/ChIP-seq实验中都产生信号,如果不过滤会产生大量假阳性peaks(通常位于着丝粒、端粒、卫星DNA区域)。

  7. 对TF footprint分析不做Tn5偏好校正:Tn5转座酶对DNA序列有偏好(不完全随机切割)。如果不校正这个偏好,某些DNA序列的"凹陷"可能只是Tn5偏好的artifact而非真正的TF footprint。TOBIAS的ATACorrect步骤解决这个问题。


6. 补充知识

单细胞ATAC-seq(scATAC-seq)

  • 10x Genomics scATAC-seq:最主流的商业平台
  • 分析工具:ArchR、Signac、SnapATAC2
  • 挑战:极度稀疏(每个细胞仅捕获~10,000个片段)
  • 应用:识别细胞类型特异的调控程序、推断基因调控网络

CUT&Tag作为替代/互补

  • CUT&Tag可以用于检测特定组蛋白修饰(H3K4me3、H3K27ac等)
  • 比ChIP-seq需要更少的细胞,与ATAC-seq互补使用
  • CUT&RUN/CUT&Tag的分析流程与ATAC-seq/ChIP-seq相似

推荐资源

  • ENCODE ATAC-seq pipeline: https://www.encodeproject.org/atac-seq/
  • nf-core/atacseq: https://nf-co.re/atacseq — Nextflow自动化流程
  • TOBIAS: https://github.com/loosolab/TOBIAS
  • DiffBind: https://bioconductor.org/packages/DiffBind/
  • HOMER: http://homer.ucsd.edu/homer/
  • ATACseqQC: https://bioconductor.org/packages/ATACseqQC/
  • 原始论文: Buenrostro et al. (2013) "Transposition of native chromatin for fast and sensitive epigenomic profiling" Nature Methods