小编Dan*_*ann的帖子

计算字符串Python3.6中子串实例的最快方法

我一直在研究一个程序,它需要在主字符串(~400,000个字符)内计算子字符串(最多4000个位于列表中的2-6个字符的子字符串).我理解这与字符串中的Counting子字符串中提出的问题类似,但是,此解决方案对我不起作用.由于我的子字符串是DNA序列,我的许多子字符串都是单个字符的重复实例(例如'AA'); 因此,如果我将字符串拆分为'AA','AAA'将被解释为'AA'的单个实例而不是两个实例.我目前的解决方案是使用嵌套循环,但我希望有一个更快的方法,因为这个代码需要5分钟以上的单个主字符串.提前致谢!

def getKmers(self, kmer):
    self.kmer_dict = {}
    kmer_tuples = list(product(['A', 'C', 'G', 'T'], repeat = kmer))
    kmer_list = []
    for x in range(len(kmer_tuples)):
        new_kmer = ''
        for y in range(kmer):
            new_kmer += kmer_tuples[x][y]
        kmer_list.append(new_kmer)
    for x in range(len(kmer_list)):
        self.kmer_dict[kmer_list[x]] = 0
    for x in range(len(self.sequence)-kmer):
        for substr in kmer_list:
            if self.sequence[x:x+kmer] == substr:
                self.kmer_dict[substr] += 1
                break
    return self.kmer_dict
Run Code Online (Sandbox Code Playgroud)

python string performance bioinformatics biopython

3
推荐指数
1
解决办法
258
查看次数

标签 统计

bioinformatics ×1

biopython ×1

performance ×1

python ×1

string ×1