2

我正在考慮解析一個平行於的fasta文件的方法。對於那些不知道的fasta格式的示例:並行解析文件

>SEQUENCE_1 
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL 
>SEQUENCE_2 
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI 
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH 

所以行開頭的「>」是含有使標識符以下序列的識別符標題行。

我想你將整個文件加載到內存中,但在此之後,我無法找到處理這些數據的方法。

問題是:線程無法從任意位置開始,因爲它們可能以這種方式切割序列。

有人有任何經驗在並行解析文件時,行之間相互依賴?任何想法是讚賞。

+0

你也可以問http://biostar.stackexchange.com/ – Pierre

回答

1

應該很容易,因爲在這種情況下,線彼此之間的依賴關係非常簡單:只需讓線程在任意位置開始,然後跳過線,直到它們到達一個以'>開頭的線'(即開始一個新的序列)。

爲了確保沒有序列得到兩次處理,保留一組已經處理過的所有序列ID(或者如果序列ID不是唯一的,但它們真的應該是!)。

1

執行預處理步驟,遍歷數據一次,並確定所有有效的起始點。我們稱之爲這些任務。然後,您可以簡單地使用工作人員模型,每個工作人員重複詢問任務(起點)並解析它。

+0

做預處理,你基本上讀過這些文件,這可能會佔據處理時間。 –

+0

@Ira Baxter可能。我真的不知道該文件被「解析」到什麼程度。如果一個序列被解析爲一個簡單的數組,或者列表,或者一些類似的數據結構,那麼你確實不會從中得到任何東西。但是,在那種情況下,我懷疑你會通過平行的方式贏得一些東西。 – Yuri