B
    ‰°bÑÄ  ã            E   @   sî  d Z ddlmZ i Zi Zi Zi Zi Zi Zi Z	i Z
i Zi Zi Zi ZdadaG dd„ deƒZG dd„ dƒZdd	„ ZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ ZeddgejƒdddgksÜt‚eddgejƒddgksøt‚eddgejƒdddgkst‚eddgejƒdddgks8t‚edddgejƒdddddgks^t‚G dd„ dƒZd d!„ Zed"d#d$d%d%d&d&d'd'd'd'd(d(d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8d9œ=dddgd:d;d<gd= ed>d?d@d%d%d&d&d'd'd'd'd(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d0d0d1d1d1d1d2d2d3d3d'd'd4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dAœ<dddBdCgdDdEdFd<dGgd= edHdIdJd%d%d&d&d'd'd'd'd(d(d)d)d*d*d1d1d1d1d+d+d+d+d,d,d-d-d.d.d.d.d/d/d0d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgdFd<dGgd= edLdMdNd%d%d&d&d'd'd'd'd(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgdOd:d;dDdEdFd<dGgd= edPdQdRd%d%d&d&d'd'd'd'd(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d0d0d1d1d1d1d2d2d3d3d'd'd'd'd4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgd:dDdEdFd<dGgd= edSdTdUd%d%d&d&d'd'd'd'd(d(d-d-d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dVœ?dgd<gd= edWdXdYd%d%d&d&d'd'd'd'd(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d2d3d'd'd'd'd4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgd<dGgd= edZd[d\d%d%d&d&d'd'd'd'd(d(d)d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgd<gd= ed]dd^d%d%d&d&d'd'd'd'd(d(d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8d9œ=dddgd:d;dDdEdFd<dGgd= ed_dd`d%d%d&d&d'd'd'd'd(d(d)d)d*d&d&d&d'd+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8d9œ=dddgd;d<gd= edaddbd%d%d&d&d'd'd'd'd(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d0d0d1d1d1d1d2d2d3d3d'd'd8d8d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgd:dFd<dGgd= edcdddd%d%d&d&d'd'd'd'd(d(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d2d3d'd'd'd'd4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8deœ?dgd<gd= edfddgd%d%d&d&d'd'd'd'd(d(d-d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dhœ>ddgd<gd= ediddjd%d%d&d&d'd'd'd'd(d(d&d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dhœ>ddgd<gd= edkddld%d%d&d&d'd'd'd'd(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d0d0d1d1d1d1d2d2d2d3d'd'd'd'd4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgd<dGgd= edmddnd%d%d&d&d'd'd'd(d(d&d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8doœ=dpddgd<gd= edqddrd%d%d&d'd'd'd'd(d(d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dsœ<dOdddgdDd<dGgd= edtddud%d%d&d&d'd'd'd'd(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd'd3d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgd:d;d<dGgd= edvddwd%d%d&d&d'd'd'd'd(d(d)d)d8d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dKœ>ddgd:d<dGgd= edxddyd%d%d&d&d'd'd'd'd(d(d)d)d*d&d&d&d5d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8d9œ=dddgd;d<gd= edzdd{d%d%d&d&d'd'd'd'd(d(d-d-d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8d|œ@dgd<gd= ed}dd~d%d%d&d&d'd'd'd'd(d(d-d-d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8d|œ@dddgd<gd= eddd€d%d%d&d&d'd'd'd'd(d(d(d(d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dVœ?dgd<gd= eddd‚d%d%d&d&d'd'd'd'd(d(d7d7d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dVœ?dgd<gd= edƒdd„d%d%d&d&d'd'd'd'd(d(d7d7d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8d|œ@ddgd<gd= ed…dd†d%d%d&d&d'd'd'd'd(d(d*d)d)d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd.d.d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8dhœ>ddgd:d;dDdEdFd<dGgd= ed‡ddˆd%d%d&d&d'd'd'd'd(d(d(d)d)d*d*d&d&d&d&d+d+d+d+d,d,d-d-d.d.d.d.d/d/d/d0d1d1d1d1d2d2d3d3d'd'd'd3d4d4d4d4d5d5d5d5d6d6d7d7d8d8d8d8deœ?dgd:d;d<dGgd= dS )‰zÜCodon tables based on those from the NCBI.

