我有一个包含各种字母序列的列表。你知道吗
sequences = ['AAGTAAA', 'AAATGAT', 'AAAGTTT', 'TTTTCCC', 'AATTCGC', 'CGCTCCC']
我想看看列表中每个序列的最后3个字母是否与所有其他序列的前3个字母匹配。如果发生这种情况,我想知道这两个序列的索引。你知道吗
我基本上是想制作一个邻接列表。以下是输入示例:
>Sample_0
AAGTAAA
>Sample_1
AAATGAT
>Sample_2
AAAGTTT
>Sample_3
TTTTCCC
>Sample_4
AATTCGC
>Sample_5
CGCTCCC
以及输出:
>Sample_0 >Sample_1
>Sample_0 >Sample_2
>Sample_2 >Sample_3
>Sample_4 >Sample_5
现在,我试图制作两个不同的列表,包含所有的前缀和后缀,但我不知道这是否有帮助,以及如何使用它来解决我的问题。你知道吗
file = open("rosalind_grph2.txt", "r")
gene_names, sequences, = [], []
seq = ""
for line in file:
if line[0] == ">":
gene_names.append(line.strip())
if seq == "":
continue
sequences.append(seq)
seq = ""
if line[0] in "ATCG":
seq = seq + line.strip()
sequences.append(seq)
#So far I put all I needed into a list
prefix = [i[0:3] for i in sequences]
suffix = [i[len(i)-3:] for i in sequences]
#Now, all suffixes and prefixes are in lists as well
#but what now?
print(suffix)
print(prefix)
print(sequences)
file.close
如果我理解正确,您想做的是连接
sequences
的不同元素,其中连接是字符串的开头与另一个字符串的结尾匹配。你知道吗使用
dict
的一种方法是使用以下函数match_head_tail()
:如果还想包含不匹配的序列,可以使用以下函数
match_head_tail_all()
:编辑1
如果您真的需要索引,请将以上内容与
enumerate()
结合起来得到它们,例如:编辑2
如果您的输入包含许多具有相同结尾的序列,您可能需要考虑实现一些缓存机制以提高计算效率(以牺牲内存效率为代价),例如:
编辑3
所有这些也只能通过
list
实现,例如:甚至更少的筑巢:
如果我正确理解了您的问题,那么此代码将在列表上枚举两次。它将第一个元素的最后3个字母与第二个元素的前3个字母进行比较,如果匹配,则打印元素的索引。如果这不是你想要的,请给出反馈/澄清。这是O(n^2),如果您进行初始传递并将索引存储在类似于字典的结构中,可能会加快速度。你知道吗
相关问题 更多 >
编程相关推荐