【发布时间】:2021-07-15 22:56:49
【问题描述】:
我有一个包含两列的数据框,第一列是生物的名称,第二列是一串字母的序列。我正在尝试创建一个算法来查看生物体的序列是否位于一个更大的基因组字符串中,该基因组也由字母组成。如果它在基因组中,我想将生物体的名称添加到列表中。因此,例如,如果流感在下面的基因组中,我希望将流感添加到列表中。
dict_1={'organisms':['flu', 'cold', 'stomach bug'], 'seq_list':['HTIDIJEKODKDMRM',
'AGGTTTEFGFGEERDDTER', 'EGHDGGEDCGRDSGRDCFD']}
df=pd.DataFrame(dict_1)
organisms seq_list
0 flu HTIDIJEKODKDMRM
1 cold AGGTTTEFGFGEERDDTER
2 stomach bug EGHDGGEDCGRDSGRDCFD
genome='TLTPSRDMEDHTIDIJEKODKDMRM'
如果存在其中 p 是有机体而 t 是基因组的匹配索引,则第一个函数会找到匹配的索引。第二部分是我遇到麻烦的部分。我正在尝试使用 for 循环来搜索 df 中的每个条目,但是如果我得到匹配项,我不确定如何引用 df 中的第一列以将名称添加到空列表中。感谢您的帮助!
def naive(p, t):
occurences = []
for i in range(len(t) - len(p) + 1):
match = True
for j in range(len(p)):
if t[i+j] != p[j]:
match = False
break
if match:
occurences.append(i)
return occurences
Organisms_that_matched = []
for x in df:
matches=naive(genome, x)
if len(matches) > 0:
#add name of organism to Organisms_that_matched list
【问题讨论】:
标签: python design-patterns sequence matching genome