跳转至

CUT&Tag 表观组学分析

一句话概述

CUT&Tag 是一种低成本、低细胞量的表观组学技术,利用 Protein A-Tn5 融合蛋白在目标蛋白结合位点处原位切割 DNA 并添加测序接头,信噪比远优于 ChIP-seq。


核心知识点表格

知识点说明
CUT&TagCleavage Under Targets and Tagmentation,2019年 Henikoff 实验室发明
CUT&RUN前身技术,用 MNase 代替 Tn5,需要更多步骤
pA-Tn5Protein A 与 Tn5 转座酶的融合蛋白,既能识别抗体又能切割 DNA
低背景CUT&Tag 背景极低(不像 ChIP-seq 有非特异性捕获),是其核心优势
SEACR专为 CUT&Tag/CUT&RUN 设计的峰调用工具
IgG 对照用无关抗体做阴性对照,而非传统的 Input 对照
Spike-in加入已知量的外源 DNA(如果蝇或大肠杆菌)用于标准化
nf-core/cutandrunNextflow 标准化分析流程
stringent/relaxedSEACR 的两种模式:严格模式更保守,宽松模式更灵敏
细胞量最少只需 100-1000 个细胞

白话解释原理

想象一下: ChIP-seq 像是用渔网在大海里捞鱼,捞上来一大堆东西(背景噪音高)。

CUT&Tag 更像是精确制导: 1. 让抗体找到目标蛋白(像GPS定位) 2. pA-Tn5 融合蛋白沿着抗体找过去(像精确制导导弹) 3. 在目标位置精准切割 DNA 并加上测序接头(手术式打击) 4. 只有被切下来的 DNA 片段才会被测序

因为切割是在原位发生的,没有被抗体拉下来的非特异性 DNA,所以背景噪音极低,只需很少的测序深度就能得到好结果。


各步骤详解

第一步:数据预处理

# 1. 质量控制
fastqc sample_R1.fastq.gz sample_R2.fastq.gz -o qc/  # FastQC质控

# 2. 去接头
trim_galore \
    --paired \                        # 双端模式
    --nextera \                       # Nextera接头(Tn5使用Nextera接头)
    --quality 20 \                    # Q20质量过滤
    --length 20 \                     # 最短20bp
    sample_R1.fastq.gz \              # R1
    sample_R2.fastq.gz                # R2

# 3. 比对(Bowtie2)
bowtie2 \
    -x /data/genome/hg38_index \      # 参考基因组
    -1 sample_R1_val_1.fq.gz \        # 修剪后R1
    -2 sample_R2_val_2.fq.gz \        # 修剪后R2
    --very-sensitive \                 # 高灵敏度
    --maxins 700 \                     # 最大片段长度700bp
    --no-mixed \                       # 不允许单端比对
    --no-discordant \                  # 不允许不一致比对
    --dovetail \                       # 允许dovetail配对
    -p 8 \                             # 8线程
    -S sample.sam                      # 输出SAM

# 4. Spike-in 比对(如果有果蝇spike-in)
bowtie2 \
    -x /data/genome/dm6_index \       # 果蝇基因组索引
    -1 sample_R1_val_1.fq.gz \        # 同样的reads
    -2 sample_R2_val_2.fq.gz \        # 同样的reads
    --very-sensitive \                 # 高灵敏度
    --maxins 700 \                     # 最大片段长度
    --no-mixed --no-discordant \       # 配对过滤
    -p 8 \                             # 线程
    -S sample_spikein.sam              # 输出

# 计算 spike-in 标准化因子
spikein_reads=$(samtools view -c -F 4 sample_spikein.bam)  # 计算spike-in reads数
scale_factor=$(echo "scale=6; 1 / $spikein_reads * 10000" | bc)  # 计算缩放因子
echo "Spike-in 标准化因子: $scale_factor"

# 5. 后处理
samtools sort -@ 8 -o sample.sorted.bam sample.sam  # 排序
samtools index sample.sorted.bam                      # 建索引

# 去重(CUT&Tag重复率通常很低,但仍建议去重)
picard MarkDuplicates \
    I=sample.sorted.bam \             # 输入
    O=sample.dedup.bam \              # 输出
    M=dup_metrics.txt \               # 重复统计
    REMOVE_DUPLICATES=true            # 移除重复