These tables are based on parsing the NCBI file
ftp://ftp.ncbi.nih.gov/entrez/misc/data/gc.prt
using Scripts/update_ncbi_codon_table.py

Last updated at Version 4.4 (May 2019)
é    )Ú	IUPACDataNc               @   s   e Zd ZdZdS )ÚTranslationErrorz.Container for translation specific exceptions.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   ú2lib/python3.7/site-packages/Bio/Data/CodonTable.pyr   +   s   r   c               @   s>   e Zd ZdZi Zi Zg Zg Zddeeeefdd„Zdd„ Z	dS )Ú
CodonTablezA codon-table, or genetic code.Nc             C   s(   || _ || _|| _|| _|| _|| _dS )zInitialize the class.N)Únucleotide_alphabetÚprotein_alphabetÚforward_tableÚ
back_tableÚstart_codonsÚstop_codons)Úselfr   r   r   r   r   r   r   r   r	   Ú__init__:   s    
zCodonTable.__init__c       	      C   s¤  | j rd| j  }nd}| jr:|dd dd„ | jD ƒ¡ 7 }| j}|dk	rVd|krVd	}nd
}|d7 }|dd dd„ |D ƒ¡ d 7 }|dd dd„ |D ƒ¡ d 7 }xü|D ]ô}xÎ|D ]Æ}|d }x |D ]˜}|| | }|d| 7 }|| jkrô|d7 }qÄy| j| }W n2 tk
r   d}Y n tk
r4   d}Y nX || jkrP|d| 7 }qÄ|d| 7 }qÄW |d| 7 }|d| 7 }q²W |dd dd„ |D ƒ¡ d 7 }q¨W |S )a´  Return a simple text representation of the codon table.

        e.g.::

            >>> import Bio.Data.CodonTable
            >>> print(Bio.Data.CodonTable.standard_dna_table)
            Table 1 Standard, SGC0
            <BLANKLINE>
              |  T      |  C      |  A      |  G      |
            --+---------+---------+---------+---------+--
            T | TTT F   | TCT S   | TAT Y   | TGT C   | T
            T | TTC F   | TCC S   | TAC Y   | TGC C   | C
            ...
            G | GTA V   | GCA A   | GAA E   | GGA G   | A
            G | GTG V   | GCG A   | GAG E   | GGG G   | G
            --+---------+---------+---------+---------+--
            >>> print(Bio.Data.CodonTable.generic_by_id[1])
            Table 1 Standard, SGC0
            <BLANKLINE>
              |  U      |  C      |  A      |  G      |
            --+---------+---------+---------+---------+--
            U | UUU F   | UCU S   | UAU Y   | UGU C   | U
            U | UUC F   | UCC S   | UAC Y   | UGC C   | C
            ...
            G | GUA V   | GCA A   | GAA E   | GGA G   | A
            G | GUG V   | GCG A   | GAG E   | GGG G   | G
            --+---------+---------+---------+---------+--
        zTable %izTable ID unknownú z, c             S   s   g | ]}|r|‘qS r   r   )Ú.0Úxr   r   r	   ú
<listcomp>m   s    z&CodonTable.__str__.<locals>.<listcomp>NÚTZTCAGZUCAGz

