pyani提供了一个计算基因组规模平均核苷酸身份的软件包和脚本。

pyani的Python项目详细描述


readme.md(pyani)

pyani pypi versionpyani licensepyani travisci构建状态pyani codecov.io coveragepyani docker pulls

概述

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.segnisnc_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

Caulobacter测试数据的动画百分比标识菌核测试数据的动画对齐范围菌核测试数据的动画对齐相似性错误

脚本: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 pyani
0

注意:您必须提供一封有效的电子邮件,以便向NCBI确认您的身份,以便进行故障排除。

每次下载尝试的重试次数,以及bat的大小ch下载可以修改。默认情况下,脚本将尝试20次下载重试,并批量获得10000个序列。

依赖关系

注意,如果您使用的是0.1.3.2或更高版本,并且安装时使用pip install pyani

对于早期版本,您可以使用pip install-r requirements.txt(使用此存储库中的requirements.txt文件)来满足依赖关系。

用于ANI分析

定位工具

对于图形输出

方法和输出说明

平均核苷酸同一性(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)。
  • anibaniblastall:描述每个输入序列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的源代码符合flake8linting和black代码样式。使用预提交包(包含在requirements.txt中)将它们强制作为预提交挂钩。

blackflake8钩子在.pre commit config.yaml中定义。flake8的自定义设置保存在.flake8

要在本地计算机上的代码库中启用预提交检查,请在此存储库的根目录中执行以下命令:

pip3 install pyani
1

许可

除非另有说明,否则所有代码均受以下协议的约束:

pip3 install pyani
2

麻省理工学院的执照

版权所有(c)2014-2019詹姆斯·赫顿研究所

兹免费准许任何人取得副本 本软件和相关文档文件("软件")的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的所有副本或大部分。

本软件按"原样"提供,无任何形式的保证,明示或 默示的,包括但不限于可操作性, 适合某一特定目的和非侵犯性。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在诉讼或合同中,侵权行为或其他,产生于, 不属于或与软件、使用或其他交易有关 软件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVA web服务从Android Ksoap接收空参数   java在Try/Catch(单元测试)中捕获ClassCastException   java从文件反序列化多个对象而不使用while(true)   JavaSpringDataGemFire:自定义过期示例   java我可以将字符串转换为变量吗?   java找不到任何METAINF/持久性。类路径中的xml文件   java为什么lucene 4.0删除IndexWriter类的两个构造函数?   数据库生物特征指纹   java LogManager忽略已启用的断言   java如何在运行时使用JAXB注释   java将16位pcm转换为8位   如何绘制Java 3D切片形状或切割件   Java/Android:无法启动活动组件信息{…}:JAVAlang.NullPointerException   java为什么html内容不能匹配一个相当简单的正则表达式?   java如何检查服务器端修改的表单字段   java组织。openqa。硒。遥远的与远程浏览器通信时发生UnreachableBrowserException错误   java中svd的文本挖掘问题   javaspringboot:deploy。jar作为init。d服务收到404错误   箭头键的java代码   java异常致命异常:无法在actionBar行上启动activity ComponentInfo。setCustomView(R.layout.actionbar\u custom\u view\u home);