CMplot & rMVP | 全基因组曼哈顿图和QQ图轻松可视化!

简介: `CMplot`和`rMVP`是R语言中的两个包,用于全基因组关联分析(GWAS)的数据可视化。`CMplot`专注于曼哈顿图和QQ图的绘制,支持多种图表类型,如常见的SNP密度图、环状曼哈顿图、矩阵图、单条染色体图和多重曼哈顿图等。`rMVP`不仅包含了`CMplot`的功能,还支持更复杂的GWAS方法,如线性/混合线性模型和基因组选择算法,优化了内存管理和计算效率,特别适合大规模数据集。此外,它还提供PCA图和柱状图。两者都提供了丰富的参数定制图表。


1.CMplot

1.1 CMplot介绍

CMplot:https://github.com/YinLiLin/CMplot

这是一个做全基因组对SNP可视化神器了,尹立林教授写的R包。主打两个功能,曼哈顿图(Manhattan plots)和QQ图(Quantile-Quantile plots)

  • 曼哈顿图:用于展示 GWAS 分析的结果,其中每个点代表一个单核苷酸多态性(SNP),点的位置表示 SNP 在基因组中的位置,而点的高度则表示该 SNP 与研究性状的关联强度(通常用 -log10(p-value) 表示)。
  • QQ图:用于检查数据的分布是否符合期望的分布(通常是正态分布)。在遗传学研究中,QQ图可以用来检测数据中是否存在过度的分散或聚集,这可能是由群体结构、样本大小或其他因素引起的。

1.2 CMplot-DEMO

安装R包,及加载数据

install.packages("CMplot")
library("CMplot")
# github最新版本
source("https://raw.githubusercontent.com/YinLiLin/CMplot/master/R/CMplot.r")

常见的SNP密度图:

CMplot(pig60K,plot.type="d",bin.size=1e6,chr.den.col=c("#7CC767", "#088247", "black"),file="pdf",file.name="",dpi=300,
       main="illumilla_60K",file.output=TRUE,verbose=TRUE,width=9,height=6)

环状曼哈顿图:

CMplot(pig60K,type="p",plot.type="c",chr.labels=paste("Chr",c(1:18,"X","Y"),sep=""),r=0.4,cir.axis=TRUE,
       outward=FALSE,cir.axis.col="black",cir.chr.h=1.3,chr.den.col="black",file="pdf",
       file.name="",dpi=300,file.output=TRUE,verbose=TRUE,width=10,height=10)

矩阵曼哈顿图:

CMplot(pig60K, plot.type="m", LOG10=TRUE, ylim=NULL, threshold=c(1e-6,1e-4),threshold.lty=c(1,2),
       threshold.lwd=c(1,1), threshold.col=c("black","grey"), amplify=TRUE,bin.size=1e6,
       chr.den.col=c("#7CC767", "#088247", "black"),signal.col=c("#D20A13","#223D6C"),signal.cex=c(1.5,1.5),
       signal.pch=c(19,19),file="jpg",file.name="",dpi=300,file.output=TRUE,verbose=TRUE,
       width=14,height=6)

单条染色体可视化:

CMplot(pig60K[pig60K$Chromosome==13, ], plot.type="m",LOG10=TRUE,col=c("grey60"),highlight=SNPs,
       highlight.col="darkgreen",highlight.cex=1,highlight.pch=19,file="jpg",file.name="", 
       threshold=c(1e-6,1e-4),threshold.lty=c(1,2),threshold.lwd=c(1,2), width=9,height=6,
       threshold.col=c("red","blue"),amplify=FALSE,dpi=300,file.output=TRUE,verbose=TRUE)

标出指定基因/SNP:

SNPs <- pig60K[pig60K[,5] < (0.05 / nrow(pig60K)), 1]
genes <- paste("GENE", 1:length(SNPs), sep="_")
set.seed(666666)
CMplot(pig60K[,c(1:3,5)], plot.type="m",LOG10=TRUE,col=c("grey30","grey60"),highlight=SNPs,
         highlight.col=rep(c("yellow","red"),length=length(SNPs)),highlight.cex=1, highlight.text=genes,      
         highlight.text.col=rep("darkgreen",length(SNPs)),threshold=0.05/nrow(pig60K),threshold.lty=2,   
         amplify=FALSE,file="jpg",file.name="",dpi=300,file.output=TRUE,verbose=TRUE,width=14,height=6)

多重曼哈顿图:

CMplot(pig60K, plot.type="m",multraits=TRUE,threshold=c(1e-6,1e-4),threshold.lty=c(1,2), 
        threshold.lwd=c(1,1), threshold.col=c("black","grey"), amplify=TRUE,bin.size=1e6,
        chr.den.col=c("darkgreen", "yellow", "red"), signal.col=c("red","green"),
        signal.cex=1, file="jpg",file.name="",dpi=300,file.output=TRUE,verbose=TRUE,
        points.alpha=100,legend.ncol=1, legend.pos="left")

