背景:
限制性内切酶是一种同源二聚体,这意味着它由两个相同的亚结构组成。 这些结构中的每一个 与限制性内切酶分离,以结合并切割噬菌体DNA分子的一条链; 两个亚结构都预先编程为包含4至12个核苷酸的相同靶链,以便在噬菌体DNA中搜索。 限制酶识别DNA序列中的回文序列,回文序列是一种旋转对称结构,在轴的两侧序列相同而反向,特点是在该段的碱基序列的互补链之间正读反读都相同。
例如,GCATGC是一个反向回文,因为它的反向补码是GCATGC。
https://rosalind.info/problems/revp/
问题:
给出一条长度不超过1kb的DNA序列。
返回这条序列上长度在4-12nt间的回文序列的位置和长度,以任意顺序输出。
例子:
input:
TCAATGCATGCGGGTCTATATGCAT
ouput:
4 6 5 4 6 6 7 4 17 4 18 4 20 6 21 4
代码:
from method import fasta
def Reverse(dna_seq): #反向互补序列
com = { "A" : "T", "T" : "A", "C" : "G", "G" : "C"}
Reversed_dna = ''
for i in dna_seq[::-1]:
Reversed_dna+=com[i]
return Reversed_dna
name_list,value_list = fasta('')
seq = value_list[0]
"""
seq = 'TCAATGCATGCGGGTCTATATGCAT'
"""
for i in range(4,13,2):
for j in range(0,len(seq)-i+ 1):
if seq[j:j+i] == Reverse(seq[j:j+i]):
print(j+1,end=" ")
print(i)