前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用R/qtl进行QTL分析

使用R/qtl进行QTL分析

作者头像
生信小王子
发布2020-08-10 17:10:46
3.9K1
发布2020-08-10 17:10:46
举报
文章被收录于专栏:生信小王子

QTL分析是进行基因精细定位和克隆的基础,今天小编教大家使用R包" qtl "进行QTL分析。

在开始分析前,我们需要准备两个输入文件:基因型和表型文件。

基因型文件:

表型文件:

基因型和表型文件均保存为逗号分隔的csv文件

准备好两个输入文件后,我们就可以开始分析啦!

代码语言:javascript
复制
## 安装R包
install.packages("qtl")
## 加载R包
library("qtl")
## 导入基因型和表型数据
sug <- read.cross("csvs", ".", "gen.csv", "phe.csv")
## 查看输入文件相关信息
summary(sug)

此外,还有一些函数可以统计对应的信息。

代码语言:javascript
复制
## 样本数
nind(sug)
## 染色体数
nchr(sug)
## 标记数
totmar(sug)
## 每个染色体上的标记数
nmar(sug)
## 表型数
nphe(sug)
除了文字信息外,我们还可以用图来展示这些信息。
代码语言:javascript
复制
plot(sug)

这三张图分别展示了缺失的基因型数据,遗传图谱和表型数据分布。

也可以单独展示这三张图。

代码语言:javascript
复制
## 展示缺失基因型数据(黑色为缺失的基因型)
plotMissing(sug)
 
代码语言:javascript
复制
## 绘制遗传图谱
plotMap(sug)
代码语言:javascript
复制
## 绘制表型分布直方图
plotPheno(sug, pheno.col=1)
代码语言:javascript
复制
## 计算基因型概率
sug <- calc.genoprob(sug, step=1)
## 使用默认方法进行single-QTL全基因组扫描
out.em <- scanone(sug)
## 查看扫描结果
summary(out.em)
## 挑选LOD > 3的结果
summary(out.em, threshold=3)
## 展示结果
plot(out.em)

我们可以看到7号和15号染色体上各有一个显著的峰。

代码语言:javascript
复制
## 使用Haley-Knott回归方法进行全基因组扫描
out.hk <- scanone(sug, method="hk")
## 使用Multiple imputation法进行全基因组扫描
sug <- sim.geno(sug, step=1, n.draws=64)
out.imp <- scanone(sug, method="imp")
## 比较三种方法结果的差异
plot(out.em, out.hk, out.imp, col=c("blue", "red", "green"))
 

我们可以看到,三种方法的结果并没有明显差异。

代码语言:javascript
复制
## 进行1000次Permutation test
operm <- scanone(sug, method="hk", n.perm=1000)
## 获得显著性阈值
summary(operm, alpha=c(0.05, 0.2))
 
代码语言:javascript
复制
## 从扫描结果中挑选显著的位点
summary(out.hk, perms=operm, alpha=0.2, pvalues=TRUE)
  

接下来,我们需要估计QTL区间。因为我们通过LOD值过滤后的QTL位点位于7号和15号染色体上,所以我们首先对7号染色体上的QTL区间的进行估计。

代码语言:javascript
复制
## 获得7号染色体1.5倍LOD区间和95%贝叶斯区间
lodint(out.hk, chr=7, drop=1.5)
bayesint(out.hk, chr=7, prob=0.95)
  

第一行和第三行是区间的范围,第二行是预测QTL的位置

代码语言:javascript
复制
## 获得区间两侧最近的标记
lodint(out.hk, chr=7, expandtomarkers=TRUE)
bayesint(out.hk, chr=7, expandtomarkers=TRUE)
  
代码语言:javascript
复制
## 获得离QTL最近的标记
max(out.hk)
mar <- find.marker(sug, chr=7, pos=47.7)
## 统计不同基因型个体的表型
plotPXG(sug, marker=mar)
  

红色的点表示基因型进行过填补的个体。

代码语言:javascript
复制
## 统计不同基因型个体的效应
effectplot(sug, mname1=mar)

Tips:我们常说的LOD值=log10 (L1/L0) ,L1指该位点含QTL的概率,L0指该位点不含QTL的概率。LOD值为3表示该位点含QLT的概率是不含QTL概率的1000倍。

参考资料:

https://rqtl.org/tutorials/rqtltour2.pdf

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

本文分享自 生信小王子 微信公众号,前往查看

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

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

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