ó
3<Ic           @   sk%  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 d  d l	 m
 Z
 m Z d  d l	 m Z m Z d  d l m Z Hd GHd	 GHe j d
 e j ƒ Z e j ƒ  GHe e ƒ GHe d GHe d  GHe d d !j ƒ  GHd Ge e d d d  … ƒ GHd GHe e d d d … ƒ GHe e d d d … ƒ GHe e d d d … ƒ GHe j j GHe j d e j ƒ Z e e Z e e j ƒ GHe e ƒ GHe j ƒ  d e j ƒ  k sÂt ‚ e j d e j ƒ Z y e e Z Wn e k
 rýd GHn Xd GHe j d e j ƒ Z e e Z e e j ƒ GHd  d l m Z d  d l  Z  Hd GHd GHd GHe d
 e j ƒ Z! e e  j  d d
 ƒ e j ƒ Z" e j# ƒ  Z$ xÝe! g D]ÒZ% e e% ƒ GHe% j ƒ  GHe e% ƒ GHe e% j& ƒ  ƒ GHe% d GHe e% d d !ƒ GHd e% d d +d Ge e% ƒ GHe% d d !e% d d +d Ge e% ƒ GHe  j  d d ƒ e% d d +d Ge e% ƒ GHd  e% d <d! Ge e% ƒ GHe% d" d 5d# Ge e% ƒ GHe% d =d$ Ge e% ƒ GHe% j' d% ƒ d& Ge e% ƒ GHe% j( d" d  ƒ d' Ge e% ƒ GHd( Ge% j) ƒ  GHe% j* d  ƒ d) Ge e% ƒ GHy e% j* d* ƒ e d+ ƒ ‚ Wn e+ k
 r?d, GHn Xd- Ge% j, d. ƒ GHd/ Ge% j- d. ƒ GHe% j. ƒ  d0 Ge e% ƒ GHd Ge e% d d d  … ƒ GHe% j/ d ƒ e% j/ e d1 e j ƒ ƒ d2 Ge e% ƒ GHe% d" d3 d  … =d4 Ge e% ƒ GHd GHe e% d d d … ƒ GHe e% d d d … ƒ GHe e% d d d … ƒ GHd5 GHd6 e e% d d d … ƒ e% d d d … <e e% ƒ GHq¢WHd7 GHd8 GHe j d9 e j ƒ e j d: e j0 ƒ e j d; e j0 ƒ e j d< e j1 e j d= ƒ ƒ d> g Z2 e j d? e j3 ƒ e j d@ e j3 ƒ e j dA e j4 ƒ e j dB e j1 e j4 d= ƒ ƒ e j dC e j1 e j4 dD ƒ ƒ dE g Z5 e j d9 e j6 ƒ dF g Z7 e j dG e j ƒ e j dH e j1 e j dD ƒ ƒ e j dI e j1 e j d= ƒ ƒ e j dJ e j1 e j8 e j9 dK ƒ d= ƒ ƒ e j dL e j1 e j8 e j9 dK ƒ d= ƒ ƒ e j dM e j8 e j1 e j9 d= ƒ dN ƒ ƒ e j dO e j8 e j1 e j d= ƒ dN ƒ ƒ e j dP e j1 e j8 e j9 dN ƒ dD ƒ ƒ dQ g	 Z xU e2 e5 D]I Z: x@ e7 D]8 Z; e: e; Z< e e< ƒ e e: ƒ e e; ƒ k s·t ‚ q·WqªWx• e5 D] Z: x„ e5 D]| Z; y6 e: e; Z< e e< ƒ e e: ƒ e e; ƒ k sFt ‚ Wqe+ k
 r†Z= dR e e: j ƒ e e; j ƒ e e= ƒ f GHqXqWqþWx>e2 D]6Z: x„ e2 D]| Z; y6 e: e; Z< e e< ƒ e e: ƒ e e; ƒ k sÞt ‚ Wq£e+ k
 r	Z= dR e e: j ƒ e e; j ƒ e e= ƒ f GHq£Xq£Wx¦ e5 D]ž Z; y8 e: e; Z< e> e: e ƒ sg	e> e; e ƒ sg	t dS ƒ ‚ Wn e k
 r{	n Xy8 e; e: Z< e> e: e ƒ s³	e> e; e ƒ s³	t dT ƒ ‚ Wq*	e k
 rÇ	q*	Xq*	Wq–Wxú e D]ò Z: x„ e D]| Z; y6 e: e; Z< e e< ƒ e e: ƒ e e; ƒ k s