z  |ú|c             s   s   | ]}d | V  qdS )z
  %s      Nr   )r   Úc2r   r   r	   ú	<genexpr>{   s    z%CodonTable.__str__.<locals>.<genexpr>z
--+ú+c             s   s   | ]
}d V  qdS )z	---------Nr   )r   r   r   r   r	   r   |   s    z+--z |z %sz Stop|ú?z %s(s)|z %s   |Ú
c             s   s   | ]
}d V  qdS )z	---------Nr   )r   r   r   r   r	   r   ’   s    )	ÚidÚnamesÚjoinr   r   r   ÚKeyErrorr   r   )	r   ÚanswerZlettersÚc1Úc3Úliner   ÚcodonÚaminor   r   r	   Ú__str__K   sB      





$zCodonTable.__str__)
r   r   r   r   r   r   r   r   r   r(   r   r   r   r	   r
   1   s   
r
   c             C   s.   i }xt | ƒD ]}||| | < qW ||d< |S )z›Back a back-table (naive single codon mapping).

    ONLY RETURNS A SINGLE CODON, chosen from the possible alternatives
    based on their sort order.
    N)Úsorted)ÚtableZdefault_stop_codonr   Úkeyr   r   r	   Úmake_back_table–   s
    r,   c               @   s*   e Zd ZdZdZejZdd„ Zdd„ Z	dS )ÚNCBICodonTablez-Codon table for generic nucleotide sequences.Nc             C   s2   || _ || _|| _t||d ƒ| _|| _|| _dS )zInitialize the class.r   N)r   r   r   r,   r   r   r   )r   r   r   r*   r   r   r   r   r	   r   «   s    zNCBICodonTable.__init__c             C   s   d| j j| j| jf S )z?Represent the NCBI codon table class as a string for debugging.z%s(id=%r, names=%r, ...))Ú	__class__r   r   r   )r   r   r   r	   Ú__repr__´   s    zNCBICodonTable.__repr__)
r   r   r   r   r   r   Zprotein_lettersr   r   r/   r   r   r   r	   r-   ¥   s
   	r-   c               @   s   e Zd ZdZejZdS )ÚNCBICodonTableDNAz*Codon table for unambiguous DNA sequences.N)r   r   r   r   r   Zunambiguous_dna_lettersr   r   r   r   r	   r0   ½   s   r0   c               @   s   e Zd ZdZejZdS )ÚNCBICodonTableRNAz*Codon table for unambiguous RNA sequences.N)r   r   r   r   r   Zunambiguous_rna_lettersr   r   r   r   r	   r1   Ã   s   r1   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚAmbiguousCodonTablez)Base codon table for ambiguous sequences.c             C   s<   t  | ||t|j||ƒ|jt|j|ƒt|j|ƒ¡ || _dS )zInitialize the class.N)	r
   r   ÚAmbiguousForwardTabler   r   Úlist_ambiguous_codonsr   r   Ú_codon_table)r   Zcodon_tableZambiguous_nucleotide_alphabetÚambiguous_nucleotide_valuesZambiguous_protein_alphabetZambiguous_protein_valuesr   r   r	   r   Ï   s    	zAmbiguousCodonTable.__init__c             C   s   t | j|ƒS )z0Forward attribute lookups to the original table.)Úgetattrr5   )r   Únamer   r   r	   Ú__getattr__ï   s    zAmbiguousCodonTable.__getattr__N)r   r   r   r   r   r9   r   r   r   r	   r2   Ì   s    r2   c             C   s¸   | \}}}|| }|| }|| }i }	g }
