引言:一篇推文重复了当下武汉新型冠状病毒“破译”过程,主要内容包括寻找回文序列、寻找“可变”翻译、构建进化树等。在此只总结寻找互补回文序列内容。
互补回文序列:序列长度呈中心对称,原始序列的互补序列的反向序列与原始序列相同。如:ATTGGCCAAT。多为自身互补形成茎环状结构。
Python实现22bp长度互补回文序列
思路
- 循环起始搜索位置
- 设定搜索回文序列窗口
- 选择序列,并获得其互补逆向序列
- 判断选择序列与互补逆序是否相等
实现脚本关键点
- 自定义互补序列函数
- 设定搜索窗口
- 判定原始序列与互补的反向序列是否相同
## 参考脚本
import re
fasta = {}
with open('DQ497008.1.fasta') as file:
sequence = ""
for line in file:
if line.startswith(">"):
name = line[1:].rstrip()
fasta[name] = ''
continue
fasta[name] += line.rstrip().upper()
def complement(s):
basecomplement = {
"A":"T",
"T":"A",
"G":"C",
"C":"G",
}
letters = list(s)
letters = [basecomplement[base] for base in letters]
return ''.join(letters)
maxlen = 0
for seqname,seq in fasta.items():
for i in range(len(seq)):
for j in range(10,50):
selectseq = seq[i:i+j]
reverse_complement_seq = complement(selectseq)[::-1]
if selectseq == reverse_complement_seq:
if len(selectseq) > maxlen:
maxlen = len(selectseq)
start = i+1
end = i+j+1
CPSeq = selectseq
print(start,end,CPSeq)
print(maxlen)
网友评论