一、前言:

研一进了纯生信课题组之后就开始了自学之路~,当前课题是做动物GWAS。因为自学的时候看了许多教程和代码都是针对人类基因组的,学习(copy)代码的时候各种大佬博主都是以人类基因组或者模式生物举例,如果做其他动物多多少少会有一些差别。
本文是本人学习过程中留下的随手笔记,不断更的话理论上包括三个部分:

  1. 动物全基因组测序(WGS)基础流程
  2. GWAS流程和数据挖掘、可视化
  3. GWAS后续工作

这篇是关于动物全基因组测序(WGS)基础流程的笔记,简单来说就两件事

  1. 从fastq到vcf
  2. 过滤

二、从fastq到vcf

主线是三个部分:①原始数据质控 ②数据预处理 ③变异检测。我们从拿到质控好的下机数据(fastq)开始,对动物WGS基础流程进行梳理。

(一)软件安装

从fastq文件到vcf的过程中用到了以下几个软件,其中BWA好像只能到官网下载安装,附上了别人写的指导链接,GATK和PLINK是可以在conda库里找到的,可以进conda虚拟环境后直接用以下命令安装。

1.miniconda

下载地址
https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

下载之后将安装包移动到指定位置安装

#安装
bash Miniconda3-latest-Linux-x86_64.sh
#查看conda版本号
conda --version

接下来创建并且激活conda环境

#创建conda虚拟环境 --name或者省略为-n,后接命名即可。如果有python需求,可以创建时指定,如conda create --name your_env_name python=3.7
conda create --name your_env_name
#激活虚拟环境
conda activate your_env_name
#退出虚拟环境
conda deactivate

因为要满足软件的各种奇奇怪怪的需求(版本支持),我会完全将conda环境与系统环境隔离,所以通常没有将conda加入环境变量。我会先cd到miniconda/bin目录下,用source activate命令激活conda中的base环境,然后将这里作为日常使用的环境。此时,从我自定义的虚拟环境中用conda deactivate命令退出时,会默认退出到base环境中。
conda安装使用也可以参考这一篇Conda 安装使用详解,下载速度慢可以自行添加镜像。

2.BWA

https://www.jianshu.com/p/19f58a07e6f4?from=groupmessage #该网站有详细指南

3.GATK

conda install -c bioconda gatk

安装后输入gatk

Usage template for all tools (uses --spark-runner LOCAL when used with a Spark tool)gatk AnyTool toolArgsUsage template for Spark tools (will NOT work on non-Spark tools)gatk SparkTool toolArgs  [ -- --spark-runner <LOCAL | SPARK | GCS> sparkArgs ]Getting helpgatk --list       Print the list of available toolsgatk Tool --help  Print help on a particular toolConfiguration File Specification--gatk-config-file                PATH/TO/GATK/PROPERTIES/FILEgatk forwards commands to GATK and adds some sugar for submitting spark jobs--spark-runner <target>    controls how spark tools are runvalid targets are:LOCAL:      run using the in-memory spark runnerSPARK:      run using spark-submit on an existing cluster --spark-master must be specified--spark-submit-command may be specified to control the Spark submit commandarguments to spark-submit may optionally be specified after -- GCS:        run using Google cloud dataproccommands after the -- will be passed to dataproc--cluster <your-cluster> must be specified after the --spark properties and some common spark-submit parameters will be translated to dataproc equivalents--dry-run      may be specified to output the generated command line without running it--java-options 'OPTION1[ OPTION2=Y ... ]'   optional - pass the given string of options to the java JVM at runtime.  Java options MUST be passed inside a single string with space-separated values.

4.PLINK

conda install -c bioconda plink

输入plink

PLINK v1.90b6.24 64-bit (6 Jun 2021)           www.cog-genomics.org/plink/1.9/
(C) 2005-2021 Shaun Purcell, Christopher Chang   GNU General Public License v3plink <input flag(s)...> [command flag(s)...] [other flag(s)...]plink --help [flag name(s)...]Commands include --make-bed, --recode, --flip-scan, --merge-list,
--write-snplist, --list-duplicate-vars, --freqx, --missing, --test-mishap,
--hardy, --mendel, --ibc, --impute-sex, --indep-pairphase, --r2, --show-tags,
--blocks, --distance, --genome, --homozyg, --make-rel, --make-grm-gz,
--rel-cutoff, --cluster, --pca, --neighbour, --ibs-test, --regress-distance,
--model, --bd, --gxe, --logistic, --dosage, --lasso, --test-missing,
--make-perm-pheno, --tdt, --qfam, --annotate, --clump, --gene-report,
--meta-analysis, --epistasis, --fast-epistasis, and --score."plink --help | more" describes all functions (warning: long).

