Python实现DNA转RNA翻译蛋白质仅输出Met错误排查求助
DNA转蛋白仅输出Met的排查点
- 密码子读取步长错误
大部分问题都出在这里:找到起始密码子AUG(对应Met)后,没有按每3个碱基为一个密码子的规则步进读取,而是继续从起始密码子的第2/3位开始读取下一组密码子,导致后续碱基分组完全错位,无法匹配到有效氨基酸,或是直接匹配到终止密码子提前终止。 - 密码子表配置错误
两种常见错误:- 混淆DNA与RNA碱基,用含
T的DNA密码子匹配转录后的RNA序列,导致除了Met的AUG外其余密码子全部匹配失败,若你配置了匹配失败默认返回STOP就会直接终止 - 终止密码子范围配置错误,误将普通氨基酸对应的密码子加入
STOP列表,读取到Met后的第一个密码子就触发终止条件
- 混淆DNA与RNA碱基,用含
- 逻辑分支顺序错误
若你设置了起始标志位控制输出,需注意逻辑顺序:找到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
相关产品推荐
相关产品推荐

