国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基因序列讀取方法及讀取系統(tǒng)與流程

      文檔序號:11231022閱讀:1123來源:國知局
      基因序列讀取方法及讀取系統(tǒng)與流程

      本發(fā)明涉及生物信息技術(shù)領(lǐng)域,特別涉及一種基因序列讀取方法及讀取系統(tǒng)。



      背景技術(shù):

      在當(dāng)前的基因測序過程中,由不同測序平臺產(chǎn)生的序列的錯誤存在一定差別,主要有以下4種:堿基的置換(substitution)錯誤,堿基的插入(insertion)錯誤,堿基的刪除(deletion)錯誤和模糊堿基的出現(xiàn)(如用n來指示可能的4種堿基a、c、g、t)。比如,illumina平臺的錯誤主要是堿基的置換錯誤,roche454、heliscope、iontorrent和pacificbioscience公司的rs平臺的錯誤主要是堿基的插入和刪除錯誤。從糾錯方法的算法基礎(chǔ)來分,目前使用的糾錯方法主要有以下3種:1)基于k-spectrum的方法;2)基于suffixtree/suffixarray的方法;3)基于multiplesequencealignment(msa)的方法。

      然而現(xiàn)有軟件技術(shù)針對的都是特定的測序平臺、基因測序序列的部分錯誤類型,還沒有一種能夠適用于絕大多數(shù)平臺,較好地解決各種序列錯誤的軟件技術(shù),所以有時很難找到合適的算法進(jìn)行糾錯。直接對測得的數(shù)據(jù)進(jìn)行讀取,存在的錯誤序列會耗費大量內(nèi)存。

      并且,在當(dāng)前讀取基因序列的過程中,常采用串行讀取文件的方式來實現(xiàn)dna數(shù)據(jù)的讀取,這對單機(jī)存儲的內(nèi)存要求很高;另外,雖然abyss算法實現(xiàn)了debruijn圖的分布式構(gòu)建,但是,對整個并行文件讀取方式并沒有進(jìn)行任何說明。

      由此可見,現(xiàn)有技術(shù)序列讀取方法存在著測序平臺限制以及對單機(jī)存儲dna數(shù)據(jù)文件的內(nèi)存消耗高的問題,還有待改進(jìn)。



      技術(shù)實現(xiàn)要素:

      本發(fā)明的目的在于提供一種基因序列讀取方法及讀取系統(tǒng),可以減少單機(jī)的內(nèi)存消耗,同時大大提高了基因序列讀取的效率與準(zhǔn)確性。

      為解決上述技術(shù)問題,本發(fā)明的實施方式提供了一種基因序列讀取方法,所述分析方法包括如下步驟:

      根據(jù)原始基因序列的相關(guān)信息,確定合適的糾錯算法,并使用所述糾錯算法對所述原始基因序列進(jìn)行糾錯,得到待處理基因序列;

      根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量以及所述待處理基因序列的總大小,將所述待處理基因序列進(jìn)行分塊處理,得到多個分塊基因序列;以及,

      并發(fā)讀取所述分塊基因序列。

      其中,所述根據(jù)預(yù)設(shè)進(jìn)程數(shù)量以及所述待分析基因序列的總大小,將待處理基因序列進(jìn)行分塊處理,包括:

      初始化基因序列并行分割程序;

      獲取所述待分析基因序列的總大小size;

      根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量p以及所述待分析基因序列的總大小size,確定分塊大小size/p,根據(jù)所述分塊大小size/p對所述待分析基因序列進(jìn)行分塊處理,得到所述多個分塊基因序列。

      其中,所述根據(jù)預(yù)設(shè)進(jìn)程數(shù)量p以及所述待分析基因序列的總大小size,確定分塊大小size/p,根據(jù)所述分塊大小size/p對所述待分析基因序列進(jìn)行分塊處理,包括:

      設(shè)定進(jìn)程i的分塊基因序列的起始位置為i*size/p,終止位置為(i+1)*size/p;

      尋找所述起始位置后的第一個序列的開始點start(i),所述終止位置后的第一個序列的開始點或者文件終止符end(i);

      確定進(jìn)程i的分塊基因序列在所述待分析基因序列中的起始地址為start(i),終止地址為end(i)的基因序列。

      其中,所述并發(fā)讀取所述多個分塊基因序列,包括:

      對所述分塊基因序列的起始地址和終止地址進(jìn)行視圖分塊處理;

      并發(fā)讀取所述分塊基因序列的序列數(shù)據(jù)到內(nèi)存。

      其中,所述基因序列的糾錯步驟、分塊處理步驟以及讀取步驟是并發(fā)執(zhí)行的。

      其中,在所述根據(jù)原始基因序列的相關(guān)信息,確定合適的糾錯算法之前,還包括:

      接收所述原始基因序列的相關(guān)信息。

      本發(fā)明相應(yīng)地提供了一種基因序列讀取系統(tǒng),所述系統(tǒng)包括:

      糾錯模塊,用于根據(jù)原始基因序列的相關(guān)信息,確定合適的糾錯算法,并使用所述糾錯算法對所述原始基因序列進(jìn)行糾錯,得到待處理基因序列;

      多個分塊處理模塊,每個所述分塊處理模塊均用于根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量以及所述待處理基因序列的總大小,將所述待處理基因序列進(jìn)行分塊處理,得到分塊基因序列;

      多個讀取模塊,每個所述讀取模塊均用于讀取所述分塊基因序列。

      其中,每個所述分塊處理模塊包括:

      初始化單元,用于初始化基因序列并行分割程序;

      獲取單元,用于獲取所述待分析基因序列的總大小size;

      分塊處理單元,用于根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量p以及所述待分析基因序列的總大小size,確定分塊大小size/p,根據(jù)所述分塊大小size/p對所述待分析基因序列進(jìn)行分塊處理,得到所述多個分塊基因序列。

      其中,所述分塊處理單元,具體用于:設(shè)定進(jìn)程i的分塊基因序列的起始位置為i*size/p,終止位置為(i+1)*size/p;尋找所述起始位置后的第一個序列的開始點start(i),所述終止位置后的第一個序列的開始點或者文件終止符end(i);確定進(jìn)程i的分塊基因序列在所述待分析基因序列中的起始地址為start(i),終止地址為end(i)的基因序列。

      其中,所述糾錯模塊、分塊處理模塊以及讀取模塊的操作是并發(fā)執(zhí)行的。

      本發(fā)明的有益效果是:

      本發(fā)明實施方式,一方面可以根據(jù)原始基因序列的相關(guān)信息確定合適的糾錯算法,以對原始基因序列進(jìn)行糾錯,因此對原始基因序列的測序平臺沒有限制。另一方面,還可以根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量和待分析基因序列的總大小對糾錯處理后的基因序列進(jìn)行分塊以及并發(fā)讀取,這樣可以減少單機(jī)存儲dna數(shù)據(jù)文件的內(nèi)存消耗,同時大大提高了基因序列讀取的效率與準(zhǔn)確性。

      附圖說明

      圖1是本發(fā)明的基因序列讀取方法的實施例的流程示意圖;

      圖2是圖1中步驟102的實施例的流程示意圖;

      圖3是圖2中步驟203的實施例的流程示意圖;

      圖4是圖1中步驟103的實施例的流程示意圖;

      圖5是本發(fā)明的基因序列讀取系統(tǒng)的實施例的結(jié)構(gòu)示意圖;

      圖6是圖5中分塊處理模塊的實施例的結(jié)構(gòu)示意圖;

      圖7是本發(fā)明的讀取的基因序列的示意圖。

      具體實施方式

      為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明的各實施方式進(jìn)行詳細(xì)的闡述。然而,本領(lǐng)域的普通技術(shù)人員可以理解,在本發(fā)明各實施方式中,為了使讀者更好地理解本申請而提出了許多技術(shù)細(xì)節(jié)。但是,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實施方式的種種變化和修改,也可以實現(xiàn)本申請各權(quán)利要求所要求保護(hù)的技術(shù)方案。

      鑒于現(xiàn)有技術(shù)中,基因序列讀取方法存在著測序平臺限制以及對單機(jī)存儲dna數(shù)據(jù)文件的內(nèi)存消耗高的問題,為了減少單機(jī)存儲dna數(shù)據(jù)文件的內(nèi)存消耗,本發(fā)明實施例在高性能集群系統(tǒng)上,設(shè)計融合多平臺基因序列糾錯的并發(fā)讀取技術(shù),適用于從絕大多數(shù)測序平臺獲得的基因序列,將糾錯和高速并發(fā)讀取合為一體,以及將糾錯后的數(shù)據(jù)直接交付給下一階段進(jìn)行讀取,可以做到糾錯和讀取幾乎并行執(zhí)行(有微小時間差,取決于糾錯開始到最先輸出的部分糾錯結(jié)果所花費的時間),大大提高了基因序列讀取的效率與準(zhǔn)確性。下面,將通過具體的實施例對基因序列讀取方法進(jìn)行詳細(xì)說明。

      如圖1所示,本發(fā)明的基因序列讀取方法的第一實施例的流程示意圖,該方法流程可以包括:

      步驟101:根據(jù)原始基因序列的相關(guān)信息,確定合適的糾錯算法,并使用所述糾錯算法對所述原始基因序列進(jìn)行糾錯,得到待處理基因序列;

      步驟102:將所述待處理基因序列進(jìn)行分塊處理,得到多個分塊基因序列;

      步驟103:并發(fā)讀取所述多個分塊基因序列。

      在步驟101中,首先對原始基因序列進(jìn)行糾錯。具體方式是:根據(jù)原始基因序列的相關(guān)信息,如測序平臺、文件格式,經(jīng)過邏輯判斷選擇合適的糾錯算法并進(jìn)行調(diào)用。同時根據(jù)所選擇的糾錯算法所需要的輸入格式,將原始基因序列的相關(guān)信息轉(zhuǎn)換為計算機(jī)指令進(jìn)行輸入;這樣既可使用調(diào)用的糾錯算法對原始基因序列進(jìn)行糾錯,得到經(jīng)糾錯處理后的基因序列,即待處理基因序列。

      由于在進(jìn)行基因序列糾錯時,是根據(jù)原始基因序列的相關(guān)信息來確定合適的糾錯算法的,因此本方法對原始基因序列的來源即測序平臺沒有限制。即是說,原始基因序列可以是從各個平臺上測得的基因序列??梢岳斫獾氖牵梢灶A(yù)先存儲多種基因序列的糾錯算法,以便在步驟101中能夠根據(jù)原始基因序列的來源進(jìn)行靈活的調(diào)用。

      可以理解的是,原始基因序列的相關(guān)信息可以是用戶輸入的。也即是說在,在執(zhí)行步驟101之前,還可以包括:接收所述原始基因序列的相關(guān)信息。

      在對原始基因序列進(jìn)行糾錯之后,即可交付到下一階段即步驟102中進(jìn)行分段處理。

      在步驟102中,對待處理基因序列進(jìn)行分塊處理時,具體可以根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量以及所述待分析基因序列的總大小,來進(jìn)行基因序列分塊處理,以得到多個分塊基因序列。

      在對待處理基因序列進(jìn)行分塊之后,即可以將該分塊處理得到的多個分塊基因序列輸入至預(yù)設(shè)的進(jìn)程,換句話說,該預(yù)設(shè)的多個進(jìn)程可以并發(fā)讀取該多個分塊基因序列。

      本實施方式的基因序列讀取方法,一方面可以根據(jù)原始基因序列的相關(guān)信息確定合適的糾錯算法,以對原始基因序列進(jìn)行糾錯,因此對原始基因序列的測序平臺沒有限制。另一方面,還可以根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量和待分析基因序列的總大小對糾錯處理后的基因序列進(jìn)行分塊以及并發(fā)讀取,這樣可以減少單機(jī)存儲dna數(shù)據(jù)文件的內(nèi)存消耗,同時大大提高了基因序列讀取的效率與準(zhǔn)確性。

      需要說明的是,對基因序列的糾錯,分塊處理以及讀取操作可以是并發(fā)執(zhí)行的。即是說,步驟101、102以及103幾乎是并發(fā)進(jìn)行的(僅有微小的時間差)。例如,在步驟101中得到部分的待處理基因序列之后,即可將該部分糾錯結(jié)果交由步驟102,以進(jìn)行分塊處理,此時步驟101中繼續(xù)對剩余的基因序列進(jìn)行糾錯。同時,在步驟102完成分塊處理之后,即可將得到的部分分塊結(jié)果交由步驟103。也即是說,在上述步驟101、步驟102中,每得到部分處理結(jié)果,即可交由下個步驟處理,這樣就可以大大提高基因序列讀取的效率。

      下面,將對步驟102中如何根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量以及待分析基因序列的總大小,對待處理基因序列進(jìn)行分塊處理進(jìn)行詳細(xì)的介紹。

      圖2所示的是步驟102的實施例的流程示意圖。在將待處理基因序列進(jìn)行分塊處理時,具體包括:

      步驟201:初始化基因序列并行分割程序。

      步驟202:獲取所述待分析基因序列的總大小size。

      步驟203:根據(jù)預(yù)設(shè)進(jìn)程數(shù)量p以及所述待處理基因序列的總大小size,確定分塊大小size/p,根據(jù)所述分塊大小size/p對所述待分析基因序列進(jìn)行分塊處理,得到所述多個分塊基因序列。

      步驟201中,根據(jù)基因序列的特點,選擇的因序列并行分割程序可以是mpi并行程序。對mpi并行程序的初始化可以分為兩個子步驟,即mpi環(huán)境初始化設(shè)置以及輸入文件參數(shù)初始化設(shè)置。

      mpi環(huán)境初始化設(shè)置,即在調(diào)用mpi并行程序之前,要完成對mpi程序的所有初始化工作,調(diào)用函數(shù)名稱為mpi_init();再次,聲明參與計算的所有計算機(jī)節(jié)點信息、參與組通信的進(jìn)程標(biāo)識號以及參與組通信的所有的進(jìn)程數(shù)目。輸入文件參數(shù)初始化設(shè)置,即需要根據(jù)步驟101中得到的糾錯后的基因序列的相關(guān)信息,確定基因序列的值、文件存儲路徑。

      步驟202中,具體操作時,所有參與計算的進(jìn)程并發(fā)調(diào)用mpi_file_open()函數(shù)打開待處理基因序列,并讀取該待處理基因序列文件的總大小。

      步驟203中,所有參與計算的進(jìn)程根據(jù)預(yù)設(shè)進(jìn)程數(shù)量p以及所述待分析基因序列的總大小size,確定分塊大小size/p,所有參與計算的進(jìn)程根據(jù)所述分塊大小size/p對所述待處理基因序列進(jìn)行分塊處理,從而可以得到每個進(jìn)程需要處理的分塊基因序列。即是說,對待處理基因序列進(jìn)行分塊處理時,所有參與計算的進(jìn)程是并發(fā)執(zhí)行的。

      具體地,在步驟203中,所有參與計算的進(jìn)程進(jìn)行分塊處理時的流程可以如圖3所示。

      圖3所示的是步驟203的實施例的流程示意圖。所有參與計算的進(jìn)程在將待處理基因序列進(jìn)行分塊處理時,每個進(jìn)程的操作方式相同,下面以進(jìn)程i為例子進(jìn)行說明。具體包括:

      步驟301,設(shè)定進(jìn)程i的分塊基因序列的起始位置為i*size/p,終止位置為(i+1)*size/p;

      步驟302,尋找所述起始位置的第一個序列的開始點start(i),尋找終止位置后的第一個序列的開始點或者文件終止符end(i);

      步驟303,確定進(jìn)程i的分塊基因序列在所述待分析基因序列中的起始地址為start(i),終止地址為end(i)的基因序列。

      通過圖2以及圖3的描述可知,本發(fā)明實施例提供了詳細(xì)的基因序列分塊處理方法,支持基因序列文件的文件塊自動分割及并行輸入,大大提高了海量基因序列文件的i/o效率。

      由于mpi并行文件讀寫的關(guān)鍵在于每一個進(jìn)程都要清楚的知道所要處理的數(shù)據(jù)文件在文件中存儲的準(zhǔn)確位置,從而所有進(jìn)程可以同時文件的不同部分進(jìn)行讀寫,實現(xiàn)文件的并行操作。在采用圖2以及圖3所示的方法對基因序列進(jìn)行分割處理之后,在步驟103中并發(fā)讀取多個分塊基因序列時,本方法中采用mpi中多視口的并行文件讀寫方式。結(jié)合dna數(shù)據(jù)文件自身特點,本方法選擇調(diào)用mpi_file_set_view()函數(shù)對文件視圖依照上一部分的分塊結(jié)果進(jìn)行視圖分塊,確定每個進(jìn)程要處理的文件塊的起始位置和終止位置,最后,根據(jù)對文件標(biāo)記的起始和終止偏移地址,多進(jìn)程并發(fā)讀取每個進(jìn)程要存儲的文件塊。如圖4所示,該過程的實現(xiàn)流程包括如下步驟:

      步驟401,對所述分塊基因序列的起始地址和終止地址進(jìn)行視圖分塊處理。例如,對進(jìn)程i來說,進(jìn)程i調(diào)用mpi_file_set_view()函數(shù)對文件視圖依照上一步的分塊結(jié)果[start(i),end(i)]進(jìn)行視圖分塊。

      步驟402,讀取所述分塊基因序列的序列數(shù)據(jù)到內(nèi)存。具體操作可以是,進(jìn)程i順序讀取該文件塊中的序列數(shù)據(jù)(fasta格式)或者質(zhì)量數(shù)據(jù)(fastq格式),并申請內(nèi)存空間存儲到內(nèi)存。

      步驟403,關(guān)閉文件,打印信息。

      調(diào)用mpi并行i/o中mpi_file_close()函數(shù),所有參與計算的進(jìn)程關(guān)閉打開的基因序列文件,結(jié)束文件讀取操作。

      例如,當(dāng)基因序列總小大為6,進(jìn)程數(shù)量為3時,每個進(jìn)程可得到2個分塊基因序列,此時讀取的基因序列可以如圖7所示。

      上述對本發(fā)明中所涉及的方法的流程進(jìn)行了詳細(xì)說明,下面對本發(fā)明的基因序列分析系統(tǒng)的結(jié)構(gòu)進(jìn)行說明。

      如圖5所示,是本發(fā)明的基因分析讀取系統(tǒng)500的實施例的結(jié)構(gòu)示意圖。基因分析讀取系統(tǒng)500包括:糾錯模塊501、多個分塊處理模塊502以及多個讀取模塊503。

      其中,糾錯模塊501用于根據(jù)原始基因序列的相關(guān)信息,確定合適的糾錯算法,并使用所述糾錯算法對所述原始基因序列進(jìn)行糾錯,得到待處理基因序列。

      其中,糾錯模塊501首先對原始基因序列進(jìn)行糾錯。具體方式是:根據(jù)原始基因序列的相關(guān)信息,如測序平臺、文件格式,經(jīng)過邏輯判斷選擇合適的糾錯算法并進(jìn)行調(diào)用。同時根據(jù)所選擇的糾錯算法所需要的輸入格式,將原始基因序列的相關(guān)信息轉(zhuǎn)換為計算機(jī)指令進(jìn)行輸入;這樣既可使用調(diào)用的糾錯算法對原始基因序列進(jìn)行糾錯,得到經(jīng)糾錯處理后的基因序列,即待處理基因序列。

      由于在進(jìn)行基因序列糾錯時,是根據(jù)原始基因序列的相關(guān)信息來確定合適的糾錯算法的,因此糾錯模塊501對原始基因序列的來源即測序平臺沒有限制。即是說,原始基因序列可以是從各個平臺上測得的基因序列??梢岳斫獾氖牵m錯模塊501可以預(yù)先存儲多種基因序列的糾錯算法,以便糾錯模塊501能夠根據(jù)原始基因序列的來源進(jìn)行靈活的調(diào)用。

      可以理解的是,原始基因序列的相關(guān)信息可以是用戶輸入的。也即是說在,糾錯模塊501可以預(yù)先接收用戶輸入的關(guān)于所述原始基因序列的相關(guān)信息。

      每個分塊處理模塊502均用于根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量以及所述待處理基因序列的總大小,將所述待處理基因序列進(jìn)行分塊處理,得到分塊基因序列;每個所述讀取模塊503均用于讀取所述分塊基因序列。

      其中,分塊處理模塊502在對處理基因序列進(jìn)行分塊處理時,具體可以根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量以及所述待分析基因序列的總大小,來進(jìn)行基因序列分塊處理,以得到多個分塊基因序列。分塊處理模塊502在對待處理基因序列進(jìn)行分塊之后,即可以將該分塊處理得到的多個分塊基因序列輸入至預(yù)設(shè)的進(jìn)程,換句話說,該預(yù)設(shè)的多個進(jìn)程可以并發(fā)讀取該多個分塊基因序列。其中,每個讀取模塊503運行對應(yīng)運行一個進(jìn)程。

      本實施方式的基因序列讀取系統(tǒng),一方面可以根據(jù)原始基因序列的相關(guān)信息確定合適的糾錯算法,以對原始基因序列進(jìn)行糾錯,因此對原始基因序列的測序平臺沒有限制。另一方面,還可以根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量和待分析基因序列的總大小對糾錯處理后的基因序列進(jìn)行分塊以及并發(fā)讀取,這樣可以減少單機(jī)存儲dna數(shù)據(jù)文件的內(nèi)存消耗,同時大大提高了基因序列讀取的效率與準(zhǔn)確性。

      需要說明的是,如圖5所示,糾錯模塊501、分塊處理模塊502以及讀取模塊503的操作是并發(fā)執(zhí)行的。在糾錯模塊501得到部分結(jié)果后,可直接交付給下一階段分塊處理模塊502進(jìn)行下一步操作,同時糾錯模塊501繼續(xù)對其余的數(shù)據(jù)進(jìn)行糾錯,每得到一部分結(jié)果便交付給下一階段,大大提高了整個讀取系統(tǒng)的讀取效率。

      如圖6所示,是圖5中分塊處理模塊502的實施例的結(jié)構(gòu)示意圖,其包括:初始化單元5021,獲取單元5022以及分塊處理單元5023。

      其中,初始化單元5021,用于初始化基因序列并行分割程序。初始化單元5021在初始化時,可根據(jù)基因序列的特點,選擇的因序列并行分割程序可以是mpi并行程序。對mpi并行程序的初始化可以分為兩個子步驟,即mpi環(huán)境初始化設(shè)置以及輸入文件參數(shù)初始化設(shè)置。mpi環(huán)境初始化設(shè)置,即在調(diào)用mpi并行程序之前,要完成對mpi程序的所有初始化工作,調(diào)用函數(shù)名稱為mpi_init();再次,聲明參與計算的所有計算機(jī)節(jié)點信息、參與組通信的進(jìn)程標(biāo)識號以及參與組通信的所有的進(jìn)程數(shù)目。輸入文件參數(shù)初始化設(shè)置,即需要根據(jù)得到的糾錯后的基因序列的相關(guān)信息,確定基因序列的值、文件存儲路徑。

      獲取單元5022,用于獲取所述待分析基因序列的總大小size;具體操作時,所有參與計算的進(jìn)程并發(fā)調(diào)用mpi_file_open()函數(shù)打開待處理基因序列,并讀取該待處理基因序列文件的總大小。

      分塊處理單元5023,用于根據(jù)預(yù)設(shè)的進(jìn)程數(shù)量p以及所述待分析基因序列的總大小size,確定分塊大小size/p,根據(jù)所述分塊大小size/p對所述待分析基因序列進(jìn)行分塊處理,得到所述多個分塊基因序列。所有參與計算的進(jìn)程根據(jù)預(yù)設(shè)進(jìn)程數(shù)量p以及所述待分析基因序列的總大小size,確定分塊大小size/p,所有參與計算的進(jìn)程根據(jù)所述分塊大小size/p對所述待處理基因序列進(jìn)行分塊處理,從而可以得到每個進(jìn)程需要處理的分塊基因序列。即是說,對待處理基因序列進(jìn)行分塊處理時,所有參與計算的進(jìn)程是并發(fā)執(zhí)行的。

      分塊處理單元5023,具體用于:設(shè)定進(jìn)程i的分塊基因序列的起始位置為i*size/p,終止位置為(i+1)*size/p;尋找所述起始位置后的第一個序列的開始點start(i),所述終止位置后的第一個序列的開始點或者文件終止符end(i);確定進(jìn)程i的分塊基因序列在所述待分析基因序列中的起始地址為start(i),終止地址為end(i)的基因序列。本發(fā)明實施例提供了詳細(xì)的基因序列分塊處理方式,支持基因序列文件的文件塊自動分割及并行輸入,大大提高了海量基因序列文件的i/o效率。

      由于mpi并行文件讀寫的關(guān)鍵在于每一個進(jìn)程都要清楚的知道所要處理的數(shù)據(jù)文件在文件中存儲的準(zhǔn)確位置,從而所有進(jìn)程可以同時文件的不同部分進(jìn)行讀寫,實現(xiàn)文件的并行操作。在分塊處理模塊502按照上述方式進(jìn)行分塊處理之后,多個讀取模塊503在并發(fā)讀取分塊基因序列時,采用mpi中多視口的并行文件讀寫方式。結(jié)合dna數(shù)據(jù)文件自身特點,選擇調(diào)用mpi_file_set_view()函數(shù)對文件視圖依照上一部分的分塊結(jié)果進(jìn)行視圖分塊,確定每個讀取模塊503要處理的文件塊的起始位置和終止位置,最后,根據(jù)對文件標(biāo)記的起始和終止偏移地址,多個讀取模塊503并發(fā)讀取每個個讀取模塊503要存儲的文件塊。

      值得一提的是,本發(fā)明所涉及到的各模塊均為邏輯模塊,在實際應(yīng)用中,一個邏輯單元可以是一個物理單元,也可以是一個物理單元的一部分,還可以以多個物理單元的組合實現(xiàn)。此外,為了突出本發(fā)明的創(chuàng)新部分,本實施方式中并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的單元引入,但這并不表明本實施方式中不存在其它的單元。

      本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施方式方法中的全部或部分流程,是可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機(jī)存儲記憶體(randomaccessmemory,ram)等。

      本領(lǐng)域的普通技術(shù)人員可以理解,上述各實施方式是實現(xiàn)本發(fā)明的具體實施例,而在實際應(yīng)用中,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1