3
:>"^              E   @   sp  d Z ddlmZ ddlm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	e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st!eddgej ddgkst!eddgej dddgks4t!eddgej"dddgksTt!edddgej dddddgkszt!G d d! d!e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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d;=dddgd<d=d>gd? e$d@dAdBd'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/d0d0d0d0d1d1d2d2d3d3d3d3d4d4d5d5d)d)d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dC<dddDdEgdFdGdHd>dIgd? e$dJdKdLd'd'd(d(d)d)d)d)d*d*d+d+d,d,d3d3d3d3d-d-d-d-d.d.d/d/d0d0d0d0d1d1d2d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgdHd>dIgd? e$dNdOdPd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgdQd<d=dFdGdHd>dIgd? e$dRdSdTd'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/d0d0d0d0d1d1d2d2d3d3d3d3d4d4d5d5d)d)d)d)d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgd<dFdGdHd>dIgd? e$dUdVdWd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dX?dgd>gd? e$dYdZd[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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d4d5d)d)d)d)d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgd>dIg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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d;=dddgd<d=dFdGdHd>dIg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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d;=dddgd=d>g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/d0d0d0d0d1d1d2d2d3d3d3d3d4d4d5d5d)d)d:d:d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgd<dHd>dIgd? e$deddfd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d4d5d)d)d)d)d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dg?dgd>gd? e$dhddid'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dj>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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dj>ddgd>g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/d0d0d0d0d1d1d2d2d3d3d3d3d4d4d4d5d)d)d)d)d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgd>dIgd? e$doddpd'd'd(d(d)d)d)d*d*d(d+d+d,d(d(d(d(d-d-d-d-d.d.d/d/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dq=drddgd>gd? e$dsddtd'd'd(d)d)d)d)d*d*d+d+d,d(d(d(d(d-d-d-d-d.d.d/d/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:du<dQdddgdFd>dIgd? e$dvddwd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d)d5d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgd<d=d>dIgd? e$dxddyd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dM>ddgd<d>dIgd? e$dzdd{d'd'd(d(d)d)d)d)d*d*d+d+d,d(d(d(d7d-d-d-d-d.d.d/d/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d;=dddg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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d~@dgd>gd? e$dddd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d~@dddgd>gd? e$dddd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dX?dgd>gd? e$dddd'd'd(d(d)d)d)d)d*d*d9d9d+d+d,d(d(d(d(d-d-d-d-d.d.d/d/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:dX?dgd>gd? e$dddd'd'd(d(d)d)d)d)d*d*d9d9d+d+d,d,d(d(d(d(d-d-d-d-d.d.d/d/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d~@ddgd>gd? e$dddd'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/d0d0d0d0d1d1d1d2d3d3d3d3d4d4d5d5d)d)d0d0d6d6d6d6d7d7d7d7d8d8d9d9d:d:d:d:d>dddgd<d=dFdGdHd>dIgd? dS )zCodon 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)
    )Alphabet)IUPAC)	IUPACDataNc               @   s   e Zd ZdZdS )TranslationErrorz.Container for translation specific exceptions.N)__name__
__module____qualname____doc__ r
   r
   c/home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python3.5/site-packages/Bio/Data/CodonTable.pyr   -   s   r   c               @   sJ   e Zd ZdZejZejZi Z	i Z
g Zg Zeee	e
eefddZdd ZdS )
CodonTablezA codon-table, or genetic code.c             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jdd | jD  7 }| jj}t| jtjs`|dk	rfd|krfd	}nd
}|d7 }|ddjdd |D  d 7 }|ddjdd |D  d 7 }x|D ]}x|D ]}|d }x|D ]}|| | }|d| 7 }|| jkr|d7 }qy| j	| }W n2 t
k
r.   d}Y n tk
rF   d}Y nX || jkrb|d| 7 }q|d| 7 }qW |d| 7 }|d| 7 }qW |ddjdd |D  d 7 }qW |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   letters
isinstancer   DNAAlphabetr   r   KeyErrorr   r   )	r   answerr#   c1c3liner   codonaminor
   r
   r   __str__K   sD      




$zCodonTable.__str__N)r   r   r   r	   r   generic_nucleotider   generic_proteinr   r   r   r   r   r   r-   r
   r
   r
   r   r   3   s   	r   c             C   s.   i }xt | D ]}||| | < qW ||d< |S )zBack 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
    r3   c               @   s,   e Zd ZdZejZejZ	dd Z
dd ZdS )NCBICodonTablez-Codon table for generic nucleotide sequences.c             C   s2   || _ || _|| _t||d | _|| _|| _dS )zInitialize the class.r   N)r    r!   r   r3   r   r   r   )r   r    r!   r1   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__N)r   r   r   r	   r   r.   r   r   proteinr   r   r6   r
   r
   r
   r   r4      s
   	r4   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   unambiguous_dnar   r
   r
   r
   r   r8      s   r8   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   unambiguous_rnar   r
   r
   r
   r   r:      s   r:   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 j| ||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   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.)getattrr?   )r   namer
   r
   r   __getattr__   s    zAmbiguousCodonTable.__getattr__N)r   r   r   r	   r   rD   r
   r
   r
   r   r<      s   r<   c             C   s   | \}}}|| }|| }|| }i }	g }
xh|D ]`}xZ|D ]R}xL|D ]D}yd|	||| |  < W qD t k
r   |
j|| |  Y qDX qDW q:W q0W |
r|	rt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   rA   r(   r   r)   x1Zx2Zx3possibleZstopsy1y2Zy3r
   r
   r   list_possible_proteins   s&    



