我正在尝试解决这个生物信息学问题:https://stepic.org/lesson/An-Explosion-of-Hidden-Messages-4/step/1?course=Bioinformatics-Algorithms-2&unit=8
具体问题在上面链接的第5个窗口中,问题是:在 E. coli 基因组中有多少个不同的 9-mers 形成了(500,3)clumps?(换句话说,不要重复计算一个 9-mer。)
以下是我的代码。它是错误的,我很想知道为什么以及如何改进它(显然 O 效率很差,但我几天前才开始编写 Python...)非常感谢!
genome = '' #insert e. Coli genome here
k = 4 #length of k-mer
L = 50 #size of sliding window
t = 3 #k-mer appears t times
counter = 0
Count = []
for i in range(0,len(genome)-L): #slide window down the genome
pattern = genome[i:i+k] #given this k-mer
for j in range(i,i+L): #calculate k-mer frequency in window of len(L)
if genome[j:j+k] == pattern:
counter = counter + 1
Count.append(counter)
counter = 0 #IMPORTANT: reset counter after each i
Clump = []
for i in range(0,len(Count)):
if Count[i] == t: #figure out the window that has k-mers of frequency t
Clump.append(i)
Output = []
for i in range(0,len(Clump)):
Output.append(genome[Clump[i]:Clump[i]+k])
print " ".join(list(set(Output))) #remove duplicates if a particular k-mer is found more than once
print len(Output)
print len(list(set(Output))) #total number of Clump(k,L,t)