前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TwoSampleMR实战教程之提取IV在结局中的信息

TwoSampleMR实战教程之提取IV在结局中的信息

作者头像
生信与临床
发布2022-08-21 16:40:48
1.7K0
发布2022-08-21 16:40:48
举报

在读取完暴露文件并去除掉存在连锁不平衡的SNP后,我们接下来要做的一件事就是提取IV在结局中的信息,完成这一步主要有两种方法:

(1)利用TwoSampleMR获取MR base提供的结局信息

(2)读取自己结局的GWAS文件并提取相关信息

第一种方法使用起来非常简洁高效,可以批量读取多个结局文件,但是存在的问题是有的结局数据可能有问题(米老鼠做研究的过程确认过);第二种方法一次读取一个GWAS文件,如果批量处理的话可能会占用大量内存,得不偿失。接下来我将为大家详细介绍一下这两种方法,希望大家能明白这两种读取方法的差异。

1. 利用TwoSampleMR获取MR base提供的结局信息

首先咱们先提取IV的信息并去除存在连锁不平衡的SNP,这里咱们还是以BMI作为暴露,但是ID号需要改成'ieu-a-835',这主要是因为之前ID号’ieu-a-2’的GWAS是在混合人群中做的(也即把欧洲人、非洲人等不同人群合在一起做的GWAS),而’ieu-a-835’则是在欧洲人中做的。在之前的理论学习中,我曾和大家解释过人群的混杂会带来估计结果的偏倚,因此我们需要选择遗传背景一致的人群进行MR研究(如暴露和结局的GWAS都是在欧洲人群中进行的)。

代码语言:javascript
复制
library(TwoSampleMR)
bmi_exp <- extract_instruments(
 outcomes='ieu-a-835',
 clump=TRUE, r2=0.01,
 kb=5000,access_token = NULL
  )
dim(bmi_exp)
# [1] 80 15
t2d_out <- extract_outcome_data(
 snps=bmi_exp$SNP,
 outcomes='ieu-a-26',
 proxies = FALSE,
 maf_threshold = 0.01,
 access_token = NULL
)
dim(t2d_out)
# [1] 80 16

这里我要和大家简单介绍一下extract_outcome_data()函数的关键参数:

snps:它是一串以rs开头的SNP ID

outcomes:它是outcome在MR base中的ID;

proxies:它表示是否使用代理SNP,默认值是TRUE,也即当一个SNP在outcome中找不到时可以使用与其存在强连锁不平衡的SNP信息来替代,我个人喜欢设置成FALSE。

maf_threshold:它表示的是SNP在outcome中的最小等位基因频率,默认值是0.3,不过大样本GWAS可以适当调低,我这里设置的是0.01。

access_token:大陆用户必须设置成access_token=NULL。

2. 从自己的GWAS结果中提取IV在结局中的信息

米老鼠从DIAGRAM研究中下载了与'ieu-a-26'对应的完整GWAS数据然后提取IV,代码如下:

代码语言:javascript
复制
#install.packages('data.table') 安装data.table包
library(data.table) # 加载R包
t2d <-fread('DIAGRAMv3.2012DEC17.txt',header=T) # 使用fread()快速读取大文件
head(t2d) # 查看数据
代码语言:javascript
复制
t2d$phenotype <- 'Type 2 diabetes' # 添加phenotype列
t2d$beta <- log(t2d$OR) # 转换OR值为beta
t2d$se <-abs(t2d$beta/qnorm(t2d$P_VALUE/2,lower.tail=F)) # 计算se
head(t2d) # 查看数据
代码语言:javascript
复制
t2d_out <- format_data(
 dat=t2d,
 type = "outcome",
 snps = bmi_exp$SNP,
 header = TRUE,
 phenotype_col = "phenotype",
 snp_col = "SNP",
 beta_col = "beta",
 se_col = "se",
 effect_allele_col = "RISK_ALLELE",
 other_allele_col = "OTHER_ALLELE",
 pval_col = "P_VALUE",
 ncase_col = "N_CASES",
 ncontrol_col = "N_CONTROLS",
 chr_col = "CHROMOSOME",
 pos_col = "POSITION"
)
head(t2d_out)

由于原始的GWAS结果中没有phenotype、beta和se的信息,因此米老鼠先将它读取到R中,然后转换格式。米老鼠这里是先把原始的GWAS使用data.table包的fread()函数读到R中,因为这个fread()函数读取大文件的速度非常快,接着我再使用format_data()函数将该数据框转化成TwoSampleMR的格式,关于format_data()函数的用法参见往期内容TwoSampleMR包实战教程之读取暴露文件

当然,如果各位小伙伴们的文件里的信息很完整,可以考虑使用read_outcome_data()函数,它的用法与read_expsoure_data()类似,具体可以使用?read_outcome_data查询。

大家可以自行比对一下本文中的两个方法得出的t2d_out结果,米老鼠看了一下,他们的beta和p值是一致,但se有微小差异,这是由于精确位数不同导致,不会对结果产生实质影响。

另外,今天的内容里还介绍了OR和beta的转换以及se的计算,这个非常重要,希望大家掌握!

最后,米老鼠整理好了MR base里以IEU开头的outcome信息,有兴趣的朋友可以私聊我获取。DIAGRAM consortium的GWAS数据库网站可以点击阅读原文后下载第一个文件即可,当然也可以私聊米老鼠获取。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信与临床 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档