33. 表观基因组学入门(ChIP-seq / ATAC-seq)¶
一句话说明:表观基因组学研究的是"基因序列不变,但基因表达被调控"的机制——ChIP-seq 找蛋白质在哪里结合 DNA,ATAC-seq 找 DNA 哪里是"打开的"。
目录¶
1. 什么是表观遗传¶
白话解释:基因的"开关"¶
把 DNA 想象成一本食谱书(基因组),书里有几万道菜的做法(基因)。表观遗传就是在这本书上贴便利贴、加书签、用回形针夹住某些页——书的内容(DNA序列)没变,但哪些菜能做、哪些页被翻开,被这些"标记"控制了。
| 概念 | 白话类比 | 分子本质 |
|---|---|---|
| DNA 甲基化 | 在某一页上贴"禁止翻阅"的封条 | 胞嘧啶(C)上加甲基(-CH₃),通常抑制基因表达 |
| 组蛋白修饰 | 把书页卷紧(关)或展开(开) | 组蛋白尾巴上加乙酰基/甲基等化学修饰 |
| 染色质重塑 | 换一个更紧或更松的书架 | ATP 依赖的复合物改变核小体位置 |
| 非编码 RNA | 管理员决定哪些书架对外开放 | lncRNA、miRNA 等参与调控 |
核心要点¶
- 表观遗传修饰可遗传但可逆转(与 DNA 突变不同)
- 同一个人的肝细胞和神经细胞 DNA 序列相同,但表观遗传标记不同 → 不同的基因表达谱 → 不同的细胞功能
- 疾病(癌症、糖尿病、精神疾病)常伴随表观遗传异常
2. DNA 甲基化¶
2.1 原理¶
DNA 甲基化是最经典的表观遗传修饰:甲基转移酶(DNMT)把一个甲基(-CH₃)加到胞嘧啶(C)的第 5 位碳上,生成 5-甲基胞嘧啶(5mC)。
- CpG 位点:甲基化主要发生在 CpG 二核苷酸(C 后面紧跟 G)
- CpG 岛:基因启动子区域常有大量 CpG 聚集,称为 CpG 岛
- 启动子 CpG 岛高甲基化 → 基因沉默(白话:封条贴上了,这页翻不开)
- 基因体甲基化 → 可能与活跃转录相关
2.2 检测方法:Bisulfite-seq(亚硫酸氢盐测序)¶
原理:亚硫酸氢盐(bisulfite)处理 DNA 后: - 未甲基化的 C → 脱氨变成 U → 测序读出 T - 甲基化的 C → 不受影响 → 测序仍读出 C
通过比对处理后的序列与参考基因组,就能在单碱基分辨率下知道每个 C 是否被甲基化。
2.3 分析工具:Bismark¶
Bismark(Babraham Bioinformatics 开发)是 Bisulfite-seq 的主流分析工具,能在一步内完成比对和甲基化调用。
# ========== 第一步:构建 Bisulfite 基因组索引 ==========
# Bismark 会把参考基因组做 C→T 和 G→A 两种转换,分别建索引
bismark_genome_preparation \
--bowtie2 \ # 使用 Bowtie2 作为比对器(也可用 HISAT2)
/path/to/genome/ # 参考基因组所在目录(需含 .fa 文件)
# ========== 第二步:比对 ==========
# 把 bisulfite 处理后的 reads 比对到转换后的基因组
bismark \
--bowtie2 \ # 比对引擎
--genome /path/to/genome/ \ # 基因组索引目录
-1 sample_R1.fq.gz \ # 双端测序 Read1
-2 sample_R2.fq.gz \ # 双端测序 Read2
-o bismark_output/ # 输出目录
# ========== 第三步:去重 ==========
# 去除 PCR 重复(bisulfite-seq 的 PCR 偏差比普通 WGS 更严重)
deduplicate_bismark \
--bam \ # 输入为 BAM 格式
--paired \ # 双端数据
bismark_output/sample.bam # 输入文件
# ========== 第四步:甲基化信息提取 ==========
# 从比对结果中提取每个 CpG/CHG/CHH 位点的甲基化状态
bismark_methylation_extractor \
--paired-end \ # 双端模式
--comprehensive \ # 输出所有 context(CpG/CHG/CHH)
--bedGraph \ # 生成 bedGraph 格式(可用于可视化)
--cytosine_report \ # 生成全基因组 CpG 报告
--genome_folder /path/to/genome/ \ # 基因组目录
-o methylation_output/ \ # 输出目录
sample.deduplicated.bam # 去重后的 BAM
# ========== 第五步:生成报告 ==========
bismark2report # 自动生成 HTML 质控报告
bismark2summary # 多样本汇总报告
下游差异甲基化分析常用 R 包:methylKit、DSS、dmrseq。
3. 组蛋白修饰¶
3.1 基本概念¶
DNA 缠绕在组蛋白八聚体(2×H2A、2×H2B、2×H3、2×H4)上形成核小体——这是染色质的基本单元。组蛋白的 N 端尾巴伸出来,可以被各种酶添加化学修饰。
白话:DNA 是线,组蛋白是线轴。线轴上可以贴不同颜色的标签,每种颜色代表不同的指令(开/关/准备中)。
3.2 重要组蛋白标记速记¶
| 修饰标记 | 全称 | 含义 | 白话 |
|---|---|---|---|
| H3K4me3 | H3 第 4 位赖氨酸三甲基化 | 活跃启动子 | "这个基因正在用!"的绿灯 |
| H3K27ac | H3 第 27 位赖氨酸乙酰化 | 活跃增强子/启动子 | 最强的"开"信号 |
| H3K27me3 | H3 第 27 位赖氨酸三甲基化 | Polycomb 抑制 | "暂时关掉"的红灯(可逆) |
| H3K9me3 | H3 第 9 位赖氨酸三甲基化 | 异染色质/永久沉默 | "永久关闭"的锁 |
| H3K36me3 | H3 第 36 位赖氨酸三甲基化 | 转录延伸区 | "正在被转录的基因体" |
| H3K4me1 | H3 第 4 位赖氨酸单甲基化 | 增强子标记(活跃或准备中) | "这里是个增强子" |
3.3 命名规则解读¶
H3K27ac = H3(组蛋白 H3)+ K27(第 27 位赖氨酸 Lysine)+ ac(乙酰化 acetylation)
修饰类型缩写: - me1/me2/me3 = 单/双/三甲基化(methylation) - ac = 乙酰化(acetylation) - ub = 泛素化(ubiquitination) - ph = 磷酸化(phosphorylation)
3.4 "组蛋白密码"假说¶
不同修饰的组合决定基因的状态: - H3K4me3 + H3K27me3 = 双价(bivalent)标记 → 基因"准备好了但还没开"(常见于干细胞) - H3K4me1 + H3K27ac = 活跃增强子 - H3K4me1 + H3K27me3 = 被抑制的增强子(poised enhancer)
4. ChIP-seq 完整分析流程¶
ChIP-seq(Chromatin Immunoprecipitation followed by Sequencing):用抗体"钓"出与目标蛋白结合的 DNA 片段,然后测序。
4.1 实验原理速记¶
4.2 完整分析流程(命令 + 注释)¶
# ================================================================
# ChIP-seq 分析流水线(以 H3K27ac 为例)
# 需要:处理组 BAM(ChIP)+ 对照组 BAM(Input)
# ================================================================
# ========== 第一步:质控 ==========
fastqc \
-t 8 \ # 8 线程
-o fastqc_results/ \ # 输出目录
chip_sample.fq.gz \ # ChIP 样本
input_control.fq.gz # Input 对照
# 如需,用 Trim Galore 去接头
trim_galore \
--paired \ # 双端模式
--fastqc \ # 修剪后自动跑 FastQC
-o trimmed/ \ # 输出目录
chip_R1.fq.gz chip_R2.fq.gz # 输入文件
# ========== 第二步:比对(Alignment)==========
# 用 Bowtie2 将 reads 比对到参考基因组
bowtie2 \
-p 8 \ # 8 线程
-x /path/to/bowtie2_index \ # 基因组索引前缀
-1 chip_R1_trimmed.fq.gz \ # Read1
-2 chip_R2_trimmed.fq.gz \ # Read2
--very-sensitive \ # 高灵敏度模式
--no-mixed \ # 不允许单端比对
--no-discordant \ # 不允许不一致的配对
-S chip.sam # 输出 SAM 文件
# SAM 转 BAM,排序并建索引
samtools view -@ 8 -bS -q 10 chip.sam | \ # -q 10:过滤低质量比对
samtools sort -@ 8 -o chip_sorted.bam # 按坐标排序
samtools index chip_sorted.bam # 建立索引(.bai 文件)
# 对 Input 对照做同样的比对操作(此处省略,命令相同)
# ========== 第三步:去重(Remove Duplicates)==========
# PCR 重复会造成假阳性,必须去除
# 用 Picard MarkDuplicates(也可用 sambamba)
picard MarkDuplicates \
INPUT=chip_sorted.bam \ # 输入 BAM
OUTPUT=chip_dedup.bam \ # 去重后 BAM
METRICS_FILE=chip_dup_metrics.txt \ # 重复率统计
REMOVE_DUPLICATES=true \ # 直接移除重复 reads
VALIDATION_STRINGENCY=LENIENT # 宽松验证
samtools index chip_dedup.bam # 重新建索引
# ========== 第四步:去除黑名单区域(可选但推荐)==========
# ENCODE 黑名单区域是已知的假信号来源
bedtools intersect \
-v \ # 保留不在黑名单中的 reads
-abam chip_dedup.bam \ # 输入 BAM
-b hg38-blacklist.v2.bed \ # ENCODE 黑名单 BED 文件
> chip_clean.bam # 清理后的 BAM
samtools index chip_clean.bam
# ========== 第五步:Peak Calling(MACS2)==========
# MACS2 是最主流的 peak caller
# 核心思想:找到 ChIP 信号显著高于 Input 背景的区域
# --- 窄峰(narrow peak)模式 ---
# 适用于:转录因子、H3K4me3、H3K27ac
macs2 callpeak \
-t chip_clean.bam \ # 处理组(ChIP)
-c input_clean.bam \ # 对照组(Input)
-f BAMPE \ # 双端 BAM 格式(单端用 BAM)
-g hs \ # 有效基因组大小(hs=人类,mm=小鼠)
-n H3K27ac_sample \ # 输出文件名前缀
--outdir macs2_output/ \ # 输出目录
-q 0.05 \ # FDR 阈值(q-value < 0.05)
--keep-dup all # 保留所有 reads(已手动去重)
# --- 宽峰(broad peak)模式 ---
# 适用于:H3K27me3、H3K36me3、H3K9me3 等覆盖大区域的修饰
macs2 callpeak \
-t chip_clean.bam \
-c input_clean.bam \
-f BAMPE \
-g hs \
-n H3K27me3_sample \
--outdir macs2_broad/ \
--broad \ # 开启宽峰模式
--broad-cutoff 0.1 \ # 宽峰 q-value 阈值
--keep-dup all
# MACS2 输出文件说明:
# _peaks.narrowPeak / _peaks.broadPeak → Peak 坐标(BED 格式)
# _peaks.xls → Peak 详细统计
# _summits.bed → Peak 顶点坐标(仅 narrow 模式)
# _model.r → 片段大小模型(可用 R 绘图)
# ========== 第六步:差异分析(Differential Binding)==========
# 比较两个条件下 peak 的变化,常用 R 包 DiffBind
# 在 R 中运行:
# library(DiffBind)
# samples <- read.csv("sample_sheet.csv") # 样本信息表
# dba_obj <- dba(sampleSheet = samples) # 创建 DBA 对象
# dba_obj <- dba.count(dba_obj) # 计数
# dba_obj <- dba.contrast(dba_obj) # 设置对比
# dba_obj <- dba.analyze(dba_obj) # 差异分析(默认用 DESeq2)
# dba.report(dba_obj) # 输出差异 peak
# ========== 第七步:Peak 注释 ==========
# 用 HOMER 的 annotatePeaks.pl 或 R 包 ChIPseeker
# HOMER 方式:
annotatePeaks.pl \
macs2_output/H3K27ac_sample_peaks.narrowPeak \ # Peak 文件
hg38 \ # 基因组版本
-go go_output/ \ # GO 富集分析输出
-annStats ann_stats.txt \ # 注释统计
> annotated_peaks.txt # 注释结果
# ========== 第八步:Motif 分析 ==========
# 在 peak 区域寻找富集的转录因子结合基序
# HOMER findMotifsGenome.pl
findMotifsGenome.pl \
macs2_output/H3K27ac_sample_summits.bed \ # Peak 顶点(±100bp 效果更好)
hg38 \ # 基因组版本
motif_output/ \ # 输出目录
-size 200 \ # 取 summit 两侧各 100bp
-mask \ # 屏蔽重复序列
-p 8 # 8 线程
# 也可以用 MEME-ChIP 做 de novo motif 发现:
# 先提取 peak 序列
bedtools getfasta \
-fi hg38.fa \ # 参考基因组
-bed peaks_top500.bed \ # 取前 500 个最显著 peak
-fo peaks_top500.fa # 输出 FASTA
# 然后上传到 MEME-ChIP 在线服务器分析
5. ATAC-seq 分析流程¶
5.1 ATAC-seq 是什么¶
ATAC-seq(Assay for Transposase-Accessible Chromatin using Sequencing):用 Tn5 转座酶"切"开染色质中"松开的"区域,然后测序。
白话:ChIP-seq 是用鱼钩(抗体)去"钓"特定的鱼(蛋白质),看鱼在哪里;ATAC-seq 是往池塘里扔炸弹(Tn5 转座酶),只有水面开放的地方(开放染色质)才会被炸到——找到哪些地方是"开放"的。
5.2 ChIP-seq vs ATAC-seq 对比¶
| 对比维度 | ChIP-seq | ATAC-seq |
|---|---|---|
| 目的 | 找特定蛋白结合位点或特定修饰位置 | 找所有开放染色质区域 |
| 需要抗体? | 需要(成本高,质量关键) | 不需要 |
| 细胞量 | 通常需要 10⁶-10⁷ 个细胞 | 最少 500-50,000 个细胞 |
| 实验时间 | 3-5 天 | 几小时 |
| 对照 | 必须有 Input 对照 | 通常不需要 |
| Peak 类型 | 取决于目标(窄峰/宽峰) | 以窄峰为主 |
| 特有处理 | 无 | 需去除线粒体 reads、处理 Tn5 偏移 |
| 信息量 | 单一蛋白/修饰的结合图谱 | 全基因组开放状态 + 足迹分析推断 TF 结合 |
5.3 ATAC-seq 分析流程(命令 + 注释)¶
# ================================================================
# ATAC-seq 分析流水线
# 注意:与 ChIP-seq 的主要区别用 [ATAC特有] 标记
# ================================================================
# ========== 第一步:质控 + 去接头 ==========
# 与 ChIP-seq 相同
trim_galore \
--paired \
--fastqc \
--nextera \ # [ATAC特有] ATAC-seq 用 Nextera 接头
-o trimmed/ \
atac_R1.fq.gz atac_R2.fq.gz
# ========== 第二步:比对 ==========
# 与 ChIP-seq 基本相同
bowtie2 \
-p 8 \
-x /path/to/bowtie2_index \
-1 atac_R1_trimmed.fq.gz \
-2 atac_R2_trimmed.fq.gz \
--very-sensitive \
-X 2000 \ # [ATAC特有] 最大插入片段设为 2000bp
--no-mixed \
--no-discordant \
-S atac.sam
# ========== 第三步:过滤 ==========
# 3a. 去除线粒体 reads [ATAC特有]
# ATAC-seq 中线粒体 DNA 占比很高(20%-80%),必须去除
samtools view -@ 8 -bS -q 10 atac.sam | \
samtools sort -@ 8 -o atac_sorted.bam
samtools index atac_sorted.bam
# 去除 chrM(线粒体)上的 reads
samtools idxstats atac_sorted.bam | \
cut -f 1 | grep -v chrM | \
xargs samtools view -b atac_sorted.bam > atac_noMT.bam
samtools index atac_noMT.bam
# 3b. 去重
picard MarkDuplicates \
INPUT=atac_noMT.bam \
OUTPUT=atac_dedup.bam \
METRICS_FILE=atac_dup_metrics.txt \
REMOVE_DUPLICATES=true
samtools index atac_dedup.bam
# 3c. 去除黑名单区域
bedtools intersect -v \
-abam atac_dedup.bam \
-b hg38-blacklist.v2.bed \
> atac_clean.bam
samtools index atac_clean.bam
# ========== 第四步:Tn5 偏移校正 [ATAC特有] ==========
# Tn5 转座酶插入时会造成 9bp 的偏移:
# 正链 reads 向 +4bp 方向移动,负链 reads 向 -5bp 方向移动
# 这在某些下游分析(如足迹分析)中必须校正
# 方法:用 alignmentSieve(deepTools)或手动用 awk 调整
alignmentSieve \
-b atac_clean.bam \
--ATACshift \ # 自动校正 Tn5 偏移
-o atac_shifted.bam
samtools sort -o atac_final.bam atac_shifted.bam
samtools index atac_final.bam
# ========== 第五步:Peak Calling(MACS2)==========
# ATAC-seq 不需要 Input 对照
macs2 callpeak \
-t atac_final.bam \ # 只有处理组
-f BAMPE \ # 双端 BAM
-g hs \ # 有效基因组大小
-n ATAC_sample \ # 输出前缀
--outdir macs2_atac/ \
--nomodel \ # [ATAC特有] 不建模(ATAC 的片段大小分布与 ChIP 不同)
--shift -75 \ # [ATAC特有] 配合 --extsize 使用
--extsize 150 \ # [ATAC特有] 以切割位点为中心,取 150bp 区域
--keep-dup all \
-q 0.05 # FDR 阈值
# 注意:也有文献推荐 ATAC-seq 直接使用 --nomodel --shift -100 --extsize 200
# 或者用 BAMPE 模式时不设 shift/extsize(MACS2 自动用实际片段大小)
# ========== 第六步:下游分析 ==========
# 与 ChIP-seq 类似:Peak 注释、差异分析、Motif 分析
# 额外可做:
# - 核小体位置分析(按片段大小分类:<150bp 为无核小体区域,150-300bp 为单核小体)
# - TF 足迹分析(Footprinting):用 TOBIAS 或 HINT-ATAC
5.4 ATAC-seq 质控要点¶
- 线粒体比例:理想 <20%,高于 50% 说明实验有问题
- TSS 富集:好的 ATAC-seq 数据在转录起始位点附近信号应该明显富集
- 片段大小分布:应呈现核小体周期性模式(~200bp 周期的锯齿状分布)
- FRiP(Fraction of Reads in Peaks):>20% 为好数据
6. 染色质可及性¶
白话解释¶
染色质可及性(Chromatin Accessibility)就是 DNA 被"打开"的程度。
想象 DNA 是一根很长的耳机线,绕在很多线轴(核小体)上。有些地方绕得很紧(封闭染色质),外面的东西碰不到线;有些地方松开了(开放染色质),转录因子等蛋白质可以接触到 DNA,激活基因表达。
- 开放区域:通常是启动子、增强子、绝缘子等调控元件所在
- 封闭区域:基因被沉默,不表达
检测方法对比¶
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| ATAC-seq | Tn5 转座酶切割开放区域 | 细胞量少、速度快、成本低 | Tn5 有序列偏好性 |
| DNase-seq | DNase I 酶切割开放区域 | 经典方法、数据库丰富 | 需大量细胞、技术难度高 |
| FAIRE-seq | 甲醛固定后提取无核小体 DNA | 不需酶 | 信噪比低,已较少使用 |
| MNase-seq | 微球菌核酸酶消化裸露 DNA | 能定位核小体位置 | 酶切偏好性、需大量细胞 |
7. 常用工具汇总¶
7.1 MACS2(Model-based Analysis of ChIP-seq)¶
# 安装
pip install macs2 # 推荐 Python 3.9+
# 或
conda install -c bioconda macs2
# 核心功能
macs2 callpeak # Peak calling(最常用)
macs2 bdgcmp # 比较两个 bedGraph 信号
macs2 bdgdiff # 差异 peak 检测
macs2 filterdup # 过滤重复 reads
macs2 predictd # 预测片段大小(建模)
关键参数速记: - -g:有效基因组大小(hs=2.7e9, mm=1.87e9, ce=9e7, dm=1.2e8) - -q vs -p:-q 是 FDR 校正后的阈值(推荐),-p 是未校正 p-value - --broad:宽峰模式 - --nomodel:不自动建模(ATAC-seq 或已知片段大小时使用) - -f BAMPE:双端 BAM(用实际片段大小而非估算值)
7.2 deepTools¶
deepTools 是一个用于高通量测序数据(ChIP-seq/ATAC-seq/RNA-seq)探索和可视化的 Python 工具套件。
# 安装
conda install -c bioconda deeptools
# 常用命令
# (1) BAM 转 bigWig(用于 IGV 可视化和热图)
bamCoverage \
-b chip_clean.bam \ # 输入 BAM
-o chip.bw \ # 输出 bigWig
--binSize 10 \ # 分辨率(bp)
--normalizeUsing RPKM \ # 标准化方法(也可用 CPM/BPM/RPGC)
--effectiveGenomeSize 2700000000 \ # 有效基因组大小(人类)
-p 8 # 线程数
# (2) 计算基因/Peak 周围信号矩阵
computeMatrix reference-point \
-S chip.bw input.bw \ # 输入 bigWig 信号文件
-R genes.bed \ # 参考区域(基因/peak 坐标)
--referencePoint TSS \ # 以 TSS 为参考点(也可用 TES/center)
-a 3000 -b 3000 \ # TSS 上下游各 3000bp
-o matrix.gz # 输出矩阵
# (3) 绘制热图
plotHeatmap \
-m matrix.gz \ # 输入矩阵
-o heatmap.png \ # 输出图片
--colorMap RdBu_r \ # 配色方案
--whatToShow 'heatmap and colorbar' \
--zMin 0 --zMax 10 # 信号范围
# (4) TSS Profile 图
plotProfile \
-m matrix.gz \
-o profile.png \
--perGroup # 按组绘制
# (5) 样本相关性检查(QC)
multiBamSummary bins \
--bamfiles sample1.bam sample2.bam sample3.bam \
-o results.npz \
-p 8
plotCorrelation \
-in results.npz \
--corMethod spearman \ # Spearman 相关系数
--whatToPlot heatmap \
-o correlation_heatmap.png
# (6) 指纹图(Fingerprint plot,评估 ChIP 富集质量)
plotFingerprint \
-b chip.bam input.bam \
-o fingerprint.png \
--labels ChIP Input
7.3 HOMER(Hypergeometric Optimization of Motif EnRichment)¶
# 安装
conda install -c bioconda homer
# 核心功能
# (1) 创建标签目录(HOMER 的核心数据结构)
makeTagDirectory tag_dir/ chip_clean.bam
# (2) Peak Calling(HOMER 自带的 peak caller)
findPeaks tag_dir/ \
-style factor \ # factor=窄峰, histone=宽峰
-i input_tag_dir/ \ # Input 对照
-o peaks.txt # 输出
# (3) Peak 注释
annotatePeaks.pl peaks.txt hg38 > annotated.txt
# (4) Motif 发现(HOMER 最强功能)
findMotifsGenome.pl peaks.txt hg38 motif_results/ -size 200 -mask
# (5) 差异分析
getDifferentialPeaks peaks1.txt tag_dir1/ tag_dir2/ > diff_peaks.txt
8. 可视化¶
8.1 IGV(Integrative Genomics Viewer)¶
IGV 是最常用的基因组浏览器,可以可视化 BAM、bigWig、BED、VCF 等各种格式。
使用步骤: 1. 下载 IGV(https://igv.org/) 2. 加载参考基因组(如 hg38) 3. 依次拖入文件: - ChIP bigWig(信号轨道) - Input bigWig(对照轨道) - Peak BED 文件(标注 Peak 位置) - 基因注释(RefSeq 等) 4. 导航到感兴趣的基因,截图
截图技巧: - 调整 Y 轴范围使 ChIP 和 Input 使用相同的刻度 - 使用 File → Save Image 保存高分辨率图片
8.2 deepTools 热图(Heatmap)¶
见 7.2 deepTools 中的 computeMatrix + plotHeatmap 命令。
热图展示内容: - X 轴:基因/Peak 周围的位置(如 TSS ± 3kb) - Y 轴:每一行是一个基因/Peak - 颜色:信号强度 - 上方 Profile 图:所有基因/Peak 的平均信号
8.3 其他可视化工具¶
| 工具 | 用途 | 特点 |
|---|---|---|
| pyGenomeTracks | 多轨道基因组可视化 | 命令行出版级图片 |
| UCSC Genome Browser | 在线基因组浏览器 | 公共数据丰富,可自定义 Track |
| Gviz(R 包) | 基因组区域可视化 | 适合在 R 流程中使用 |
| karyoploteR(R 包) | 染色体水平可视化 | 全基因组 Peak 分布 |
| ChIPseeker(R 包) | Peak 注释可视化 | 饼图/柱状图展示 Peak 在基因组的分布 |
9. 面试怎么答¶
Q1:请解释 ChIP-seq 和 ATAC-seq 的区别¶
答题要点: ChIP-seq 是用特异性抗体来"拉下"(immunoprecipitate)与目标蛋白结合的 DNA 片段,然后测序,目的是找到特定蛋白(如转录因子或组蛋白修饰)在基因组上的结合位置。必须有 Input 对照,需要大量细胞,实验周期长。
ATAC-seq 是用 Tn5 转座酶直接切割开放染色质区域,然后测序,目的是在全基因组水平找到所有的开放染色质区域(即染色质可及性)。不需要抗体,细胞量少(500 个即可),几小时就能完成。
简单说:ChIP-seq 回答"某个蛋白在哪里结合",ATAC-seq 回答"哪里的染色质是打开的"。
Q2:MACS2 的 peak calling 原理是什么?¶
答题要点: MACS2 首先通过正负链 reads 的偏移模式(bimodal pattern)估算片段大小 d,然后将所有 reads 向 3' 方向移动 d/2 到最可能的蛋白-DNA 互作位点。接着,在全基因组用滑窗扫描 ChIP 信号,用泊松分布模型计算每个窗口的信号是否显著高于局部背景(local lambda)。局部背景综合考虑了基因组整体背景、1kb 和 10kb 范围的局部信号。最后用 Benjamini-Hochberg 校正 p-value 得到 q-value(FDR),q-value < 阈值的区域即为显著 peak。
宽峰模式下,MACS2 会先调用窄峰,然后把临近的窄峰合并为更大的 broad peak。
Q3:ATAC-seq 数据处理有哪些特殊步骤?¶
答题要点: 三个特殊步骤: 1. 去除线粒体 reads:ATAC-seq 中线粒体 DNA 因无核小体包装而极易被 Tn5 切割,常占总 reads 的 20%-80%,必须过滤。 2. Tn5 偏移校正:Tn5 转座酶插入时造成 9bp 的双链错位(正链+4bp,负链-5bp),在做足迹分析等精细分析时需要校正。 3. 不需要 Input 对照:MACS2 callpeak 时只需处理组,不加
-c参数。且通常使用--nomodel关闭自动建模。另外,质控时要特别关注 TSS 富集度和片段大小的核小体周期分布。
Q4:H3K4me3 和 H3K27me3 分别代表什么?如果它们同时出现在一个区域怎么理解?¶
答题要点: H3K4me3 是活跃启动子的标记,出现在活跃转录基因的 TSS 附近。H3K27me3 是 Polycomb 抑制标记,表示基因被沉默。
如果两者同时出现在同一区域,称为"双价结构域"(bivalent domain),这在胚胎干细胞中最为典型。双价标记使得基因处于"准备好了但暂时沉默"的状态——在分化信号到来时,可以快速激活(丢掉 H3K27me3)或永久沉默(丢掉 H3K4me3)。这被认为是干细胞维持多能性和发育可塑性的重要机制。
Q5:做完 ChIP-seq peak calling 后,你还会做哪些下游分析?¶
答题要点: 1. Peak 注释:用 ChIPseeker 或 HOMER annotatePeaks 确定 peak 落在基因组的什么位置(启动子、内含子、基因间区等),以及最近的基因。 2. Motif 分析:用 HOMER findMotifsGenome 或 MEME-ChIP 在 peak 序列中寻找富集的转录因子结合基序,验证是否钓到了正确的蛋白。 3. 差异结合分析:用 DiffBind 比较不同条件下 peak 的变化。 4. 功能富集分析:对 peak 关联的基因做 GO/KEGG 富集,理解生物学功能。 5. 可视化:用 deepTools 绘制 TSS 热图和 Profile 图;用 IGV 查看代表性位点。 6. 整合分析:结合 RNA-seq 数据看基因表达变化与组蛋白修饰变化的关联。
10. 速查表¶
分析流程对比速查¶
ChIP-seq 流程:
FASTQ → FastQC → Trim → Bowtie2比对 → SAM→BAM排序 → 去重(Picard)
→ 去黑名单 → MACS2 Peak Calling(需Input) → Peak注释 → Motif分析 → 差异分析
ATAC-seq 流程:
FASTQ → FastQC → Trim(Nextera接头) → Bowtie2比对 → SAM→BAM排序
→ 去线粒体reads → 去重(Picard) → 去黑名单 → Tn5偏移校正
→ MACS2 Peak Calling(无Input, --nomodel) → Peak注释 → Motif分析 → 差异分析
Bisulfite-seq 流程:
FASTQ → FastQC → Trim → Bismark比对(转换基因组) → 去重
→ 甲基化提取 → 差异甲基化分析(methylKit/DSS)
组蛋白标记速查¶
| 标记 | 类型 | Peak 形态 | MACS2 模式 |
|---|---|---|---|
| H3K4me3 | 活跃启动子 | 窄峰 | callpeak(默认) |
| H3K27ac | 活跃增强子/启动子 | 窄峰 | callpeak(默认) |
| H3K4me1 | 增强子 | 窄峰 | callpeak(默认) |
| H3K27me3 | Polycomb 抑制 | 宽峰 | --broad |
| H3K9me3 | 异染色质 | 宽峰 | --broad |
| H3K36me3 | 转录延伸 | 宽峰 | --broad |
工具功能速查¶
| 工具 | 主要功能 | 安装方式 |
|---|---|---|
| Bowtie2 | 序列比对 | conda install bowtie2 |
| samtools | BAM 处理 | conda install samtools |
| Picard | 去重 | conda install picard |
| MACS2 | Peak Calling | pip install macs2 |
| deepTools | 信号处理/可视化 | conda install deeptools |
| HOMER | Motif/注释 | conda install homer |
| Bismark | BS-seq 比对 | conda install bismark |
| bedtools | 基因组区间操作 | conda install bedtools |
| DiffBind (R) | 差异结合分析 | BiocManager::install("DiffBind") |
| ChIPseeker (R) | Peak 注释可视化 | BiocManager::install("ChIPseeker") |
| IGV | 基因组可视化 | https://igv.org/ |
MACS2 常用参数速查¶
| 参数 | 说明 | 典型值 |
|---|---|---|
-t | 处理组 BAM | 必填 |
-c | 对照组 BAM | ChIP-seq 必填,ATAC-seq 不需要 |
-f | 文件格式 | BAM(单端)或 BAMPE(双端) |
-g | 有效基因组大小 | hs/mm/ce/dm |
-n | 输出前缀 | 自定义 |
-q | FDR 阈值 | 0.05(默认)或 0.01(严格) |
--broad | 宽峰模式 | 用于 H3K27me3 等 |
--nomodel | 不建模 | ATAC-seq 常用 |
--shift | reads 偏移 | ATAC-seq: -75 或 -100 |
--extsize | 延伸大小 | ATAC-seq: 150 或 200 |
--keep-dup | 重复处理 | all(已手动去重时) |
11. 延伸资源¶
学习教程¶
- HBC Training ChIP-seq 教程:https://hbctraining.github.io/Intro-to-ChIPseq/ (哈佛生信培训,入门首选)
- ENCODE 项目 Pipeline:https://www.encodeproject.org/ (官方标准流程)
- Biostars / SEQanswers:社区问答(搜索具体报错)
关键论文¶
- MACS2 原始论文:Zhang et al., Genome Biology, 2008
- ATAC-seq 原始论文:Buenrostro et al., Nature Methods, 2013
- ENCODE 项目:ENCODE Project Consortium, Nature, 2012
- Roadmap Epigenomics:Roadmap Epigenomics Consortium, Nature, 2015
公共数据库¶
- ENCODE:https://www.encodeproject.org/ (人类和小鼠的大量 ChIP-seq/ATAC-seq 数据)
- Roadmap Epigenomics:https://egg2.wustl.edu/roadmap/ (多组织表观基因组图谱)
- Cistrome DB:http://cistrome.org/ (ChIP-seq/ATAC-seq 数据整合分析平台)
- GEO/SRA:https://www.ncbi.nlm.nih.gov/geo/ (原始测序数据下载)
R/Bioconductor 包推荐¶
DiffBind:差异结合分析ChIPseeker:Peak 注释与可视化methylKit:差异甲基化分析DSS:差异甲基化分析(贝叶斯方法)chromVAR:ATAC-seq 染色质可变性分析Signac:单细胞 ATAC-seq 分析(与 Seurat 集成)
文档信息 - 字数:约 4500 字 - 适用岗位:生信工程师(表观方向)、宏基因组 + 通用生信 - 前置知识:Linux 基础、NGS 测序原理、BAM/BED 文件格式 - 关联知识库:31_变异检测_GATK.md(同为基因组学分析方向)