美文网首页TBtools基因组组装
基因选择压力分析 | Ka/Ks, Dn/Ds 大规模计算,更快

基因选择压力分析 | Ka/Ks, Dn/Ds 大规模计算,更快

作者: 生信石头 | 来源:发表于2021-04-20 21:44 被阅读0次

    写在前面

    来来去去,这个主题相关的,我已经写过很多个推文,甚至还包括与Raindy(福建农林高芳銮老师)合作开发和发表了 EasyCodeML。只能说,确实是一个相对常见但似乎也繁杂的分析。

    功能开发

    • EasyCodeML 主要用于在进化的context上分析选择压力,尤其是做正选择位点分析,亦即,关注到位点。
    • 简单的基因对Ka/Ks计算,如 TBtools 的 Simple Ka Ks Calculator 则关注大规模的基因受选择的情况,亦即,关注到基因。

    正选择位点分析起来不容易,而大规模的基因对Ka/Ks计算起来其实也不容易。常见的场景是有数万,甚至十来万个基因对,需要计算KaKs。而做计算的步骤:

    1. 以密码子为单位进行序列比对
    2. 基于比对结果进行KaKs计算

    所以是两部。绝大多数人会使用一些软件,如muscle,mafft等做基因双序列比对,因为他们调用起来放弃,尽管这其实不太合适。因为这些软件本身设计目标是多序列比对。用于CodeML的计算应该使用他们,但是用于两条序列的两两比对,缺并不合适。所以最好的方式基本只有:

    1. 调用Emboss的Needle程序
    2. 使用已有第三方实现
    3. 自行做代码实现

    其中第一种方法最准但是最慢,第二种方法在Java,python,perl等上面没有良好实现,一般不够准确,甚至不如调用muscle等,第三种方法可以权衡,毕竟是自己做代码实现。
    而现在,TBtools用的即第三种方法,准确度上跟Emboss Needle完全一致,但由于是原生代码实现,所以速度很快,同时也支持多线程。

    运行速度

    针对调用muscle的实现,前述已经提过,大体是一秒钟一对序列,多线程无法提速,甚至会降速(怀疑是进程开销太大),而针对TBtools的原生代码实现(也就是说,我自己coding的),那么单线程一秒钟可以做到200对,如果开四个线程,那么一秒钟可以做到 600对(多线程开销其实并不小)。
    实测数据,10000个基因对,muscle调用需要四个多小时。使用TBtools,单线程只需要不到一分钟。如果开四个线程,28秒。
    换句话说,常规电脑上去,1w个基因对的计算,一般不需要1分钟。

    使用方法

    打开 TBtools,跳转到对应功能



    使用方式和以前一样,就是记得调整使用的线程数。。。


    写在最后

    天下武功,唯快不破。

    相关文章

      网友评论

        本文标题:基因选择压力分析 | Ka/Ks, Dn/Ds 大规模计算,更快

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