yuanzhen_licheng 2024-01-17 16:05 采纳率: 100%
浏览 5
已结题

python DNA序列转化为蛋白质序列

python DNA序列转化为蛋白质序列

利用python将 “1.txt” 文件中一段长度不限的DNA序列转换成氨基酸序列,并输出结果到 “1t.txt” 文件。
遇到问题请指点。
“1.txt” 文件:
ATGCACCACTTAAGATCAGCGCTGCCTTATGCC
python代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

with open('1.txt', 'r') as f, open('1t.txt', 'w') as f_out:

def translate(seq):     
    table = {
        "TTT":"F", "TTC":"F", "TTA":"L", "TTG":"L",
        "TCT":"S", "TCC":"S", "TCA":"S", "TCG":"S",
        "TAT":"Y", "TAC":"Y", "TAA":"*", "TAG":"*",
        "TGT":"C", "TGC":"C", "TGA":"*", "TGG":"W",
        "CTT":"L", "CTC":"L", "CTA":"L", "CTG":"L",
        "CCT":"P", "CCC":"P", "CCA":"P", "CCG":"P",
        "CAT":"H", "CAC":"H", "CAA":"Q", "CAG":"Q",
        "CGT":"R", "CGC":"R", "CGA":"R", "CGG":"R",
        "ATT":"I", "ATC":"I", "ATA":"I", "ATG":"M",
        "ACT":"T", "ACC":"T", "ACA":"T", "ACG":"T",
        "AAT":"N", "AAC":"N", "AAA":"K", "AAG":"K",
        "AGT":"S", "AGC":"S", "AGA":"R", "AGG":"R",
        "GTT":"V", "GTC":"V", "GTA":"V", "GTG":"V",
        "GCT":"A", "GCC":"A", "GCA":"A", "GCG":"A",
        "GAT":"D", "GAC":"D", "GAA":"E", "GAG":"E",
        "GGT":"G", "GGC":"G", "GGA":"G", "GGG":"G"
    } 
def translate(seq):   
    protein =""
    for i in range(0, len(seq), 3):
        codon = seq[i:i+3]
        if codon in table:
            protein += table[codon]
        else:
            protein += 'X'
with open('1t.txt', 'w') as f:
    f.write(protein)

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-17 16:06
    关注

    引自免费微信小程序:皆我百晓生

    问题分析:

    根据提供的python代码,我发现其中有一些问题:

    1. 缺少主程序的调用,即没有调用translate函数将DNA序列转化为氨基酸序列;
    2. 在translate函数中,定义了两次相同的函数;
    3. 缺少对translate函数的调用;
    4. 最后一行代码f.write(protein)缩进错误。

    解决方案:

    1. 将translate函数的定义移动到with open('1.txt', 'r') as f, open('1t.txt', 'w') as f_out:的缩进内;
    2. 在with open('1.txt', 'r') as f, open('1t.txt', 'w') as f_out:的缩进内添加主程序的调用:f_out.write(translate(seq));
    3. 删除多余的translate函数定义。

    修改后的代码如下:

    with open('1.txt', 'r') as f, open('1t.txt', 'w') as f_out:
        seq = f.read()
    
        def translate(seq):     
            table = {
                "TTT":"F", "TTC":"F", "TTA":"L", "TTG":"L",
                "TCT":"S", "TCC":"S", "TCA":"S", "TCG":"S",
                "TAT":"Y", "TAC":"Y", "TAA":"*", "TAG":"*",
                "TGT":"C", "TGC":"C", "TGA":"*", "TGG":"W",
                "CTT":"L", "CTC":"L", "CTA":"L", "CTG":"L",
                "CCT":"P", "CCC":"P", "CCA":"P", "CCG":"P",
                "CAT":"H", "CAC":"H", "CAA":"Q", "CAG":"Q",
                "CGT":"R", "CGC":"R", "CGA":"R", "CGG":"R",
                "ATT":"I", "ATC":"I", "ATA":"I", "ATG":"M",
                "ACT":"T", "ACC":"T", "ACA":"T", "ACG":"T",
                "AAT":"N", "AAC":"N", "AAA":"K", "AAG":"K",
                "AGT":"S", "AGC":"S", "AGA":"R", "AGG":"R",
                "GTT":"V", "GTC":"V", "GTA":"V", "GTG":"V",
                "GCT":"A", "GCC":"A", "GCA":"A", "GCG":"A",
                "GAT":"D", "GAC":"D", "GAA":"E", "GAG":"E",
                "GGT":"G", "GGC":"G", "GGA":"G", "GGG":"G"
            }
    
            protein =""
            for i in range(0, len(seq), 3):
                codon = seq[i:i+3]
                if codon in table:
                    protein += table[codon]
                else:
                    protein += 'X'
            return protein
    
        f_out.write(translate(seq))
    

    希望能解决你的问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月17日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改