You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现DNA转RNA翻译蛋白质仅输出Met错误排查求助

DNA转蛋白仅输出Met的排查点
  • 密码子读取步长错误
    大部分问题都出在这里:找到起始密码子AUG(对应Met)后,没有按每3个碱基为一个密码子的规则步进读取,而是继续从起始密码子的第2/3位开始读取下一组密码子,导致后续碱基分组完全错位,无法匹配到有效氨基酸,或是直接匹配到终止密码子提前终止。
  • 密码子表配置错误
    两种常见错误:
    1. 混淆DNA与RNA碱基,用含T的DNA密码子匹配转录后的RNA序列,导致除了Met的AUG外其余密码子全部匹配失败,若你配置了匹配失败默认返回STOP就会直接终止
    2. 终止密码子范围配置错误,误将普通氨基酸对应的密码子加入STOP列表,读取到Met后的第一个密码子就触发终止条件
  • 逻辑分支顺序错误
    若你设置了起始标志位控制输出,需注意逻辑顺序:找到Met后先将其加入结果列表,再开启标志位;后续读取到密码子时,先判断是否为终止密码子,是就直接终止,否则将有效氨基酸加入结果。如果顺序写反,会出现未添加氨基酸就提前终止的情况。
# 参考逻辑片段
codon_table = {
    "AUG": "Met", "GCU": "Ala", "UAA": "STOP"
    # 完整密码子表请自行补全
}
def trans_dna_to_protein(dna_seq: str) -> list:
    rna_seq = dna_seq.replace("T", "U")
    protein_res = []
    start_trans = False
    # 固定步长3遍历,避免分组错位
    for idx in range(0, len(rna_seq) - 2, 3):
        current_codon = rna_seq[idx:idx+3]
        amino_acid = codon_table.get(current_codon, "")
        if amino_acid == "Met":
            start_trans = True
            protein_res.append(amino_acid)
            continue
        if start_trans:
            if amino_acid == "STOP":
                break
            if amino_acid:
                protein_res.append(amino_acid)
    return protein_res

内容的提问来源于stack exchange,提问作者user16983303

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:24:04