GWAS:使用R,比较GLM和MLM对假阳性的控制差异(复刻Nature genetics 图)

news2025/1/16 1:40:59

目录

1.数据准备

2.代码

如果想知道横纵坐标设置的原理,移步这篇超级棒的文章!

我们来复刻如下这张2016年发表在Nature genetics上的一篇文章中比较GLM和MLM的QQ plot!

参考文献:

Genetic variation in ZmVPP1 contributes to drought tolerance in maize seedlings

Wang, X., Wang, H., Liu, S. et al. Genetic variation in ZmVPP1 contributes to drought tolerance in maize seedlings. Nat Genet 48, 1233–1241 (2016). https://doi.org/10.1038/ng.3636

Quantile–quantile plot for the GWAS under a general linear model (GLM) and mixed linear model (MLM).

 数据是随便找的,成果图基本上就是这种样式。

1.数据准备

GLM和MLM分析产生的p-value

如果是使用Tassel分析的,可以直接把结果导入下面的代码。

如果不是,直接读入GLM和MLM分析产生的p-value作为下面的GLM和MLM变量的值

2.代码

#1.Tassel分析产生的GLM和MLM数据读入====
GLM <- read.table("GLM_results.txt")
colnames(GLM) <- GLM[1,]
GLM <- GLM[-1,]
GLM$p <- as.numeric(GLM$p) #读入的数据类型均为character,需要转化为numeric data才能进行比较

MLM <- read.table("MLM_results.txt")
colnames(MLM) <- MLM[1,]
MLM <- MLM[-1,]
MLM$p <- as.numeric(MLM$p)

#2.选做:提取性状子集(如果分析包含多个性状再进行这一步,如果没有就忽略这里)====
traits_factor <- as.factor(GLM$Trait)
all_trait <- levels(traits_factor)

trait <- all_trait[i]   #i是要研究的性状在all_trait中的序号
data_glm <- subset(GLM,GLM$Trait==trait)
data_mlm <- subset(MLM,MLM$Trait==trait)
#注意看两个子集的marker数目是否相同
data_mlm <- data_mlm[-1,]

#3.计算均匀分布的分位数的负对数(生成横坐标数据)====
expected_p_value <- c(1:nrow(data_glm))/nrow(data_glm) #计算均匀分布的分位数
minus_log10_exp <- -log10(sort(expected_p_value,decreasing = TRUE))

#4.计算分析结果p的负对数(生成纵坐标数据)====
glm_minus_logp_val <- -log10(sort(data_glm$p,decreasing = TRUE)) #如果没有进行第二步,data_glm就是上面读入的GLM,data_mlm是上面的MLM
#生成绘图表格,group添加分组信息
glm_qq_data <- data.frame(minus_log10_exp=minus_log10_exp,minus_log_p_val=glm_minus_logp_val,group=rep("GLM",nrow(data_glm)))
#同理,处理MLM
mlm_minus_logp_val <- -log10(sort(data_mlm$p,decreasing = TRUE))
mlm_qq_data <- data.frame(minus_log10_exp=minus_log10_exp,minus_log_p_val=mlm_minus_logp_val,group=rep("MLM",nrow(data_mlm)))

#5.最终绘图数据及绘图====
combine_data <- rbind(glm_qq_data,mlm_qq_data) #合并GLM和MLM的p value

library(ggplot2)
p <- ggplot()+
  geom_point(data = combine_data,mapping = aes(minus_log10_exp,minus_log_p_val,color=group))+ 

  geom_abline(intercept = 0,slope = 1,color="#D3D3D3",size=0.75)+  #画y=x直线
  
  scale_color_manual(values = c("black","red"))+  #黑色点为GLM结果,红色点为MLM结果
  
  scale_x_continuous(expand = c(0,0))+
  scale_y_continuous(expand = c(0,0))+
  
  labs(title = trait)+ #添加主标题
  xlab(expression('Expected'~'-log'[10]*'(p)'))+ylab(expression('Observed'~'-log'[10]*'(p)'))+

  theme_classic()+                      #确定基础主题
  
  theme(
    axis.line = element_line(size = 1), #修改坐标轴粗细
    axis.ticks = element_line(size=1),  #修改坐标轴刻度线粗细
    axis.ticks.length = unit(0.25,"cm"),#修改坐标轴刻度线长度
    axis.text = element_text(size = 12,colour = "black"), #修改坐标轴刻度字体
    axis.title = element_text(size = 12), #修改坐标轴标签字体
    plot.title = element_text(size = 12,hjust = 0.5),#修改图题位置和字体大小
    legend.title = element_blank(),      #除去图例标题
    legend.text = element_text(size=12) 
    )

