多线程并行EasyCodeML - Branch-Site Model

写在前面

  1. 命令行调用 EasyCodeML 跑 BSM model

  2. 多线程并行

运行实例

首先是获取 EasyCodeML 软件包(可以从 Github 上下载,不过主程序我暂时没更新上去)
随后准备好输入文件:

  1. 一个树文件,需要标记好分支(可以使用EasyCodeML可视化标记)

  2. 一个输入目录,目录中放置所有序列的Alignment,每个序列一个文件,支持多种格式,会自动转换为 paml 格式。当然,如果已经转化好就更好了

运行程序(注意到 Windows,MacOS,Linux下调用方式完全相同)

java -cp PathTo\EasyCodeML.jar BatchRunBSM.RunBSM \--inSeqAln PathTo\SequenceAlnDirecory -\-wkDir PathTo\ResultantDirectory \--tree PathTo\Labeled.tree.nwk \--threads 4

需要注意:

  1. 每个多序列比对结果中,文件ID应与树文件ID一致,一般似乎都是物种名?

  2. 如果运行失败,注意看看报错,windows下几乎不可能,macOS和Linux下,考虑参考 EasyCodeML 的manual,自己编译一下codeml,还是。。。比较简单,因为编译命令都给了。

运行实例

输入内容样式

可以看到 Alignment中有两个序列的多序列比对结果

java -cp C:\Users\ccj04\Downloads\EasyCodeML-master\EasyCodeML-master\EasyCodeML.jar BatchRunBSM.RunBSM \--inSeqAln C:\Users\ccj04\Desktop\TestEasyCodML\demo\Alignment \--wkDir C:\Users\ccj04\Desktop\TestEasyCodML\Result3 \--tree C:\Users\ccj04\Desktop\TestEasyCodML\demo\Example1.tree.Labeled.txt \--threads 4

注意到,这里给了 4 个线程,如果是跑数百上千条序列,建议到服务器上跑,一般是 Linux.... 目前常见的服务器是 100+线程。所以可以给到 --threads 100,那么会保持同时计算 50 条序列(每条序列是两个Model)
结果文件简单,每条序列输出一个文件夹,

每个文件夹中,对应有运行信息,以及一个结果汇总xls。

写在最后

Emmm,没想到鼓捣起来还是简单。只是这基于一个假设,就是到底这种相对多个序列的选择分析,到底是否真的有人去保证序列ID和Tree中的ID一致?更或者都是如何处理?

(0)

相关推荐