def find_agtc_seq(seq_in):
chars = 'AGTC'
cur_str = []
for ch in seq_in:
cur_str.append(ch)
while all(map(cur_str.count,chars)):
yield("".join(cur_str))
cur_str.pop(0)
seq = 'AAGTCCTAG'
for substr in find_agtc_seq(seq):
print(substr)
DNA='AAGTCCTAG'
toSave=[]
for i in range(len(DNA)):
letters=['A','G','T','C']
j=i
seq=[]
while len(letters)>0 and j<(len(DNA)):
seq.append(DNA[j])
try:
letters.remove(DNA[j])
except:
pass
j+=1
if len(letters)==0:
toSave.append(seq)
print(toSave)
s = 'AAGTCCTAG'
def get_shortest(s):
l, b = len(s), set('ATCG')
options = [s[i:j+1] for i in range(l) for j in range(i,l) if (j+1)-i > 3]
return [i for i in options if len(set(i) & b) == 4 and (set(i) != set(i[:-1]))]
print(get_shortest(s))
由于您要查找的子字符串可能有任意长度,所以后进先出队列似乎可以工作。一次追加每个字母,检查每个字母中是否至少有一个字母。如果找到了,把它还给我。然后去掉前面的字母,继续检查直到不再有效。你知道吗
这似乎导致了您要查找的子字符串:
这是另一种方法。也许没有克里斯·安斯那么快那么好。但对于初学者来说,阅读和理解可能要简单一些。你知道吗
您可以找到长度为4+的所有子字符串,然后从中向下选择,只找到包含每个字母中一个的最短可能组合:
输出:
相关问题 更多 >
编程相关推荐