如何打印对齐序列末尾的索引?

时间:2014-10-09 16:24:26

标签: python

我正在使用代码查找seq_find在seq_long中的位置,并尝试在对齐结束的seq_long中打印出索引。

seq_long="CCGACATCGTCCTCACCGACCATCGTCCTGCATCGTCCT"
seq_find="CATCGTCCT"
matching_seq_index=[]
matching_seq_range=[]
matching_seq_index_end=[]
for x in range(len(seq_long)):
    search=seq_long[x:x+9]
    matched=[]
    if search==seq_find:
        matching_seq_index.append(x)
        matching_seq_index_range.append(len(search))
        matching_seq_index_end.append(x:x+len(search))
    else:
        pass
print matching_seq_index   

2 个答案:

答案 0 :(得分:0)

您需要更改:

matching_seq_index_end.append(x:x+len(search))

为:

matching_seq_index_end.append(x+len(search))

无论如何使用re.finditer更短的版本和列表理解:

>>> import re
>>> [m.end() for m in re.finditer(seq_find, seq_long)]
[13, 29, 39]

答案 1 :(得分:0)

如果您将seq_longseq_find分开,则会发现seq_findseq_long中重复了多少时间,因此使用简单的代码可以在seq_long中打印出索引对齐结束。 :

>>> seq_long.split(seq_find)
['CCGA', 'CACCGAC', 'G', '']

>>> [end_sign[0] if len(end_sign)>0 else '' for end_sign in seq_long.split(seq_find)]
['C', 'C', 'G', '']