*ë
fê%:c       s8    3 d  k  Z  d  k Z 4 d k l Z l Z 9 e  i d : d ƒ Z > d „  Z R d „  Z s d e i f d „  ƒ  YZ	 u e	 ƒ  Z
 w d „  Z | d	 f  d
 „  ƒ  YZ ¾ d f  d „  ƒ  YZ ö d f  d „  ƒ  YZ Od „  Z We i d e i ƒ Z bd „  Z ®e i d e i ƒ Z Ád „  Z Íd „  Z d  S(   N(   s   Seqs   Alphabets    abcdefghijklmnopqrstuvwxyzX}()<>s    ABCDEFGHIJKLMNOPQRSTUVW.YZ.]{}^$c    s9  > ? @ |  d  d j } A t i |  d d ƒ } B t i | t d ƒ } D | o= E t i | d ƒ } F d | d | !d | | d	 } n G | d d
 j o: H t i	 | d ƒ } I | |  d | | d !d } nP J | d d j o: K t i	 | d ƒ } L | |  d | | d !d } n M | Sd S(   s1   convert a valid Prosite pattern into an re stringi   s   [<s   {s   [^s   -.s   ]s   (?:^|[s   ])i   s   $]s   [s   (?:s   ]|$)i   s   $]$s   ]|$)$N(
   s   patterns   flgs   strings   replaces   ss	   translates   _prosite_transs   indexs   is   rindex(   s   patterns   flgs   is   s(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   prosite_to_re> s   
(%%c    s¶  R S T |  d  d j } U t i |  d d ƒ } W t i | t d ƒ } Z | o= [ t i | d ƒ } \ d | d | !d | | d	 } n ] | d d
 j o: ^ t i	 | d ƒ } _ | |  d | | d !d } n ` | d d j o: a t i	 | d ƒ } b | |  d | | d !d } n e | d	  d j o f d | d	 } n h d | } i | d	 d j o j | d	  d } n l | d } n t i | d d ƒ Sd S(   sD   convert a valid Prosite pattern into an re with groups for each termi   s   [<s   {s   [^s   .s   ]s   (?:^|[s   ])i   s   $]s   [s   (?:s   ]|$)i   s   $]$s   ]|$)$s   ^s   ^(s   (s   $s   )$s   )s   -s   )(N(
   s   patterns   flgs   strings   replaces   ss	   translates   _prosite_transs   indexs   is   rindex(   s   patterns   flgs   is   s(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   prosite_to_grouped_reR s(   
(%%s   PrositeAlphabetc      s   s t RS(   N(    (    (    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   PrositeAlphabets s   c    s8   w x t  |  ƒ o y t d ‚ n z t d |  ƒ Sd  S(   Ns   not a legal prosite patterns   pattern(   s   verify_patterns   patterns	   TypeErrors   Prosite(   s   pattern(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   compilew s   s   Prositec      s˜   | } e  Z ‚ e e d „ Z ‹ d „  Z  d „  Z  d „  Z  d „  Z ‘ d „  Z ” d „  Z	 ¤ d „  Z
 § d	 e d
 „ Z ¯ d	 e d „ Z RS(   Nc    sŒ   ‚ ƒ t  o; | t j o
 | t j	 | t j	 o
 | t j Ap
 t d ‚ † | t j	 o ‡ | |  _ n ˆ | t j	 o ‰ | |  _ n d  S(   Ns5   one and only one of pattern and data can have a value(   s	   __debug__s   patterns   Nones   datas   AssertionErrors   self(   s   selfs   patterns   data(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __init__‚ s
   Ec    s   ‹ Œ d t  t |  ƒ ƒ Sd  S(   Ns   Prosite(%s)(   s   reprs   strs   self(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __repr__‹ s   c    s*    Ž t  i t t |  i ƒ d ƒ d Sd  S(   Ns   -s   .(   s   strings   joins   maps   strs   selfs   data(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __str__ s   c    s     t  |  i ƒ Sd  S(   N(   s   lens   selfs   data(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __len__ s    c    s     |  i | Sd  S(   N(   s   selfs   datas   i(   s   selfs   i(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __getitem__ s    c    sB   ‘ ’ t  | d ƒ } t  | d ƒ } “ t d |  i | | !ƒ Sd  S(   Ni    s   data(   s   maxs   is   js   Prosites   selfs   data(   s   selfs   is   j(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __getslice__‘ s   !c    sî   ” – | d j o, — t i t |  i ƒ ƒ |  _ ˜ |  i Sn  ™ | d j o, š t i t |  i ƒ ƒ |  _ › |  i Snd œ | d j o#  t |  i ƒ |  _	 ž |  i	 Sn1 Ÿ | d j o    t
 |  ƒ |  _ ¡ |  i Sn ¢ t | ‚ d  S(   Ns   res
   grouped_res   datas   pattern(   s   names   res   compiles   prosite_to_res   selfs   patterns   prosite_to_grouped_res
   grouped_res
   find_termss   datas   strs   AttributeError(   s   selfs   name(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __getattr__” s   c    s   ¤ ¥ t  |  ƒ Sd  S(   N(   s   strs   self(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   tostring¤ s   i    c    sŽ   § ¨ | t j	 o( © |  i i t | i ƒ | | ƒ } n" « |  i i t | i ƒ | ƒ } ¬ | t j o ­ t Sn ® t
 |  | | ƒ Sd  S(   N(   s   endposs   Nones   selfs
   grouped_res   searchs   buffers   seqs   datas   poss   ms   PrositeMatch(   s   selfs   seqs   poss   endposs   m(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   search§ s   (!c    sŽ   ¯ ° | t j	 o( ± |  i i t | i ƒ | | ƒ } n" ³ |  i i t | i ƒ | ƒ } ´ | t j o µ t Sn ¶ t
 |  | | ƒ Sd  S(   N(   s   endposs   Nones   selfs
   grouped_res   matchs   buffers   seqs   datas   poss   ms   PrositeMatch(   s   selfs   seqs   poss   endposs   m(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   match¯ s   (!(   s   prosite_alphabets   alphabets   Nones   __init__s   __repr__s   __str__s   __len__s   __getitem__s   __getslice__s   __getattr__s   tostrings   searchs   match(    (    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   Prosite| s   		s   PrositeTermc      s5   ¾ ¿ d „  Z  É d „  Z Í d „  Z Ü d „  Z RS(   Nc	 	   sg   ¿ Á | |  _  Â | |  _ Ã | |  _ Ä | |  _ Å | |  _ Æ | |  _ Ç | |  _ È | |  _ d  S(   N(	   s   letterss   selfs   ignores   is_begins   is_ends	   min_counts	   max_counts	   can_begins   can_end(	   s   selfs   letterss   ignores   is_begins   is_ends	   min_counts	   max_counts	   can_begins   can_end(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __init__¿ s   c  	  sG   É Ê t  |  i |  i |  i Ë |  i |  i |  i Ì |  i |  i	 ƒ Sd  S(   N(
   s   PrositeTerms   selfs   letterss   ignores   is_begins   is_ends	   min_counts	   max_counts	   can_begins   can_end(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   copyÉ s   c    s    Í Ï |  i ƒ  } Ñ |  i |  i j o2 Ò |  i d j o Ó n Õ | d |  i } n × | d |  i |  i f } Ø |  i o Ù | d } n Ú | Sd  S(   Ni   s   (%d)s   (%d,%d)s   >(   s   selfs   base_strs   ss	   min_counts	   max_counts   is_end(   s   selfs   s(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __str__Í s   c    s  Ü à |  i o á d } n
 ã d } ä |  i o å | d |  i d } nª æ t |  i ƒ d j o |  i o |  i o è | |  i } ng ê | d } ë |  i o ì | d } n í | |  i } î |  i o ï | d } n ð | d } ñ | Sd  S(	   Ns   <s    s   {s   }i   s   [s   >s   ](   s   selfs   is_begins   ss   ignores   letterss   lens	   can_begins   can_end(   s   selfs   s(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   base_strÜ s   	/(   s   __init__s   copys   __str__s   base_str(    (    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   PrositeTerm¾ s   
s   PrositeMatchc      sª   ö ÷ d „  Z  d „  Z d „  Z d „  Z d „  Z 	d „  Z d „  Z %d „  Z 8d	 d
 „ Z :d	 d „ Z	 <d „  Z
 >e d „ Z Dd „  Z RS(   Nc    sm   ÷ ø | |  _  ù | |  _ ú | |  _ û | i |  _ ü | i |  _ ÿ | i d ƒ |  _  | i |  _ d  S(   Ni    (	   s   prosites   selfs   seqs   matchs   poss   endposs   groups   datas   alphabet(   s   selfs   prosites   seqs   match(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __init__÷ s   c    s   d t  |  ƒ Sd  S(   Ns   <PrositeMatch instance at %x>(   s   ids   self(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __repr__s   c    s   t  |  i ƒ Sd  S(   N(   s   strs   selfs   data(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __str__s   c    s   t  |  i ƒ Sd  S(   N(   s   lens   selfs   data(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __len__s    c    s   |  i | Sd  S(   N(   s   selfs   datas   i(   s   selfs   i(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __getitem__s    c    sE   	
t  | d ƒ } t  | d ƒ } t |  i | | !|  i ƒ Sd  S(   Ni    (   s   maxs   is   js   Seqs   selfs   datas   alphabet(   s   selfs   is   j(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   __getslice__	s   !c    sË   g  } d } |  i d ƒ } yw xm d ob |  i i | d ƒ } x2 | | j  o! | i | ƒ | d } q_ W | d } q6 WWn !t j
 o
 "n X#| Sd S(   s  return a list of numbers mapping to items of the original pattern

        For example, if the Prosite pattern is "[AP](2)-D." matched against
        "PAD", then the mapping is [1, 1, 2], meaning the first character
        of the match ("P") is from the first Prosite group ("[AP]"), as
        is the second letter ("A").  The 3rd letter ("D") is mapped to
        group 2 of the pattern.
        i    i   N(   s   valss   is   selfs   starts   matchs   ends   appends
   IndexError(   s   selfs   valss   ends   is   start(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   mappings    		 
 c    s#   %56t  |  i |  i ƒ  ƒ Sd S(   sü  returns the specific Prosite pattern used to find this sequence

        >>> p = Prosite.compile("[AP](2,3)-D.")
        >>> m = p.search(Seq.Seq("PAD"))
        >>> mapping = m.mapping()
        >>> mapped = m.mapped_pattern()
        >>> print str(m[1]), str(p[mapping[1]]), str(mapped[1])
        P [AP](2,3) [AP]
        >>> print str(mapped)
        [AP]-[AP]-D.
        >>> 

        Note that the original term includes the count, while the
        mapped pattern does the expansion.
        
        N(   s   pattern_mappings   selfs   prosites   mapping(   s   self(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   mapped_pattern%s   i    c    s   89|  i i | ƒ Sd  S(   N(   s   selfs   matchs   starts   g(   s   selfs   g(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   start8s   c    s   :;|  i i | ƒ Sd  S(   N(   s   selfs   matchs   ends   g(   s   selfs   g(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   end:s   c    s   <=|  i i | ƒ Sd  S(   N(   s   selfs   matchs   spans   g(   s   selfs   g(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   span<s   c    sj   >?g  } @|  i } Ax; |  i i | ƒ d Ar" } B| i t i | | ƒ ƒ q0 WCt	 | ƒ Sd  S(   Ni    (
   s   results   selfs   alphabets   matchs   groupss   defaults   gs   appends   Seqs   tuple(   s   selfs   defaults   alphabets   gs   result(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   groups>s   	 	 c    s¸   DEt  |  i i | ƒ } F| f  j o G| Sn Ht | ƒ d j o It i | |  i ƒ Sn Jg  } Kx2 | d Kr% } L| i t i | |  i ƒ ƒ q{ WMt | ƒ Sd  S(   Ni   i    (   s   applys   selfs   matchs   groups   groupss   results   lens   Seqs   alphabets   retvals   xs   appends   tuple(   s   selfs   groupss   results   xs   retval(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   groupDs   	 	#(   s   __init__s   __repr__s   __str__s   __len__s   __getitem__s   __getslice__s   mappings   mapped_patterns   starts   ends   spans   Nones   groupss   group(    (    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   PrositeMatchö s   c    so   OPg  } QxI | d Qr< } R|  | i ƒ  } Sd | _ | _ T| i | ƒ q WUt	 d | ƒ Sd  S(   Ni    i   s   data(
   s   datas   mappings   is   prosites   copys   xs	   min_counts	   max_counts   appends   Prosite(   s   prosites   mappings   datas   xs   i(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   pattern_mappingOs   	 	s  
(?:
  ([ABCDEFGHIKLMNPQRSTVWXYZx])|              # a character OR
  \[(<?)([ABCDEFGHIKLMNPQRSTVWXYZ]+)(>?)\]|  # something in []s OR
  \{([ABCDEFGHIKLMNPQRSTVWXYZ]+)\}           # something in {}s
)(?:\((\d+)(,\d+)?\))?   # optional count of the form "(i,j)", ",j" optional
$
c    sT  bc|  d d j o dt d ‚ n e|  d  }  ft i |  d ƒ } gg  }
 hd } ixæ| d irÙ} jd } } l| d  d j o m| d } nd } n
 pd } s| d d j o t| d  } ud }	 n
 wd }	 yt i | ƒ } z| t j o {t d t | ƒ ‚ n || i d ƒ t j	 o ~d } | i d ƒ } n%€| i d	 ƒ t j	 o½ ‚d } ƒ| i d	 ƒ } „| i d
 ƒ o7 …d } †| d j o ‡t d t | ƒ ‚ n n Š| i d ƒ oA ‹d } Œ| t | ƒ d j o t d t | ƒ ‚ n n nO | i d ƒ t j	 o ’d } “| i d ƒ } n •t d t | ƒ ‚ —| i d ƒ t j	 o ™t | i d ƒ ƒ } n
 œd } | i d ƒ t j	 o  Ÿt | i d ƒ d ƒ } n
 ¢| } ¤|
 i t | | | ¥|	 | | ¦| | ƒ ƒ ¨| d } qi W©|
 Sd  S(   Ni   s   .s)   not a prosite pattern - needs a final '.'s   -i    s   <s   >s   not a Prosite term (%s)i   i   s$   [<] only allowed for first term (%s)i   s#   [>] only allowed for last term (%s)i   s   not a prosite term (%s)i   i   (   s   patterns	   TypeErrors   strings   splits   termss   results   is   terms	   can_begins   can_ends   is_begins   is_ends   prosite_term_res   matchs   Nones   reprs   groups   ignores   letterss   lens   ints	   min_counts	   max_counts   appends   PrositeTerm(   s   patterns   matchs   is_begins   ignores   can_ends   is   terms   letterss	   min_counts   is_ends   results	   can_begins	   max_counts   terms(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys
   find_termsbsb   		 							"		 	sõ  
^<?                   # starts with an optional "<"
(
  [ABCDEFGHIKLMNPQRSTVWXYZx]|             # a character OR
  (\[<?[ABCDEFGHIKLMNPQRSTVWXYZ]+>?\])|   # something in []s OR
  \{[ABCDEFGHIKLMNPQRSTVWXYZ]+\}          # something in {}s
)(\(\d+(,\d+)?\))?    # optional count of the form "(i,j)" (",j" is optional)
(-                    # new terms seperated by a '-'
 (
  [ABCDEFGHIKLMNPQRSTVWXYZx]|             # a character OR
  \[[ABCDEFGHIKLMNPQRSTVWXYZ]+>?\]|       # something in []s OR
  \{[ABCDEFGHIKLMNPQRSTVWXYZ]+\}          # something in {}s
 )(\(\d+(,\d+)?\))?   # optional count
)*                    # repeat until done
>?                    # pattern ends with an optional ">"
\.$                   # description ends with a required "."
c    s¡   ÁÂÃt  i |  ƒ } Ä| t j o Åd Sn Çt i |  d d ƒ d j o Èd Sn Ét i |  d d t |  ƒ d ƒ d j o Êd Sn Ëd Sd S(   sA   returns 1 if the Prosite pattern is syntactically correct, else 0i    s   [<i   s   >]i   N(   s
   prosite_res   matchs   patterns   xs   Nones   strings   finds   len(   s   patterns   x(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   verify_patternÁs    -c    se  ÍÎÏd } ÐxLÐd oAÑ|  i ƒ  } Ò| o ÓPn Ô| d  d j o
 Õq n ×| | d d !} Ø| d d j oÓ Ùy˜ Úd d GHÛ| GHÜt | ƒ } Ýt | ƒ GHÞt | i ƒ GHßt	 | ƒ GHàt | i
 ƒ GHát | ƒ } â| | j o ãd	 G| G| GHn Wn( ät j
 o } åd
 G| G| GHn Xæd } n q Wd S(   s.   verify the patterns from a Prosite file handles    i   i   s   PAi   s   .s   *i<   s   DIFFERs   PROBLEMN(   s   patterns   infiles   readlines   lines   compiles   ps   prosite_to_res   reprs   res   prosite_to_grouped_res
   grouped_res   strs   termss	   TypeErrors   msg(   s   infiles   lines   msgs   ps   patterns   terms(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   _verify_testÍs2   	 

(   s   strings   res   Bios   Seqs   Alphabets	   maketranss   _prosite_transs   prosite_to_res   prosite_to_grouped_res   PrositeAlphabets   prosite_alphabets   compiles   Prosites   PrositeTerms   PrositeMatchs   pattern_mappings   VERBOSEs   prosite_term_res
   find_termss
   prosite_res   verify_patterns   _verify_test(   s
   find_termss   PrositeAlphabets   PrositeTerms   _verify_tests   verify_patterns   Prosites   prosite_alphabets
   prosite_res   res   compiles   pattern_mappings   prosite_term_res   prosite_to_res   prosite_to_grouped_res   PrositeMatchs   Seqs   strings   _prosite_transs   Alphabet(    (    s,   /mit/seven/lib/python/Bio/Prosite/Pattern.pys   ?3 s"   !B8YL