1. GWAS筆記操作計劃
之前的教程中,我們使用的是別人模擬的數據,數據類型是二分類數據,這裏我們模擬一個數量性狀的連續性狀,做GWAS更有代表性。
我們先從沒有協變量的一般線性模型(LM)模型開始,然後加入數據類型的協變量,然後加入因子類型的協變量(這裏需要進行虛擬變量的轉化),然後將數值協變量和因子變量放在一起作爲協變量,然後將PCA的值作爲協變量加進去,這樣一般線性模型分析完成。
最後我們使用混合線性模型(LMM),不考慮協變量,然後加入協變量,然後將PCA加入協變量。
最最後介紹一下可視化,包括曼哈頓圖,QQ圖,LD衰減圖等相關可視化。
最最最後,介紹一下這個數據,用這麼多數據分析後,哪種模型最好,哪種模型控制假陽性較好,哪種模型控制假陰性較好。
最最最最後,介紹一下結果的中有疑問的地方,比如爲何有些SNP顯著但是效應較小,有些SNP效應較大但是顯著性較低?比如GWAS分析結果中效應值是怎麼理解的?GWAS分析的效應值和rrBLUP中SNP效應值有什麼關係?
計劃章節:
筆記 GWAS 操作流程4-1:LM模型assoc(本篇)
主要是介紹assoc和linear兩個參數,不考慮協變量,然後將結果與R語言編程結果比較
筆記 GWAS 操作流程4-2:LM模型linear+數值協變量
主要是介紹linear參數,考慮數值協變量,然後將結果與R語言編程結果比較
筆記 GWAS 操作流程4-3:LM模型linear+因子協變量
主要是介紹linear參數,考慮因子協變量,然後將結果與R語言編程結果比較
筆記 GWAS 操作流程4-4:LM模型linear+數值+因子協變量
主要是介紹linear參數,考慮數值+因子協變量,然後將結果與R語言編程結果比較
筆記 GWAS 操作流程4-5:LM模型linear+數值+因子+PCA協變量
主要是介紹linear參數,考慮數值+因子協變量,然後將結果與R語言編程結果比較
筆記 GWAS 操作流程5-1:LMM模型進行GWAS分析
主要是介紹混合線性模型,不考慮協變量結果分析
筆記 GWAS 操作流程5-2:LMM模型進行GWAS分析+數值協變量
主要是介紹混合線性模型,考慮數值協變量結果分析
筆記 GWAS 操作流程5-3:LMM模型進行GWAS分析+因子協變量
主要是介紹混合線性模型,考慮因子協變量結果分析
筆記 GWAS 操作流程5-4:LMM模型進行GWAS分析+數值+因子協變量
主要是介紹混合線性模型,考慮數值+因子協變量結果分析
筆記 GWAS 操作流程5-5:LMM模型進行GWAS分析+數值+因子+PCA協變量
主要是介紹混合線性模型,考慮數值+因子+PCA協變量結果分析
筆記 GWAS 操作流程6-1:GWAS分析中曼哈頓圖的繪製
主要是介紹GWAS分析中曼哈頓圖的繪製
筆記 GWAS 操作流程6-2:GWAS分析中QQ的繪製
主要是介紹GWAS分析中QQ圖的繪製
筆記 GWAS 操作流程6-3:GWAS分析中其它圖的繪製
主要是介紹GWAS分析中其它圖的繪製
筆記 GWAS 操作流程7:GWAS分析中結果解讀
主要是介紹GWAS分析中結果解讀
2. 模擬的數據
模擬數據使用QMSim
軟件,模擬的數據如下:
b.map b.ped cov.txt phe.txt
這裏b.map
和b.ped
是plink格式的數據,cov.txt爲協變量,phe.txt爲觀測值
數據預覽:
b.map數據:
b.ped數據:
cov.txt 協變量數據:
phe.txt表型數據:
3. plink利用assoc進行LM的GWAS分析
plink --file b --pheno phe.txt --assoc --out re --allow-no-sex
代碼解釋:
- –file爲plink的文件名的前綴
- –pheno 爲plink分析GWAS的表型數據,注意前兩列爲FID IID,第三列爲分析的性狀
- –assoc 利用的是LM模型
- –out 輸出文件名
- –allow-no-sex 因爲數據中沒有性別信息,需要加上這個參數,允許沒有性別的數據
運行日誌:
PLINK v1.90b6.17 64-bit (28 Apr 2020) www.cog-genomics.org/plink/1.9/
(C) 2005-2020 Shaun Purcell, Christopher Chang GNU General Public License v3
Logging to re.log.
Options in effect:
--allow-no-sex
--assoc
--file b
--out re
--pheno phe.txt
7820 MB RAM detected; reserving 3910 MB for main workspace.
.ped scan complete (for binary autoconversion).
Performing single-pass .bed write (10000 variants, 1500 people).
--file: re-temporary.bed + re-temporary.bim + re-temporary.fam written.
10000 variants loaded from .bim file.
1500 people (0 males, 0 females, 1500 ambiguous) loaded from .fam.
Ambiguous sex IDs written to re.nosex .
1500 phenotype values present after --pheno.
Using 1 thread (no multithreaded calculations invoked).
Before main variant filters, 1500 founders and 0 nonfounders present.
Calculating allele frequencies... done.
10000 variants and 1500 people pass filters and QC.
Phenotype data is quantitative.
Writing QT --assoc report to re.qassoc ... done.
結果文件:
re.qassoc
注意,這裏的SNP沒有質控,有很多SNP沒有分型,所以結果又很多NA,不過這裏可以看出assoc分析GWAS的結果,其中SNP中M7和M9的結果:
- M7,beta值爲1.394,se爲1.317,R2位0.000749,T值爲1.059,P值爲0.2898
- M9,beta值爲3.327,se爲1.504,R2位0.003254,T值爲2.211,P值爲0.02715
4. plink利用linear進行LM的GWAS分析
這裏,利用linear和上面的assoc命令類似,將linear代替assoc即可。一般來說,linear可以支持協變量,assoc不支持協變量。assoc運行速度快於linear。
plink --file b --pheno phe.txt --allow-no-sex --linear --out re
運行日誌:
PLINK v1.90b6.17 64-bit (28 Apr 2020) www.cog-genomics.org/plink/1.9/
(C) 2005-2020 Shaun Purcell, Christopher Chang GNU General Public License v3
Logging to re.log.
Options in effect:
--allow-no-sex
--file b
--linear
--out re
--pheno phe.txt
7820 MB RAM detected; reserving 3910 MB for main workspace.
.ped scan complete (for binary autoconversion).
Performing single-pass .bed write (10000 variants, 1500 people).
--file: re-temporary.bed + re-temporary.bim + re-temporary.fam written.
10000 variants loaded from .bim file.
1500 people (0 males, 0 females, 1500 ambiguous) loaded from .fam.
Ambiguous sex IDs written to re.nosex .
1500 phenotype values present after --pheno.
Using 1 thread (no multithreaded calculations invoked).
Before main variant filters, 1500 founders and 0 nonfounders present.
Calculating allele frequencies... done.
10000 variants and 1500 people pass filters and QC.
Phenotype data is quantitative.
Writing linear model association results to re.assoc.linear ... done.
結果文件:
re.assoc.linear
結果和assoc的結果完全一致!
5. 使用R語言的一般線性迴歸比較結果
這裏,需要將plink轉化爲012的形式,可以使用recodeA
參數:
plink --file b --recodeA --out c
結果:
c.raw
編寫R程序:
library(data.table)
geno = fread("c.raw",header=T)
geno[1:10,1:20]
phe = fread("../phe.txt")
head(phe)
dd = data.frame(phe$V3,geno[,7:17])
head(dd)
mod_M7 = lm(phe.V3 ~ M7_1,data=dd)
summary(mod_M7)
可以看出R語言lm的結果中:
M7: beta爲1.3940, se爲1.3165,t值爲1.059,p值爲0.290,
M9:beta爲3.3265,se爲1.5042,t值爲2.211,p值爲0.0272
對比assoc的結果:
可以看出,兩者結果完全一致。
問題來了:
如果R中跑完10000個標記的迴歸分析,需要很長時間,而plink只需要幾秒。沒有比較久沒有傷害。不過R適合驗證性的分析,比如你在進行plink分析時,看到LM模型,說明書上寫的是迴歸分析,但是你用R語言編寫後,驗證了這是lm迴歸分析,這種喜悅是什麼?
這種喜悅就是,明知屁是臭的,偏偏還要聞一下。雖然很多人告訴你是臭的,但還是想要自己聞一下。所謂“紙上得來終覺淺,絕知此事要躬行”便是如此啊,聞過之後,可以告訴別人說:“真香!”
起碼我自己的收穫:
1,知道GWAS分析中,plink進行LM分析,SNP轉化爲012,0是major,2是minor,這順序是不能變的,你如果要手動進行迴歸分析,需要將SNP的分型進行轉化,而不是粗暴的將其替換爲0,1,2.
2,R在進行單個SNP的分析時,0,1,2是作爲數值進行的迴歸分析,而不是因子。
最後感言:
真香!