R包“ieugwasr“教程---SNP信息查询

2022-08-21 17:38:23 浏览数 (2)

在孟德尔随机化研究中,我们常常会碰到SNP没有rsid的情况,这个时候需要我们把rsid添加上,如果SNP的个数不是很多的话,我们可以使用variants_chrpos()函数:

代码语言:javascript复制
library(ieugwasr)
SNPinfo1 <- variants_chrpos(chrpos =c("3:46414943", "3:122991235"), radius = 0)
as.data.frame(SNPinfo1)
SNPinfo2 <- variants_chrpos(chrpos =c("3:46414943", "3:122991235"), radius = 100)
as.data.frame(SNPinfo2)

函数variants_chrpos()只有两个参数chrposradius,其中参数chrpos就是用染色体和碱基位置标记的信息,其格式为“chr:pos(染色体号:碱基位置)“,而参数radius就是指以单个位点为中心,向其上下游序列扩展的半径,其默认值为0。例如,当chrpos为3:46414943,radius为100时,则表示寻找在3号染色体上46414843~46415043这段序列上的SNP信息。

下面的第一幅图是radius为0的结果,也即as.data.frame(SNPinfo1) 的输出结果,第二幅图是radius为100的结果,也即as.data.frame(SNPinfo2)的输出结果。这个结果里我们主要关注的就是namegeneinfo,name代表的是SNP的rsid信息,geneinfo则提示离该SNP最近的基因信息。

图1:

图2:

代码语言:javascript复制
GENEinfo <- variants_gene(gene =c("ENSG00000123374", 1017), radius = 0)
head(as.data.frame(GENEinfo), 25)

同函数variants_chrpos()一样,函数variants_gene()也只有两个参数,其中参数radius在两个函数中是一致的,variants_gene()的参数gene和variants_chrpos()的chrpos类似,表示的是查询的目标基因,它支持ENSEMBLENTREZ两种基因名的输入,其输出结果如下图所示,由于输出的结果和variants_chrpos()类似,这里就不赘述了。

代码语言:javascript复制
RSIDinfo <- variants_rsid(rsid =c("rs4714457", "rs7784948", "rs2438162"))
as.data.frame(RSIDinfo)

函数variants_rsid()是依据rsid信息来查询SNP的基本信息,它只有rsid这一个参数,其输出结果如下:

接下来,我们将一起学习如何使用ieugwasr包来进行SNP的clump,这里主要使用ld_clump()函数,具体代码如下:

代码语言:javascript复制
mydata <-TwoSampleMR::extract_instruments("ieu-a-2") #获取IV信息
dim(mydata) #查看数据维度
##[1] 79 15
mydata <- mydata[,c("SNP","pval.exposure")] #选择SNP和暴露的P值这两列
colnames(mydata) <- c("rsid","pval") # 对SNP和暴露的P值重命名
mydata <- ld_clump(dat = mydata,clump_kb = 10000, clump_r2 = 0.001, clump_p = 0.99,
                               pop = "EUR", access_token = NULL,bfile = NULL, plink_bin = NULL
                               ) #对数据进行clump
##[1] 78 3

在利用函数ld_clump()对SNP进行clump时,要求的数据输入格式为两列,SNP列的列名必须为“rsid“,而暴露的P值的列名必须为”pval“。其它参数的含义可以参考往期内容TwoSampleMR包实战教程之去除连锁不平衡(LD)。

最后的输出结果如下图所示:

另外, 如果需要对大量SNP进行clump的话,建议大家使用本地的PLINK软件和LD参考数据来做,使用的就是ieugwasr提供的ld_clump_local()函数,米老鼠会在后面的推送中和大家详细介绍如何进行本地clump。

0 人点赞