使用R语言计算遗传力
欢迎关注微信公众号"生信小王子"!
遗传力 (Heritability) 又称遗传率,指遗传方差在总方差(表型方差)中所占的比值。遗传力表明某一性状受到遗传控制的程度。它介于0到1之间,当遗传力为1时,表型变异完全由遗传因素决定,当遗传力为0时表型变异由环境因素决定。
我们可以使用R包" lme4 "来计算遗传力。
## 安装R包
install.packages("lme4")
## 加载R包
library("lme4")
根据表型数据的收集方式,我们可以将数据分为多点无重复数据、多点有重复数据和多年多点有重复数据。每种类型数据计算遗传力的方法有细微差别,需要分情况对待。
多点无重复数据
多点无重复数据输入文件格式如下:
每列代表样本名,种植地点和表型值。保存为制表符分隔的txt文件。
## 导入表型数据
phe <- read.table("phe.txt", header =T, sep="\t")
trait <- phe$Trait
line <- phe$Line
loc <- phe$Loc
TRAIT <- as.numeric(trait)
LINE <- as.factor(line)
LOC <- as.factor(loc)
## 建模
blup <- lmer(TRAIT~(1|LINE)+(1|LOC))
summary(blup)
我们可以看到遗传方差Vg为0.1970,残差方差Ve为0.2866,环境个数L为2。
遗传力计算公式为:
## 计算遗传力
h <- 0.197/(0.197+0.2866/2)
结果为0.578901。
多点有重复数据
多点有重复数据输入文件格式如下:
每列代表样本名,重复,种植地点和表型值。保存为制表符分隔的txt文件。
## 防止报错,需先执行这一步
options(lmerControl=list(check.nobs.vs.rankZ ="warning",check.nobs.vs.nlev = "warning",check.nobs.vs.nRE= "warning",check.nlev.gtreq.5 = "warning",check.nlev.gtr.1= "warning"))
## 导入表型数据
phe <- read.table("phe.txt", header =T, sep="\t")
trait <- phe$Trait
line <- phe$Line
loc <- phe$Loc
rep <- phe$Rep
TRAIT <- as.numeric(trait)
LINE <- as.factor(line)
LOC <- as.factor(loc)
REP <- as.factor(rep)
## 建模
blup <- lmer(TRAIT~(1|LINE)+(1|LOC)+(1|REP%in%LOC)+(1|LINE:LOC))
summary(blup)
遗传力计算公式为:
## 计算遗传力
h <-0.196543/(0.196543+0.001014/2+0.286031/(2*2))
结果为0.7318463。
多年多点有重复数据
多年多点有重复数据输入文件格式如下:
每列代表样本名,重复,年份,种植地点和表型值。保存为制表符分隔的txt文件。
## 防止报错,需先执行这一步
options(lmerControl=list(check.nobs.vs.rankZ ="warning",check.nobs.vs.nlev = "warning",check.nobs.vs.nRE= "warning",check.nlev.gtreq.5 = "warning",check.nlev.gtr.1= "warning"))
## 导入表型数据
phe <- read.table("phe.txt", header =T, sep="\t")
trait <- phe$Trait
line <- phe$Line
loc <- phe$Loc
rep <- phe$Rep
year <- phe$Year
TRAIT <- as.numeric(trait)
LINE <- as.factor(line)
LOC <- as.factor(loc)
REP <- as.factor(rep)
YEAR <- as.factor(year)
## 建模
blup <-lmer(TRAIT~(1|LINE)+(1|LOC)+(1|YEAR)+(1|REP%in%LOC:YEAR)+(1|LINE:LOC)+(1|LINE:YEAR))
summary(blup)
遗传方差Vg为0.19187,品种与环境互作方差Vge为0.00949,品种与年份互作方差Vgy为0.01023,残差方差Ve为0.25782,重复数R为2,年份数Y为2,环境个数L为2。遗传力计算公式为:
## 计算遗传力
h <- 0.19187/(0.19187+0.00949/2+0.01023/2+0.286031/(2*2*2))
结果为0.8079285。
参考资料: