该代码需要找到字符串(基因组)中最常见的k-mers(k个字母的子字符串)与d不匹配。在过去,我必须找到最常见的k-mer,而不存在不匹配,我正在尝试最小程度地修改我的代码。要做到这一点,我必须能够增加字典中的值,这些值的键与我传递的字符串的键不同。可能吗?下面是我的代码。有没有办法做到我在评论中所写的HammingDistance()
只计算两个字符串之间的差异数
import operator
def MostFrequentKmer (Text, k, d):
kmerDict = {}
freqKmers = list()
for i in range (0, len(Text)-k+1):
kmer = Text[i:i+k]
if kmer in kmerDict:
kmerDict[kmer] += 1
#elif a key exists for which HammingDistance(key, kmer) <= d, then increment the value associated with that key
else:
kmerDict[kmer] = 1
maxVal = max(zip(kmerDict.values()))[0]
for k, v in kmerDict.items():
if v == maxVal:
freqKmers.append(k)
print(sorted(freqKmers))
def HammingDistance (str1, str2):
hamDis = 0
for i in range(0, len(str1)):
if str1[i] != str2[i]:
hamDis += 1
return hamDis
示例IO为:
输入-(“ACGTTGCATGTCGCATGATGATGAGGT”,4,1)
输出-[“ATGC”、“ATGT”、“GATG”]
假设您希望1)增加所有最近关键点的计数,2)如果没有最近关键点,则添加一个条目,下面的操作就是您想要的
作为一个旁白,请考虑以下Python命名约定,例如,更改^ {CD1>}到^ {CD2>}。
相关问题 更多 >
编程相关推荐