t ‚ Wqä	e+ k
 r_
Z= dR e e: j ƒ e e; j ƒ e e= ƒ f GHqä	Xqä	Wxb e7 e2 e5 D]R Z; y8 e: e; Z< e> e: e ƒ s°
e> e; e ƒ s°
t dU ƒ ‚ Wqs
e k
 rÄ
qs
Xqs
Wq×	WxY e7 D]Q Z: xH e2 e5 e7 D]8 Z; e: e; Z< e e< ƒ e e: ƒ e e; ƒ k sé
t ‚ qé
WqÔ
Wxs e2 e5 e7 D]c Z: xZ e D]R Z; y8 e: e; Z< e> e: e ƒ s‚e> e; e ƒ s‚t dV ƒ ‚ WqEe k
 r–qEXqEWq8WHdW GHdX GHx¬e2 e5 e7 e D]˜Z: e> e: e j ƒ sÛq½n  e: j? ƒ  j ƒ  e: j ƒ  j? ƒ  k st ‚ e: j@ ƒ  j ƒ  e: j ƒ  j@ ƒ  k s/t ‚ e: jA ƒ  j ƒ  e: j ƒ  jA ƒ  k sYt ‚ d= e j d= ƒ e j dK ƒ dY g ZB e jC e: j ƒ ZD e> eD e jE ƒ rÀeB j' e j d. e j ƒ ƒ n  e> eD e jF ƒ rñeB j' e j d. e j3 ƒ ƒ n  e> eD e jG ƒ r"eB j' e j d. e j6 ƒ ƒ n  e> eD e jH ƒ r¸eB j' e j dZ e jI ƒ ƒ eB j' e j d[ e j1 e jI d= ƒ ƒ ƒ eB j' e j d\ e j1 e j dN ƒ ƒ ƒ e j d= e j6 ƒ Z; n e j d= e jI ƒ Z; y* e: j? e; ƒ j ƒ  GHeJ söt d] ƒ ‚ Wn e k
 r
