当前位置: 首页 > news >正文

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

相关文章:

  • c++基础知识(六)
  • langchain应用-RAG
  • 【Unity Shader编程】之图元装配与光栅化
  • springcloud的组件及作用
  • 2012年下半年软件设计师上午题知识点及其详细解释(附真题及答案解析)
  • 【linux】更换ollama的deepseek模型默认安装路径
  • Vue 3 生命周期和生命周期函数
  • sql server查询IO消耗大的排查sql诊断语句
  • 机器学习入门实战 4 - 基本模型
  • 【SQL】SQL多表查询
  • FastAdmin后端列表导入表格数据
  • 瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库
  • 确保设备始终处于最佳运行状态,延长设备的使用寿命,保障系统的稳定运行的智慧地产开源了
  • HTTP2.0 和 HTTP1.1 的区别
  • 【分布式理论13】分布式存储:数据存储难题与解决之道
  • JavaEE基础之- 数据库与建模工具
  • BSD协议栈:UDP输入
  • Scrapy安装,创建Scrapy项目,启动Scrapy爬虫
  • 【Vue】集成Antlr4
  • k8s-对接NFS存储
  • A股高开高走,三大股指涨超1.1%:两市成交1.3万亿元,近5000股收涨
  • 夹缝中的责编看行业:长视频之殇,漫长周期
  • 公安部:“五一”假期全国社会大局稳定,治安秩序良好
  • 外卖大战之外,缝隙中的校园到寝外卖和那些送餐的大学生们
  • 中国驻美大使谢锋:经贸关系不是零和游戏,滥施关税损人害己
  • 演员扎堆音乐节,是丰富了舞台还是流量自嗨?