出现如上文本即可。

(二)代码流程

放上的代码都省去了我自己的绝对路径和部分名称,如果要使用代码可以自己添加上自己的文件名和绝对路径。学习过程中也是感受到了读文档的重要性,很多查不到的问题在软件的文档或者github上都写得清清楚楚了~。

1. 为Reference 文件建立索引

2. 排序

3. 标记重复

4. 创建比对索引文件

#1 比对 加time是为了看时间,也可以不加(下同)
time bwa mem -t 4 -R '@RG\tID:39_1\tPL:illumina\tSM:39' 39_ref.fa 39_1.fq.gz 39_2.fq.gz | samtools view -Sb - > 39.bam && echo "** bwa mapping done **"
#2 ①用gatk排序
time gatk SortSam -I 39.bam -O 39.sort.bam --SORT_ORDER coordinate --TMP_DIR sort/39
#2 ②也可以用samtools,选一个就行。12.29日发现有同学samtools出来的文件报错,进行了修改
time samtools sort -@ 4 -m 4G -O BAM -o 39_sorted.bam 39.bam && echo "** BAM sort done"rm -f 39.bam
#3 标记PCR重复
time gatk MarkDuplicates -I 39_sorted.bam -O 39_markdup.bam -M 39_markdup_metrics.txt
rm -f 39.bam
rm -f 39_sorted.bam
#4 创建比对索引文件
time samtools index 39_markdup.bam && echo "** index done **"

其实看到做人类基因组的教程里面还有一步BQSR(Recalibration Base Quality Score),利用已有的snp数据库,建立相关性模型。可惜我做的物种并没有这么强大的snp数据库~,就跳过啦。接下来直接生成vcf文件

5. 单个体生成vcf文件

如果是单个体,那么到这里就可以直接生成vcf文件了,命令如下:

time gatk HaplotypeCaller -R 39_ref.fa -I 39_markdup.bam -O 39.vcf

6. 生成gvcf文件并合并

有多个个体的情况下,首先我们用HaplotypeCaller命令给每一个个体生成gvcf文件,然后用CombineGVCFs按染色体合并gvcf文件。这里我拿第39号个体和第20号染色体做示范,代码如下。

我是用python生成的批量shell脚本然后放到服务器上一起跑的,就会比较快。批量写脚本什么语言都可以,就按照你的需求循环改变名称、个体号、染色体号等各种字符就行。

#1 生成gvcf文件
gatk  HaplotypeCaller -R ref.fa -I 39.rmdup.bam --emit-ref-confidence GVCF --min-base-quality-score 10 -O 39.g.vcf.gz
#2 gvcf文件按染色体合并
ls *.g.vcf.gz > all_gvcf
gatk CombineGVCFs -R ref.fa -V all_gvcf.list  -L 20 -O chr20.merged.g.vcf.gz

因为我做的物种是羊,这一步结束了后我得到了26条以chr$i.merged.vcf.gz命名的分染色体合并完成的gvcf文件。接下来召唤基因型~

#3 生成基因型文件(这一步变成vcf了)
gatk GenotypeGVCFs -R ref.fa -V chr20.merged.g.vcf.gz -O chr20.genotype.vcf.gz

没有服务器的话可以这样依次跑26条染色体

for i in {1..26}; do gatk GenotypeGVCFs -R ref.fa -V chr$i.merged.g.vcf.gz -O chr$i.genotype.vcf.gz;done

有服务器的话还是建议批量写26个脚本一起提交,这一步大概一两天能完成(前几条染色体比较大,需要的时间是后面染色体的几倍)。

#5 对vcf进行merge
ls *genotype.vcf.gz > all_genotype.list
gatk MergeVcfs -I all_genotype.list -O sheep.raw.vcf.gz

大功告成~

三、过滤

上一步得到的是rawdata,我们还需要对原始数据做变异质控。质控是指通过一定的标准,最大可能地剔除假阳性的结果,并尽可能地保留最多的正确数据。

