
%.Ic           @   s  y
 e  Z  Wn! e k
 r- d  d l m Z  n Xd  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 d a d a d e f d     YZ d d d     YZ d	   Z d
 e f d     YZ d e f d     YZ d e f d     YZ d   Z e d d d d d d d i= d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk dl g dm d d. dD g  e d dn d do d dp d i< d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) dl 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6dC dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk dR dS g dm d@ dA dB dD dX g  e d dq d dr d ds d i> d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) dl 6d) d* 6dE d+ 6dE d, 6dE d- 6dE d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6dC dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk g dm dD g  e d dt d du d dv d i> d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) dl 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk g dm d d d. d@ dA dB dD dX g  e d dw d dx d dy d i> d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) dl 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6dC dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d dR 6d dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk g dm d d@ dA dB dD dX g  e d dz d d{ d d| d i? d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d7 dj 6d7 dk 6d& d' 6d& d( 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dl g dm dD g  e d d} d d~ d d d i> d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) dl 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dJ dN 6dM dO 6d dP 6d dQ 6d dR 6d dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk g dm dD g  e d d d d d d d i> d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d& dl 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk g dm dD g  e d d d d d d d i= d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk dl g dm d d. d@ dA dB dD dX g  e d d d d d d d i= d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk dl g dm d. dD g  e d d d d d d d i> d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d& d' 6d& d( 6d) dl 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6dC dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6dd dR 6dd dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dk g dm dD g  e d d d d d d d i? d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d# dj 6d& d' 6d& d( 6d) dl 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dJ dN 6dM dO 6d dP 6d dQ 6d dR 6d dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dk g dm dD g  e d d d d d d d i> d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d# d$ 6d# d% 6d7 dk 6d& d' 6d& d( 6d) d* 6d d+ 6d d, 6d d- 6d d. 6d/ d0 6d/ d1 6d/ d2 6d/ d3 6d4 d5 6d4 d6 6d7 d8 6d7 d9 6d: d; 6d: d< 6d: d= 6d: d> 6d? d@ 6d? dA 6d? dB 6dC dD 6dE dF 6dE dG 6dE dH 6dE dI 6dJ dK 6dJ dL 6dM dN 6dM dO 6d dP 6d dQ 6d: dR 6d: dS 6dT dU 6dT dV 6dT dW 6dT dX 6dY dZ 6dY d[ 6dY d\ 6dY d] 6d^ d_ 6d^ d` 6da db 6da dc 6dd de 6dd df 6dd dg 6dd dh 6di dj dl g dm dD g  d e f d     YZ d   Z d   Z e dl dj g e	 j   dl dj d g k sYt!  e dk dl g e	 j   dk dl g k st!  e dk dj g e	 j   dk dj d g k st!  e d d g e	 j"  d d d g k st!  e dl dj dk g e	 j   dl dj dk d d g k st!  d d d     YZ# i  Z$ xB e
 j%   D]4 \ Z& Z' e e' e j( e	 j  e j) e	 j*  e$ e& <q9Wi  Z+ xB e j%   D]4 \ Z& Z' e e' e j( e	 j  e j) e	 j*  e+ e& <qWi  Z, xB e j%   D]4 \ Z& Z' e e' e j- e	 j" e j) e	 j*  e, e& <qWi  Z. xB e j%   D]4 \ Z& Z' e e' e j- e	 j" e j) e	 j*  e. e& <qWe/ e	 j" j0    Z1 d e1 dE <xB e j%   D]4 \ Z& Z' e e' e j2   e1 e j) e	 j*  e e& <q~WxB e j%   D]4 \ Z& Z' e e' e j2   e1 e j) e	 j*  e e& <qW[1 [& [' x2e j3   D]$Z4 e. e4 j5 d dT k s4t!  e. e4 j5 d dT k sQt!  e. e4 j5 d d k snt!  d e e4 j6 k rd e e4 j6 k ry& e+ e4 j5 d GHe7 st! d   Wn e8 k
 rn Xd e e4 j6 k st!  d e. e4 j6 k s t!  d e e4 j6 k st!  d e+ e4 j6 k s5t!  qqW[4 e d j6 e d j6 k s\t!  e dv j6 e du j6 k s|t!  e d j6 e d j6 k st!  d S(   i(   t   Set(   t   Alphabet(   t   IUPAC(   t	   IUPACDatat   TranslationErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR      s   t
   CodonTablec           B   sV   e  Z e j Z e j Z i  Z i  Z g  Z	 g  Z
 e e e e e	 e
 d   Z d   Z RS(   c         C   s:   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(   t   nucleotide_alphabett   protein_alphabett   forward_tablet
   back_tablet   start_codonst   stop_codons(   t   selfR   R	   R
   R   R   R   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   __init__(   s    					c   	      C   s(  |  j  r d |  j  } n d } |  j rN | d d j t d |  j   7} n  |  j j } t |  j t j	  s | d k	 r d | k r d } n d } | d d	 j g  | D] } d
 | ^ q  d	 } | d d j g  | D] } d ^ q  d } x+| D]#} x | D] } | d } x | D] } | | | } | d | } | |  j
 k r_| d } q!y |  j | } Wn- t k
 rd } n t k
 rd } n X| |  j k r| d | } q!| d | } q!W| d | } | d | } q
