美文网首页
DNA中的指令转化为氨基酸链

DNA中的指令转化为氨基酸链

作者: Python_Camp | 来源:发表于2022-10-02 22:33 被阅读0次

    筛选。
    我们的细胞经历了一个叫做蛋白质合成的过程,将DNA中的指令转化为氨基酸链,或多肽。

    你的工作就是复制这个过程!

    第1步:转录

    你的输入将是一串DNA,看起来像这样。

    "tacagctcgctatgaatc"

    然后你必须将其转录为mRNA。每个字母,或碱基,都会被转录。

    
    A -> U
    T -> A
    G -> C
    C -> G
    ...
    

    此外,你将把它分成三组,或称_codons_

    上面的例子会变成。

    "AUG UCG AGC GAU ACU UAG"


    第2步:翻译

    有了mRNA链之后,你将把它变成一个氨基酸链。

    每个密码子对应一个氨基酸。

    Ala GCU, GCC, GCA, GCG 
    Leu UUA, UUG, CUU, CUC, 
    CUA, CUG Arg CGU, CGC, 
    CGA, CGG, AGA, AGG Lys 
    AAA, AAG Asn AAU, AAC 
    Met AUG Asp GAU, GAC 
    Phe UU, UUC Cys UGU, UGC 
    Pro CCU, CCC, CCA, CCG 
    Gln CAA, CAG Ser UCU, 
    UCC, UCA, UCG, AGU, AGC 
    Glu GAA, GAG Thr ACU, 
    ACC, ACA, ACG Gly GGU, 
    GGC, GGA, GGG Trp UGG 
    His CAU, CAC Tyr UAU, 
    UAC Ile AUU, AUC, AUA 
    Val GUU, GUC, GUA, GUG 
    Stop UAG, UGA, UAA
    ...
    
    

    唷,这是一个很长的列表!

    上面的例子将变成
    "Met Ser Ser Thr Asp Stop"

    任何不在三组中的额外碱基组都不包括在内。比如说。

    "AUG C"将变成 "Met"

    总之,你的最终输出将是mRNA序列和多肽。

    下面是一些例子

    "tacagctcgctatgaatc"

    输出

    ["AUG UCG AGC GAU ACU UAG", 
     "Met Ser Ser Asp Thr Stop"] 
    

    In:

    "ACGTG"
    

    输出

    ["UGC AC", "Cys"]
    

    import re
    
    TABLE = str.maketrans('ACGT','UGCA')
    
    def protein_synthesis(dna):
        rna = re.findall(r'.{1,3}', dna.translate(TABLE))
        return ' '.join(rna), ' '.join(x for x in map(CODON_DICT.get, rna) if x)
    

    More details

    B={'T':'A','A':'U','G':'C','C':'G'}
    A={'Ala':['GCU', 'GCC', 'GCA', 'GCG'],
       'Leu':['UUA', 'UUG', 'CUU', 'CUC', 'CUA', 'CUG'],
       'Arg':['CGU', 'CGC', 'CGA', 'CGG', 'AGA', 'AGG'],
       'Lys':['AAA', 'AAG'], 'Asn':['AAU', 'AAC'],
       'Met':['AUG'], 'Asp':['GAU', 'GAC'], 'Phe':['UUU', 'UUC'],
       'Cys':['UGU', 'UGC'], 'Pro':['CCU', 'CCC', 'CCA', 'CCG'],
       'Gln':['CAA', 'CAG'], 'Ser':['UCU', 'UCC', 'UCA', 'UCG', 'AGU', 'AGC'],
       'Glu':['GAA', 'GAG'], 'Thr':['ACU', 'ACC', 'ACA', 'ACG'],
       'Gly':['GGU', 'GGC', 'GGA', 'GGG'], 'Trp':['UGG'], 'His':['CAU', 'CAC'],
       'Tyr':['UAU', 'UAC'], 'Ile':['AUU', 'AUC', 'AUA'],
       'Val':['GUU', 'GUC', 'GUA', 'GUG'], 'Stop':['UAG', 'UGA', 'UAA']}
    
    def getAA(s):
        for a in A:
            if s in A[a]: return a
        return 'codon not found'
    
    def protein_synthesis(dna):
        print(dna)
        r,s='',''
        i=0
        c=''
        while i<len(dna):
            c+=B[dna[i]]
            i+=1
            if i%3==0:
                r+=c+' '
                s+=getAA(c)+' '
                c=''
        if len(c)>0: r+=c+' '
        return (r[:-1],s[:-1])
    

    本文由mdnice多平台发布

    相关文章

      网友评论

          本文标题:DNA中的指令转化为氨基酸链

          本文链接:https://www.haomeiwen.com/subject/uqysartx.html