Parsing 并行解析文件

Parsing 并行解析文件,parsing,concurrency,parallel-processing,bioinformatics,fasta,Parsing,Concurrency,Parallel Processing,Bioinformatics,Fasta,我正在考虑一种在并行中解析fasta文件的方法。对于不了解fasta格式的人,请举一个例子: >SEQUENCE_1 MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL

我正在考虑一种在并行中解析fasta文件的方法。对于不了解fasta格式的人,请举一个例子:

>SEQUENCE_1  
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG  
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK  
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL  
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL  
>SEQUENCE_2  
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI  
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH  
因此,以“>”开头的行是包含标识符后面的序列标识符的标题行

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

问题是:线程不能在任意位置启动,因为它们可以以这种方式剪切序列


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

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

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


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

要进行预处理,您基本上已经读取了文件,这可能支配了处理时间。@Ira Baxter。我真的不知道文件被“解析”到什么程度。如果将一个序列解析为一个简单的数组、列表或类似的数据结构,那么您确实不会从中获得任何好处。然而,在这种情况下,我怀疑你是否会通过并行来赢得一些东西。你也可以问