# 过滤低质量比对
samtools view -b -f 2 -F 1804 -q 30 \
    sample.dedup.bam > sample.clean.bam  # 只保留高质量配对

samtools index sample.clean.bam  # 建索引

第二步:生成 bedGraph 信号文件

# SEACR 需要 bedGraph 格式输入
# 1. BAM 转 bedGraph
bedtools genomecov \
    -bg \                              # bedGraph格式
    -pc \                              # 使用片段(而非reads)
    -ibam sample.clean.bam \           # 输入BAM
    > sample.bedGraph                  # 输出bedGraph

# 如果需要 spike-in 标准化
bedtools genomecov \
    -bg \                              # bedGraph格式
    -pc \                              # 片段模式
    -scale $scale_factor \             # 应用spike-in缩放因子
    -ibam sample.clean.bam \           # 输入BAM
    > sample.normalized.bedGraph       # 标准化后的bedGraph

第三步:峰调用(SEACR)

白话解释: SEACR 是专门为 CUT&Tag/CUT&RUN 的超低背景数据设计的峰调用工具。

# 安装 SEACR
# git clone https://github.com/FredHutch/SEACR.git
# 或在线: https://seacr.fredhutch.org/

# === 方法1: 有 IgG 对照 ===
bash SEACR_1.3.sh \
    sample.bedGraph \              # 目标样本bedGraph
    igg_control.bedGraph \         # IgG对照bedGraph
    norm \                          # 标准化对照到目标
    stringent \                     # 严格模式(推荐首选)
    sample_peaks                    # 输出前缀

# === 方法2: 无对照(数值阈值) ===
bash SEACR_1.3.sh \
    sample.bedGraph \              # 目标样本bedGraph
    0.01 \                          # 取top 1%的峰
    non \                           # 不标准化
    stringent \                     # 严格模式
    sample_peaks_nocontrol          # 输出前缀

# SEACR 输出格式(6列BED):
# chr  start  end  total_signal  max_signal  max_signal_region
# 第6列是峰内信号最强区域的坐标

# === 也可以用 MACS2 调峰(适合尖锐信号如 H3K4me3) ===
macs2 callpeak \
    -t sample.clean.bam \          # 目标BAM
    -c igg_control.clean.bam \     # IgG对照BAM
    -f BAMPE \                      # 双端格式
    -g hs \                         # 人类基因组
    -n sample_macs2 \               # 前缀
    --keep-dup all \                # 保留所有(已去重)
    -q 0.05                         # FDR阈值

# === 选择建议 ===
# H3K4me3(尖锐峰): MACS2 或 SEACR stringent
# H3K27me3(宽峰): SEACR relaxed
# H3K27ac(中等宽度): SEACR stringent 或 MACS2

第四步:使用 nf-core/cutandrun 流程(推荐)

白话解释: nf-core 提供了标准化的 CUT&Tag/CUT&RUN 全自动分析流程。

# 安装 Nextflow
curl -s https://get.nextflow.io | bash  # 安装Nextflow

# 运行 nf-core/cutandrun 流程
nextflow run nf-core/cutandrun \
    -profile docker \                    # 使用Docker容器
    --input samplesheet.csv \            # 样本信息表
    --genome GRCh38 \                    # 参考基因组
    --peakcaller 'seacr,MACS2' \         # 同时用两种峰调用工具
    --outdir results/                    # 输出目录

# 样本信息表格式 (samplesheet.csv):
# group,replicate,fastq_1,fastq_2,control_group
# H3K27me3,1,h3k27me3_r1_R1.fq.gz,h3k27me3_r1_R2.fq.gz,IgG
# H3K27me3,2,h3k27me3_r2_R1.fq.gz,h3k27me3_r2_R2.fq.gz,IgG
# IgG,1,igg_r1_R1.fq.gz,igg_r1_R2.fq.gz,

第五步:可视化和下游分析

# 1. 生成 bigWig 信号轨迹
bamCoverage \
    -b sample.clean.bam \              # 输入BAM
    -o sample.bw \                      # 输出bigWig
    --normalizeUsing RPKM \             # RPKM标准化
    --binSize 10 \                      # 10bp分辨率
    --extendReads                       # 延伸到片段长度

