系统发育树(phylogenetic tree)构建的软件可谓五花八门。大体上,有如下几种策略:从最简单的UPGMA法,到邻接法(neighbor joining),最大简约法(most parsimonious),再到最大似然法,以及贝叶斯法,每种方法都有不少可以选择的工具。

最大似然法和贝叶斯法,在现在,被认为是两种比较可靠的建树策略。贝叶斯法的最大劣势在于速度太慢,其达到convergence的漫漫长路让无数研究者望而却步。所以,一些研究者为了快速出树会采用快速的邻接法或最大简约法建树。其实,这些方法(邻接法、最大简约法)并不严谨,特别是在处理有较大分歧的序列时,long branch attraction(LBA,长枝勾引)现象可能导致严重的错误。

因此,最大似然法是很多杂志上青睐的建树策略。MEGA、phyml同raxml是比较常用的提供最大似然法建树的软件。然而,要注意的是,虽然速度上相对贝叶斯法有优势,但在今天实验室里,纵使快如raxml亦或是新如MEGA X,也越来越无法满足研究人员只争朝夕的节奏和日益高涨的雄心。此外,对于特别专业的研究者,有时需要选择进化模型(核苷酸或氨基酸替代模型)——如果不幸运的话,不合适的模型选择会直接影响到树的结构,导致错误的结论。而模型选择往往需要借助其他工具进行,这使得大家在软件的使用上有些不方便。再者,比如RAxML,其对于核苷酸替换模型的支持很差,只有屈指可数的几个模型可供选择。

本文为大家推介一款近年来悄然兴起的最大似然法进化树构建软件——IQTREE。自2014年11月问世以来,截止2018年6月13日,IQTREE已收获了778次引用(谷歌学术,下同),而RAXML是6180。相对于raxml,其总引用数虽然相距甚远,但最近势头却更加强猛:IQTREE在2017年321 citations,2018年上半年未结束就已经达到277 citations;而RAxML在2017年2200 citations,进入2018赛季目前是1290 citations。

IQ-TREE主要由来自奥地利维也纳大学(Universität Wien)的越南天才学者BùiQuang Minh(裴广明,似乎是这么译的)开发。提供包括windows(64/32位)、linux(64/32位)、以及macs在内的多平台不同版本。

如下图所示,IQ-TREE有四大功能,在很大程度上解决了前面提到的最大似然法建树软件、尤其是速度上的几个缺陷:

高效建树(efficient tree reconstruction)

模型选择(modelfinder: fast and accurate model selection)

超快自展(ultrafast bootstrap approximation)

大型数据(big data analysis)

本文为大家梳理IQTREE的一些日常用法,欢迎大家拍砖。

输入数据:

十分灵活,包括Phylip,fasta,nexus,clustalw在内的序列比对格式均可接收,这一点不像RAxML、PhyML或MEGA比较局限。

一个简单的例子:

我们用IQTREE自带的example.phy,一个phylip格式的含有17条动物核糖体RNA基因的比对文件。

输入:iqtree -s example.phy

你可以看到屏幕上会出现:

然后就是进行最佳模型选择

大概几秒钟之后,就可以看到结果出来了。我们在进化树画图软件(更多绘树内容请参看绘树专题报道)上面打开example.phy.treefile(newick格式)以查看得到的树:

Btw:当然,这个例子十分简单,没有进行bootstrap和模型选择。关于这两点,在下面都有写。

如果你想再做一遍同样的操作,需要加上-redo(为了防止之前的结果被不慎覆盖):

iqtree -s example.phy –redo

如果你想让iqtree的结果输出到特定文件夹并制定特定前缀(prefix),需要用到下面的参数

-pre myprefix

比如你想将结果输入到当前文件夹一个名为test的文件夹,且前缀为example:iqtree -s example.phy –redo -pre test/example(注意下,这里test文件夹需要预先被创建)

如果数据比较大,可以用上-nt指定线程数。比如,-nt 4,就是四个线程。也可以-nt AUTO,iqtree会自动检查最合适的线程数。其基本原则是从单线程开始,逐一递增线程数,看看增加线程对执行命令的效率影响如何。如果增加线程而运行速度变化甚微,则停止增加,选择当前线程数作为最合适线程避免浪费资源。

模型选择