xh|D ]`}xZ|D ]R}xL|D ]D}yd|	||| |  < W qD t k
r†   |
 || | ¡ Y qDX qDW q:W q0W |
r°|	r¨td|  ƒ‚t | ƒ‚t|	ƒS )z<Return all possible encoded amino acids for ambiguous codon.é   z:ambiguous codon %r codes for both proteins and stop codons)r!   Úappendr   Úlist)r&   r   r6   r#   r   r$   Zx1Zx2Zx3ÚpossibleZstopsZy1Zy2Zy3r   r   r	   Úlist_possible_proteinsô   s&    



$
r>   c                s  t ‡fdd„ˆ ¡ D ƒƒ}t ‡fdd„ˆ ¡ D ƒƒ}t ‡fdd„ˆ ¡ D ƒƒ}g }xN|D ]F}x@|D ]8}x2|D ]*}|| | }	|	|krl|	ˆkrl| |	¡ qlW qbW qXW ˆdd… }
xR|D ]J‰ d}x2‡ ‡fdd„ˆˆ d	  D ƒD ]}	|	ˆkrÚd
}qÚqÚW |r´|
 ˆ ¡ q´W |
S )aä  Extend a codon list to include all possible ambigous codons.

    e.g.::

         ['TAG', 'TAA'] -> ['TAG', 'TAA', 'TAR']
         ['UAG', 'UGA'] -> ['UAG', 'UGA', 'URA']

    Note that ['TAG', 'TGA'] -> ['TAG', 'TGA'], this does not add 'TRR'
    (which could also mean 'TAA' or 'TGG').
    Thus only two more codons are added in the following:

    e.g.::

        ['TGA', 'TAA', 'TAG'] -> ['TGA', 'TAA', 'TAG', 'TRA', 'TAR']

    Returns a new (longer) list of codon strings.
    c             3   s.   | ]&\}}d d„ ˆ D ƒ  t|ƒ¡r|V  qdS )c             S   s   h | ]}|d  ’qS )r   r   )r   r&   r   r   r	   ú	<setcomp>&  s    z2list_ambiguous_codons.<locals>.<genexpr>.<setcomp>N)Ú
issupersetÚset)r   ÚletterÚmeanings)Úcodonsr   r	   r   $  s   z(list_ambiguous_codons.<locals>.<genexpr>c             3   s.   | ]&\}}d d„ ˆ D ƒ  t|ƒ¡r|V  qdS )c             S   s   h | ]}|d  ’qS )r:   r   )r   r&   r   r   r	   r?   +  s    z2list_ambiguous_codons.<locals>.<genexpr>.<setcomp>N)r@   rA   )r   rB   rC   )rD   r   r	   r   )  s   c             3   s.   | ]&\}}d d„ ˆ D ƒ  t|ƒ¡r|V  qdS )c             S   s   h | ]}|d  ’qS )é   r   )r   r&   r   r   r	   r?   0  s    z2list_ambiguous_codons.<locals>.<genexpr>.<setcomp>N)r@   rA   )r   rB   rC   )rD   r   r	   r   .  s   NTc                s<   g | ]4}ˆˆ d   D ]"}ˆˆ d  D ]}|| | ‘q$qqS )r:   rE   r   )r   r#   r   r$   )Úambig_codonr6   r   r	   r   @  s   z)list_ambiguous_codons.<locals>.<listcomp>r   F)r)   Úitemsr;   )rD   r6   Zc1_listZc2_listZc3_listZ
candidatesr#   r   r$   r&   r"   Zwantedr   )rF   r6   rD   r	   r4     s8    






r4   ÚTGAÚTAAZTRAÚTAGZTARZUAGZUAAZUARc               @   s2   e Zd ZdZdd„ Zdd„ Zddd„Zd	d
„ ZdS )r3   z@Forward table for translation of ambiguous nucleotide sequences.c       	      C   sˆ   || _ || _|| _i }x>| ¡ D ]2\}}x(|D ] }| |i ¡}d||< |||< q.W q W x | ¡ D ]\}}t|ƒ||< q`W || _i | _dS )zInitialize the class.r:   N)r   Úambiguous_nucleotideÚambiguous_proteinrG   Úgetr<   Ú	_invertedÚ_cache)	r   r   rK   rL   Úinvertedr8   ÚvalÚcr   r   r   r	   r   }  s    
zAmbiguousForwardTable.__init__c          	   C   s,   y|   |¡ dS  ttfk
r&   dS X dS )z‡Check if codon works as key for ambiguous forward_table.

        Only returns 'True' if forward_table[codon] returns a value.
        TFN)Ú__getitem__r!   r   )r   r&   r   r   r	   Ú__contains__  s
    