$rL   c                s  t fddj D }t fddj D }t fddj D }g }xN|D ]F}x@|D ]8}x2|D ]*}|| | }	|	|krl|	krl|j|	 qlW qbW qXW dd }
xR|D ]J d}x2 fdd d	  D D ]}	|	krd
}qqW |r|
j  qW |
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 j 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 j t|r|V  qdS )c             S   s   h | ]}|d  qS )rE   r
   )r   r+   r
   r
   r   rM      s   z2list_ambiguous_codons.<locals>.<genexpr>.<setcomp>N)rN   rO   )r   rP   rQ   )rR   r
   r   r     s    c             3   s.   | ]&\}}d d  D j t|r|V  qdS )c             S   s   h | ]}|d  qS )   r
   )r   r+   r
   r
   r   rM   $  s   z2list_ambiguous_codons.<locals>.<genexpr>.<setcomp>N)rN   rO   )r   rP   rQ   )rR   r
   r   r   "  s    NTc                s<   g | ]4} d   D ]"} d  D ]}|| | q$qqS )rE   rS   r
   )r   r(   r   r)   )ambig_codonrA   r
   r   r   3  s   z)list_ambiguous_codons.<locals>.<listcomp>r   F)r0   itemsrF   )rR   rA   Zc1_listZc2_listZc3_listZ
candidatesr(   r   r)   r+   r'   Zwantedr
   )rT   rA   rR   r   r>     s0    



r>   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 )r=   z@Forward table for translation of ambiguous nucleotide sequences.c       	      C   s   || _ || _|| _i }x>|j D ]2\}}x(|D ] }|j|i }d||< |||< q.W q W x |j D ]\}}t|||< q`W || _i | _dS )zInitialize the class.rE   N)r   ambiguous_nucleotideambiguous_proteinrU   getrG   	_inverted_cache)	r   r   rY   rZ   invertedrC   valcr   r
   r
   r   r   d  s    
zAmbiguousForwardTable.__init__c             C   s,   y| j | dS  ttfk
r&   dS X dS )zCheck 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__w  s
    
z"AmbiguousForwardTable.__contains__Nc             C   s$   y
| j |S  tk
r   |S X dS )z,Implement get for dictionary-like behaviour.N)ra   r&   )r   r+   failobjr
   r
   r   r[     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 nJ tk
r   t j |< t|Y n& tk
r   t j |< t|Y nX t|dkstdt|dkr|d  j |< |d S i }x8|D ]0}x( j| D ]}|j	|dd ||< q(W qW t|}g }x*|j
 D ]\}}||krb|j| qbW t|dkrt 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.
        r   zunambiguous codons must coderE   c                s   t  j|  | fS )N)lenrZ   )r   )r   r
   r   <lambda>  s    z3AmbiguousForwardTable.__getitem__.<locals>.<lambda>)r2   )r]   r&   r   r   rL   rY   rd   AssertionErrorr\   r[   rU   rF   sort)	r   r+   r   rI   Zambiguous_possibler,   Ztermnr_   r
   )r   r   ra     sZ    	




 


z!AmbiguousForwardTable.__getitem__)N)r   r   r   r	   r   rb   r[   ra   r
   r
   r
   r   r=   a  s
   
r=   c             C   s2  dd | j ddj ddjdD }t|||g |||}t|tjtjtjtj	}i }	i }
x8|j
 D ],\}}||
|< |j dd}||
|< ||	|< qdW g }g }x>|D ]6}|j| d|kr|j dd}|j| |j| qW g }g }x@|D ]8}|j| d|kr|j dd}|j| |j| qW t|||g |
||}ttjj
 }d|d< t|tj |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|j| x>|D ]6} |t| < |t| < |t| < |t| < |t| < |t | < qW d	S )
z_Turn codon table data into objects (PRIVATE).

    The data is stored in the dictionaries.
    c             S   s   g | ]}|j  qS r
   )strip)r   r   r
   r
   r   r     s    z'register_ncbi_table.<locals>.<listcomp>z and z; z, r   UrE   N)!replacesplitr8   r<   r   ambiguous_dnar   ambiguous_dna_valuesextended_proteinextended_protein_valuesrU   rF   r4   dictambiguous_rna_valuesr   NucleotideAlphabetr:   ambiguous_rna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)rC   alt_namer    r1   r   r   r!   dnaZ	ambig_dnaZ	rna_tableZgeneric_tabler+   r_   Zrna_start_codonsZgeneric_start_codonsZrna_stop_codonsZgeneric_stop_codonsZgenericZ_merged_valuesZambig_genericrnaZ	ambig_rnar
   r
   r   register_ncbi_table  s    	












r   StandardZSGC0rE   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   )rC   r   r    r1   r   r   zVertebrate MitochondrialZSGC1rS   )<r   r   r   r   r   r   r   r   r   r   r   r   rV   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   rV   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   rW   rX   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   rW   r   r   rV   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   rX   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   rX   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   rW   rX   r   r   rV   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    )>r   r   r   r   r   r   r   r   r   r   rW   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	   Bior   Bio.Alphabetr   Bio.Datar   r}   rw   r~   rx   r   ry   r   rz   r   r{   r   r|   ru   rv   	Exceptionr   objectr   r3   r4   r8   r:   r<   rL   r>   rn   rf   rr   r=   r   r
   r
   r
   r   <module>   sh  d#<




xe

















