前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言实现eQTL分析

R语言实现eQTL分析

作者头像
一粒沙
发布2019-07-31 11:41:22
8.4K0
发布2019-07-31 11:41:22
举报
文章被收录于专栏:R语言交流中心R语言交流中心

今天给大家介绍一个GWAS分析过程中的一个重要的环节eQTL(表达数量性状位点)分析。eQTL指的是染色体上一些能特定调控mRNA和蛋白质表达水平的区域,其mRNA/蛋白质的表达水平量与数量性状成比例关系,通俗点讲就是把基因表达作为一种性状,研究遗传突变与基因表达的相关性。

接下来我们看下在R语言中如何实现这个过程。我们需要准备以下几个R包:

install.packages('SNPassoc')#获取SNPs原始数据

install.packages('synbreed')#将原始数据转化为0,1,2编码的矩阵。最重要的是这个包需要在高版本R语言安装最好是3.5以上版本。

install.packages('MatrixEQTL')#eQTL分析

然后我们看下流程分解:

首先我们需要载入SNPassoc中的原始数据:

library(SNPassoc)

data(SNPs)

SNPs[1:8,1:8]

SNPs数据的提取:

myDat<- SNPs[,-(2:5)]

row.names(myDat) <- myDat$id;

myDat <- myDat[,-1]

myDat[1:5,1:5]

myDat <- as.matrix(myDat)#将数据格式进行转化并且填补空值

数据准备完毕,接下来是数据的预处理,利用synbreed通过等位基因频率对基因型进行转化,将频率高的纯合体为0,杂合为1,频率低的纯合体为2。

library(synbreed)

cp <- create.gpData(geno = myDat)

cp.dat <- codeGeno(gpData =cp,label.heter = "alleleCoding", maf = 0.01, nmiss = 0.1,

impute = TRUE, impute.type ="random", verbose = TRUE)

gee <- cp.dat$geno#获取结果数据

最后就是eQTL分析,利用MatrixEQTL进行分析。我们需要先整理好预先用的数据。

我们在此以其自身所带的示例数据为基础展开说明,主要有三部分:

1. 数据

前期数据文件以及相关参数的设置:

#SNP数据

SNP_file_name = paste0(base.dir,"/data/SNP.txt");

snps_location_file_name = paste0(base.dir,"/data/snpsloc.txt");

# 基因表达数据

expression_file_name = paste0(base.dir,"/data/GE.txt");

gene_location_file_name = paste0(base.dir,"/data/geneloc.txt");

# 表型数据

# Set to character() for no covariates

covariates_file_name = paste0(base.dir,"/data/Covariates.txt");

#输出文件

output_file_name_cis = tempfile();

output_file_name_tra = tempfile();

#关联水平阈值

pvOutputThreshold_cis = 2e-2;

pvOutputThreshold_tra = 1e-2;

#误差协方差数据存储

# Set to numeric() for identity.

errorCovariance = numeric();

# errorCovariance =read.table("Sample_Data/errorCovariance.txt");

# 基因-SNP距离阈值

cisDist = 1e6;

#模型的选择modelANOVA,modelLINEAR, or modelLINEAR_CROSS。modelANOVA顾名思义是基于F-检验进行的分析;modelLINEAR是基于T-检验进行的分析;modelLINEAR_CROSS主要是在线性回归的基础上加了交叉项。最终还是基于T-检验。

useModel = modelLINEAR;

## SNP数据结构构建

snps = SlicedData$new();

snps$fileDelimiter = "\t"; # the TAB character

snps$fileOmitCharacters = "NA"; #denote missing values;

snps$fileSkipRows = 1; # one row of column labels

snps$fileSkipColumns = 1; # one column of row labels

snps$fileSliceSize = 2000; # read file in slices of 2,000 rows

snps$LoadFile(SNP_file_name);

## 基因表达数据构建

gene = SlicedData$new();

gene$fileDelimiter = "\t"; # the TAB character

gene$fileOmitCharacters = "NA"; #denote missing values;

gene$fileSkipRows = 1; # one row of column labels

gene$fileSkipColumns = 1; # one column of row labels

gene$fileSliceSize = 2000; # read file in slices of 2,000 rows

gene$LoadFile(expression_file_name);

## 表型数据

cvrt = SlicedData$new();

cvrt$fileDelimiter = "\t"; # the TAB character

cvrt$fileOmitCharacters = "NA"; #denote missing values;

cvrt$fileSkipRows = 1; # one row of column labels

cvrt$fileSkipColumns = 1; # one column of row labels

if(length(covariates_file_name)>0) {

cvrt$LoadFile(covariates_file_name);

}

## 基因和SNP位置信息

snpspos =read.table(snps_location_file_name, header = TRUE, stringsAsFactors = FALSE);

genepos =read.table(gene_location_file_name, header = TRUE, stringsAsFactors = FALSE);

2. 数据分析

me = Matrix_eQTL_main(

snps = snps,

gene = gene,

cvrt = cvrt,

output_file_name =output_file_name_tra,

pvOutputThreshold =pvOutputThreshold_tra,

useModel = useModel,

errorCovariance = errorCovariance,

verbose = TRUE,

output_file_name.cis =output_file_name_cis,

pvOutputThreshold.cis =pvOutputThreshold_cis,

snpspos = snpspos,

genepos = genepos,

cisDist = cisDist,

pvalue.hist = TRUE,

min.pv.by.genesnp = FALSE,

noFDRsaveMemory= FALSE);

接下来数对结果的描述:

结果中我们可以得到顺式作用(cis-)与反式作用(trans-)的位点信息。所谓顺式作用即位点位于基因内部;反式作用也就是不再基因内部的SNPs。

顺式作用结果:

show(me$cis$eqtls)

反式作用结果:

show(me$trans$eqtls)

其中的beta是指标准回归系数,是用来比较各个系数之间的绝对作用或者贡献的大小;stattistic展示相关系数r的大小。

当然我们也可以将结果可视化,比如查看所有的SNP 的一个P值的分布情况:

plot(me)

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

本文分享自 R语言交流中心 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档