使用Snippy构建细菌基因组SNP、core SNP和系统进化分析

snippy 是澳大利亚墨尔本大学的 Torsten Seemann 开发的用于细菌基因组 snps 、indels和core genome分析的软件,可以快速分析SNP和core SNP

1. 安装

利用conda安装

conda install  -c bioconda snippy -y

Mac安装

brew install brewsci/bio/snippy

Github安装最新版

cd $HOME
git clone https://github.com/tseemann/snippy.git
$HOME/snippy/bin/snippy --help
# 添加snippy以及依赖库的路径到环境变量中,可直接调用snippy
$ echo 'export PATH="$HOME/repos/snippy/bin:$HOME/repos/snippy/binary/linux:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

2. 核验安装是否完成

版本

snippy --version
# snippy 4.4.5

依赖

snippy --check
[19:00:45] This is snippy 4.4.5
[19:00:45] Written by Torsten Seemann
[19:00:45] Obtained from https://github.com/tseemann/snippy
[19:00:45] Detected operating system: darwin
[19:00:45] Enabling bundled darwin tools.
[19:00:45] Checking version: samtools --version is >= 1.7 - ok, have 1.9
[19:00:45] Checking version: bcftools --version is >= 1.7 - ok, have 1.9
[19:00:45] Checking version: freebayes --version is >= 1.1 - ok, have 1.3
[19:00:45] Checking version: java -version is >= 1.8 - ok, have 1.8
[19:00:45] Checking version: snpEff -version is >= 4.3 - ok, have 5.0
[19:00:45] Checking version: bwa is >= 7.12 - ok, have 7.17
[19:00:45] Dependences look good!

3. Calling SNPs

输入文件要求
  • FASTA或GENBANK格式的参考基因组(可以是多个contigs)
  • FASTQ或FASTA格式的序列文件(可以是压缩的.gz格式)
  • 可以是包含上诉序列的文件夹
变异类型说明
类型 例子
snp A => T
mnp GC => AT
ins ATT => AGTT
del ACGG => ACG
complex ATTC => GTTA
snippy最基本的用法,可以将二代测序数据比对到参考基因组,获得相对应的 snp:
echo ‘snippy -outdir 输出结果文件夹 --ref 参考基因组.gbk --pe1 包含路径的文件名.1.fq.gz --pe2 包含路径的文件名.2.fq.gz'>snippy_snp.sh
sh snippy_snp.sh
两条序列做SNP
echo 'snippy --outdir mut1 --ref ref.gbk --ctgs mut1.fasta' > two_snp.sh
sh two_snp.sh

4.core SNP系统发育分析

如果要将多个菌株比对到同一个参考基因组上,可以产生一个“core SNP”的比对,可用来建立具有高度分辨率的系统发育树(忽视可能的基因重组)。一个核心位点是指存在于所有细菌样本中的基因组位置。一个核心位点可以在每个细菌样本中具有相同的核苷酸("monomorphic"),也可以不同("polymorphic" or "variant")。如果我们忽略细菌中的的插入和缺失突变的复杂性,仅使用变异位点,这些就是核心SNP基因组(core SNP genome)。

输入文件
  • 一个使用相同参考基因组且含有多个序列的文件

使用 snippy-multi分析多个测序数据

为了便于将多个测序数据比对到参考基因组,推荐使用 snippy-multi。这个脚本的输入文件需要由制表符(tab)分割,输入文件可以是单端、双端和组装的测序数据(paired-end reads, single-end reads, 和 assembled contigs)。

mkdir core_snp
cd core_snp
vim input.tab
# input.tab = ID R1 [R2]
Isolate1    /path/to/R1.fq.gz   /path/to/R2.fq.gz
Isolate1b   /path/to/R1.fastq.gz    /path/to/R2.fastq.gz
Isolate1c   /path/to/R1.fa      /path/to/R2.fa
# single end reads supported too
Isolate2    /path/to/SE.fq.gz
Isolate2b   /path/to/iontorrent.fastq
# or already assembled contigs if you don't have reads
Isolate3    /path/to/contigs.fa
Isolate3b   /path/to/reference.fna.gz

输入文件准备完毕后,运行如下脚本生成输出文件。 snippy-multi会默认运行snippy-core最终生成核心基因组SNP比对文件,文件格式为core.*.

echo 'snippy-multi input.tab --ref Reference.gbk --cpus 16' > core_snp.sh
sh core_snp.sh

生成的core.full.aln文件是一个FASTA格式的多序列比对文件。文件里面包含了“-,N,X,n”这些字符,如果要进行后续的系统发育树构建记重组移除,需要使用snippy-clean_full_aln删除比对文件中所有奇怪的字符并替换为N

snippy-clean_full_aln core.full.aln > clean.full.aln
run_gubbins.py -p gubbins clean.full.aln
snp-sites -c gubbins.filtered_polymorphic_sites.fasta > clean.core.aln
FastTree -gtr -nt clean.core.aln > clean.core.tree.newick

此时,FastTree输出的newick文件可导入在线网站iTOL结合材料背景信息进行美化。

参考资料

Snippy官网:https://github.com/tseemann/snippy

你可能感兴趣的:(使用Snippy构建细菌基因组SNP、core SNP和系统进化分析)