重演一篇傻瓜式GWAS分析|培養(yǎng)興趣專用 發(fā)布于 2020-05-10 18:58
全基因組關(guān)聯(lián)分析(genome-wideassociationstudy,GWAS)應(yīng)該算是動物生信分析里最熱點的技能之一吧。關(guān)于GWAS原理的書籍和文章網(wǎng)上有一大堆,這相對于GWAS跑流程來說只能算一座小山丘。因為很多人花了好幾個月研究原理,一旦丟去數(shù)據(jù)分析,還是Error Error Error....我還是秉承那些晦澀難懂的概念在你跑一次程序之后你會理解70%,因此不要等都準(zhǔn)備齊了再去著手實施的觀點。
做什么事興趣最重要,反饋的成就感會讓你慢慢喜歡上一件事。一切為了興趣,特做一期“一站式體驗GWAS”,你一定可以拿到屬于自己的第一張曼哈頓圖。
“GWAS是在某一特定人群中研究遺傳突變和表型之間的相關(guān)性。GWAS的理論基礎(chǔ)是連鎖不平衡定律(linkage disequilibrium, LD),既假設(shè)觀察到的SNP與真正的致病突變(causal variant)之間存在很強的LD。
GWAS是一個邏輯清晰的游戲:我們以身高為例,已知身高的遺傳率很高(估計為為0.8),也就是說,A身高1.5,B身高1.8,這30厘米的差異中,有至少24厘米是遺傳差異造成的。遺傳的基礎(chǔ)又是DNA,所以我們應(yīng)該能夠在A和B的基因組上,找到DNA的差異,而這種DNA序列的差異最終貢獻了這24厘米的差異,GWAS就是想去找到這種DNA序列的差異。
于是我們找來1000個人,量了每個人的身高(表型),測了每個人的基因組,找出所有的基因組上差異的位點(基因型),對于每個差異的位點都去和表型做一個相關(guān)性的分析,給出p-value用來衡量表型和每個位點的相關(guān)性。如果和某一個位點非常相關(guān),那我們就找到了能夠影響身高的DNA差異!
GWAS分析需要準(zhǔn)備的材料:軟件、基因型數(shù)據(jù)和表型數(shù)據(jù)。
表型數(shù)據(jù)一般是課題研究者前期實驗動物群體飼養(yǎng)獲得的數(shù)據(jù),網(wǎng)上也有很多共享的數(shù)據(jù)。
表型數(shù)據(jù)統(tǒng)計分析:邏輯回歸(表型數(shù)據(jù)為二元);線性回歸(表型數(shù)據(jù)為連續(xù)性變量);表型數(shù)據(jù)正態(tài)分析(如果不是正態(tài)分布,需轉(zhuǎn)換處理為正態(tài)分布);表型數(shù)據(jù)均值、中值、最大值、最小值;影響因子對表型的影響分析。
基因型數(shù)據(jù)一般是測序下機數(shù)據(jù)經(jīng)SNP calling、基因型填補等后拿到的**.vcf文件,后續(xù)根據(jù)研究者的課題要求和條件進行質(zhì)控(Quality control),群體結(jié)構(gòu)分層及親緣關(guān)系/PCA等處理。處理好以上文件后,進行最重要的關(guān)聯(lián)分析(當(dāng)然以上也很重要),接下來正式重演這個GWAS分析。(質(zhì)控、call SNP以及表型數(shù)據(jù)統(tǒng)計分析無;直接畫圖 相關(guān)可能遇到的問題可在簡書或知乎私信我,這篇文章在知乎也有發(fā)可以復(fù)制代碼
重演一篇傻瓜式GWAS分析|培養(yǎng)興趣專用 - 知乎)
數(shù)據(jù):測試一組狗全基因組的遺傳變異與分類形狀(毛皮顏色)之間的關(guān)系。
#為GWAS分析創(chuàng)建一個工作目錄,并下載數(shù)據(jù);
#創(chuàng)建工作目錄
mkdir ~/GWAS
cd ~/GWAS
#樣本VCF文件和表型數(shù)據(jù)下載
wget https://de.cyverse.org/dl/d/E0A502CC-F806-4857-9C3A-BAEAA0CCC694/pruned_coatColor_maf_geno.vcf.gzwget https://de.cyverse.org/dl/d/3B5C1853-C092-488C-8C2F-CE6E8526E96B/coatColor.pheno
#pheno為處理好的表型文件 vcf為基因組文件
#解壓VCF文件之后 可以看看數(shù)據(jù)
gunzip pruned_coatColor_maf_geno.vcf.gz
#查看vcf
less pruned_coatColor_maf_geno.vcf
#查看表型數(shù)據(jù) 前兩列也是FID and IID,第三列是表型。
less coatColor.pheno
VCF文件全稱為Variant Call Format,表示基因組的變異信息,通常為GATK和Samtools軟件處理所得到。
查看文件發(fā)現(xiàn),這個數(shù)據(jù)涉及53只小狗的476840個SNP,表型:24只黃毛犬 29只深色毛犬
##########################正式開始###########################
#數(shù)據(jù)有了,接下來安裝軟件,GWAS分析的軟件有很多,這里介紹使用主流軟件Plink和vcftools來準(zhǔn)備文件,R語言統(tǒng)計畫圖。
#下載安裝Plink 不建議使用 #sudo apt-get install Plink 進行下載
cd /usr/local/bin/
sudo wget http://zzz.bwh.harvard.edu/plink/dist/plink-1.07-x86_64.zip
sudo rm -f plink_linux_x86_64.zip
cd plink-1.07-x86_64/
echo export PATH=$PATH:$(pwd) >> ~/.bashrc
source ~/.bashrc
#下載vcftools,將編譯后的文件安裝到系統(tǒng)
git clone https://github.com/vcftools/vcftools.git
cd vcftools
./autogen.sh
./configure
make
sudo make install
#安裝R和RStudio
#安裝R
sudo apt-get update && sudo apt-get install -y r-base r-base-dev
#RStudio
sudo apt-get install gdebi-core
wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-1.2.5033-amd64.deb
sudo gdebi rstudio-server-1.2.5033-amd64.deb
#qqman包適用于畫圖 使用R- qqman軟件統(tǒng)計畫圖,安裝qqman軟件包
Rscript -e "install.packages('qqman', contriburl=contrib.url('http://cran.r-project.org/'))"
#接下來正式使用PLINK 準(zhǔn)備文件格式 #將VCF文件轉(zhuǎn)換為Plink可讀文件格式(map,ped),然后轉(zhuǎn)換為Plink二進制格式(fam,bed,bim)
cd ~/GWAS
vcftools --vcf pruned_coatColor_maf_geno.vcf --plink --out coatColor
plink --file coatColor --allow-no-sex --dog --make-bed --noweb --out coatColor.binary
#此時應(yīng)該看到以上格式結(jié)尾的5個文件(**.map,**.ped,**.fam,**.bed,**.bim)
#候選等位基因列表創(chuàng)建,awk編輯文本
cat pruned_coatColor_maf_geno.vcf | awk 'BEGIN{FS="\t";OFS="\t";}/#/{next;}{{if($3==".")$3=$1":"$2;}print $3,$5;}'? > alt_alleles
#文件準(zhǔn)備完畢,運行這個簡單的關(guān)聯(lián)分析 #關(guān)于模型的選擇和協(xié)變量的調(diào)試還需要按照自己的要求學(xué)習(xí)修改 #plink各選項含義可查看官方文檔;
plink --bfile coatColor.binary --make-pheno coatColor.pheno "yellow" --assoc --reference-allele alt_alleles --allow-no-sex --adjust --dog --noweb --out coatColor
#畫曼哈頓圖
#統(tǒng)計圖
unad_cutoff_sug=$(tail -n+2 coatColor.assoc.adjusted | awk '$10>=0.05' | head -n1 | awk '{print $3}')
unad_cutoff_conf=$(tail -n+2 coatColor.assoc.adjusted | awk '$10>=0.01' | head -n1 | awk '{print $3}')
#繪圖
Rscript -e 'args=(commandArgs(TRUE));library(qqman);'\
'data=read.table("coatColor.assoc", header=TRUE); data=data[!is.na(data$P),];'\
'bitmap("coatColor_man.bmp", width=20, height=10);'\
'manhattan(data, p = "P", col = c("blue4", "orange3"),'\
'suggestiveline = 12,'\
'genomewideline = 15,'\
'chrlabs = c(1:38, "X"), annotateTop=TRUE, cex = 1.2);'\
'graphics.off();' $unad_cutoff_sug $unad_cutoff_conf
文件coatColor_man.bmp即為結(jié)果圖,可傳輸查看。
查詢發(fā)現(xiàn):最相關(guān)的突變是已知的控制色素生成的MC1R(c.916C > T)中的無義SNP。
congratulations! 如果做到這一步,我們已經(jīng)掌握了簡單的Linux命令行執(zhí)行、大體體驗了GWAS分析,是否感覺數(shù)據(jù)分析原理并沒有那么難,快趁熱學(xué)習(xí)一下文中沒有涉及的質(zhì)控內(nèi)容,這將對接下來學(xué)習(xí)有很大幫助。
這里需要注意在平常動植物中,不使用plink 進行關(guān)聯(lián)分析,可以在數(shù)據(jù)過濾處理的時候使用,但是在關(guān)聯(lián)分析的時候不使用。一般是在人類 GWAS 才會使用 plink 進行關(guān)聯(lián)分析。因為它沒辦法實現(xiàn)復(fù)雜模型,就是 MLM 等模型。
在動植物中關(guān)聯(lián)分析 tassel 使用的最多。 上百萬標(biāo)記,幾百個樣本要幾十G 上百G 內(nèi)存。
gapit 主要是基于 R 軟件 。