QQ图:

CMplot(pig60K,plot.type="q",box=FALSE,file="jpg",file.name="",dpi=300,
    conf.int=TRUE,conf.int.col=NULL,threshold.col="red",threshold.lty=2,
    file.output=TRUE,verbose=TRUE,width=5,height=5)

多组QQ图:

CMplot(pig60K,plot.type="q",col=c("dodgerblue1", "olivedrab3", "darkgoldenrod1"),multraits=TRUE,
        threshold=1e-6,ylab.pos=2,signal.pch=c(19,6,4),signal.cex=1.2,signal.col="red",
        conf.int=TRUE,box=FALSE,axis.cex=1,file="jpg",file.name="",dpi=300,file.output=TRUE,
        verbose=TRUE,ylim=c(0,8),width=5,height=5)

1.3 CMplot参数

  • Pmap:数据框,至少四列。第一列是SNP的名称,第二列是SNP的染色体,第三列是SNP的位置,剩余的列是每个性状的P值(每个性状占据一列)。
  • col:向量或矩阵,如果是向量,则每个圈使用相同的颜色,表示相同染色体使用相同颜色;如果是矩阵,则每行是一个圈(性状),列是用户想要使用的不同颜色,缺失值可以用NA替换。
  • pch:点的类型,与中的"pch"相同。
  • band:染色体之间的间隔,默认为1。
  • cir.band:圈之间的间隔,默认为1。
  • H:每个圈的高度,每个圈代表一个性状,默认为1。
  • ylim:Y轴的范围。
  • cex.axis:X轴数字和标签的大小。
  • plot.type:要绘制的图表类型,可以是"c"、"m"、"q"或"b"。
  • multracks:是否将曼哈顿图绘制在多个轨道上。
  • cex:点的大小。
  • r:圆的半径。
  • xlab:X轴标签。
  • ylab:Y轴标签。
  • xaxs:X轴刻度样式。
  • yaxs:Y轴刻度样式。
  • outward:是否将点从内向外绘制。
  • threshold:显著性水平。
  • threshold.col:阈值水平线的颜色。
  • threshold.lwd:阈值水平线的宽度。
  • threshold.lty:阈值水平线的类型。
  • amplify:是否突出显示显著点。
  • signal.cex:显著点的大小。
  • signal.pch:显著点的形状。
  • signal.col:显著点的颜色。
  • cir.chr:是否绘制染色体边界。
  • cir.chr.h:边界的宽度。
  • cir.chr.col:边界的颜色。
  • chr.labels:圆形曼哈顿图中染色体的标签。
  • cir.legend:是否添加每个圈的图例。
  • cir.legend.cex:图例中数字的大小。
  • cir.legend.col:图例轴的颜色。
  • LOG10:是否将P值转换为log10(P值)。
  • box:是否在曼哈顿图周围绘制边框。
  • conf.int:是否在Q-Q图上绘制置信区间。
  • conf.int.col:置信区间的颜色。
  • plot0:是否绘制染色体编号为0的染色体。
  • file.output:是否输出图表结果。
  • file:输出的文件格式,可以是"jpg"、"pdf"或"tiff"。
  • dpi:.jpg和.tiff文件的像素密度,默认为300。

2.rMVP

2.1 rMVP介绍

Github:https://github.com/xiaolei-lab/rMVP

这也是一个做全基因组可视化的R包,同课题组开发,CMplot被集成进来了,特点是并行和算法优化。

  • rMVP 支持包括常见的单变量线性/混合线性模型(如 MLM、GLM)以及更先进的GWAS方法,,比如 FarmCPU、SUPER等。
  • 高效的内存和计算管理,针对大规模数据集设计,rMVP 优化了内存使用和计算速度,可以有效处理包含数百万个标记的大型基因组数据集。
  • 多种基因组选择算法,提供了包括最佳线性无偏预测(BLUP)、贝叶斯方法等多种基因组选择算法,帮助研究人员评估和选择优良性状。

2.2 rMVP-DEMO

曼哈顿图和QQ图总的来说大同小异,多了个PCA和柱状图,毕竟亮点还是在处理大数据并行。

MVP.Hist(phe=phenotype, file.type="jpg", breakNum=18, dpi=300)

pca <- attach.big.matrix("mvp.pc.desc")[, 1:3]
#pca <- prcomp(t(as.matrix(genotype)))$x[, 1:3]
MVP.PCAplot(PCA=pca, Ncluster=3, class=NULL, col=c("red", "green", "yellow"), file.type="jpg")

2.3 rMVP参数

