最大似然系统发育推断

phylo-treetime的Python项目详细描述


构建状态>anaconda

readthedocs

treetime:最大似然年龄和祖先序列推断

概述

tree time为分子钟系统发育的祖先序列重建和推断提供了程序,即所有分支都按比例缩放的树,使得终端节点的位置与其采样时间相对应,而内部节点则放置在最有可能发散的时间。CE.

为了优化时间尺度系统发育的可能性,tree time使用一种迭代方法,首先根据给定的树的分支长度推断祖先序列,然后优化时间轴上无约束节点的位置,然后重复此循环。 唯一的拓扑优化是(可选的)多原子的分辨率,其方式与树上的采样时间约束最(近似)一致。 这个包被设计成在命令行上作为一个独立的工具使用,或者作为一个用于更大的系统发育分析工作流程的库使用。 treetime的文档位于readthedocs.org上

除了编写treetime脚本或通过命令行使用它之外,还有一个小型Web服务器,位于treetime.ch

甲型h3n2流感200个核酸序列的分子钟系统发育

查看我们的示例和教程

功能
  • 祖先序列重建(边缘和联合最大似然)
  • 分子钟树推断(边际和联合最大似然)
  • gtr模型的推断
  • 重新定位以使时间信号最大化,并优化根到尖端的距离与时间的关系
  • 简单的系统动力学分析,如结合模型拟合
  • 使用灵活的特定地点模型沿着树木进行序列进化。

目录

安装和先决条件

Treetime与Python2.7向上兼容,并在2.7、3.5和3.6上进行了测试。它取决于几个python库:

  • numpy,scipy,pandas:作为矩阵的各种数学运算 运算、数值积分、插值、最小化等。

  • Biopython:用于解析多序列比对和所有系统发育 功能性

  • matplotlib:打印的可选依赖项

您可以通过运行

  pip install .

在此存储库中。 您还可以通过从pypi安装treetime

  pip install phylo-treetime

您可能需要根权限才能进行系统范围的安装。或者,您只需在本地使用它treetime,无需安装。在这种情况下,只需下载并解压缩它,然后将treetime文件夹添加到$pythonpath。

命令行用法

tree time可以用作创建树时间对象并与之交互的python程序的一部分。下面描述的一组示例脚本说明了如何使用treetime来解决一些典型的问题,如祖先序列重建、重播、时间树推断等。

此外,可以从命令行使用treetime,其中的参数指定输入数据和参数。 树可以作为newick、nexus和phylip文件读取;fasta和phylip是受支持的对齐格式;元数据和日期可以作为csv或tsv文件提供,有关详细信息,请参见下面的

时间树

为了推断时间树,即分支长度反映时间而不是发散的系统发生树,tree time提供了以下命令:

  treetime --aln <input.fasta> --tree <input.nwk> --dates <dates.csv>

此命令将推断时间树、祖先序列、gtr模型以及可选的置信区间和合并模型。 有关此命令的详细说明及其各种选项和示例,请访问treetime_examples/timetree.md

重播和替换率估计

为了探索数据中的时间信号并估计替换率(如果是完整的时间树估计),treetime实现了一个子命令clock

  treetime clock --tree <input.nwk> --aln <input.fasta> --dates <dates.csv> --reroot least-squares

输入treetime clock-h即可获得完整的列表(如果选项可用)。 可以提供--sequence length<;l>;而不是输入对齐。 其他选项和示例的文档可在treetime_examples/clock.md

祖先序列重建:

子命令

  treetime ancestral --aln input.fasta --tree input.nwk

将在输入树的内部节点处重建祖先序列。 输入treetime祖先-h即可获得完整的列表(如果选项可用)。 有关treetime-ceastrial和示例的详细说明,请访问treetime-examples/ceastrial.md

均质分析

检测和量化同质化或复发性突变有助于检查重组、假定的适应性位点或污染。 treetime提供了一个简单的命令来总结数据中的同构性

  treetime homoplasy --aln <input.fasta> --tree <input.nwk>

输入treetime homoplasy-h可获得完整的选项列表。 请参见treetime_examples/homoplasy.md获取示例和更多文档。

定量分析

