之前介绍了pacbio的甲基化基础分析流程,在完成了PacBio甲基化数据的自动化分析流程后,如何对结果进行统计和可视化,是科研工作中不可或缺的一环。高质量的图表不仅能帮助我们直观理解数据,还能为论文和报告增色不少。本文将以Snakemake流程输出的典型结果为例,详细介绍甲基化分析中的常见统计方法和可视化思路,并给出R/Python代码示例。
在前文的Snakemake流程中,主要输出了以下几类与统计和可视化相关的文件:
*.significant.bed.xls
:高可信度甲基化位点表motifs.csv
:鉴定出的甲基化修饰基序*.basemods.gff
:GFF格式的修饰注释*.kinetics.align.bam
:比对BAM文件(可用于IGV可视化)*.pdf
/*.png
:全基因组覆盖度分布图目标:统计全基因组范围内各类甲基化修饰(如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="位点数")
目标:展示所有显著甲基化位点的甲基化比例(fraction)分布,判断整体修饰水平。
ggplot(bed, aes(x=fraction)) +
geom_histogram(binwidth=0.05, fill="#69b3a2", color="black") +
theme_minimal() +
labs(title="甲基化比例分布", x="甲基化比例", y="位点数")
目标:统计每条染色体上的甲基化位点数,或绘制基因组分布热图。
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="位点数")
motifs.csv
文件记录了每种修饰基序的序列、数量、分数等信息。
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()
可结合基因注释,统计motif在不同功能区(如启动子、外显子、内含子)中的分布。
*.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
覆盖度分布图,通常横轴为基因组位置,纵轴为测序深度。
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="深度")
可选:针对感兴趣的基因或区域,绘制局部深度分布,辅助判断甲基化检测的可靠性。
将 *.basemods.gff
和 *.kinetics.align.bam
文件加载到IGV(Integrative Genomics Viewer)中,可以直观查看单个reads的甲基化修饰情况。
步骤:
甲基化分析不仅仅是流程跑通,更重要的是对结果的深入挖掘和可视化。通过本文介绍的统计与可视化方法,您可以高效地展示PacBio甲基化数据的生物学意义,为后续的科研工作打下坚实基础。
如需完整R脚本或有其他分析需求,欢迎留言交流!