MVP 包中包含三种模型:广义线性模型(GLM)、混合线性模型(MLM)和 FarmCPU。

  • phe, 表型数据
  • geno, 基因型数据
  • map, 坐标数据
  • K, 关系矩阵
  • CV.GLM, 在 GLM 中添加的协变量
  • CV.MLM, 在 MLM 中添加的协变量
  • CV.FarmCPU, 在 FarmCPU 中添加的协变量
  • nPC.GLM, 在 GLM 中添加的主成分的前几列数目
  • nPC.MLM, 在 MLM 中添加的主成分的前几列数目
  • nPC.FarmCPU, 在 FarmCPU 中添加的主成分的前几列数目
  • priority, 在计算基因组关系矩阵时选择“速度”或“内存”
  • ncpus, 用于并行计算的 CPU 数目,如果未设置,默认使用所有 CPU
  • vc.method, 方差成分分析的方法,有三种方法可用:“BRENT”、“EMMA”和“HE”
  • maxLoop, 仅适用于 FarmCPU 的参数,FarmCPU 允许的最大迭代次数
  • method.bin, 仅适用于 FarmCPU 的参数,有两个选项:“static”和“FaST-LMM”
  • permutation.threshold, 如果为 TRUE,将在曼哈顿图中使用置换阈值。表型数据会被置换以打破与基因型的关系。该实验会重复多次。记录所有实验的最小 P 值向量,并建议使用该向量的 95% 分位数作为显著阈值
  • permutation.rep, 置换重复次数,仅在 permutation.threshold 为 TRUE 时使用
  • threshold, 0.05/标记大小,曼哈顿图上的截止线
  • method, 关联测试的模型,MVP 中可用的三种模型是“GLM”、“MLM”和“FarmCPU”,可选择一种、两种或三种模型进行关联测试
  • file.output, 布尔值或字符串向量。如果为 TRUE,输出所有类型的文件。如果为 FALSE,则不输出文件。对于字符串向量,可用值为 c("pmap", "pmap.signal", "plot", "log")。其中,pmap 代表所有 SNP P 值文件,pmap.signal 代表显著 SNP 文件,Plot 代表可视化结果,log 代表日志文件。
目录
相关文章
XP-CLR分析笔记丨检测不同种群之间由于选择引起的差异信息,群体遗传学经典方法
XP-CLR分析笔记丨检测不同种群之间由于选择引起的差异信息,群体遗传学经典方法
如何用vcftools从VCF文件中提取某条染色体信息
如何用vcftools从VCF文件中提取某条染色体信息
|
10月前
|
Ubuntu Linux Shell
Sentieon软件快速入门指南
Sentieon为纯CPU计算加速软件,完全适配主流CPU计算架构:Intel、AMD、海光等X86架构CPU,华为鲲鹏、阿里倚天等ARM架构CPU。可灵活部署在实验室单机工作站、HPC集群、超算中心和云计算中心,保持同一套流程下不同规模数据计算结果的一致性。Sentieon软件团队拥有丰富的软件开发及算法优化工程经验,致力于解决生物数据分析中的速度与准确度瓶颈,为来自于分子诊断、药物研发、临床医疗、人群队列、动植物等多个领域的合作伙伴提供高效精准的软件解决方案,共同推动基因技术的发展。
409 4
Sentieon软件快速入门指南
|
存储 数据可视化 数据挖掘
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
|
数据挖掘 Go 计算机视觉
文献丨群体转录组分析eQTLs调控基因表达
文献丨群体转录组分析eQTLs调控基因表达
|
机器学习/深度学习 搜索推荐 数据可视化
无热图不组学!高阶文献热图R语言绘制小专场拿捏
近在阅读近五年的一区高分的机器学习文献,其中有一种图出现频率特别高——热图。《
594 0
|
数据可视化 数据挖掘 数据处理
跟着Nature Genetics学数据分析:使用GEC软件计算有效位点数从而确定GWAS的阈值
跟着Nature Genetics学数据分析:使用GEC软件计算有效位点数从而确定GWAS的阈值
|
数据采集 弹性计算 数据可视化
GWAS全基因组关联分析工具GAPIT最新版!详细安装教程与报错解决方案笔记(Linux版)
GWAS全基因组关联分析工具GAPIT最新版!详细安装教程与报错解决方案笔记(Linux版)
|
存储 算法 Linux
算法丨根据基因型VCF文件自动识别变异位点并生成序列fasta文件,基于R语言tidyverse
算法丨根据基因型VCF文件自动识别变异位点并生成序列fasta文件,基于R语言tidyverse
|
Ubuntu Java Linux
利用snpEff对基因型vcf文件进行变异注释,软件安装、数据库配置、结果解读详细方法
利用snpEff对基因型vcf文件进行变异注释,软件安装、数据库配置、结果解读详细方法