为什么 MEGA 不适合做系统发育、也不适合作为教学软件

很多大学的生物信息课堂都会使用 MEGA 作为入门软件,但是这是极其不好的一个现象。

从算法

MEGA 的系统发育分析基本上有距离法、似然法和简约法三大类。

其中似然法和简约法具有计算过程上的相似性,都是搜索树,然后进行评估。但是最近 Goloboff et al. 2021 指出了 MEGA X 在最大简约法上搜索的问题,主要原因是它没有执行所有可能的 SPR / TBR,这是启发式搜索的重要一步,如果这一步存在问题,那么可以说整个树的搜索都是可疑的。

同时,MEGA 在最大似然中仅仅提供了 SPR 的方法,由于 MEGA 是个闭源软件,我们并不能查看它的算法是不是和最大简约法一样,但是从简约法和似然法的相似性上,可以说,这是极其可疑的。

同时 MEGA 的最大似然和最大简约都不能自定义 random seed,这更不利于整个分析,因为这可以被认为每次从相同的起点来进行搜索,白费力气。

这解释了 MEGA 为什么不是一个好的系统发育软件。因为相比于距离法,最大似然法应用更为频繁,而树的搜索不可靠并且无法调整随机种子。而形态学离散数据往往使用最大简约法分析,但是 MEGA 却不支持形态学数据,同时又存在耗时长、RAM 占用多并且无法全面搜索的问题。

几个教学实例

全国生物信息公开课关于系统发育的教学内容方法,以山东大学和四川大学的课程为例。批驳一下两个课程的一些观点。

山东大学生物信息学课程,在系统发育树一节,说最大简约法和距离是比贝叶斯推断和最大似然法较快并且计算准确度上较弱的方法。这是完完全全错误的。当然,这个观点也广为流传,我本科时候的生物信息学课程也有类似的观点在 slide 上面。

最大简约法在才用非启发式搜索、穷举的时候,如果 taxa 数量上升,所需要搜索的树是指数上升的。同时这不光与设置和数据大小有关,还和软件的算法相关,比如一定量的形态学数据,我使用 PAUP* 去计算最大简约、使用 MrBayes 计算贝叶斯推断,那个 PAUP* 运行了几天几夜都没运行完,MrBayes 早早就结束了,当然,我现在使用 TNT 去做最大简约自然比 PAUP* 快得多,这也和软件的编写有关。这是一个很复杂的问题,在不讲 searching tree space 之前是很难理解的。

这同时也很打脸课程中主讲老师的脸 “ 我们并不大算一一讲解这些方法的具体原理,大家只要掌握何时选择何种方法就可以了,算法的事儿,软件已替你搞定 ”,那如果这样,我们是不是就可以用 MEGA 这种算法很不好软件去做系统发育了呢?

同时,山大的教材,还是把 PAUP* 列为了收费商业软件,这是不对的,第一次开课的时候是 2017 年,这时候 PAUP* 已经免费了。而且 2017 比较流行的最大似然法软件已经不是 PhyML (2016-2017 Google Scholar 引用 2640), 而是 RAxML (2016-2017 Google Scholar 引用 4020)。当然 MrBayes 也不叫 Mr 拜尔斯。

四川大学生物信息技术内容几乎无区别,也是和山东大学的一样常规说了速度问题,也只讲解了邻接法的算法。在用 MEGA 建立邻接树的时候和山东大学的一样,没有指出 Model/Method 的选项,但是 MEGA 在邻接法中有这个选项也是挺奇怪的(邻接法 s. str. 不应该依赖于模型)。

但是日常双非的情景是什么呢,是老师没讲关于最大似然算法,学生就要用 MEGA 建最大似然树。那么 MEGA 建树的 option 那么多,如果你不去了解算法,是完全不能够去设置的。当然,几乎所有课程都不去引导学生下载最新版本的 MEGA,而是一味守着老旧的 MEGA 7, option 自然也少了很多。

从教学

而且从 MEGA 11 看,它的 option 设置并不是按照算法的原理一一排列的。生物信息学课程教学的目的不应该是让学生了解什么数据库长什么样子,如何操作一个 option 很混乱的 GUI 软件,而应该是让学生了解这些的基本原理。因为生物信息学课程的老师往往是较为单一的,可能科研领域并不涉及如此,讲出来的是很局限的,而且这些数据库网站日新月异,隔几天升级换代一下,MEGA 的外观也换了很多,但是算法是永远的,万变不离其宗。

那么好的教学软件应该是按照步骤,一步步来对算法进行实践,而不是一个 GUI 界面点点点。如果 PAUP* 的 block 一行一行命令去讲解如何进行最大似然法都是很好的,比如先做几个起始树,然后开始 TBR / SPR / NNI 搜索,每次如何,TBR SPR 区别是什么,每次 hold 多少树,之后再 bootstrap 多少次,除了 bootstrap 还有没有其他 resample 方法,consensus 的方法有哪些,strict 和 majority rule 有什么区别。PAUP* 可以一步步实现出来,但是 MEGA 不可以,所以在教学上它并不是一个很好的软件。

而且跟 MEGA 相似,PAUP* 可以有很多方法可以选择,邻接法、最大似然法、最大简约法,完全可以按照之前的模式,根据 PAUP* 的一个参数一个参数,解释清楚,当成算法的一次实践。但是现实是,大部分老师做不到。

从性能

在最大简约法上,MEGA X 的 RAM 占用是 PAUP* 的 6 倍以上,高的甚至能到达 9 倍。 耗时更甚。

Linux 下运行的 MEGA 11.0.11 是一个 GTK2 的应用,按理说,一个 GTK 应用性能不会太差,但是,它打开一个 437.6 KB ( 90 taxa 6000 bp ) 的 fasta 文件都会崩溃,而 seaview 5.0.5, 一个非 GTK/QT 应用处理这个文件毫无压力,Java 应用 Jalview 2.11.1.4 处理起来也没有。这让我不得不感叹它的性能了。

所以最好在教学、科研上不要使用 MEGA 建立系统发育树,这样是对学生的负责,也是对自己数据结果的负责。当然,MEGA 一些非计算的小功能很好用,是值得肯定的。