离散地理区域之间的迁移、宿主转换或离散状态之间的其他转换通常由类似于描述基因组序列进化的模型的时间可逆模型参数化。 因此,这种模型通常被称为"抢劫"模型。 Treetime GTR模型机械可用于推断抢劫模型:

  treetime mugration --tree <input.nwk> --states <states.csv> --attribute <field>

其中<;field>;是CSV文件中指定元数据states.csv的相关列,例如<;field>;=country。 输入treetime mugration-h可获得完整的列表(如果选项可用)。 有关示例和更多文档,请参见treetime_examples/mugration.md

元数据和日期格式

一些treetime命令要求用户指定一个包含日期和/或其他元数据的文件。 treetime将这些文件假定为逗号(csv)或制表符分隔(tsv)文件。 这些文件的第一行被解释为指定列内容的标题行。 每个文件至少需要有一个名为nameaccessingstrain的列。 此列需要包含每个序列的名称,并与树中的分类单元(如果提供)的名称匹配。 如果发现名称加入应变中的多个,则treetime将使用第一个。

如果分析需要日期,则至少有一个列名需要包含日期(即采样日期可以)。 同样,如果找到多个点击,treetime将使用第一个。 treetime将尝试按以下方式和顺序分析日期

<表><广告>顺序 键入/格式 示例 说明 < /广告><正文>浮动2017.56十进制日期[浮动:浮动]【2013.45:2015.56】十进制日期范围%年-%m-%d2017年8月25日 ISO格式的日历日期%Y-XX-XX2017-XX-XX日历日期缺少月份和/或日期

脚本示例

下面的脚本演示了如何使用treetime解决短python脚本的常见问题。它们应该在交互式ipython环境中使用,并作为run examples/祖先推理.py运行

  • 祖先推断.py说明祖先序列是如何推断的,以及可能的突变是如何分配给树中的分支的,
  • relaxed戋clock.py引导用户使用松弛的分子钟模型。
  • 示例/rerooting_and_timetrees.py演示了重定位和根到端回归散点图。
  • ebola.py使用2014-2015年埃博拉病毒爆发的大约300个序列来推断时间树。此示例需要几分钟才能运行。

不同类和函数的HTML文档可在此处找到

相关工具

还有其他一些工具可以评估分子钟系统发育。

使用treetime的项目

建立文档

treetime包的api文档是用sphinx创建的。文档的源代码位于文档文件夹中。

  • sphinx构建以从源代码生成静态html页面。安装为
pip install Sphinx
  • sphinx的basicstrap html主题:
pip install sphinxjp.themes.basicstrap

安装所需的软件包后,导航到doc目录,然后键入:

  pip install .
0

可以将另一个目标指定为latexepub来构建所需格式的文档,而不是html。

要求

要构建文档,应安装sphinx构建工具。文档页面使用basicstrap html主题来具有与treetime web服务器相同的设计。因此,系统中也应该提供基本的主题。

开发人员信息

  • 版权和许可证:Pavel Sagulenko、Emma Hodcroft和Richard Neher,麻省理工学院许可证
  • 参考文献
    • 由Pavel Sagulenko、Vadim Puller和Richard A Neher进行的Treetime:极大似然系统动力学分析。病毒进化。
    • nextstrain:实时跟踪病原体进化作者:詹姆斯·哈德菲尔德等人。生物信息学。

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

推荐PyPI第三方库


热门话题
java迷宫解算器在死胡同中陷入循环   java JPA在一个查询中检索2个列表   java正则表达式匹配文档中两个字符串之间的所有字符   java更改JTable标题高度   安卓忽略调试库中的java代码   java使用ScheduledExecutorService延迟Spring WebClient调用不会等待响应   如何使用Java将包含JSON对象的字符串转换为实际的JSON   sqlite数据库连接:java。Lang.ClassNotFoundException:org。sqlite。JDBC   在MySQL中存储表情符号的java获取错误字符串值错误   当发送包含超过一定大小字节数据的对象时,安卓 Java StreamCorruptedException   Java游戏旋转图像和轴   java IntelliJ Idea:无法解析实体类的列   Android中带有editText的java AlertDialog   map only和mapreduce应用程序之间的java差异   如何在Kotlin编写的接口中使用默认方法的Java8特性   java CPU时间百分比算法问题   java如何在WEBINF文件夹中使用带有JAR的taglibs JSTL/core   有没有办法在Java中找到JPanel和/或JFrame的长度和宽度?