美文网首页
Python寻找指定长度互补回文序列

Python寻找指定长度互补回文序列

作者: 新欣enjoy | 来源:发表于2020-01-31 16:03 被阅读0次

引言:一篇推文重复了当下武汉新型冠状病毒“破译”过程,主要内容包括寻找回文序列、寻找“可变”翻译、构建进化树等。在此只总结寻找互补回文序列内容。

原文参考

互补回文序列:序列长度呈中心对称,原始序列的互补序列的反向序列与原始序列相同。如:ATTGGCCAAT。多为自身互补形成茎环状结构。

Python实现22bp长度互补回文序列

思路

  1. 循环起始搜索位置
  2. 设定搜索回文序列窗口
  3. 选择序列,并获得其互补逆向序列
  4. 判断选择序列与互补逆序是否相等

实现脚本关键点

  1. 自定义互补序列函数
  2. 设定搜索窗口
  3. 判定原始序列与互补的反向序列是否相同
## 参考脚本
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)

相关文章

网友评论

      本文标题:Python寻找指定长度互补回文序列

      本文链接:https://www.haomeiwen.com/subject/sgmgthtx.html