vcf2phylip v2.8-生信工具46
vcf2phylip.py
01 介绍
将VCF格式的SNP转换为PHYLIP、NEXUS、二进制NEXUS或FASTA对齐格式用于系统发育分析
简要描述:
该脚本适用于Python 3,输入为VCF文件,使用SNP基因型生成矩阵以供系统发育分析,支持PHYLIP(松散版)、FASTA、NEXUS或二进制NEXUS格式。对于杂合SNP,脚本会生成共识并将IUPAC核苷酸模糊代码写入最终矩阵。支持任何倍性水平,并会自动检测。该代码经过优化,能够处理大规模的VCF矩阵(数百个样本和数百万个基因型),例如,在我们的测试中,它能够在约27分钟内处理一个20GB的VCF文件(大约300万个SNP × 650个个体)。脚本的初始版本只生成PHYLIP矩阵,但现在我们添加了其他流行的格式,包括用于在BEAST中通过SNAPP插件分析SNP的二进制NEXUS文件(仅适用于二倍体基因型)。
此外,您可以选择每个SNP所需的最小样本数,以控制最终的缺失数据量。由于系统发育软件通常会将树根定位在对齐的第一个序列上(例如RAxML、IQTREE和MrBayes),该脚本还允许您指定一个外组序列,该序列将作为对齐中的第一个序列。
压缩的VCF文件可以直接分析,但扩展名必须为.vcf.gz。
该脚本已通过以下工具生成的VCF文件进行测试:pyrad v.3.0.66、ipyrad v.0.7.x、Stacks v.1.47、dDocent、GATK、freebayes和graphtyper。
02 官网
https://github.com/edgardomortiz/vcf2phylip
03 使用方法
usage: vcf2phylip.py [-h] -i FILENAME [--output-folder FOLDER]
[--output-prefix PREFIX] [-m MIN_SAMPLES_LOCUS]
[-o OUTGROUP] [-p] [-f] [-n] [-b] [-r] [-w] [-v]
该脚本将VCF格式的SNP集合转换为PHYLIP、FASTA、NEXUS或二进制NEXUS文件,用于系统发育分析。代码已针对大于1GB的VCF文件进行了优化。对于小型VCF文件,当物种数增加时,算法会变慢(但仍然很快)。
允许任何倍性,但仅对于二倍体VCF会生成二进制NEXUS。
可选参数:
-h, --help
:显示帮助信息并退出-i FILENAME, --input FILENAME
:输入VCF文件的名称,可以是压缩格式(.vcf.gz)--output-folder FOLDER
:输出文件夹的名称,如果文件夹不存在则会创建(默认与输入文件相同)--output-prefix PREFIX
:输出文件的前缀(默认与输入VCF文件名相同)-m MIN_SAMPLES_LOCUS, --min-samples-locus MIN_SAMPLES_LOCUS
:每个SNP位置所需的最小样本数(默认为4)-o OUTGROUP, --outgroup OUTGROUP
:外组的名称,该序列将作为对齐的第一个物种-p, --phylip-disable
:默认生成PHYLIP矩阵,除非启用此标志-f, --fasta
:生成FASTA矩阵(默认禁用)-n, --nexus
:生成NEXUS矩阵(默认禁用)-b, --nexus-binary
:为二倍体基因型生成二进制NEXUS矩阵以进行SNAPP分析(默认禁用)-r, --resolve-IUPAC
:随机解析杂合基因型,以避免矩阵中的IUPAC模糊性(默认禁用)-w, --write-used-sites
:保存通过过滤器并用于对齐的坐标列表(默认禁用)-v, --version
:显示程序版本号并退出
04 案例
示例:
在以下示例中,如果您更改了vcf2phylip.py
文件的权限为可执行文件,则可以省略python
。
示例1:使用默认参数创建一个最小样本数为4的PHYLIP矩阵:
python vcf2phylip.py --input myfile.vcf
# 等同于:
python vcf2phylip.py -i myfile.vcf
# 该命令将创建一个名为`myfile_min4.phy`的PHYLIP文件
示例2:使用最小样本数为60创建PHYLIP和FASTA矩阵:
python vcf2phylip.py --input myfile.vcf --fasta --min-samples-locus 60
# 等同于:
python vcf2phylip.py -i myfile.vcf -f -m 60
# 该命令将创建名为`myfile_min60.phy`的PHYLIP文件和名为`myfile_min60.fasta`的FASTA文件
示例3:创建所有输出格式,并选择“sample1”作为外组:
python vcf2phylip.py --input myfile.vcf --outgroup sample1 --fasta --nexus --nexus-binary
# 等同于:
python vcf2phylip.py -i myfile.vcf -o sample1 -f -n -b
# 该命令将创建`myfile_min4.phy`的PHYLIP文件、`myfile_min4.fasta`的FASTA文件、`myfile_min4.nexus`的NEXUS文件和`myfile_min4.bin.nexus`的二进制NEXUS文件
示例4:如果您只希望创建NEXUS矩阵并禁用PHYLIP矩阵:
python vcf2phylip.py --input myfile.vcf --phylip-disable --nexus
# 等同于:
python vcf2phylip.py -i myfile.vcf -p -n
# 该命令只会创建名为`myfile_min4.nexus`的NEXUS矩阵
示例5:如果您不希望在PHYLIP矩阵中出现IUPAC模糊表示的杂合基因型:
python vcf2phylip.py --input myfile.vcf --resolve-IUPAC
# 等同于:
python vcf2phylip.py -i myfile.vcf -r
# 该命令将只创建一个名为`myfile_min4.phy`的PHYLIP矩阵,其中杂合基因型的IUPAC模糊性已随机解析
示例6:指定输出文件夹和输出前缀:
python vcf2phylip.py -i myfile.vcf.gz --output-folder /data/results --output-prefix mymatrix
# 该命令将在`/data/results`文件夹中创建名为`myfile.min4.phy`的文件
示例7:写入用于对齐的坐标列表:
python vcf2phylip.py -i myfile.vcf.gz -w
# 该命令将创建名为`myfile.min4.phy`的PHYLIP文件,并生成`myfile.min4.used_sites.tsv`的坐标列表
05 引用
Ortiz, E.M. 2019. vcf2phylip v2.0: convert a VCF matrix into several matrix formats for phylogenetic analysis. DOI:10.5281/zenodo.2540861