pyani提供了一个计算基因组规模平均核苷酸身份的软件包和脚本。
pyani的Python项目详细描述
readme.md(pyani)
概述
pyani
是python3模块,它支持计算全基因组比较的平均核苷酸身份(ani)和相关度量,并提供相关的图形摘要输出。在可用的情况下,它利用多核系统,并可以与sge/oge类型的作业调度程序集成,用于序列比较。
pyani
将以下脚本安装到$path
:
average_nucleote_identity.py
启用命令行ANI分析。genbank_get_genomes_by_taxon.py
从NCBI下载公共可用基因组。delta_filter_wrapper.py
是在SGE/OGE系统上运行delta filter所需的助手脚本。
安装
安装pyani最简单的方法是使用pip3
:
pip3 install pyani
从0.1.3.2版开始,还应该安装所有必需的python包依赖项。在此版本(即0.1.3.1及更早版本)之前,您可以使用p i p-r
从该存储库中获取这些依赖项,并指向requirements.txt
:
pip3 install -r requirements.txt
Docker图像
pyani
的脚本也作为docker图像提供,可以作为容器在本地运行。要使用这些图像,请先安装Docker,然后运行相应的脚本问题:
docker run -v ${PWD}:/host_dir leightonpritchard/average_nucleotide_identity
或
docker run -v ${PWD}:/host_dir leightonpritchard/genbank_get_genomes_by_taxon
-v${pwd}:/host_dir
参数使docker容器能够看到当前目录。如果没有此参数,容器将无法看到您的输入文件或写入输出数据。
测试pyani
pyani
包括可以使用notest
运行的测试(包括使用coverage.py
的覆盖率测量),使用以下命令,从存储库根目录执行:
nosetests --cover-erase --cover-package=pyani --cover-html --with-coverage
覆盖率输出(默认情况下)将放在cover
子目录中,并可以加载到Web浏览器中。
运行pyani
脚本:average_nucleote_identity.py
安装在这个包中的average\u nucleote\u identity.py
脚本可以在命令行进行简单的ANI分析,并在后台使用py ani
模块。
您可以使用average_nucleotide_identity.py-h获得可用命令行选项的摘要
$ average_nucleotide_identity.py -h usage: average_nucleotide_identity.py [-h][-o OUTDIRNAME][-i INDIRNAME][-v][-f][-s FRAGSIZE][-l LOGFILE][--skip_nucmer][--skip_blastn][--noclobber][--nocompress][-g][--gformat GFORMAT][--gmethod GMETHOD][--labels LABELS][--classes CLASSES][-m METHOD][--scheduler SCHEDULER][--workers WORKERS][--SGEgroupsize SGEGROUPSIZE][--maxmatch][--nucmer_exe NUCMER_EXE][--blastn_exe BLASTN_EXE][--makeblastdb_exe MAKEBLASTDB_EXE][--blastall_exe BLASTALL_EXE][--formatdb_exe FORMATDB_EXE][--write_excel][--subsample SUBSAMPLE][--seed SEED][--jobprefix JOBPREFIX][…]
示例数据和输出可以在目录test_aniu_data
中找到。数据是4个分离株的染色体。可以使用命令行执行基本分析:
$ average_nucleotide_identity.py -i tests/test_ani_data/ -o tests/test_ANIm_output -m ANIm -g $ average_nucleotide_identity.py -i tests/test_ani_data/ -o tests/test_ANIb_output -m ANIb -g $ average_nucleotide_identity.py -i tests/test_ani_data/ -o tests/test_ANIblastall_output -m ANIblastall -g $ average_nucleotide_identity.py -i tests/test_ani_data/ -o tests/test_TETRA_output -m TETRA -g
下面的图形输出支持将nc_
和nc_
分配给同一物种(c.crescentus),并将另外两个分离物分配给不同物种(nc_
:c.segnis;nc_
:c.sp k31)。使用命令行:
average_nucleotide_identity.py -v -i tests/test_ani_data/ \ -o tests/test_ANIm_output/ -g --gformat png,pdf,eps \ --classes tests/test_ani_data/classes.tab \ --labels tests/test_ani_data/labels.tab
脚本:genbank_get_genomes_by_taxon.py
此软件包安装的脚本genbank get_genomes_by_taxon.py,允许从NCBI下载由分类单元ID指定的基因组。该脚本将下载NCBI分类树中指定节点或其下的分类单元的所有可用程序集。
可以使用以下命令行选项查看:
$ genbank_get_genomes_by_taxon.py -h usage: genbacnk_get_genomes_by_taxon.py [-h][-o OUTDIRNAME][-t TAXON][-v][-f][--noclobber][-l LOGFILE][--format FORMAT][--email EMAIL][--retries RETRIES][--batchsize BATCHSIZE][…]
例如,caulobacter的ncbi分类id是75,因此可以使用命令行获得所有公开可用的caulobacter序列:
pip3 install pyani0
注意:您必须提供一封有效的电子邮件,以便向NCBI确认您的身份,以便进行故障排除。
每次下载尝试的重试次数,以及bat的大小ch下载可以修改。默认情况下,脚本将尝试20次下载重试,并批量获得10000个序列。
依赖关系
注意,如果您使用的是0.1.3.2或更高版本,并且安装时使用pip install pyani
对于早期版本,您可以使用pip install-r requirements.txt
(使用此存储库中的requirements.txt
文件)来满足依赖关系。
用于ANI分析
- biopythonhttp://www.biopython.org
- numpyhttp://www.numpy.org/
- 熊猫http://pandas.pydata.org/
- scipyhttp://www.scipy.org/" rel="nofollow">http://www.scipy.org/
定位工具
- blast+可在
$path
中执行,或可在命令行上使用(anibanalysis需要)ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/latest/ - legacy blast可在
$path
中执行或在命令行上可用(aniblastall分析所必需)ftp://ftp.ncbi.nlm.nih.gov/blast/executables/release/latest/ - mummer在$path中的可执行文件,或可在命令行上使用的可执行文件(anim分析所必需的)http://mummer.sourceforge.net/
对于图形输出
- matplotlibhttp://matplotlib.org/
- seabornhttps://github.com/mwaskom/seaborn
方法和输出说明
平均核苷酸同一性(ANI)
该模块根据中描述的多种替代方法之一计算平均核苷酸身份(ANI),例如
- Richter M,Rossello Mora R(2009)改变了原核物种定义的基因组金标准。美国国家科学院程序106:19126-19131。doi:10.1073/pnas.0906412106。(ANI1020,动画,ANIB)
- Goris J、Konstantinidis KT、Klappenbach JA、Coenye T、Vandamme P等。(2007)DNA-DNA杂交值及其与全基因组序列相似性的关系。《国际综合进化生物学杂志》57:81-91。doi:10.1099/ijs.0.64483-0.
ani被认为是dna-dna的合适的硅替代物。 杂交(DDH),因此有助于划定物种界限。一 文献中物种界限的典型百分比阈值为95% ANI(如Richter等人2009)。
所有ANI方法都遵循基本算法:
- 将有机体1的基因组与有机体2的基因组对齐,并确定匹配区域
- 计算匹配区域的核苷酸同一性百分比,作为所有匹配区域的平均值
方法的不同在于:(1)使用了什么样的对齐算法,以及参数的选择(这会影响对齐的区域边界);(2)输入的是什么样的对齐(通常是固定大小的片段,或者是可用的最完整的程序集)。
- 动画:使用mummer(nummer)对齐输入序列。
- anib:使用blastn+对齐输入序列的1020nt片段
- aniblastall:使用传统blastn对齐输入序列的1020nt片段
- tetra:计算每个输入序列的四核苷酸频率
算法以格式正确的fasta多序列文件作为输入。一个有机体的所有序列都应该包含在n只有一个序列文件。尽管可以为每个输入基因组提供新的标签,但为了呈现图形输出,这些文件的名称用于标识,因此最好命名 它们是明智的。
输出将写入命名目录。输出文件因所选的ANI方法而异。
- 动画:mummer/numer.delta文件,描述每对序列的对齐方式。以制表符分隔的纯文本格式表的形式输出,描述:对齐覆盖率;总对齐长度;相似性错误;和百分比标识(anim)。
- anib和aniblastall:描述每个输入序列1020nt片段的fasta序列;blast核苷酸数据库-每组片段一个;blastn输出文件(制表符分隔的表格格式纯文本)-每对输入的比较一个均等。输出为以制表符分隔的纯文本表,描述:对齐覆盖率;总对齐长度;相似性错误;和百分比标识(anib或aniblastall)。
- tetra:用tab分隔的纯文本文件描述每个输入序列(tetra)中每个四核苷酸的z-分数分布之间的皮尔逊相关性。
如果选择图形输出,则输出目录还将包含pdf、png和eps文件,这些文件将各种输出度量表示为具有行和列树状图的热图。其他输出格式(例如SVG)可以用--gformat
参数指定。
开发人员注释
pyani
包位于两个主要分支下的github
master
是支撑pyani
最新/当前版本的源代码。它将(几乎)始终与最新版本同步,该版本位于https://github.com/widdowquinn/pyani/releases" rel="nofollow">https://github.com/widdowquinn/pyani/releases。此代码不应与发行版同步的唯一时间是在文档有修改时,或在发行版之前。development
是当前的pyani
的边缘版本。它应该(几乎)始终处于工作和可用状态,但可能不完整和/或某些功能可能丢失或仍在开发中。
###代码样式和预提交挂钩
预计pyani
的源代码符合flake8
linting和black
代码样式。使用预提交
包(包含在requirements.txt
中)将它们强制作为预提交挂钩。
black
和flake8
钩子在.pre commit config.yaml
中定义。flake8
的自定义设置保存在.flake8
要在本地计算机上的代码库中启用预提交检查,请在此存储库的根目录中执行以下命令:
pip3 install pyani1
许可
除非另有说明,否则所有代码均受以下协议的约束:
pip3 install pyani2
麻省理工学院的执照
版权所有(c)2014-2019詹姆斯·赫顿研究所
兹免费准许任何人取得副本 本软件和相关文档文件("软件")的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:
上述版权公告及本许可公告须包括在 软件的所有副本或大部分。
本软件按"原样"提供,无任何形式的保证,明示或 默示的,包括但不限于可操作性, 适合某一特定目的和非侵犯性。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在诉讼或合同中,侵权行为或其他,产生于, 不属于或与软件、使用或其他交易有关 软件。