文章目录
引言
之前介绍了pacbio的甲基化基础分析流程,在完成了PacBio甲基化数据的自动化分析流程后,如何对结果进行统计和可视化,是科研工作中不可或缺的一环。高质量的图表不仅能帮助我们直观理解数据,还能为论文和报告增色不少。本文将以Snakemake流程输出的典型结果为例,详细介绍甲基化分析中的常见统计方法和可视化思路,并给出R/Python代码示例。
1. 甲基化分析结果文件简介
在前文的Snakemake流程中,主要输出了以下几类与统计和可视化相关的文件:
*.significant.bed.xls
:高可信度甲基化位点表motifs.csv
:鉴定出的甲基化修饰基序*.basemods.gff
:GFF格式的修饰注释*.kinetics.align.bam
:比对BAM文件(可用于IGV可视化)*.pdf
/*.png
:全基因组覆盖度分布图
2. 甲基化位点统计分析
2.1 统计不同类型修饰的数量和分布
目标:统计全基因组范围内各类甲基化修饰(如m6A、m4C)的数量、分布及其在不同染色体上的分布。
示例R代码:统计m6A/m4C位点数
*.significant.bed.xls 文件格式示例
该文件为制表符分隔文本,首行为表头,常见字段如下:
#seq_name pos_left pos depth strand type fraction
chr1 12345 12346 25 + m6A 0.85
chr1 23456 23457 18 - m4C 0.67
chr2 34567 34568 30 + m6A 0.92
...
seq_name:染色体或contig名称
pos_left:起始位置(0-based)
pos:终止位置(1-based)
depth:该位点的测序深度
strand:链信息(+/-)
type:修饰类型(如m6A、m4C)
fraction:甲基化比例(0~1)
library(data.table)
bed <- fread("sample1.basemods.significant.bed.xls", skip=1)
table(bed$type)
# 输出每种修饰类型的数量
可视化:不同修饰类型的柱状图
library(ggplot2)
ggplot(bed, aes(x=type, fill=type)) +
geom_bar() +
theme_minimal() +
labs(title="不同类型甲基化修饰位点数", x="修饰类型", y="位点数")
2.2 甲基化比例分布
目标:展示所有显著甲基化位点的甲基化比例(fraction)分布,判断整体修饰水平。
ggplot(bed, aes(x=fraction)) +
geom_histogram(binwidth=0.05, fill="#69b3a2", color="black") +
theme_minimal() +
labs(title="甲基化比例分布", x="甲基化比例", y="位点数")
2.3 染色体/基因组分布
目标:统计每条染色体上的甲基化位点数,或绘制基因组分布热图。
motif,score,modification,count
GATC,45.2,m6A,1200
CCWGG,38.7,m4C,800
...
motif:基序序列
score:motif得分(越高越可信)
modification:修饰类型
count:该motif在全基因组出现的次数
chr_stat <- as.data.frame(table(bed$seq_name))
colnames(chr_stat) <- c("Chr", "Count")
ggplot(chr_stat, aes(x=Chr, y=Count)) +
geom_bar(stat="identity", fill="#4682b4") +
theme_minimal() +
labs(title="各染色体甲基化位点数", x="染色体", y="位点数")
3. 基序(Motif)分析与可视化
3.1 Motif统计
motifs.csv
文件记录了每种修饰基序的序列、数量、分数等信息。
统计不同motif的出现频次
motif <- fread("motifs.csv")
ggplot(motif, aes(x=reorder(motif, -score), y=score)) +
geom_bar(stat="identity", fill="#ff7f0e") +
theme_minimal() +
labs(title="甲基化修饰基序得分", x="Motif", y="Score") +
coord_flip()
3.2 motif分布热图(高级)
可结合基因注释,统计motif在不同功能区(如启动子、外显子、内含子)中的分布。
4. 覆盖度(测序深度)统计与可视化
4.1 全基因组覆盖度分布
*.100000bpbin_depth.csv
文件格式示例
Chr,Position,Depth
chr1,0,28.5
chr1,100000,30.2
chr1,200000,27.8
chr2,0,25.1
...
Chr:染色体或contig名称
Position:窗口起始位置(0-based,单位bp)
Depth:该窗口内的平均测序深度
Snakemake流程中已自动生成 *.pdf
/*.png
覆盖度分布图,通常横轴为基因组位置,纵轴为测序深度。
R脚本核心思路 ggplot2
library(ggplot2)
depth <- read.csv("sample1.100000bpbin_depth.csv")
ggplot(depth, aes(x=Position, y=Depth)) +
geom_line(color="#2c7fb8") +
theme_minimal() +
labs(title="全基因组测序深度分布", x="基因组位置", y="深度")
4.2 局部区域深度可视化
可选:针对感兴趣的基因或区域,绘制局部深度分布,辅助判断甲基化检测的可靠性。
5. IGV可视化甲基化修饰
将 *.basemods.gff
和 *.kinetics.align.bam
文件加载到IGV(Integrative Genomics Viewer)中,可以直观查看单个reads的甲基化修饰情况。
步骤:
- 打开IGV,选择对应的参考基因组。
- 加载BAM文件(及其索引)。
- 加载GFF文件,选择“Custom Tracks”。
- 浏览目标基因或区域,观察修饰分布。
6. 进阶分析建议
- 差异甲基化分析:多样本/多条件下,比较不同组间的甲基化水平差异。
- 与基因表达关联:结合RNA-seq数据,分析甲基化与基因表达的关系。
- 功能富集分析:对高甲基化区域附近的基因做GO/KEGG富集。
总结
甲基化分析不仅仅是流程跑通,更重要的是对结果的深入挖掘和可视化。通过本文介绍的统计与可视化方法,您可以高效地展示PacBio甲基化数据的生物学意义,为后续的科研工作打下坚实基础。
如需完整R脚本或有其他分析需求,欢迎留言交流!