教程 | 简单粗暴的叶绿体基因组 SNP Calling 流程

写在前面

最近主要忙一些植物群体基因组数据的项目。前面提过,赶时间,全基因组的 SNP Calling 使用 GATK 流程,还是需要跑上两三天。但这个还是耗时,并不一定能够赶上工期。于是我将目标转移到叶绿体基因组。我们都很清楚,叶绿体基因组在植物中极其保守,尤其是同一科属内,更不提同一物种的不同亚类。我们组装了关注物种的一个叶绿体基因组后,即完全可以进行相关 SNP 鉴定。
我关注的物种,叶绿体基因组组装出来,大小是 170Kb,说实话,相对于 600Mb 的基因组来说,确实很小。SNP Calling 也会很快。
但为了加速流程,我选择了最简单粗暴的方式,使用 samtools + bcftools,具体可参考流程(发现这个流程时,我还是有点激动,毕竟是官方文档)。其实我刚接触生信的之后(2015年),那会不知道是否有 bcftools 或者 SNP calling 的功能,我是直接手动解 samtools 的 mpileup 输出。

http://samtools.sourceforge.net/mpileup.shtml

读段回帖、排序与去重复

安装必要的程序,除非环境中已经有相关程序

conda install bwaconda install samtoolsconda install bcftools

注意,后两者安装后,建议直接再 Update 一下

conda update samtoolsconda update bcftools

下载并准备 Picard 软件,用于标记重复,事实上,似乎可以直接使用 sambamba 软件

wget https://github.com/broadinstitute/picard/releases/download/2.25.7/picard.jar

建立索引,需要注意 - GetOrganelle 输出的基因序列 ID 比较复杂 - 应该简化

# cpGenome.fa 即叶绿体基因组bwa index cpGenome.fa

序列比对到叶绿体基因组上

# 将双端测序数据,比对到 叶绿体基因组ls *.m1.fq|perl -lpe 's/.m1.fq//'|parallel -j 10 "bwa mem -t 4 -M cpGenome.fa {}.m1.fq {}.m2.fq 2>{}_map.log | samtools sort-O bam -@ 4 -o {}.sorted.bam 1>{}.sort.log 2>&1"

标记重复

ls *.m1.fq|perl -lpe 's/.m1.fq//'|parallel -j 10 "java -jar picard.jar MarkDuplicates \ I={}.sorted.bam \ O={}.sorted.mkdup.bam \ M={}.sorted.mkdup.metrics 1>{}_mkdup.log 2>&1"

Call SNP

# 发现 bcftools 也有 mplieup 功能,有意思bcftools mpileup -Ou --threads 40 -f 108.ref.cpGenome.fa *.mkdup.bam|bcftools call -vm --ploidy 1 --threads 40 > direct.vcf

进行 PCA 分析

# 考虑调整 --mafplink --maf 0.02 --allow-extra-chr --vcf direct.vcf --pca header tabs -out plink.stat# 提取 PC1 和 PC2,使用 R 或者其他工具进行散点图可视化即可perl -lpe 's/.sorted.mkdup.bam//g' plink.stat.eigenvec|cut -f1,3,4 > pca.plot.tab

绘制进化树(参考连接

# 使用 VCF2Dis 软件快速计算样品距离矩阵wget https://github.com/BGI-shenzhen/VCF2Dis/archive/refs/tags/1.44.zipunzip 1.44.zipchmod -R a+x VCF2Dis-1.44/./VCF2Dis-1.44/bin/VCF2Dis -InPut direct.vcf -OutPut sample.vcf.dist

直接到 FastME2 网站工具上,基于距离矩阵,绘制进化树

写在最后

整体流程简单,不做赘述。有时候想想,有些东西还是记录下来,以免后续用到时,还得翻翻旧硬盘,找找流程。
当然,更多时候,似乎有新的软件和工具可以使用了。

(0)

相关推荐