SNP过滤有两种情况,一种是仅根据位点质量信息(测序深度,回帖质量等)对SNP进行粗过滤。另一种是考虑除了测序质量以外的信息进行的过滤。 接下来我会分别介绍到这两种过滤。

从测序位点质量上看,在GATK HaplotypeCaller之后,首选的质控方案是GATK VQSR, 原理是利用自身数据和已知变异位点集的overlap,通过GMM模型构建一个分类器来对变异数据进行打分,从而评估每个位点的可行度。
虽然经常看到VQSR的教程,但是很可惜目前应该只有人类上可以做(还是需要高质量的已知变异集),所以我们其他物种只能做hard-filtering硬过滤了。

(一)硬过滤流程

以SNP的硬过滤流程为例

1. 首先我们选择出SNP

#1 选择出SNP
gatk SelectVariants -select-type SNP -V sheep.raw.vcf.gz -O sheep.raw.snp.vcf.gz

2. 硬过滤条件

过滤条件可以在GATK的官网找到,这个链接是官方文档对于过滤条件选择的解释,每一条都有。GATK硬过滤条件
在评论区找到了一个总结,截图如下表。

根据这个条件我们进行硬过滤

#2 执行硬过滤
gatk VariantFiltration \
-R ref.fa \
-V sheep.raw.snp.vcf.gz \
--filter-expression "QUAL < 30.0 || QD < 2.0 || MQ < 40.0 || FS > 60.0 || SOR > 3.0 || MQRankSum < -12.5 || ReadPosRankSum < -8.0" \
--filter-name LowQua \
-O sheep.snp.filter.vcf.gz
#3 根据过滤结果选择SNP
gatk SelectVariants 、
-R ref.fa \
-V sheep.snp.filter.vcf.gz \
--exclude-filtered --restrict-alleles-to BIALLELIC \
-O  sheep.snp.pass.vcf.gz

到这里硬过滤就完成了,接下来是常规化的MAF、缺失率等SNP过滤。

(二)根据MAF、缺失率进行过滤

这部分有很多软件都可以完成,我用plink做个示范,指定MAF(次要等位基因)过滤阈值为0.05,基因型缺失的过滤阈值为0.1。

#1 MAF、缺失率过滤
plink \
--vcf sheep.snp.pass.vcf.gz \
--sheep \
--keep-allele-order \
--allow-extra-chr \
--geno 0.1 --maf 0.05\
--recode vcf-iid \
--out sheep.mis0.1.maf0.05.vcf

值得注意的是,对于除了人以外的其他动物来说,染色体条数千奇百怪,如果是常见动物比如我这里的羊,那么就需要用
"–sheep"来告诉软件这是羊的基因组,否则就会报错。
“–allow-extra-chr"这条命令也是同样的功能,允许额外的染色体输入。”–recode vcf-iid "用以控制输出文件为vcf格式。

关于上文提到的批量运行的流程脚本都是,我有空会放上来~,有任何疑问和错误欢迎留言讨论喔。

四、参考资料

GATK 人类基因组标准流程 https://zhuanlan.zhihu.com/p/69726572?from_voters_page=true
GWAS(from 橙子牛奶糖)https://www.cnblogs.com/chenwenyan/p/11803311.html
全基因组测序(WGS)流程及实践 https://zhuanlan.zhihu.com/p/335770966

