如何将DNA序列拆分为3碱基片段,匹配自定义字典中对应的取值?
DNA密码子匹配实现方案
这是我目前编写的代码:
with open('file.txt','r') as f: table = {} for lines in f: co1,co2,co3,pro1,pro2,pro3 = ( item.strip() for item in lines.split(',',5)) codon=str(co1 + co2 + co3) table[codon] = pro2 print(table)
我的需求是:将dna_seq序列按每3个字符为一组进行拆分,再与上述代码生成的字典做匹配,若拆分得到的片段存在于字典的键中,则返回该键对应的value值。待处理的dna_seq定义如下:
dna_seq = list('AAAGTTAAATAATAAATAGGTGAA')
用到的源文本文件内容截图如下:
解决方案
你可以直接在现有代码基础上补充DNA序列切片、匹配逻辑即可,完整实现代码如下:
# 生成密码子-氨基酸映射表 with open('file.txt','r') as f: table = {} for lines in f: co1,co2,co3,pro1,pro2,pro3 = ( item.strip() for item in lines.split(',',5)) codon = co1 + co2 + co3 table[codon] = pro2 # 处理DNA序列 dna_seq = list('AAAGTTAAATAATAAATAGGTGAA') dna_str = ''.join(dna_seq) # 每3个字符切分为一个密码子 codon_groups = [dna_str[i:i+3] for i in range(0, len(dna_str), 3)] # 匹配映射表获取结果 match_result = [table[codon] for codon in codon_groups if codon in table] print("拆分的密码子列表:", codon_groups) print("匹配得到的氨基酸结果:", match_result)
补充说明
- 若需要兼容不存在的密码子,可将匹配逻辑改为
table.get(codon, 'X'),用X代表未识别的氨基酸,避免抛出KeyError - 若需要做移码翻译,只需调整切片起始位置为1、2,分别运行一次即可
内容的提问来源于stack exchange,提问作者yuktha ravinthiran
相关产品推荐
相关产品推荐