n XxGeB D]?ZK e eK ƒ ZL e: j? eK ƒ j ƒ  e: j ƒ  j? eL ƒ k sTt ‚ e: j@ eK ƒ j ƒ  e: j ƒ  j@ eL ƒ k s„t ‚ e: jA eK ƒ j ƒ  e: j ƒ  jA eL ƒ k s´t ‚ e: jM eK ƒ e: j ƒ  jM eL ƒ k sÞt ‚ e: jM eK d d^ ƒ e: j ƒ  jM eL d d^ ƒ k st ‚ e: jN eK ƒ e: j ƒ  jN eL ƒ k s>t ‚ e: jN eK d d^ ƒ e: j ƒ  jN eL d d^ ƒ k stt ‚ e: j, eK ƒ e: j ƒ  j, eL ƒ k sžt ‚ e: j, eK d d^ ƒ e: j ƒ  j, eL d d^ ƒ k sÔt ‚ g  e: jO eK ƒ D] ZP eP j ƒ  ^ qäe: j ƒ  jO e eK ƒ ƒ k st ‚ yM g  e: jQ eK ƒ D] ZP eP j ƒ  ^ q0e: j ƒ  jQ e eK ƒ ƒ k sit ‚ Wn eR k
 r}n XxÐ d d d d_ g D]¼ ZS g  e: jO eK eS ƒ D] ZP eP j ƒ  ^ qªe: j ƒ  jO e eK ƒ eS ƒ k sæt ‚ yS g  e: jQ eK eS ƒ D] ZP eP j ƒ  ^ qüe: j ƒ  jQ e eK ƒ eS ƒ k s8t ‚ Wq‘eR k
 rLq‘Xq‘WqWq½W[: [D [K [L [B [2 [5 [7 [ Hd` GHda GHd= e k s‘t ‚ db e k s£t ‚ dc „  ZT Hdd Ge GHde Ge
 GHxe e jU ƒ  D]W \ ZV ZW eT eW ƒ ZX df eV eW eX e
 eV f GHe  eX ƒ e  e e
 eV ƒ k sÌt ‚ qÌWHdg Ge GHdh Ge GHxq e jU ƒ  D]c \ ZV ZW eT eW ƒ jY d di ƒ ZX df eV eW eX e eV f GHe  eX ƒ e  e e eV ƒ k sGt ‚ qGWHdj GHx(e j dk jZ e ƒ ƒ e j dk jZ e ƒ ƒ e j dk jZ e ƒ e j4 ƒ e j dk jZ e ƒ e j0 ƒ e j dk jZ e ƒ jY dl dk ƒ e j[ ƒ  ƒ e j dk jZ e ƒ jY dl dk ƒ e j\ ƒ  ƒ e j dm ƒ g D]` Z] dn e e] ƒ e e j^ e] ƒ ƒ f GHe] j ƒ  e j^ e j^ e] ƒ ƒ j ƒ  k s{t do ƒ ‚ q{WHe e e e j dp ƒ dq e j dr e j4 ƒ e j dp e j ƒ e j ds e j1 e j ƒ ƒ e j dt e j ƒ e j dr e j4 ƒ e j du e j1 e j4 dv ƒ ƒ e j dr e j_ ƒ e j dw e j3 ƒ e j dp e j6 ƒ e j dx e j6 ƒ e j dp e j0 ƒ e j dy e j_ ƒ e j dz e jI ƒ g Z` e j dG e j ƒ e j dH e j1 e j dD ƒ ƒ e j dI e j1 e j d= ƒ ƒ e j dJ e j1 e j8 e j9 dK ƒ d= ƒ ƒ e j dL e j1 e j8 e j9 dK ƒ d= ƒ ƒ e j dM e j8 e j1 e j9 d= ƒ dN ƒ ƒ e j dO e j8 e j1 e j d= ƒ dN ƒ ƒ e j dP e j1 e j8 e j9 dN ƒ dD ƒ ƒ g Za xŽ e` D]† Zb ec eb d{ ƒ r*di e eb ƒ jd ƒ  k rve> eb j e jE ƒ svt ‚ n  d e eb ƒ jd ƒ  k r°e> eb j e jF ƒ s­t ‚ q°q*q*WHd| GHd} GHxe` D]Zb yd e je eb ƒ Zf e eb ƒ jY d~ d ƒ jY d di ƒ e ef ƒ k st ‚ dn e eb ƒ e ef ƒ f GHWn4 e+ k
 rfZ= d Zf dn e eb ƒ e e= ƒ f GHn Xe> eb e j ƒ rÆy( e ef ƒ e eb je ƒ  ƒ k s t ‚ WqÊe+ k
 rÆef d k sÇt ‚ qÊXqÆqÆWx“ ea D]‹ Z y$ e je e ƒ GHeJ sþt d€ ƒ ‚ Wn e+ k
 rn Xe> e e j ƒ s+qÕn  y! e je ƒ  GHeJ sKt d€ ƒ ‚ WqÕe+ k
 r_qÕXqÕWHd GHd‚ GHxe` D]Zb yd e jh eb ƒ Zf e eb ƒ jY d d~ ƒ jY di d ƒ e ef ƒ k sÄt ‚ dn e eb ƒ e ef ƒ f GHWn4 e+ k
 rZ= d Zf dn e eb ƒ e e= ƒ f GHn Xe> eb e j ƒ rvy( e ef ƒ e eb jh ƒ  ƒ k sPt ‚ Wqze+ k
 rvef d k swt ‚ qzXqvqvWx“ ea D]‹ Z y$ e jh e ƒ GHeJ s®t dƒ ƒ ‚ Wn e+ k
 rÂn Xe> e e j ƒ sÛq…n  y! e jh ƒ  GHeJ sût dƒ ƒ ‚ Wq…e+ k
 rq…Xq…WHd„ GHd GHxe` D]ÿ Zb y. e j^ eb ƒ Zf d… e eb ƒ e ef ƒ f GHWn4 e+ k
 rZ= d Zf d… e eb ƒ e e= ƒ f GHn Xe> eb e j ƒ r&yY e ef ƒ e eb j^ ƒ  ƒ k sÊt ‚ e ef d d d  … ƒ e eb jT ƒ  ƒ k sût ‚ Wq%e+ k
 r!ef d k s"t ‚ q%Xq&q&Wx° ea D]¨ Z y$ e j^ e ƒ GHeJ sYt d† ƒ ‚ Wn e+ k
 rmn Xy! e jT ƒ  GHeJ sŽt d‡ ƒ ‚ Wn e+ k
 r¢n Xy! e j^ ƒ  GHeJ sÃt d† ƒ ‚ Wq0e+ k
 r×q0Xq0WHdˆ GHd	 GHxØe` D]ÐZb y. e ji eb ƒ Zf d… e eb ƒ e ef ƒ f GHWn: e+ e f k
 r^Z= d Zf d… e eb ƒ e e= ƒ f GHn Xe> eb e j ƒ rÈy( e ef ƒ e eb ji ƒ  ƒ k s˜t ‚ WqÈe+ e f k
 rÄef d k sÅt ‚ qÈXn  y e ji eb d‰ ej ƒZk Wn e+ e f k
 rZ= d Zk n Xef d k	 rOek d k	 s!t ‚ e ek ƒ e ef jO dK ƒ d ƒ k sOt ‚ n  e> eb e j ƒ rîy. e ek ƒ e eb ji d‰ ej ƒ ƒ k sŽt ‚ Wq¾e+ e f k
 rºek d k s»t ‚ q¾XqîqîWx“ ea D]‹ Z y$ e ji e ƒ GHeJ sòt dŠ ƒ ‚ Wn e+ k
 rn Xe> e e j ƒ sqÉn  y! e ji ƒ  GHeJ s?t dŠ ƒ ‚ WqÉe+ k
 rSqÉXqÉWd‹ Zl xÖel e j el ƒ e j el e j6 ƒ e j el e jE ƒ  ƒ e j el e j ƒ g D]†Zb dŒ e e ji eb ƒ ƒ k sÔt ‚ dŒ e e ji eb d d ƒƒ k sût ‚ dŒ e e ji eb d dŽ ƒƒ k s"t ‚ d e e ji eb d d ƒƒ k sIt ‚ d e e ji eb d d‘ ƒƒ k spt ‚ d’ e e ji eb d d ƒƒ k s—t ‚ d’ e e ji eb d d“ ƒƒ k s¾t ‚ d” e e ji eb d d• ƒƒ k såt ‚ dŒ e e ji eb d d– ƒƒ k s t ‚ dŒ e e ji eb d d— ƒƒ k s­t ‚ q­W[l xF ea D]> Z y$ e ji e ƒ GHeJ sj t d˜ ƒ ‚ WqA e+ k
 r~ qA XqA We ji d™ ƒ dš k sž t ‚ e ji d› ƒ dK k s¹ t ‚ e ji dœ ƒ dl k sÔ t ‚ e ji d ƒ dl k sï t ‚ e ji dž ƒ dš k s
!t ‚ e ji dŸ ƒ dK k s%!t ‚ e ji d  ƒ dl k s@!t ‚ e ji d¡ ƒ dl k s[!t ‚ e ji d¢ ƒ dš k sv!t ‚ e ji d£ ƒ dK k s‘!t ‚ e ji d¤ ƒ dl k s¬!t ‚ e ji d¥ ƒ dl k sÇ!t ‚ xV d¦ d§ d¨ d© g D]B Zm y( e ji em ƒ GHdª e em ƒ s"t ‚ WqÚ!e k
 r"qÚ!XqÚ!We  e j\ j ƒ Zn x¢en D]šZo x‘en D]‰Zp x€en D]xZq e  g  e eo D]E Z: e ep D]4 Z; e eq D]# Z< e ji e: e; e< d d ƒ^ qƒ"qu"qg"ƒ ZW e ji eo ep eq ƒ Z e dK k ró"eW e  dK ƒ k sË#t ‚ qS"e dl k r>#e eW ƒ d k sË#t d« eo ep eq e d¬ jZ eW ƒ f ƒ ‚ qS"e d* k re#eW e  d­ ƒ k sË#t ‚ qS"e d® k rŒ#eW e  d¯ ƒ k sË#t ‚ qS"e d° k r³#eW e  d± ƒ k sË#t ‚ qS"eW e  e ƒ k sS"t ‚ qS"WqF"Wq9"W[ [o [p [q [n Hd² GHdX GHx¹ e` D]± Zb e> eb e j ƒ rø#ye dn e eb ƒ e eb jT ƒ  ƒ f GHeb jT ƒ  j ƒ  e j^ eb ƒ j ƒ  d d d  … k st$t d³ ƒ ‚ Wq©$e+ k
 r¥$Z= dn e eb ƒ e e= ƒ f GHq©$Xqø#qø#WHd´ GHdµ GHx¬ e` D]¤ Zb e> eb e j ƒ r¿$yX dn e eb ƒ e eb j^ ƒ  ƒ f GHeb j^ ƒ  j ƒ  e j^ eb ƒ j ƒ  k s.%t d³ ƒ ‚ Wqc%e+ k
 r_%Z= dn e eb ƒ e e= ƒ f GHqc%Xq¿$q¿$Wd S(¶   iÿÿÿÿ(   t   Set(   t   Seq(   t   IUPAC(   t   Alphabet(   t   ambiguous_dna_complementt   ambiguous_rna_complement(   t   ambiguous_dna_valuest   ambiguous_rna_values(   t   TranslationErrors   Testing Seqs   ===========t   TCAAAAGGATGCATCATGi    i   i   s   Reverse using -1 stride:Ns7   Extract every third nucleotide (slicing with stride 3):i   i   t   Ts   expected error, and got its   huh?  ERROR(   t
   MutableSeqs   Testing MutableSeqs   ==================s-   Testing creating MutableSeqs in multiple wayst   ct   GATs   Set slice with string:i   s   Set slice with MutableSeq:s   Set slice with array:t   Gs	   Set item:i   s   Delete slice:s   Delete item:t   Cs   Append:s   Insert:s   Pop off the last item:s   Removed Gs:t   Zs!   Did not get expected value error.s   Expected value error and got its   A count:t   As   A index:s   Reversed Seq:t   TTTs   Extended Seq:i   s   Delete stride slice:s4   Setting wobble codon to N (set slice with stride 3):t   Ns   Testing Seq additions   ====================t   ATCGt   GTCAt   GGTCAs   CTG-CAt   -t   TGGTCAt   AUUUCGt   AUUCGt   UCAGs   UC-AGs   U.CAGt   .t   UGCAUt	   UUUTTTACGt   ATCGPKs   T.CGPKs   T-CGPKs
   MEDG-KRXR*t   *s   ME-K-DRXR*XUs
   MEDG-KRXR@t   @s   ME-KR@s
   MEDG.KRXR@t   TEDDFs   %s + %s
-> %ss   DNA+RNA addition should fail!s   RNA+DNA addition should fail!s(   Protein+Nucleotide addition should fail!s(   Nucleotide+Protein addition should fail!s   Testing Seq string methodss   ==========================s   -X@t   Ks   K-s   K@s   Alphabet should have clashed!iþÿÿÿiç  s   Checking ambiguous complementss   ==============================t   ?c         C   s   t  j |  ƒ d  d  d … S(   Niÿÿÿÿ(   R   t   reverse_complement(   t   sequence(    (    s   test_seq.pyt
   complement  s    s   DNA Ambiguity mapping:s   DNA Complement mapping:s   %s={%s} --> {%s}=%ss   RNA Ambiguity mapping:s   RNA Complement mapping:t   Us   Reverse complements:t    t   Xt	   AWGAARCKGs   %s -> %ss7   Dobule reverse complement didn't preserve the sequence!t	   ATGAAACTGt	   ATGAAACtgt	   AUGAAACUGs
   ATGAAA-CTGt   ATGAAACTGWNs   AUGAAA==CUGt   =t   AUGAAACUGWNt	   AUGAAACTGt	   AUGaaaCUGt
   ACTGTCGTCTt   alphabets   Transcribe DNA into RNAs   =======================t   tt   us*   Transcription shouldn't work on a protein!s   Back-transcribe RNA into DNAs   ============================s/   Back transcription shouldn't work on a protein!s   Reverse Complements   %s
-> %ss/   Reverse complement shouldn't work on a protein!s'   Complement shouldn't work on a protein!t   Translatingt   to_stops(   Translation shouldn't work on a protein!t   TAATAGTGAAGAAGGs   ***RRt   tablet   SGC0s   **W**s   **WRRs   Yeast Mitochondrials   **WSSi	   s   **CRRs   Euplotid Nucleari   t	   Bacterials   Shouldn't work on a protein!t   TATt   Yt   TARt   TANt   NNNt   TAtt   TaRt   TaNt   nnNt   tatt   tart   tant   nnns   TA?s   N-Nt   AC_t   Ac_s!   Translating %s should have faileds   translate('%s') = '%s' not '%s't   ,t   EQt   Bt   DNt   Jt   LIs   Seq's .complement() methods%   Bio.Seq function and method disagree!s"   Seq's .reverse_complement() methods"   ==================================(r   t   sett	   NameErrort   setsR    t   BioR   t   Bio.AlphabetR   R   t   Bio.Data.IUPACDataR   R   R   R   t   Bio.Data.CodonTableR   t   unambiguous_dnat   st   tostringt   lent   reprR5   t   lettersR6   R7   t   strt   AssertionErrort   proteint	   TypeErrort   ambiguous_dnat   Bio.SeqR   t   arrayt
   string_seqt	   array_seqt	   tomutablet   converted_seqt   test_seqt   toseqt   appendt   insertt   popt   removet
   ValueErrort   countt   indext   reverset   extendt   generic_dnat   Gappedt   dnat   ambiguous_rnat   generic_rnat   rnat   generic_nucleotidet   nuct   HasStopCodont   extended_proteint   at   bR   t   et
   isinstancet   stript   lstript   rstript
   test_charst   _get_base_alphabett   alphat   DNAAlphabett   RNAAlphabett   NucleotideAlphabett   ProteinAlphabett   generic_proteint   Falset   charst	   str_charst   findt   rfindt   splitt   xt   rsplitt   AttributeErrort   max_sepR'   t	   iteritemst
   ambig_chart   valuest   compl_valuest   replacet   joint   IUPACAmbiguousRNAt   IUPACAmbiguousDNAR&   R%   t   unambiguous_rnat	   test_seqst   protein_seqst   nucleotide_seqt   hasattrt   uppert
   transcribet   expectedt   Nonet   back_transcribet	   translatet   Truet   shortt
   misc_stopst   codont   ambigt   c1t   c2t   c3(    (    (    s   test_seq.pyt   <module>   s&  
		
"	
	

	
*		*****	
0
,6
,2
!
!
,2
!
0
! ***$((000*6*6*6%$%(('(+			*		***!	$	****0&6( 6( $5(
.. !''''''+:'$(#