动物基因组测序基础分析流程总结(GWAS全流程第一部分:WGS基础流程)相关推荐

  1. 学习全基因组测序数据分析1:测序技术

    本文转载自微信公众号解螺旋的矿工,作者为黄树嘉,已获得授权.黄树嘉写了WGS系列的文章,堪称教科书级别的生物信息学习材料.虽然本平台只关注宏基因组领域,但此系列文章知识体系完善.干货满满,是值得每位专 ...

  2. 从零开始完整学习全基因组测序数据分析:第1节 测序技术

    欢迎订阅我们的微信公众号:基因学苑 本文转载自微信公众号解螺旋矿工,作者为黄树嘉,已获得授权.黄树嘉写了WGS系列的文章,堪称教材级别的生物信息学习材料.我们将陆续转载给大家.大家也可以关注公众号解螺 ...

  3. 2020.10.21【转载】丨GWAS全基因组关联分析流程

    感谢CSDN用户 追梦生信人 梳理了GWAS全基因组关联分析的整个流程,并提供了基本的命令,用到的软件包括BWA.samtools.gatk.Plink.Admixture.Tassel等,在此分享出 ...

  4. GWAS全基因组关联分析流程(BWA+samtools+gatk+Plink+Admixture+Tassel)

    我梳理了GWAS全基因组关联分析的整个流程,并提供了基本的命令,用到的软件包括BWA.samtools.gatk.Plink.Admixture.Tassel等,在此分享出来给大家提供参考. 一.BW ...

  5. 全基因组重测序基础分析

    本文仅为个人记录 流程说明 从零开始完整学习全基因组测序(WGS)数据分析:第3节 数据质控 2015a 2016a 全基因组测序数据获取后应该怎么分析 samtools samtools常用命令详解 ...

  6. 大熊猫源致病大肠杆菌CCHTP全基因组测序及耐药和毒力基因分析

    大熊猫源致病大肠杆菌CCHTP全基因组测序及耐药和毒力基因分析 邓雯文1,李才武1,赵思越2,李仁贵1,何永果1,吴代福1,杨盛智2,黄炎1,张和民1,邹立扣2 1. 中国大熊猫保护研究中心,大熊猫国 ...

  7. 【3月30日直播】新冠病毒全基因组测序——Midnight试剂盒及整体解决方案

    识别上方二维码 或点击「阅读原文」 免费报名参加 新冠疫情肆虐全球,基于Nanopore测序技术和数据分析在全球感染性疾病防控中的优势充分显现出来.该平台使用灵活.操作简便.产出快速.分析实时等特征为 ...

  8. 学习全基因组测序数据分析2:FASTA和FASTQ

    本文转载自微信公众号解螺旋的矿工,作者为黄树嘉,已获得授权.黄树嘉写了WGS系列的文章,堪称教科书级别的生物信息学习材料.虽然本平台只关注宏基因组领域,但此系列文章知识体系完善.干货满满,是值得每位专 ...

  9. 《全基因组测序WGS数据分析——1.DNA测序技术》学习笔记

    WGS(Whole Genome Sequencing) 指将物种细胞里面完整的基因组序列全部DNA,检测并排列,此技术几乎能够鉴定出基因组上任何类型的突变. 对于人类来说,全基因组测序的价值是极大的 ...

  10. 《全基因组测序WGS数据分析——4.构建WGS主流程》学习笔记

    流程的具体形式其实是次要的,WGS本质上只是一个技术手段,重要的是,要明白自己所要解决的问题是什么,所希望获取的结果是什么,然后再选择合适的技术. 这是WGS数据分析的流程图.流程的目的是准确检测出每 ...

最新文章

  1. 常用的深度学习的linux代码(1.实时监测GPU情况2.当前正常使用的GPU情况3.杀掉特定某个进程4.杀掉特定某个进程)
  2. C++:类-多态的学习和使用
  3. SQL Server 2019安装教程
  4. vue组件调用(用npm安装)
  5. python反向代理服务器_主机、服务器,代理服务器,反向代理服务器理解(自用)...
  6. Nacos集群(二)阿里自研弱一致性Distro协议核心实现
  7. java se下载完怎么启动_【Java SE】如何安装JDK以及配置Java运行环境
  8. WPS office 下载
  9. MyBatis整合Spring的实现(16)
  10. 机票大讲堂之机票的秘密
  11. 9 椭圆曲线密码体制
  12. 大鱼吃小鱼c语言编程,scratch大鱼吃小鱼设计思路
  13. 【MySQL必知必会--理论】
  14. 【03】Linux笔记
  15. 大文件打包压缩成的几个小文件怎么解压?
  16. 《数据库系统概论》复习笔记
  17. UltraISO PE 绿色版9.1.2.2463
  18. Linux-selinux
  19. SpringMVC:通配符的匹配很全面, 但无法找到元素 ‘context:component-scan‘ 的声明
  20. 数据质量分析之校验规则模板

热门文章

  1. Django验证码——手机注册登录
  2. Typora免费版官网下载
  3. 回答一个关于产品经理的入门门槛高不高的问题
  4. iOS 打包流程教程
  5. AUTOCAD——射线命令
  6. OpenGL Assimp的骨骼动画
  7. U盘“请将磁盘插入U盘”的问题
  8. 京东广告联盟android,卓越、当当、京东三大广告联盟比较
  9. vue 前端下载excel文件模板
  10. IT菜鸟最实用的网站,只要不造轮子,都能解决。