# 2. 热图可视化
# 提取 SEACR 峰的中心点
awk 'OFS="\t" {split($6,a,":"); split(a[2],b,"-"); \
    mid=int((b[1]+b[2])/2); \
    print a[1], mid-1, mid}' \
    sample_peaks.stringent.bed > peak_centers.bed  # 峰中心坐标

# 用 deeptools 绘制热图
computeMatrix reference-point \
    -S sample.bw igg.bw \              # ChIP和IgG信号
    -R peak_centers.bed \              # 峰中心
    --referencePoint center \           # 以中心对齐
    -a 3000 -b 3000 \                  # 上下游各3kb
    -o matrix.gz                        # 输出矩阵

plotHeatmap \
    -m matrix.gz \                      # 输入矩阵
    -o heatmap.pdf \                    # 输出图片
    --colorMap Blues \                  # 蓝色系
    --heatmapHeight 10                  # 热图高度

常见报错与解决

报错原因解决方案
SEACR: no peaks found信号太弱或阈值太严尝试 relaxed 模式或数值阈值 0.05
Very few reads (<1M)CUT&Tag需要的测序深度本来就低3-5M reads 通常就够,不是bug
High duplicate rate文库复杂度低可能起始细胞太少,检查建库质量
Spike-in reads = 0spike-in DNA添加不成功检查spike-in是否正确添加,或基因组索引是否正确
Broad signal not calledSEACR stringent 对宽信号不敏感使用 relaxed 模式或 MACS2 --broad
bedGraph format errorbedGraph 列格式不对确保4列: chr, start, end, value

速查表

┌──────────────────────────────────────────────────────────┐
│              CUT&Tag / CUT&RUN 分析速查                   │
├──────────────────────────────────────────────────────────┤
│ 技术对比:                                                 │
│   CUT&Tag: pA-Tn5切割, 更简单, 更少细胞                  │
│   CUT&RUN: pA-MNase切割, 分辨率略高                      │
│   ChIP-seq: 抗体沉淀, 背景高, 需大量细胞                 │
│                                                          │
│ 峰调用工具选择:                                           │
│   SEACR — 专为低背景数据设计(首选)                     │
│   MACS2 — 尖锐峰也适用                                  │
│   SEACR stringent — 保守,适合TF/H3K4me3                 │
│   SEACR relaxed — 宽松,适合H3K27me3                     │
│                                                          │
│ 关键参数:                                                 │
│   测序深度: 3-5M reads (通常足够)                        │
│   对照: IgG (非传统Input)                                │
│   Spike-in: 果蝇/大肠杆菌 DNA                           │
│   接头: Nextera (Tn5)                                    │
│                                                          │
│ 标准化:                                                   │
│   有spike-in → spike-in标准化                            │
│   无spike-in → RPKM 或 reads-in-peaks 标准化            │
│                                                          │
│ 自动化流程: nf-core/cutandrun                            │
└──────────────────────────────────────────────────────────┘

面试高频问题

  1. CUT&Tag 相比 ChIP-seq 有哪些优势? 答:(1) 细胞需求极少(100-1000个 vs ChIP-seq 的百万级);(2) 背景极低,信噪比高,只需 3-5M reads 就够(ChIP-seq 通常需要 30-50M);(3) 操作简单快速,不需要超声打碎 DNA;(4) 不依赖甲醛交联(减少假阳性);(5) 成本低。局限:抗体仍是关键、对某些靶标效果不如 ChIP-seq。

  2. 为什么 CUT&Tag 数据不能直接用 ChIP-seq 的分析工具? 答:CUT&Tag 的背景极低(大量区域 read count = 0),传统的泊松/负二项分布模型(如 MACS2)在估计背景时会被这些零值干扰。SEACR 用经验分布而非参数模型来确定阈值,更适合这种稀疏数据。不过 MACS2 在处理尖锐峰(如 H3K4me3)时仍然可用。

  3. SEACR 的 stringent 和 relaxed 模式有什么区别? 答:两者的区别在于信号阈值的确定方式。SEACR 先计算所有信号块的总信号量分布曲线——stringent 模式取曲线的"拐点"(peak of the curve)作为阈值,更保守;relaxed 模式取"膝盖点"(knee of the curve)作为阈值,更宽松。建议先用 stringent,如果峰太少再用 relaxed;对于宽信号(如 H3K27me3)直接用 relaxed。