跑通GWAS,用这些脚本就够了

最近跑通了一遍GWAS分析,全程在linux操作,虽然具体还有好多需要微调的地方,先把代码整理分享出来mark一下

前期准备

1.理论知识

强烈推荐百迈客云课堂课程GWAS生物信息培训课程 

或者可以看看我的gwas相关文章

GWAS基本分析内容 (课程学习笔记)

常用GWAS统计方法和模型简介 (课程学习笔记)

临床生物信息学中的GWAS分析 (内附扩展阅读)

精细定位——降低 GWAS的复杂度 (文献研读)

2.数据下载

如果你没有自己的数据又想做gwas分析的话,可以选择3000水稻基因组的http://snp-seek.irri.org/数据库直接下载,vcf、表型数据甚至plink bed/bim/fam文件直接下载,gwas结果也做到了可视化

另外推荐华农谢为博团队开发的这个网站 http://ricevarmap.ncpgr.cn/v2/ 非常好用,提供数据下载和gwas可视化结果)

基因型数据可以根据bioproject accession编号从NCBI上下载:

表型数据直接从网站上以excel或csv格式导出:

533份样品下载和比对挺耗时和占内存的,建议保留bam文件,其他的包括fastq(由bam能转成fq)、中间文件都可以删掉,数据过滤质控很快,整个项目做下来大概耗时一个多月吧

第一步 SNP calling

需要安装的软件:BWA和GATK/samtools

一、BWA比对

1.构建index

bwa index -a is ref.fa  或bwa index -a bwtsw ref.fa (>2G)

samtools faidx ref.fa

java -jar $picard/CreatSequenceDictionary.jar R=ref.fa O=ref.dict

2.每个样分别比对到参考基因组

bwa mem  -t 5  -M -R "@RG\tID:A\tSM:A" ref.fa  A1_1.fq A1_2.fq > A1.sam  &

bwa mem  -t 5  -M -R "@RG\tID:A\tSM:A" ref.fa  A2_1.fq A2_2.fq > A2.sam   &     以此类推.......(-M 将shorter split hits标记为次优,可以兼容Picard.-R 每个标记号需不同,方便后面合并)

3.SortSam

java -jar $picard/SortSam.jar I=A.sam O=A1.sort.bam SO=coordinate

4.MarkDuplicates

java -jar $picard/MarkDuplicates.jar I=A1.sort.bam O=A1.Mark.bam M=A1.metrics 

二、SNP检测

1.RealignerTargetCreator

java -jar $GATK -R $ref -T RealignerTargetCreator -I A1.Mark.bam -o A1.realign.interval_list

2.IndelRealigner

java -jar $GATK -R $ref -T IndelRealigner -I A1.Mark.bam  -o A1.realn.bam -targetIntervals A1.realign.interval_list

3.HaplotypeCaller

 java -jar $GATK -T HaplotypeCaller -R $ref -ERC GVCF -I A1.realn.bam      --variant_index_type LINEAR --variant_index_parameter 128000     -o A1.gvcf

4.CombineGVCFs

 java -jar $GATK -T CombineGVCFs -R $ref --disable_auto_index_creation_and_locking_when_reading_rods --variant A1.gvcf A2.gvcf A3.gvcf  ....   -o combine.gvcf  (这一步需要把每个样品的gvcf合并)

5.GenotypeGVCFs

java  -jar $GATK -T GenotypeGVCFs -nt 4 -R $ref --disable_auto_index_creation_and_locking_when_reading_rods    -o test_final.vcf --variant combine.gvcf

第二步 基因型填补

需要安装的软件:Tassel/beagle等

1. tassel (-LDKNNilmputationPlugin参数有误,没有跑成功, 有朋友指出LDKNNi后面是大写的i,不是小写的L,以后再试试)

perl /home/user/soft/tassel_v5/run_pipeline.pl -Xms512m -Xmx5g -importGuess  test_final.vcf -LDKNNiImputationPlugin -highLDSSites 50 -knnTaxa 10 -maxLDDistance 100000000 -endPlugin -export test.imputed.vcf -exportType VCF

也可以java -jar sTASSEL.jar 在窗口操作 记得给服务器接显示屏

2.beagle

java -jar beagle.08Jun17.d8b.jar gt=test_final.vcf out=test.imputed.vcf

第三步 数据筛选及格式转换

需要安装的软件:plink等

1.按MAF>0.05和缺失率<0.1过滤

/home/user/soft/plink --vcf test.imputed.vcf --maf 0.05 --geno 0.1 --recode vcf-iid --out test.filter --allow-extra-chr (非数字染色体号ChrUn/Sy用此参数, 建议尽量把染色体号转成数字,另外需要对vcf中的标记ID进行编号)

2.对标记进行LD筛选

