筆記 GWAS 操作流程5-1:根紅苗正的GWAS分析軟件:GEMMA

筆記 GWAS 操作流程5-1:根紅苗正的GWAS分析軟件:GEMMA

1. GEMMA軟件介紹

這個肯定厲害了,是大家閨秀,是名門望族,是根紅苗正的GWAS分析軟件。

GEMMA名稱來源:

  • G: Genome-wide
  • E:Efficient
  • MM:Mixed-model
  • A:Association

GEMMAX主要特點:

快,話說同樣的檢測方法,GEMMA跑了3.3小時,而EMMA估計要跑27年???
在這裏插入圖片描述

2. GEMMA語法特點

相對於plink的語法,GEMMA語法更簡練,一個槓,一個字母。比如:

  • 表型數據:-p
  • 協變量:-c
    而plink的語法的是兩個槓,一個單詞:
  • 表型數據:--pheno
  • 協變量:--covar

GEMMA支持plink的二進制文件:

  • 讀取plink文件:-bfile

表型數據格式:
一列,注意順序和基因組的ID順序一致,如果是多個性狀,那就是多列,沒有ID列。

一列
協變量格式:
協變量是數字類型,如果有因子,需要轉化爲虛擬變量的形式。沒有ID列,第一列是cov1,第二列是cov2……,注意,如果有一協變量,第一列爲1(截距),第二列爲協變量。

比如下面的數據是一個協變量,第一列爲截距。

3. GEMMA分析一般線性模型沒有協變量

首先將plink格式轉化爲二進制的plink格式:

plink --file b --make-bed --out c

然後將表型數據提取單獨一列:

awk '{print $3}' phe.txt >p.txt

然後進行一般線性模型關聯分析:

gemma-0.98.1-linux-static -bfile c -p p.txt -lm 1

結果和plink的linear結果對比:

plink的結果:

gemma的結果:

兩者結果完全一致。

事實上,加上協變量的分析,gemma和plink的結果也是一樣的,因爲都是應用的是一般線性模型。

4. GEMMA分析混合線性模型

第一步:先生成G矩陣

gemma-0.98.1-linux-static -bfile c -gk 2 -p p.txt 

代碼解釋:

  • -bfile 讀取plink的二進制文件
  • -gk 2 標準化的方法計算G矩陣
  • -p 讀取表型數據(這個不能省掉)
GEMMA 0.98.1 (2018-12-10) by Xiang Zhou and team (C) 2012-2018
Reading Files ... 
## number of total individuals = 1500
## number of analyzed individuals = 1500
## number of covariates = 1
## number of phenotypes = 1
## number of total SNPs/var        =    10000
## number of analyzed SNPs         =     3946
Calculating Relatedness Matrix ... 
================================================== 100%
**** INFO: Done.

G矩陣在output文件夾下:result.sXX.txt

第二步:使用混合線性模型進行GWAS分析

gemma-0.98.1-linux-static -bfile c -k output/result.sXX.txt -lmm 1 -p p.txt 
代碼解釋:
* -bfile plink的二進制文件
* -k 讀取G矩陣的文件
* -lmm 1 使用Wald的方法進行SNP檢驗
* -p 表型數據

GEMMA 0.98.1 (2018-12-10) by Xiang Zhou and team (C) 2012-2018
Reading Files ... 
## number of total individuals = 1500
## number of analyzed individuals = 1500
## number of covariates = 1
## number of phenotypes = 1
## number of total SNPs/var        =    10000
## number of analyzed SNPs         =     3946
Start Eigen-Decomposition...
pve estimate =0.120599
se(pve) =0.0279188
================================================== 100%
**** INFO: Done.

第三步:查看結果文件
結果在output文件夾下:result.assoc.txt
在這裏插入圖片描述

5. GEMMA中LM模型和LMM模型的結果比較

setwd("/home/dengfei/gwas/qmsim/dat/plink_file/10_gemma_analysis_lmm/output")

mm_re = fread("result.assoc.txt")
head(mm_re)

lm_re = fread("../../06_gemma_analysis_lm/output/result.assoc.txt")
head(lm_re)
lm_re1 = lm_re[!is.na(p_wald)]
head(lm_re1)

dim(mm_re)
dim(lm_re1)

head(mm_re)
head(lm_re1)

re1 = merge(mm_re,lm_re1,by="rs")
head(re1)

# Pvalue 比較
cor(re1$p_wald.x,re1$p_wald.y)
plot(re1$p_wald.x,re1$p_wald.y)

# Beta迴歸係數比較
cor(re1$beta.x,re1$beta.y)
plot(re1$beta.x,re1$beta.y)

Pvalue比較

> cor(re1$p_wald.x,re1$p_wald.y)
[1] 0.5278895

Beta迴歸係數比較:

> cor(re1$beta.x,re1$beta.y)
[1] 0.8357564


注意:
這裏面,混合線性模型分析時,一般要加上PCA的結果,防止羣體結構造成的假陽性。下一章節,我們介紹LMM模型,如何加入協變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章