z"AmbiguousForwardTable.__contains__Nc             C   s$   y
|   |¡S  tk
r   |S X dS )z,Implement get for dictionary-like behaviour.N)rS   r!   )r   r&   Zfailobjr   r   r	   rM   ›  s    
zAmbiguousForwardTable.getc       	         sÐ  yˆ j | }W n tk
r"   Y n&X |tkr4t|ƒ‚|tkrDt|ƒ‚|S yˆ j| }|ˆ j |< |S  tk
rt   Y nX yt|ˆ jˆ jƒ}W nL tk
r²   tˆ j |< t|ƒd‚Y n& tk
rÖ   tˆ j |< t|ƒ‚Y nX t|ƒdksìtdƒ‚t|ƒdkr|d ˆ j |< |d S i }x8|D ]0}x(ˆ j| D ]}| 	|d¡d ||< q*W qW t|ƒ}g }x*| 
¡ D ]\}}||krd| |¡ qdW t|ƒdkr¦tˆ j |< t|ƒ‚|j‡ fdd„d |d }|ˆ j |< |S )a®  Implement dictionary-like behaviour for AmbiguousForwardTable.

        forward_table[codon] will either return an amino acid letter,
        or throws a KeyError (if codon does not encode an amino acid)
        or a TranslationError (if codon does encode for an amino acid,
        but either is also a stop codon or does encode several amino acids,
        for which no unique letter is available in the given alphabet.
        Nr   zunambiguous codons must coder:   c                s   t ˆ j|  ƒ| fS )N)ÚlenrL   )r   )r   r   r	   Ú<lambda>ë  ó    z3AmbiguousForwardTable.__getitem__.<locals>.<lambda>)r+   )rO   r!   r   r   r>   rK   rU   ÚAssertionErrorrN   rM   rG   r;   Úsort)	r   r&   r   r=   Zambiguous_possibler'   ZtermÚnrQ   r   )r   r	   rS   ¢  sX    	




 


z!AmbiguousForwardTable.__getitem__)N)r   r   r   r   r   rT   rM   rS   r   r   r   r	   r3   z  s
   
r3   c             C   s.  dd„ |   dd¡  dd¡ d¡D ƒ}t|||g |||ƒ}t|tjtjtjtjƒ}i }	i }
x8| 	¡ D ],\}}||
|< |  dd¡}||
|< ||	|< qdW g }g }x>|D ]6}| 
|¡ d|krÎ|  dd¡}| 
|¡ | 
|¡ q¢W g }g }x@|D ]8}| 
|¡ d|kr|  dd¡}| 
|¡ | 
|¡ qêW t|||g |
||ƒ}ttj 	¡ ƒ}d|d< t|d|tjtjƒ}t|||g |	||ƒ}t|tjtjtjtjƒ}|d	kr¦|a|a|t|< |t|< |t|< |t|< |t|< |t|< |dk	rê| 
|¡ x>|D ]6} |t| < |t| < |t| < |t| < |t| < |t| < qðW dS )
z_Turn codon table data into objects (PRIVATE).

    The data is stored in the dictionaries.
    c             S   s   g | ]}|  ¡ ‘qS r   )Ústrip)r   r   r   r   r	   r   û  s    z'register_ncbi_table.<locals>.<listcomp>z and z; z, r   ÚUNr:   )ÚreplaceÚsplitr0   r2   r   Zambiguous_dna_lettersÚambiguous_dna_valuesZextended_protein_lettersZextended_protein_valuesrG   r;   r-   ÚdictÚambiguous_rna_valuesr1   Zambiguous_rna_lettersÚstandard_dna_tableÚstandard_rna_tableÚunambiguous_dna_by_idÚunambiguous_rna_by_idÚgeneric_by_idÚambiguous_dna_by_idÚambiguous_rna_by_idÚambiguous_generic_by_idÚunambiguous_dna_by_nameÚunambiguous_rna_by_nameÚgeneric_by_nameÚambiguous_dna_by_nameÚambiguous_rna_by_nameÚambiguous_generic_by_name)r8   Úalt_namer   r*   r   r   r   ZdnaZ	ambig_dnaZ	rna_tableZgeneric_tabler&   rQ   Zrna_start_codonsZgeneric_start_codonsZrna_stop_codonsZgeneric_stop_codonsZgenericZ_merged_valuesZambig_genericZrnaZ	ambig_rnar   r   r	   Úregister_ncbi_tableò  s†    	$










