首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用字典匹配密码子

使用字典匹配密码子
EN

Stack Overflow用户
提问于 2016-04-16 10:55:41
回答 1查看 771关注 0票数 1

我正在尝试创建一个函数codon_pairs(pairs, codonsA, codonsB),它包含三个参数:一个字典pairs和两个列表,codonsAcodonsB。字典包含碱基对,密码子列表包含密码子序列。我试图在codonsB中为codonsA中的每个密码子序列寻找互补密码子序列,并返回匹配对,如下所示:

代码语言:javascript
复制
pairs = {'A':'T', 'C':'G', 'T':'A', 'G':'C'}
codonsA = ['AAG', 'TAC', 'CGG', 'GAT', 'TTG', 'GTG', 'CAT', 'GGC', 'ATT', 'TCT']
codonsB = ['TAA', 'CTA', 'AAC', 'TTC', 'AGA', 'CCC', 'CCG', 'GTA']

print(codons_pairs(pairs, condonsA, codonsB))

[('AAG', 'TTC'), ('GAT', 'CTA'), ('TTG', 'AAC'), ('CAT', 'GTA'), ('GGC',   'CCG'), ('ATT', 'TAA'), ('TCT', 'AGA')]

二元组中的第一项是来自codonsA的密码子,第二项是来自codonsB的匹配密码子。例如,序列AAG (codonsA[0])和TCC (codonsB[3])是匹配对,因为A的碱基对是T,G的基对是C,这是pairs字典中突出显示的。

另一方面,如果找不到匹配对,最终结果将忽略它。

到目前为止,这就是我所拥有的:

代码语言:javascript
复制
pairs = {'A':'T', 'C':'G', 'T':'A', 'G':'C'}
codonsA = ['AAG', 'TAC', 'CGG', 'GAT', 'TTG', 'GTG', 'CAT', 'GGC', 'ATT', 'TCT']
codonsB = ['TAA', 'CTA', 'AAC', 'TTC', 'AGA', 'CCC', 'CCG', 'GTA']

def codons_pairs(pairs, codonsA, codonsB):

    for A in codonsA:
        for B in codonsB:
            for i in A:
                for j in B:

对于字典,我只是不知道如何在codonsAcodonsB之间检查对。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-16 11:02:22

codonsB转换为用于快速检查的set() (O(1)成员资格测试,不需要嵌套循环),然后通过pairs映射从A映射每个密码子,并根据集合测试结果:

代码语言:javascript
复制
def codons_pair(pairs, codonsA, codonsB):
    codonsB = set(codonsB)
    for codon in codonsA:
        complement = ''.join([pairs[base] for base in codon])
        if complement in codonsB:
            yield (codon, complement)

上面是一个生成器函数,当它找到它们时,它会产生每一个匹配。您可以将生成的生成器转换为带有list()函数的列表,也可以只对函数进行迭代。

演示:

代码语言:javascript
复制
>>> pairs = {'A':'T', 'C':'G', 'T':'A', 'G':'C'}
>>> codonsA = ['AAG', 'TAC', 'CGG', 'GAT', 'TTG', 'GTG', 'CAT', 'GGC', 'ATT', 'TCT']
>>> codonsB = ['TAA', 'CTA', 'AAC', 'TTC', 'AGA', 'CCC', 'CCG', 'GTA']
>>> list(codons_pair(pairs, codonsA, codonsB))
[('AAG', 'TTC'), ('GAT', 'CTA'), ('TTG', 'AAC'), ('CAT', 'GTA'), ('GGC', 'CCG'), ('ATT', 'TAA'), ('TCT', 'AGA')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36663209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档