美文网首页
多线程并行EasyCodeML - Branch-Site Mo

多线程并行EasyCodeML - Branch-Site Mo

作者: 生信石头 | 来源:发表于2021-05-03 01:30 被阅读0次

写在前面

节前,我临时收到钦佩已久的胡老师的微信语音,主要问及“EasyCodeML”这款软件能有批量运行。有关注Raindy(福建农林高芳銮老师)和生信札记的朋友应该知道。EasyCodeML是Raindy与我在六年前启动开发的一个软件,主要是方便用户快速完成正选择分析。该软件发表至今,与 TBtools 类似,一直有不少朋友关注,当然也是高被引。
胡老师关注的是批量跑BSM,大体简化场景为检测不同物种中数百甚至上千个基因是否收到正选择。类似的问题,高老师曾与我提过,但我本身并不了解这块需求是否常见。但转念想想,这个事情似乎也简单。
于是大体在 EasyCodeML 上补充了两个类,可以用于:

  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一致?更或者都是如何处理?

相关文章

  • 多线程并行EasyCodeML - Branch-Site Mo

    写在前面 节前,我临时收到钦佩已久的胡老师的微信语音,主要问及“EasyCodeML”这款软件能有批量运行。有关注...

  • 原子类型与原子操作

    原子类型和原子操作 并行编程、多线程与C++11 常见的并行编程有多种模型:共享内存、多线程、消息传递等。 多线程...

  • go 的并发机制

    并发与并行的概念 ① 多线程程序在单核cpu上运行就是并发;② 多线程程序在多核cpu上运行就是并行; gorou...

  • iOS - Multi-Thread

    概念篇 进程 线程 多线程 单核多线程 & 多核多线程 并行 & 并发 同步 & 异步 队列 队列 & 任务 的执...

  • python网络爬虫:多任务-进程、线程

    一 、实现多任务的方式 多线程多进程协程多线程+多进程 并行,并发 并行:同时发起同时执行,(4核,4个任务)并发...

  • iOS 多线程技术总结

    概览 进程与线程的概念 多线程的由来 并行与并发 多线程的实现 串行与并行 线程的几种状态 串行队列与并发队列区别...

  • Java多线程知识点汇总

    Java 多线程 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程 并行与并发:并行:多个cpu实例或者...

  • Java面试题(二):多线程

    五、多线程 35. 并行和并发有什么区别? 并发(concurrency)和并行(parallellism)是: ...

  • 【基础】练习册55-Python3_多线程

    多线程 代码如下: #coding=utf-8#多线程:将onethreads.py单线程改为多线程并行impor...

  • 多线程方法

    一. 基础并行多线程结构 二. 标准多线程方法,控制并发线程数,带线程锁

网友评论

      本文标题:多线程并行EasyCodeML - Branch-Site Mo

      本文链接:https://www.haomeiwen.com/subject/owoxdltx.html