模型选择是IQTREE一大卖点。IQTREE把这项任务外包给目前最先进的modelfinder(1)。Modelfinder是一款速度超快的自动最佳模型选择软件,裴广明也参与了开发(第二作者)。其在保证准确性的情况下,速度上比jmodeltest(针对DNA)和prottest(针对蛋白)要快100倍(ModelFinder is up to 100 times faster than jModelTest/ProtTest.),且可以考虑+R(FreeRate heterogeneity model,下文有讲),此外还可以针对进行连接在一起的不同基因序列的partition进行模型选择,这一点上达到同partitionfinder一样的效果。

你可以指定模型(model)为TIM2+I+G

iqtree -s example.phy -m TIM2+I+G

如果你只想进行模型检测而不进行进化树构建,执行以下命令即可

#for IQ-TREE version >= 1.5.4:

iqtree -s example.phy -m MF

#for IQ-TREE version <= 1.5.3:

iqtree -s example.phy -m TESTNEWONLY

默认状态下,IQTREE会针对你的输入数据类别(比如,是DNA还是protein),对相应的全部模型进行检测,包括23种氨基酸替代模型和22种核苷酸替代模型(以及一些codon和binary model)。然而,由于速度较慢,且一部分模型较少用到。如果你希望指定少数几个模型(以及相关参数),避免不必要的时间浪费,那么请不要错过下面的这几个示例:

-mset LG,JTT

从LG和JTT两个核苷酸替代模型里拣一个

-mrate G,I,I+G

在+G和+I,以及+I+G三个里面选择rate heterogeneity参数

-mfreq FU

不进行frequency计算

这里有必要说一下,IQTREE所容纳的rate heterogeneity参数有一个关键武器,+R,该参数和+G互斥。简单地讲,+R不需要像+G里对各位点速度作呈gamma分布的假设,在大多情况下被认为可以更好地fit data。此外,IQTREE有推荐,当你进行大型进化树构建的时候,不要忘记加上+R这一选项。当然了,+R不论在模型检测还是进化树构建可能都需要付出一定时间代价,使用时需要当心。裴教授的原话见下:

FreeRate model (Yang, 1995;Soubrier et al., 2012) that generalizes the+Gmodel by relaxing the assumption of Gamma-distributed rates. The number of categories can be specified with e.g.+R6(default 4 categories if not specified). The FreeRate model typically fits data better than the+Gmodel and is recommended for analysis of large data sets.

如果需要进行多基因联合的建树(比如,你用10各不同基因对于100种植物进行species tree的进化树构建),那么需要记住加上:

只进行模型选择:-m MF+MERGE -ssp partition_file

需要构建进化树:-m MFP+MERGE -ssp partition_file

超快自展(ultrafast bootstraping)

大概是IQTREE的精髓所在。顾名思义,ultrafast bootstrap approximation的特点就是超快。这里涉及到的细节,感兴趣的读者可以参见IQTREE的开发者裴教授写的几篇文章,详细阐述了“超快”的原理(2, 3)。作者认为,UFBoot is 10 to 40 times faster than RAxML rapid bootstrap and obtains less biased support values。

关于Ultrasfast bootstrap,有几点特别需要注意的:

IQTREE里要求最少需要1000次(-bb 1000)

对结果的解读更加公允。这是因为,其结果大体可以直接代表该clade的可以代表真实情况的概率。这一点十分重要。比如,如果一个clade的ultrafast bootstrap value为97,那么可以粗略认为其“正确”的可能性就是97%。用作者的话就是:One of the main conclusions is, that UFBoot support values are more unbiased: 95% support correspond roughly to a probability of 95% that a clade is true.这一点同传统bootstrap有明显不同。对于传统的bootstrap的理解相对有一点模糊,bootstrap value到底代表了“可信度”是多高,可以说并没有特别明确的共识;根据不同情况选择90/80/70甚至50作为“可信”的判断标准,在不同文献中都有出现。因此,裴教授认为,既然IQTREE所采用的超快bootstrap直接指向probability,其显然可以更好地作为衡量树的准确度的评判标准而不是依赖作者自己的解释。

简单地讲,如果一颗树上面有一个节点的support value是85,如果是用传统bootstrap法,通常来讲,说明这个节点可信度还算不错。而如果该树是出自IQTREE之手,那么这个节点是否值得信赖就要打上一个问号了。

想执行1000次超快自展,只需要执行下面的操作:

Iqtree –s example.phy –bb 1000

自展树结果会在.ufboot文件里呈现。还有一棵consensus tree,会在.contre里给出。

