潛在因素混合模型:LFMM—— R包lfmm

在自然群體(區別于強人工選擇)中,如果我們感興趣的數量性狀表現出與特定的地理環境變量有高度的關聯性,隨著環境變量的改變而變化,則這些環境變量往往反映了環境作用于個體表型的選擇性壓力,并最終反映在群體水平的遺傳統計量,進而可以探究連續環境變量梯度下不同的選擇壓力以及群體的適應模式。

單變量潛在因素線性混合模型(LFMM)可用于基因組中環境適應特征的篩選,可以理解為另一種類型的全基因組關聯分析(GWAS),通過鑒定與環境變量高度相關的SNP位點來研究環境適應的模式。LFMM可以檢測環境變量(或表型值)與等位基因頻率之間的顯著性關系,從而確定可能受氣候因子(或表型)影響的SNP位點,專注于整體環境的評估,而不是溫度、濕度、緯度等單一的變量。

基于C語言的LFMM1.5和R包LEA都是基于貝葉斯自舉方法實現潛在因子混合模型,最新的LFMM則是通過最小二乘估計來實現的,即R包lfmm。“lfmm”R包對于較大的數據量計算速度更快,有時比貝葉斯版本更準確,可運用于全基因組(genome-wide,GW),基因組-環境(genome-environment,GE),全表觀基因組(epigenome-wide,EW)的關聯分析中。

LFMM官網:http://membres-timc.imag.fr/Olivier.Francois/lfmm/index.htm

R包lfmm:https://bcm-uga.github.io/lfmm/index.html
說明書:http://membres-timc.imag.fr/Olivier.Francois/lfmm/files/manual.pdf

R包LEA:https://bioconductor.org/packages/release/bioc/html/LEA.html

0.安裝

lfmm的安裝需要devtools,沒有devtools的需要先安裝,已安裝的可忽略第一步。

> install.packages("devtools")
> devtools::install_github("bcm-uga/lfmm")
> library(lfmm)

1.數據文件

lfmm用到兩個數據文件,分別為分子數據(可以是SNP基因型、基因表達水平、標準甲基化數據等)和環境數據(表型值等),要注意兩個數據文件都只支持數值。

1.1分子數據

在說明書中提供了幾種基因型數據可以選擇,這里只介紹最方便的ped格式,plink直接將vcf轉出ped,無需手動修改數據,可以避免人工修改數據的錯誤,格式轉換詳細參考以下鏈接:
plink安裝及基礎用法 - 簡書 (jianshu.com)

genotype data

隨后刪除ped文件的前六列,只保留基因型數據:
> Y<-read.table("branch.hic.id.ped")
> Y<-Y[,-c(1:6)]

1.2環境數據

環境數據中包含n行和D列,每一行為一個個體,每一列為一個環境,[2,3]即表示第二個個體在第三個環境下的表型值。這里要注意環境數據與基因型數據中的個體順序必須一致。


environmental data
> X<-read.csv("phe.csv",header = F,stringsAsFactors = F)
> head(X)
     V1    V2
1 68.33 78.83
2 55.33 66.40
3 71.20 83.17
4 55.83 64.33
5 76.50 85.17

2.參數估計

lfmm主要估計兩個參數,λ和K。

2.1 λ

λ是基因組膨脹因子(genomic inflation factor),用來量化總體膨脹程度和檢測結果過高的假陽性率,相當于一個平衡參數,在實際運行過程中,可以對擬合的LFMM可以進行λ的校正,獲得標準化P值。在說明書中,默認λ=1e-05。


lfmm_ridge()

2.2 K

K是潛在因素的數目,有三種方法可以估計:

> errs <- lfmm_ridge_CV(Y = Y,
                         X = X,
                         n.fold.row = 5,
                         n.fold.col = 5,
                         lambdas = c(1e-10, 1,1e+10),
                         Ks = c(1,2,3,4,5,6))
=== params
  lambda K
1  1e-10 1
=== params
  lambda K
2      1 1
=== params
  lambda K
3  1e+10 1
……

Y:分子數據(基因型)
X:環境數據(表型)
n.fold.row:行交叉驗證折疊數
n.fold.col:列交叉驗證折疊數
lambdas:備選λ的范圍值
Ks:回歸模型中潛在因素數目

這里要注意,準確的λ值并不是我們要關注的重點,要點是控制好潛在的混合效應,得到正確的P值,因此不用過于糾結。

3.LFMM泛嶺估計

3.1 lfmm_ridge()

lfmm_ridge()計算估計B、U、V,分別為SNP位點效應的大小、潛在變量得分矩陣和潛在變量加載矩陣:

> mod.lfmm <- lfmm_ridge(Y = Y, 
+                        X = X, 
+                        K = 3)

Y:分子數據(基因型)
X:環境數據(表型)
K:admixture/structure/PCA得到的潛在因素數目,示例數據中K=3

3.2 lfmm_test()

隨后使用擬合模型進行關聯測試

> pv <- lfmm_test(Y = Y, 
                  X = X, 
                  lfmm = mod.lfmm, 
                  calibrate = "gif")

3.3 QQ圖與曼哈頓圖展示顯著性

> pvalues <- pv$calibrated.pvalue 
> qqplot(rexp(length(pvalues), rate = log(10)),
       -log10(pvalues), xlab = "Expected quantile",
       pch = 19, cex = .4)
> abline(0,1)
QQ plot

引用轉載請注明出處,如有錯誤敬請指出。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容