【问题标题】:Matching codons using lists, dictionaries and loops使用列表、字典和循环匹配密码子
【发布时间】:2014-06-21 21:29:39
【问题描述】:

这是迄今为止我遇到的比较困难的问题之一,所以请原谅我没有提供实质性的尝试。

我想要一个打印匹配密码子的程序,格式如下:

AAA : TTT
GGG : CCC
TTT : AAA
CCC : GGG
    .
    .
    .

这是我所做的:

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', 'CAC', 'CCG', 'ATG', 'GCC', 'GTA']
for A in codonsA:
    print A + ' :',
    for B in codonsB:
        print B,
    print

#OUTPUT:

AAG : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
TAC : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
CGG : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
GAT : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
TTG : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
GTG : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
CAT : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
GGC : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
ATT : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA
TCT : TAA CTA AAC TTC AGA CAC CCG ATG GCC GTA

我现在需要做的是从冒号右侧的每一行中去掉 B 中的 9 个密码子,只在右侧留下一个与左侧 A 中的密码子匹配的密码子。我该怎么做?

【问题讨论】:

    标签: python loops python-2.7 dictionary bioinformatics


    【解决方案1】:

    你甚至不需要codonsB 列表。一个密码子以 1:1 的比例映射到其反密码子补体上。

    def anticodon(codon):
        """returns the anticodon complement for a given codon"""
        return ''.join(pairs[c] for c in codon)
    
    anticodon('AAG')
    Out[5]: 'TTC'
    

    如果需要检查,您可以随意检查codonsA 中的每个元素是否在codonsB 中具有反密码子。

    all(anticodon(c) in codonsB for c in codonsA)
    Out[6]: True
    

    我认为您最初正在寻找的输出:

    for codon in codonsA:
        print '{} : {}'.format(codon,anticodon(codon))
    
    AAG : TTC
    TAC : ATG
    CGG : GCC
    GAT : CTA
    TTG : AAC
    GTG : CAC
    CAT : GTA
    GGC : CCG
    ATT : TAA
    TCT : AGA
    

    【讨论】:

    • 好吧,问题是我必须同时使用codonsAcodonsB 以及字典pairs 和for 循环。虽然我是自学,所以我不必像教科书上所说的那样做,所以非常感谢你的回答,但我也希望看到它以另一种方式完成。
    • 我无法真正解决这个问题所考虑的方法,因为完全没有必要拥有第二个补语列表。一个密码子有一个反密码子,这就是 DNA 的工作原理:-)
    • 这是有道理的,拥有第二个密码子真的没有意义,即使在生物学中他们也只担心第一个密码子,因为很容易找出匹配的密码子。非常感谢,我会用你的回答:)
    • 这些pairs函数哪里来的?
    • @llopis 检查 OP。这是dict
    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 2023-01-29
    • 2017-04-05
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多