我正在执行一个成员资格搜索,其中一个小列表(核苷酸读取字符串列表)的每个成员都会在一个非常大的关联k-mers trie中进行成员资格测试
每次读取的核苷酸被搜索大约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个成员搜索。每次读取将发生一次,一旦完成,将处理下一次读取
如何使用多个进程(一台给定的机器可以提供多少个进程)来提高计算效率,同时保持特定的读取顺序
我认为并行化应该主要进行,因为我认为限制因素是要处理的大量读取,而不是成员搜索方法本身
我查看了以下网站进行研究,但还没有找到一个与我类似的例子:
https://wiki.python.org/moin/ParallelProcessinghttp://www.parallelpython.com/
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