编程语言:Python3.4
我为Coursera的生物信息学1课程编写了一个程序。该程序运行正常,但对于大数据集,非常慢。我想,这是因为循环运行了4**k次,其中k是传递给函数的子字符串的长度。 输入:字符串文本和模式以及整数d。 输出:所有起始位置,其中Pattern显示为最多不匹配d的文本子串。在
这是我的代码:
def MotifCount(string1, substring, d):
k = 4 ** (len(substring))
codeArray = list(itertools.product(['A', 'C', 'G', 'T'], repeat=len(substring)))
for i in range(k):
codeArray2 = ''.join(list(codeArray[i]))
HammingValue = HammingDistance(codeArray2, substring)
if HammingValue <= d:
for j in range(len(string1)):
if(string1.find(codeArray2, j) == j):
print(j)
def HammingDistance(string_1, string_2):
length_1 = len(string_1)
length_2 = len(string_2)
count = 0
for i in range(length_1):
if string_1[i] != string_2[i]:
count += 1
return count
样本输入:
^{pr2}$输出:
^{3}$我想为更大的数据集优化这段代码。有什么方法可以减少代码的运行时间吗?在
它提供:
^{pr2}$快点。在
相关问题 更多 >
编程相关推荐