3

我正在考虑一种并行解析fasta文件的方法。对于那些不知道 fasta-format 的人,举个例子:

>SEQUENCE_1  
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG  
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK  
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL  
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL  
>SEQUENCE_2  
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI  
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH  

因此,以“>”开头的行是标题行,其中包含标识符后面的序列的标识符。

我想您将整个文件加载到内存中,但在此之后我无法找到处理这些数据的方法。

问题是:线程不能从任意位置开始,因为它们可以通过这种方式剪切序列。

当行相互依赖时,有人有并行解析文件的经验吗?任何想法都值得赞赏。

4

2 回答 2

2

应该很容易,因为在这种情况下,行之间的依赖关系非常简单:只需让线程从任意位置开始,然后跳过行,直到它们到达以“>”开头的行(即开始一个新的序列)。

为确保没有序列被处理两次,请保留一组已处理的所有序列 ID(或者如果序列 ID 不是唯一的,您可以按行号进行处理,但它们确实应该是!)。

于 2011-11-27T20:23:11.790 回答
1

执行预处理步骤,遍历数据一次,并确定所有有效的起点。让我们称这些任务。然后,您可以简单地使用工人-船员模型,其中每个工人重复要求一个任务(一个起点),并对其进行解析。

于 2011-11-24T15:21:24.790 回答