我们选取example.phy这个比对进行测试,比较一下RAXML(v8.2)和IQTREE(v1.6.1)的速度。我们选择同样的核酸替代模型GTR+G+I。

RAxML一百次rapid bootstrap(-f a)

IQTREE一千次ultrafast bootstrap

结果显示,前者花了80秒,而后者仅用时8秒。

个人经验是如果采用相同的进化模型,IQTREE(采用1000次ultrafast bootstrap approximation)速度上是RAxML(100次rapid bootstrap)的 8-15倍不等。树的结果上二者相差不多。

除ultrafast bootstrap之外,IQTREE还提供了以下检验树的拓扑结构可信度的方法。

-alrt:SH-aLRT检验(4),没记错的话FastTree2使用的就是这个吧?

-abayes:approximate Bayes test,由杨子恒的得意门生学生、瑞士苏黎世应用科学教授Maria Anisimova提出(5)

-lbp:fast local bootstrap probability method,由Adachi and Hasegawa提出(http://www.is.titech.ac.jp/~shimo/class/doc/csm96.pdf)

如果你指定了多个检验方法,那么其结果会在树里(.treefile)呈现出来,不同检验所得数值用斜线隔开,比如:((a,b)100/98:0.1,c:0.2)90/95

其顺序会在扩展名为iqtree的文件里给出:

Numbers in parentheses are SH-aLRT support (%) / ultrafast bootstrap support (%)

裴教授推荐对于extremely large的数据集,比如超过1万个taxa,大家在使用ultrafast bootstrap法的同时,也用以上这几种检验方法(一个快过一个)。作者认为大体上SH-aLRT >= 80% 且ultrafast bootstrap value >= 95%的节点是可以信赖的。

此外,IQTREE也提供了传统的bootstrap抽样法检验,使用-b参数即得。

附加功能

列几个可能相对常用的供大家参考

祖先序列重构(ancestral sequence reconstruction)

iqtree –asr

如果希望照指定的进化树进行重构,需要指定 –te INPUT_TREE

使用iqtree进行祖先序列重构的优点在于速度快,输出格式用户友好,且进化模型选择多元

举一个例子:iqtree -s example.phy -m JC+G –asr

释义:对于example.phy采用Jukes and Cantor核酸替换模型和gamma位点替换速率差异矫正(JC+G),进行祖先重构(-asr)

树的拓扑结构检测(tree topology test)

用-z参数包括需要进行检测不同topology的树

这一点,IQTREE可以部分取代CONSEL的功能,而且老裴自称相较于consel,IQTREE有两大优势:

效率更高

可以对付partition

随机树(random tree)的生成

在v1.6版说明p78有写。感兴趣的读者可以自行查阅。

IQTREE的作者裴教授对于自己的软件十分上心,经常对其进行更新。大家如对IQTREE有任何疑问,可以到IQTREE的官网http://www.iqtree.org/

进行查看,上面有非常详细的介绍。如果还有疑问,可以到google group里面的IQTREE版面提问,裴教授一般都可以在一到两天之内进行回复。想学习系统发育树构建的朋友,也欢迎点击我们的在线课程。最后,欢迎用过IQTREE的朋友分享一下使用心得,也希望没用过的朋友快来体验一把IQTREE的“极速之美”。

引文

1.Kalyaanamoorthy S, Minh BQ, Wong TKF, von Haeseler A, Jermiin LS. ModelFinder: fast model selection for accurate phylogenetic estimates. Nat Methods. 2017;14(6):587-+.

2.Hoang DT, Chernomor O, von Haeseler A, Minh BQ, Vinh LS. UFBoot2: Improving the Ultrafast Bootstrap Approximation. Mol Biol Evol. 2018;35(2):518-22.

3.Minh BQ, Nguyen MAT, von Haeseler A. Ultrafast Approximation for Phylogenetic Bootstrap. Mol Biol Evol. 2013;30(5):1188-95.

4.Shimodaira H, Hasegawa M. Multiple comparisons of log-likelihoods with applications to phylogenetic inference. Mol Biol Evol. 1999;16(8):1114-6.

5.Anisimova M, Gil M, Dufayard JF, Dessimoz C, Gascuel O. Survey of Branch Support Methods Demonstrates Accuracy, Power, and Robustness of Fast Likelihood-based Approximation Schemes. Syst Biol. 2011;60(5):685-99.

更多精彩内容,欢迎关注生信人

linux 建树软件,新一代建树工具IQ-Tree介绍相关推荐

  1. linux 系统级性能分析工具 perf 的介绍与使用

    目录 1. 背景知识 1.1 tracepoints 1.2 硬件特性之cache 2. 主要关注点 3. perf的使用 3.0 perf引入的overhead 3.1 perf list 3.2 ...

  2. python数据库管理软件_MySQL管理工具MySQL Utilities — 介绍与安装(1)

    MySQL Utilities介绍 MySQL Utilities 提供一组命令行工具用于维护和管理 MySQL 服务器,包括: 管理工具 (克隆.复制.比较.差异.导出.导入) 复制工具 (安装.配 ...

  3. linux平台软件动态分析工具valgrind系列工具及其可视化

    linux平台软件动态分析工具valgrind系列工具 Memcheck–内存检查工具 Callgrind–函数调用分析工具 Cachegrind–缓存命中分析工具 Helgrind–线程分析工具 M ...

  4. Linux多线程贝叶斯建树教程,构建系统发育树:贝叶斯法建树

    写在前面:我对建树也是一知半解,这里只是想记录一下自己跟别人学习的建树方法,可能不具有普适性.但毕竟写在公众平台,大家自主参考. 用phylosuite进行.nex文件的准备,用在线建树网站CIPRE ...

  5. linux mdadm 源码,mdadm命令_Linux mdadm 命令用法详解: mdadm 标准的软件 RAID 管理工具...

    mdadm 命令 基本语法mdadm [mode] [options] [mode] 7种Assemble:将以前定义的某个阵列加入当前在用阵列. Build:Build a legacy array ...

  6. linux 软件 web管理系统,如何快速安装Webmin(linux系统web管理配置工具)

    如何快速安装Webmin(linux系统web管理配置工具) 简介: Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作 ...

  7. 10 款你不知道的 Linux 环境下的替代工具

    作者:JackTian 来源:公众号「杰哥的IT之旅」 ID:Jake_Internet 转载请联系授权(微信ID:Hc220088) 原文地址:10 款你不知道的 Linux 环境下的替代工具! 大 ...

  8. 【第83期】10 款你不知道的 Linux 环境下的替代工具!

    大家好,我是华章妹. 在 Linux 操作系统下,我们经常使用 cat 命令去连接多个文件并打印到标准输出,合成几个文件为一个目标文件,追加几个文件到目标文件中. 最近我在 GitHub 上发现了一个 ...

  9. C#(Net)软件开发常用工具汇总,提高你的开发效率

    C#(Net)软件开发常用工具汇总,提高你的开发效率 写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用技术文章. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是 ...

最新文章

  1. hash 值重复_程序员:判断对象是否重复,不重写equals和hashcode不行吗?
  2. ssh汉字乱码怎么办_ssh中文乱码解决
  3. 大数据时代数据中心的发展思考
  4. java中servletcontext_Java中的ServletContext对象
  5. MySQL安全等于的介绍
  6. 7.5 GRASP原则五:高内聚 High Cohesion
  7. diff命令两个服务器文件,linux 比较两个文件夹不同 (diff命令, md5列表)
  8. java制作五子棋的论文,基于java的五子棋的设计与实现.docx
  9. Vue+Element+Springboot实现图片上传
  10. 阿里云服务器——centos7下安装MySQL,并且实现远程连接
  11. 初始化一个指针的方法
  12. 手机上的星号键和井号键有什么用?
  13. Confluence或JIRA验证码乱码的问题
  14. 赛尔号星球大战服务器维修,《赛尔号星球大战》6月14日停服更新公告
  15. 了解RecyclerView的分割线
  16. UE4 GamePlay架构学习篇
  17. Storyboard Animations
  18. ctf镜子里面的世界_萌娃照镜子,演绎小脑袋大疑惑,“虚晃一枪”的模样简直萌化了...
  19. 2022-2028年全球与中国油田化学品行业发展趋势及竞争策略研究
  20. python 八卦图

热门文章

  1. MATLAB读取excel表格中指定位置的数据
  2. QT-学生信息管理系统
  3. Java代码实现用for循环打印斐波那契数列前20项
  4. iphone 代码片段2
  5. 以潘金莲和西门公子为例讲述Java静态代理和动态代理
  6. JVM 面试 4 连炮,你能顶住么?
  7. 逆向工程实验——pre6(汇编、Android逆向、RSA算法破解)
  8. VM虚拟机安装CentOS系统的常见BUG
  9. 计算机内存分配、管理
  10. 一英寸芯片大小_英寸,究竟是多大?