W| d d j g  | D] } d ^ q d } q W| S(   s   Returns a simple text representation of the codon table

        e.g.
        >>> import Bio.Data.CodonTable
        >>> print Bio.Data.CodonTable.standard_dna_table
        >>> print Bio.Data.CodonTable.generic_by_id[1]s   Table %is   Table ID unknownt    s   , t   Tt   TCAGt   UCAGs   

  |t   |s
     %s      s   
--+t   +s	   ---------s   +--s    |s    %ss    Stop|t   ?s    %s(s)|s    %s   |s   
N(   t   idt   namest   joint   filtert   NoneR   t   letterst
   isinstanceR   t   DNAAlphabetR   R
   t   KeyErrorR   R   (	   R   t   answerR   t   c2t   c1t   c3t   linet   codont   amino(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   __str__3   sB    		&	2.
	
2(   R   R   R   t   generic_nucleotideR   t   generic_proteinR	   R
   R   R   R   R   R'   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR      s   		c         C   sI   i  } |  j    } | j   x | D] } | | |  | <q# W| | d  <| S(   N(   t   keyst   sortR   (   t   tablet   default_stop_codonR   R*   t   key(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   make_back_tablel   s     

t   NCBICodonTablec           B   s#   e  Z e j Z e j Z d    Z RS(   c         C   sG   | |  _  | |  _ | |  _ t | | d  |  _ | |  _ | |  _ d  S(   Ni    (   R   R   R
   R/   R   R   R   (   R   R   R   R,   R   R   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR   |   s    				(	   R   R   R   R(   R   R   t   proteinR	   R   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR0   x   s   		t   NCBICodonTableDNAc           B   s   e  Z e j Z RS(    (   R   R   R   t   unambiguous_dnaR   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR2      s   t   NCBICodonTableRNAc           B   s   e  Z e j Z RS(    (   R   R   R   t   unambiguous_rnaR   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR4      s   c         C   s  |  j  d  } t | | | g | | |  } i  } i  }	 xJ | j   D]< \ }
 } | |	 |
 <|
 j d d  }
 | |	 |
 <| | |
 <qG Wg  } g  } xG | D]? }
 | j |
  |
 j d d  }
 | j |
  | j |
  q Wg  } g  } xG | D]? }
 | j |
  |
 j d d  }
 | j |
  | j |
  q Wt | | | g |	 | |  } t | | | g | | |  } | d k r| a | a n  | t	 | <| t
 | <| t | <| d  k	 r| j |  n  x, | D]$ }  | t |  <| t |  <| t |  <qWd  S(   Ns   ; R   t   Ui   (   t   splitR2   t   itemst   replacet   appendR0   R4   t   standard_dna_tablet   standard_rna_tablet   unambiguous_dna_by_idt   unambiguous_rna_by_idt   generic_by_idR   t   unambiguous_dna_by_namet   unambiguous_rna_by_namet   generic_by_name(   t   namet   alt_nameR   R,   R   R   R   t   dnat	   rna_tablet   generic_tableR%   t   valt   rna_start_codonst   generic_start_codonst   rna_stop_codonst   generic_stop_codonst   generict   rna(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   register_ncbi_table   sP    	

	




RC   t   StandardRD   t   SGC0R   i   R,   t   Ft   TTTt   TTCt   Lt   TTAt   TTGt   St   TCTt   TCCt   TCAt   TCGt   Yt   TATt   TACt   Ct   TGTt   TGCt   Wt   TGGt   CTTt   CTCt   CTAt   CTGt   Pt   CCTt   CCCt   CCAt   CCGt   Ht   CATt   CACt   Qt   CAAt   CAGt   Rt   CGTt   CGCt   CGAt   CGGt   It   ATTt   ATCt   ATAt   Mt   ATGR   t   ACTt   ACCt   ACAt   ACGt   Nt   AATt   AACt   Kt   AAAt   AAGt   AGTt   AGCt   AGAt   AGGt   Vt   GTTt   GTCt   GTAt   GTGt   At   GCTt   GCCt   GCAt   GCGt   Dt   GATt   GACt   Et   GAAt   GAGt   Gt   GGTt   GGCt   GGAt   GGGR   t   TAAt   TAGt   TGAR   s   Vertebrate Mitochondrialt   SGC1i   s   Yeast Mitochondrialt   SGC2i   s`   Mold Mitochondrial; Protozoan Mitochondrial; Coelenterate Mitochondrial; Mycoplasma; Spiroplasmat   SGC3i   s   Invertebrate Mitochondrialt   SGC4i   s8   Ciliate Nuclear; Dasycladacean Nuclear; Hexamita Nucleart   SGC5i   s   Echinoderm Mitochondrialt   SGC8i	   s   Euplotid Nucleart   SGC9i
   t	   Bacteriali   s   Alternative Yeast Nucleari   s   Ascidian Mitochondriali   s   Flatworm Mitochondriali   s   Blepharisma Macronucleari   t   AmbiguousCodonTablec           B   s   e  Z d    Z d   Z RS(   c      
   C   sV   t  j |  | | t | j | |  | j t | j |  t | j |   | |  _ d  S(   N(	   R   R   t   AmbiguousForwardTableR
   R   t   list_ambiguous_codonsR   R   t   _codon_table(   R   t   codon_tablet   ambiguous_nucleotide_alphabett   ambiguous_nucleotide_valuest   ambiguous_protein_alphabett   ambiguous_protein_values(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR     s    		c         C   s   t  |  j |  S(   N(   t   getattrR   (   R   RC   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   __getattr__  s    (   R   R   R   R   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR     s   	c         C   s   |  \ } } } | | } | | } | | } i  }	 g  }
 xs | D]k } xb | D]Z } xQ | D]I } y d |	 | | | | <WqZ t  k
 r |
 j | | |  qZ XqZ WqM Wq@ W|
 r |	 j   r t d |  d   n  t  |    n  |	 j   S(   Ni   s   ambiguous codon '%s' codes s!   for both proteins and stop codons(   R   R:   R*   R   (   R%   R
   R   R"   R!   R#   t   x1t   x2t   x3t   possiblet   stopst   y1t   y2t   y3(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   list_possible_proteins"  s&    


%
c         C   sG  g  | j    D]D \ } } t g  |  D] } | d ^ q#  j t |   r | ^ q } g  | j    D]D \ } } t g  |  D] } | d ^ qz  j t |   rd | ^ qd } g  | j    D]D \ } } t g  |  D] } | d ^ q  j t |   r | ^ q } t g  |  D] } | d ^ q } t g  |  D] } | d ^ q2 }	 t g  | D]. }
 | D]! } | D] } |
 | | ^ qiq_qU } | j |   |  } x | D] } t } xs g  | | d D]> }
 | | d D]) } | | d D] } |
 | | ^ qqqD] } | |  k rt } qqqW| r| j |  qqW| S(   s  Extends 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'.
    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.
    i    i   i   (   t	   iteritemst   sett
   issupersett   difference_updatet   Truet   FalseR:   (   t   codonsR   t   lettert   meaningsR%   t   c1_listt   c2_listt   c3_listt   set2t   set3R"   R!   R#   t
   candidatesR    t   ambig_codont   wanted(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR   9  s4    >>>##A0
t   TRAt   TARt   UAGt   UAAt   UARR   c           B   s&   e  Z d    Z d d  Z d   Z RS(   c   	      C   s   | |  _  | |  _ | |  _ i  } xQ | j   D]C \ } } x4 | D], } | j | i   } d | | <| | | <qA Wq. Wx* | j   D] \ } } | j   | | <q W| |  _ i  |  _ d  S(   Ni   (   R
   t   ambiguous_nucleotidet   ambiguous_proteinR8   t   getR*   t	   _invertedt   _cache(	   R   R
   R   R   t   invertedRC   RH   t   ct   x(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR   ~  s    			
	c         C   s*   y |  j  |  SWn t k
 r% | SXd  S(   N(   t   __getitem__R   (   R   R%   t   failobj(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR     s    c   
      C   sI  y |  j  | } Wn t k
 r$ n; X| t k r@ t |   n  | t k r[ t |   n  | Sy" |  j | } | |  j  | <| SWn t k
 r n Xy t | |  j |  j  } WnS t k
 r t |  j  | <t |   n* t k
 rt |  j  | <t |   n Xt |  d k s%t d   t |  d k rP| d |  j  | <| d Si  } x@ | D]8 } x/ |  j | D]  } | j	 | d  d | | <qqWq]Wt |  } g  } x6 | j
   D]( \ } } | | k r| j |  qqWt |  d k rt |  j  | <t |   n  |  j d  }	 | j |	  | d } | |  j  | <| S(   Ni    s   unambiguous codons must codei   c         S   s@   t  t | |   t | |   } | d k r< t  |  |  S| S(   Ni    (   t   cmpt   len(   R   t   yR,   t   a(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   _sort  s    #(   R   R   R   R
   R   R   R   t   AssertionErrorR   R   R8   R:   R   R+   (
   R   R%   R   R   t   ambiguous_possibleR&   t   termt   nRH   R   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR     s\    "
N(   R   R   R   R   R   R   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyR   }  s   	R6   t   GUUt   GUNt   UUNt   Xt   UGAs   Should be a stop onlyt   URAN(    (    (9   R   t	   NameErrort   setsR    t   BioR   t   Bio.AlphabetR   t   Bio.DataR   R@   R=   RA   R>   RB   R?   t   ambiguous_generic_by_namet   ambiguous_generic_by_idR   R;   R<   t	   ExceptionR   R   R/   R0   R2   R4   RO   R   R   R   t   ambiguous_dna_valuesR   t   ambiguous_rna_valuesR   t   ambiguous_dna_by_nameR8   R.   RH   t   ambiguous_dnat   extended_proteint   extended_protein_valuest   ambiguous_dna_by_idt   ambiguous_rna_by_namet   ambiguous_rnat   ambiguous_rna_by_idt   dictR   t   _merged_valuest   NucleotideAlphabetR*   R   R
   R   R   R   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Data/CodonTable.pyt   <module>   s  
M		}############
###########&############
########################
############	
############
############
############
############
############
############	
############
		/-*--6_
		   