大数据集的成员资格搜索并行处理

时间:2014-03-05 00:19:23

标签: python parallel-processing bioinformatics

我正在进行成员资格搜索,其中小名单的每个成员(核苷酸读数字符串列表)被测试成为非常大的相关k-mers成员。

每次读取核苷酸大约200次(每次读取的k-mers量),该脚本必须能够处理包含数百亿读取的文件。我设计了脚本,以便一次处理一个读取,使用两个(成对的结束)输入fastq文件作为生成器。

该脚本运行正常,但现在可能需要几天到几周才能完成。

def readTrim1(inRead, indexList):

    # k-merize inRead.
    # for each k-mer in inRead
        #check if k-mer is present in trie of k-mres.
    # reassemble k-mers into read and return validated read.

for read1, read2 in readLists:
    finalRead1 = readTrim1(read1, indexList)  # send to method that will perform 
                                              # membership search.

    finalRead2 = readTrim2(read1, indexList)  # Same but for second read. 

基本上,一次读取一次将被发送到将执行大约200次成员资格搜索的方法。每次读取都会发生一次,一旦完成,将处理下一次读取。

如何使用多个处理器(尽可能多的给定机器可以提供)来提高计算效率,同时仍保持特定的读取顺序?

我认为并行化应该在main中进行,因为我认为限制因素是要处理的大量读取,而不是成员搜索方法本身。

我查看过以下网站进行研究,但没有找到一个与我相似的例子:

https://wiki.python.org/moin/ParallelProcessing http://www.parallelpython.com/

谢谢

0 个答案:

没有答案