成果图!(主标题打码了。。。)

 如果想改变图例的位置的话,可以直接在AI里面改,或者再在theme里面设置。

如果想知道横纵坐标设置的原理,移步这篇超级棒的文章!

如何理解GWAS中Manhattan plot和QQ plot所传递的信息 - 简书 (jianshu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫项目100例

前言 Python爬虫项目100例&#xff08;一&#xff09;&#xff1a;入门级 CentOS环境安装 和谐图网站爬取 美空网数据爬取 美空网未登录图片爬取 27270图片爬取 蜂鸟网图片爬取之一 蜂鸟网图片爬取之二 蜂鸟网图片爬取之三 河北阳光理政投诉板块 Pyt图虫网多线程爬取…

【计算机视觉+Tensorflow】SORT目标跟踪算法的讲解(图文解释 超详细)

觉得有帮助请点赞关注收藏~~~ 一、目标跟踪简介 目标跟踪算法可以进行轨迹特征的分析和提取&#xff0c;以弥补目标检测的不足&#xff1b;有效地去除误检&#xff0c;提高检测精度&#xff0c;为进一步的行为分析提供基础。例如&#xff0c;在自动驾驶系统中&#xff0c;目标跟…

Kafka知识点

消费者组 kafka的消费者组里面包含一个或多个消费者实例&#xff0c;它们共享一个公共的 ID&#xff0c;这个 ID 被称为 Group ID。一个消费者组可以订阅多个主题&#xff0c;但是同一个消费者组里面的一个实例只能消费一个主题里面的一个分区。 consumer group A kafka consum…

web课程设计网页规划与设计(HTML+CSS+JavaScript仿悦世界游戏官网 6个页面)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

web前端 基于html实现花店购物网站源码(HTML+CSS+JavaScript) 企业网站制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

央国企信创全面加速,如何将数字化转型和信创深度融合?

11月30日&#xff0c;《央国企信创白皮书》正式对外发布&#xff0c;CIO 时代研究院认为&#xff1a;在各行各业深入开展全面数字化转型的背景下&#xff0c;央国企信创工作和数字化转型工作势必并轨同行&#xff0c;既是机遇&#xff0c;亦是挑战。 信创是突破“卡脖子”技术…

Linux权限的理解

主要分为两类讲解&#xff1a;1.对人操作 2.对角色和文件操作 目录 Linux权限管理 文件类型和访问权限&#xff08;事物属性&#xff09; 基本权限 文件访问者的分类 文件权限值的表示方法 文件访问权限的设置方法 目录权限 umask 粘滞位 1.对人&#xff1a; Linux下…

JVM 篇之 牛刀小试 (二)(PS:之前请教我的小伙子校招去了字节~)

闲聊 最近在学jvm&#xff0c;当然这是一个持续过程&#xff0c;知行合一对吧&#xff0c;学习之后立马去应用&#xff0c;才能验证你学到是不是有用的东西。大家看过我上一篇写的博客么&#xff0c;之前在csdn请教过我的一个小伙子&#xff0c;最近我看他已经入职字节跳动了&a…

C++ 类与对象(四)构造函数2、static成员、友元、内部类

目录 1. 再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit关键字 2. static成员 2.1 概念 2.2 特性 3. 友元 3.1友元函数 3.2 友元类 4. 内部类 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对…

Nacos配置中心

小结&#xff1a; Nacos&#xff1a;注册中心&#xff0c;解决服务的注册与发现 Ribbon&#xff1a;客户端的负载均衡器&#xff0c;服务集群的负载均衡 OpenFeign&#xff1a;声明式的HTTP客户端&#xff0c;服务远程调用 Nacos&#xff1a;配置中心&#xff0c;中心化管理配置…

窗帘轨道怎么安装?方法有哪些?-江南爱窗帘十大品牌

不论是卧室的装修还是客厅的装修&#xff0c;都离不开窗帘的装饰&#xff0c;窗帘定制也是很多业主的选择&#xff0c;作为定制的窗帘必须具备的器件—窗帘轨道。那么。窗帘轨道的安装方法是什么?窗帘轨道的高低如何选择?下面小编就给大家详细介绍下吧。 01-窗帘轨道安装高度…

SpringBoot实战:整合MyBatis搭建基本骨架

这篇开始&#xff0c;开始进行 SpringBoot 框架功能的具体实现&#xff0c;本篇是 SpringBoot 整合 MyBatis 搭建基本骨架&#xff1b; 项目源码实现后分支地址&#xff1a;https://toscode.gitee.com/li_ziheng/lizhengi-samples/tree/feature%2Fspring-boot-1.0.0/ &#xff…

CSS 实现鼠标hover 展示内容

前言 &#x1f44f;CSS 实现鼠标hover 展示内容&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义一个宽高为300px的父容器 <div class"box"></box>.box {position: relative;width: …

TF1-项目搭建配置及用户登录

TF1-项目搭建配置及用户登录1、项目介绍1.1、功能列表1.2、项目背景1.3、功能概述1.3.1 用户登录1.3.2、交友首页探花搜附近桃花传音测灵魂1.3.3、圈子1.3.4、消息1.3.5、小视频1.3.6、我的1.4、技术方案1.5、技术解决方案2、前后端分离2.1、前后端分离的概述2.2、YAPI介绍3、开…

大分子葡聚糖-牛血清蛋白抗原偶联物(Dextran-BSA)|多糖-蛋白偶联物

大分子葡聚糖-牛血清蛋白抗原偶联物(Dextran-BSA)|多糖-蛋白偶联物 产品描述&#xff1a;用还原胺化法制备大分子葡聚糖-牛血清蛋白(BSA)拟糖蛋白抗原,通过SDS-聚丙烯酰胺凝胶电泳结合考马斯亮蓝和过碘酸-品红两种染色方法验证偶联物的生成,确定拟糖蛋白抗原的较佳偶联…

计算机毕业设计php+vue基于微信小程序的贵小团校园社团小程序

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,贵小团校园社团小程序就是信息时代变革中的产物之一。 任何系统都要遵…

Linux内核与SMP(对称多处理)

什么 是SMP&#xff1f; SMP的全称是“对称多处理“&#xff08;Symmetrical Multi-Processing&#xff09;技术&#xff0c;是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这…

两行代码自动压缩ViT模型!模型体积减小3.9倍,推理加速7.1倍

Transformer模型及其变体&#xff0c;因其更优的注意力机制能力和长时依赖等特性&#xff0c;已成为自然语言处理 (NLP)、语音识别 (ASR)、计算机视觉 (CV)等领域的主流序列建模结构。根据PaperWithCode网站ObjectDetectiononCOCOtest-dev专栏数据&#xff0c;检测任务中Transf…

嵌入式:ARM处理器的工作状态

文章目录Thumb技术介绍Thumb的技术概述Thumb的技术实现Thumb技术的特点ARM处理器工作状态Thumb2技术介绍评价Thumb技术介绍 ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题&#xff0c;ARM体系结构又增加了&#xff34;变种&…

微信小程序实现圆形菜单弹出选中动画

vector-effect是SVG中十分冷门的属性&#xff0c;相信大多数小伙伴都没有了解过&#xff0c;说句实话&#xff0c;在这次重学SVG之前&#xff0c;这个属性我连听都没听说过。 不过&#xff0c;冷门不重要&#xff0c;重要的是管用&#xff0c;尤其是以后在面对相应场景下&…