rq   ZStandardZSGC0r:   ÚFÚLÚSÚYÚCÚWÚPÚHÚQÚRÚIÚMr   ÚNÚKÚVÚAÚDÚEÚG)=ÚTTTÚTTCÚTTAÚTTGÚTCTÚTCCÚTCAÚTCGÚTATÚTACÚTGTÚTGCÚTGGÚCTTÚCTCÚCTAÚCTGÚCCTÚCCCÚCCAÚCCGÚCATÚCACÚCAAÚCAGÚCGTÚCGCÚCGAÚCGGÚATTÚATCÚATAÚATGÚACTÚACCÚACAÚACGÚAATÚAACÚAAAÚAAGÚAGTÚAGCÚAGAÚAGGÚGTTÚGTCÚGTAÚGTGÚGCTÚGCCÚGCAÚGCGÚGATÚGACÚGAAÚGAGÚGGTÚGGCÚGGAÚGGGrˆ   r•   r¥   )r8   rp   r   r*   r   r   zVertebrate MitochondrialZSGC1rE   )<r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   r   r   rH   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   r°   r±   r¢   r£   r¤   rµ   zYeast MitochondrialZSGC2é   )>r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   r   r   rH   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   z`Mold Mitochondrial; Protozoan Mitochondrial; Coelenterate Mitochondrial; Mycoplasma; SpiroplasmaZSGC3é   r‡   zInvertebrate MitochondrialZSGC4é   z8Ciliate Nuclear; Dasycladacean Nuclear; Hexamita NuclearZSGC5é   )?r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   rI   rJ   r   r   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   z0Echinoderm Mitochondrial; Flatworm MitochondrialZSGC8é	   zEuplotid NuclearZSGC9é
   z%Bacterial, Archaeal and Plant Plastidé   zAlternative Yeast Nuclearé   zAscidian Mitochondrialé   z"Alternative Flatworm Mitochondrialé   )?r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   rI   r   r   rH   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   zBlepharisma Macronuclearé   )>r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   rJ   r   r   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   zChlorophycean Mitochondrialé   zTrematode Mitochondrialé   z"Scenedesmus obliquus Mitochondrialé   )=r…   r†   r‡   rˆ   r‰   rŠ   rŒ   r   rŽ   rJ   r   r   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   r‹   zThraustochytrium Mitochondrialé   )<r…   r†   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   r   r   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   zPterobranchia Mitochondrialé   z*Candidate Division SR1 and Gracilibacteriaé   zPachysolen tannophilus Nuclearé   zKaryorelict Nuclearé   )@r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   rI   rJ   r   r   rH   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   zCondylostoma Nuclearé   zMesodinium Nuclearé   zPeritrich Nuclearé   zBlastocrithidia Nuclearé   zBalanophoraceae Plastidé    zCephalodiscidae Mitochondrialé!   ) r   ZBio.Datar   rj   rd   rk   re   rl   rf   rm   rg   rn   rh   ro   ri   rb   rc   Ú	Exceptionr   r
   r,   r-   r0   r1   r2   r>   r4   r_   rX   ra   r3   rq   r   r   r   r	   Ú<module>   s  e	(Axn












