使用MAKER進(jìn)行注釋: 理解的MAKER的并行化

MAKER并行分為兩種,一種基于MPI,運(yùn)行方式為mpiexec -n 線程數(shù) maker, 一種是在同一個(gè)項(xiàng)目中運(yùn)行多次maker。前者需要在安裝MAKER時(shí)進(jìn)行設(shè)置,后者相當(dāng)于你手動(dòng)按照染色體數(shù)目進(jìn)行拆分,然后分開(kāi)運(yùn)行MAKER。本片主要介紹基于MPI的并行策略。

下圖是MAKER是基于MPI的并行化流程。分為三個(gè)層次,contig水平,更小的片段水平,不同程序的并行。

contig水平就是對(duì)每條contig進(jìn)行分別注釋。而由于每個(gè)contig的長(zhǎng)度不一,當(dāng)較短的contig運(yùn)行結(jié)束后,我們還需要等待較長(zhǎng)的contig結(jié)束。因此,我們還需要將contig繼續(xù)拆分,讓每條contig分成更小的片段,成為基本的分析單元。對(duì)于每個(gè)分析單元,還可以考慮將不同程序進(jìn)行并行。

Fig1

在MAKER實(shí)際運(yùn)行時(shí),如果用gotop進(jìn)行查看你會(huì)發(fā)現(xiàn)系統(tǒng)中會(huì)出現(xiàn)很多maker進(jìn)程(以mpiexec -n 10為例)

Fig2

但是你發(fā)現(xiàn)只有少量的和注釋有關(guān)的程序(如blastx)。如果用ps aux | grep maker查找和maker有關(guān)的進(jìn)程,你會(huì)發(fā)現(xiàn)大量的maintain.pl進(jìn)程,并且這些進(jìn)程后面跟著一大串你不認(rèn)識(shí)的符號(hào)

/usr/bin/perl /opt/biosoft/maker/bin/../lib/File/maintain.pl 46535 30 %04%09%08%31%3...

為了理解MAKER的并行,你需要通過(guò)pstree -ap [mpiexec進(jìn)程ID]更細(xì)致的了解MAKER的進(jìn)程樹(shù)

Fig3

從中你可以發(fā)現(xiàn),因?yàn)槲覀冇?code>mpiexec啟動(dòng)了10個(gè)maker進(jìn)程,所以hydra_pmi_proxy有10個(gè)maker子進(jìn)程。對(duì)于這10個(gè)maker子進(jìn)程,每個(gè)進(jìn)程都至少會(huì)有一個(gè)maintain.pl。通過(guò)閱讀maintain.pl的源代碼,我們可以得知該程序后接參數(shù)中的46535是PID(進(jìn)程號(hào)), 30是sleep time, 最后一個(gè)是URI編碼字符,是利用Storable::freeze持久化的數(shù)據(jù)結(jié)構(gòu),可以通過(guò)如下的代碼進(jìn)行解碼(命名為decode.pl)

#!/usr/bin/env perl
use warnings;
use strict;

use URI::Escape;
use Storable;
use vars qw($LOCK);

my $serial = shift;

$serial = uri_unescape($serial);
$LOCK = Storable::thaw($serial);

print "$LOCK->{lock_file} \n"

可以批量對(duì)maintain.pl里的信息進(jìn)行解碼

ps aux | grep maintain.pl | grep -v grep | awk '{print $15}' | xargs -i perl decode.pl {}

因此,那么多的maker并不是在話說(shuō),而是在負(fù)責(zé)任務(wù)調(diào)度,差不多一個(gè)任務(wù)會(huì)有3個(gè)maker進(jìn)程保駕護(hù)航。

回到之前的進(jìn)程數(shù),這里有一些maker進(jìn)程下會(huì)跟著一些正在運(yùn)行的命令,blastx, exonerate

Fig4

而有些只有maker和maintain.pl進(jìn)程。

Fig5

如果等待一會(huì),再次運(yùn)行pstree -ap [mpiexec進(jìn)程ID],你會(huì)發(fā)現(xiàn)這兩種狀態(tài)會(huì)發(fā)生轉(zhuǎn)換,這說(shuō)明任務(wù)啟動(dòng)也需要一段時(shí)間。

因此,以后用MAKER注釋的時(shí)候,看到那么多maker進(jìn)程不要害怕,用pstree進(jìn)行檢查,看看它們到底是在摸魚(yú),而是在維護(hù)程序運(yùn)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容