/home/user/soft/plink --vcf test.filter.vcf --indep-pairwise 50 10 0.2 --out test.filterLD --allow-extra-chr (.in文件里是入选的标记id)

3.提取筛选结果

/home/user/soft/plink --vcf test.filterLD.vcf --make-bed --extract test.filter.in --out  test.filter.prune.in

4.转换成structure/admixture格式

/soft/plink --bfile test.filter.prune.in --recode structure --out test.filter.prune.in  #生成. recode.strct_in为structure输入格式

/soft/plink --bfile test.filter.prune.in --recode 12 --out test.filter.prune.in  #生成.ped为admixture输入格式

第四步 群体结构

需要安装的软件:structure/admixture等

这里我选了比较简单admixture来做 k值范围1到13

/soft/admixture_linux-1.3.0/admixture --cv test.filter.ped 1 >>log.txt

/soft/admixture_linux-1.3.0/admixture --cv test.filter.ped 2 >>log.txt

.......

/soft/admixture_linux-1.3.0/admixture --cv test.filter.ped 13 >>log.txt

wait

grep "CV error" log.txt >k_1to13

取CV error最小时的k值=10,  其中test.filter.prune.in.10.Q结果文件作为关联分析的输入源文件(去掉最后一列 添加表头和ID)

第五步 亲缘关系/PCA(选做)

需要安装的软件: tassel等( PCA分析可以用R包,已经做了群体结构这里就没做PCA分析)

perl /tassel_v5/run_pipeline.pl -importGuess test_impute.vcf -KinshipPlugin  -method Centered_IBS -endPlugin -export test_kinship.txt -exportType SqrMatrix

第六步 关联分析

需要安装的软件: tassel/GAPIT/FaSt-LMM等( GAPIT很强大,要装很多R包,自动做图可视化。FaSt-LMM以后打算尝试一下)

输入文件的格式需要手动修改一下,也比较简单 (如图)

test.best_k10.txt
test.trait.txt
test_kinship.txt

1.vcf转hapmap格式

perl /tassel_v5/run_pipeline.pl -fork1 -vcf test.imputed.vcf  -export test -exportType Hapmap -runfork1

2.SNP位点排序

perl /tassel_v5/run_pipeline.pl -SortGenotypeFilePlugin -inputFile test.hmp.txt  -outputFile test_sort -fileType Hapmap

得到test.hmp.txt

3. GLM模型

perl /tassel_v5/run_pipeline.pl -fork1 -h test_sort.hmp.txt -fork2 -r test.trait.txt -fork3 -q test.best_k10.txt -excludeLastTrait -combine4 -input1 -input2 -input3 -intersect -glm -export test_glm -runfork1 -runfork2 -runfork3

4.MLM模型

perl /tassel_v5/run_pipeline.pl -fork1 -h test_sort.hmp.txt -fork2 -r test.trait.txt -fork3 -q test.best_k10.txt -excludeLastTrait -fork4 -k test_kinship.txt -combine5  -input1 -input2 -input3 -intersect -combine6 -input5 -input4 -mlm -mlmVarCompEst P3D -mlmCompressionLevel None -export test_mlm -runfork1 -runfork2 -runfork3

最后得到关联分析的结果文件,喜大普奔!

当然GWAS分析需要根据实际项目材料的需要,灵活地选择分析方法,理解统计学、群体遗传学等原理,认识GWAS的特点和局限性还是很有必要的。这里只是简单地在linux上跑通了一遍常用的流程,有很多R包MVP,GAPIT等等可以做并且一键出图如CMplot~有很多不懂的地方需要多学习,毕竟大牛都是自己手动写脚本来分析,不怎么用软件的。。/(ㄒoㄒ)/


其他参考:http://blog.sina.com.cn/s/blog_83f77c940102w3d2.html

https://wenku.baidu.com/view/efdb4115a2161479171128e9.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • ANNOVAR的安装 ANNOVAR网址 log in之后才能download,使用教育机构后缀的邮箱即可注册。 ...
    面面的徐爷阅读 22,868评论 1 26
  • 这篇文章很长,超过1万字,是本系列中最重要的一篇,因为我并非只是在简单地告诉大家几条硬邦邦的操作命令。对于新手而言...
    黄树嘉阅读 32,618评论 20 194
  • 古代杂交事件为慈鲷科鱼类的适应辐射提供动力 Ancient hybridization fuels rapid c...
    智取鸟氨酸阅读 4,580评论 0 5
  • 在这个夜晚,想写一写文字,不虚不伪、平平淡淡地写,你静静地看。 我有一个习惯,在一件事发生很久,我怕忘记我会想要写...
    细愫阅读 267评论 0 2
  • 有人在你十八岁的时候掏空口袋送了你一双自以为非常棒的高跟鞋。那么,二十岁的时候又是谁会送你一件晚礼服。
    白玉灵阅读 195评论 0 0