Python 3.x 检查和计数Python中字符串中是否存在给定子字符串的有效方法
我有几个fasta文件(大约40个),其中有大量的序列(每个序列超过100000个)。我想做的是检查一个给定的字符串是否存在于不同的序列中,以及它是否计入了多少。比如说, >序列1 考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加 Auacuaguugucuuucacuuauugaacguugcgugcagagaauuuuugugaua UAUCAAAAA >序列2 CGCAGAUGAGAUUGUGCGCCCUUGCCUCUCUGUAAGGUGUGUGGAAGCGCACCU CCCCAGUGUCUCCCGGACUGUAGCCCAAUCGAUGUAAUCACACACAUGUGG 乌库奥古 如果我想计算具有aaaaaaaaa的序列数,我应该得到1,因为它只存在于两个序列中的一个序列中 为了搜索字符串,我尝试了Boyer-moore-horspool和Knuth-Morris-Pratt算法。问题是我有一个需要检查的20000个字符串的列表,这意味着对于每个字符串,它必须检查400000多个序列。在我的代码中,我使用循环,我使用数据的方式使我使用了3个缩进的循环,我知道这太多了:Python 3.x 检查和计数Python中字符串中是否存在给定子字符串的有效方法,python-3.x,string,count,substring,Python 3.x,String,Count,Substring,我有几个fasta文件(大约40个),其中有大量的序列(每个序列超过100000个)。我想做的是检查一个给定的字符串是否存在于不同的序列中,以及它是否计入了多少。比如说, >序列1 考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加考加 Auacuaguugucuuucacuuauugaacguugcgugcagagaauuuuugugaua UAUCAAAAA >序列2 CGCAGAUGAGAUUGUGC
for w in words:
for x in list_files:
with open(directory ,"r") as f:
for seq_record in SeqIO.parse((directory), "fasta"):
我如何组织我的数据以使其更高效,或者是否有其他方法可以做到这一点?在相对较高的级别上,我会:
functools.partial
和concurrent.futures
组合使用ThreadpoolExecutor
为什么不在中使用函数甚至
,而不是编写自己的字符串搜索函数?我希望这些方法能在biopython中得到很好的应用。使用正则表达式作为正则表达式模式搜索多个目标字符串可能会提高搜索性能。此外,我还将考虑使用该模块在多个处理器上分配工作。您将使用一个工作人员池来处理文件的子集,然后在每个子流程返回结果时对结果进行整理。