*ë
ÁþD;c       s‰    d  Z  ( ) d d g Z - d k T. d k Z / d k Z 0 d k Z 1 d k l Z 2 d k l Z 3 d k	 T4 d k
 l Z 5 d k
 l Z 7 d	 f  d
 „  ƒ  YZ ˆ d f  d „  ƒ  YZ « d f  d „  ƒ  YZ ä d f  d „  ƒ  YZ d f  d „  ƒ  YZ Od e f d „  ƒ  YZ [d f  d „  ƒ  YZ ìd e f d „  ƒ  YZ „e e e d „ Z ”d „  Z Öe d „ Z úd „  Z d S(   s½  Prosite

This module provides code to work with the prosite.dat file from
Prosite.
http://www.expasy.ch/prosite/

Tested with:
Release 15.0, July 1998
Release 16.0, July 1999


Classes:
Record                Holds Prosite data.
PatternHit            Holds data from a hit against a Prosite pattern.
Iterator              Iterates over entries in a Prosite file.
Dictionary            Accesses a Prosite file using a dictionary interface.
ExPASyDictionary      Accesses Prosite records from ExPASy.
RecordParser          Parses a Prosite record into a Record object.

_Scanner              Scans Prosite-formatted data.
_RecordConsumer       Consumes Prosite data to a Record object.


Functions:
scan_sequence_expasy  Scan a sequence for occurrences of Prosite patterns.
index_file            Index a Prosite file for a Dictionary.
_extract_record       Extract Prosite data from a web page.
_extract_pattern_hits Extract Prosite patterns from a web page.

s   Patterns   Prodoc(   s   *N(   s   File(   s   Index(   s   ExPASy(   s   RequestLimiters   Recordc      s   7 d  Z  c d d „  Z RS(   s  Holds information from a Prosite record.

    Members:
    name           ID of the record.  e.g. ADH_ZINC
    type           Type of entry.  e.g. PATTERN, MATRIX, or RULE
    accession      e.g. PS00387
    created        Date the entry was created.  (MMM-YYYY)
    data_update    Date the 'primary' data was last updated.
    info_update    Date data other than 'primary' data was last updated.
    pdoc           ID of the PROSITE DOCumentation.
    
    description    Free-format description.
    pattern        The PROSITE pattern.  See docs.
    matrix         List of strings that describes a matrix entry.
    rules          List of rule definitions.  (strings)

    NUMERICAL RESULTS
    nr_sp_release  SwissProt release.
    nr_sp_seqs     Number of seqs in that release of Swiss-Prot. (int)
    nr_total       Number of hits in Swiss-Prot.  tuple of (hits, seqs)
    nr_positive    True positives.  tuple of (hits, seqs)
    nr_unknown     Could be positives.  tuple of (hits, seqs)
    nr_false_pos   False positives.  tuple of (hits, seqs)
    nr_false_neg   False negatives.  (int)
    nr_partial     False negatives, because they are fragments. (int)

    COMMENTS
    cc_taxo_range  Taxonomic range.  See docs for format
    cc_max_repeat  Maximum number of repetitions in a protein
    cc_site        Interesting site.  list of tuples (pattern pos, desc.)
    cc_skip_flag   Can this entry be ignored?

    DATA BANK REFERENCES - The following are all
                           lists of tuples (swiss-prot accession,
                                            swiss-prot name)
    dr_positive
    dr_false_neg
    dr_false_pos
    dr_potential   Potential hits, but fingerprint region not yet available.
    dr_unknown     Could possibly belong

    pdb_structs    List of PDB entries.

    c    s{  d e d |  _ f d |  _ g d |  _ h d |  _ i d |  _ j d |  _ k d |  _ m d |  _ n d |  _	 o g  |  _
 p g  |  _ r d |  _ s d |  _ t t t f |  _ u t t f |  _ v t t f |  _ w t t f |  _ x t |  _ y t |  _ { d |  _ | d |  _ } g  |  _ ~ d |  _ € g  |  _  g  |  _ ‚ g  |  _ ƒ g  |  _ „ g  |  _ † g  |  _ d  S(   Ns    (   s   selfs   names   types	   accessions   createds   data_updates   info_updates   pdocs   descriptions   patterns   matrixs   ruless   nr_sp_releases
   nr_sp_seqss   Nones   nr_totals   nr_positives
   nr_unknowns   nr_false_poss   nr_false_negs
   nr_partials   cc_taxo_ranges   cc_max_repeats   cc_sites   cc_skip_flags   dr_positives   dr_false_negs   dr_false_poss   dr_potentials
   dr_unknowns   pdb_structs(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__d s:   (   s   __doc__s   __init__(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   Record7 s   	,s
   PatternHitc      s&   ˆ d  Z  ” • d „  Z › d „  Z RS(   s²  Holds information from a hit against a Prosite pattern.

    Members:
    name           ID of the record.  e.g. ADH_ZINC
    accession      e.g. PS00387
    pdoc           ID of the PROSITE DOCumentation.
    description    Free-format description.
    matches        List of tuples (start, end, sequence) where
                   start and end are indexes of the match, and sequence is
                   the sequence matched.

    c    sC   • – t  |  _ — t  |  _ ˜ t  |  _ ™ t  |  _ š g  |  _ d  S(   N(   s   Nones   selfs   names	   accessions   pdocs   descriptions   matches(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__• s
   c    sU  › œ g  }  | i d |  i |  i |  i f ƒ ž | i |  i ƒ Ÿ | i d ƒ   t |  i ƒ d j o! ¡ | i d t |  i ƒ ƒ n ¢ x© t	 t |  i ƒ ƒ d ¢ r } £ |  i | \ } } } ¤ d | | f } ¥ t |  i ƒ d j o% ¦ | i d | d | | f ƒ n ¨ | i d d	 | | f ƒ qª W© t i | d
 ƒ Sd  S(   Ns   %s %s %ss    i   s   Number of matches: %si    s   %d-%ds   %7d %10s %ss   %7s %10s %ss    s   
(   s   liness   appends   selfs	   accessions   pdocs   names   descriptions   lens   matchess   ranges   is   starts   ends   seqs	   range_strs   strings   join(   s   selfs   liness   is   seqs   ends	   range_strs   start(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __str__› s   	&! 	%!(   s   __doc__s   __init__s   __str__(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys
   PatternHitˆ s   	s   Iteratorc      s)   « d  Z  ± ² e d „ Z ¿ d „  Z RS(   s   Returns one record at a time from a Prosite file.

    Methods:
    next   Return the next record from the stream, or None.

    c    sd   ² ¹ º t  | ƒ t j	 o t  | ƒ t j	 o » t d ‚ n ¼ t i | ƒ |  _ ½ | |  _
 d S(   s  __init__(self, handle, parser=None)

        Create a new iterator.  handle is a file-like object.  parser
        is an optional Parser object to change the results into another form.
        If set to None, then the raw contents of the file will be returned.

        s,   I expected a file handle or file-like objectN(   s   types   handles   FileTypes   InstanceTypes
   ValueErrors   Files
   UndoHandles   selfs   _uhandles   parsers   _parser(   s   selfs   handles   parser(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__² s
   )c    s‚  ¿ Å Ç |  i i ƒ  } È | d  d j o~ É xt É d oi Ê |  i i ƒ  } Ë | o Ì Pn Í | d  d j o Î Pn Ï | d  d j o Ð t d ‚ n q2 Wn Ó g  } Ô x` Ô d oU Õ |  i i ƒ  } Ö | o × Pn Ø | i | ƒ Ù | d  d j o Ú Pn q¹ WÜ | o Ý t Sn ß t	 i
 | d ƒ } à |  i t j	 o  á |  i i t i | ƒ ƒ Sn â | Sd S(   s   next(self) -> object

        Return the next Prosite record from the file.  If no more records,
        return None.

        i   s   CCi   s   //s   Oops, where's the copyright?s    N(   s   selfs   _uhandles   peeklines   lines   readlines   SyntaxErrors   liness   appends   Nones   strings   joins   datas   _parsers   parses   Files   StringHandle(   s   selfs   datas   liness   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   next¿ s6    
	 
 (   s   __doc__s   Nones   __init__s   next(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   Iterator« s   	s
   Dictionaryc      sJ   ä d  Z  ç è d Z ê e d „ Z ø d „  Z û d „  Z d „  Z RS(   s;   Accesses a Prosite file using a dictionary interface.

    s
   __filenamec    sG   ê ó ô t  i  | ƒ |  _ õ t |  i t i ƒ |  _ ö | |  _	 d S(   s‚  __init__(self, indexname, parser=None)

        Open a Prosite Dictionary.  indexname is the name of the
        index for the dictionary.  The index should have been created
        using the index_file function.  parser is an optional Parser
        object to change the results into another form.  If set to None,
        then the raw contents of the file will be returned.

        N(
   s   Indexs	   indexnames   selfs   _indexs   opens
   Dictionarys   _Dictionary__filename_keys   _handles   parsers   _parser(   s   selfs	   indexnames   parser(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__ê s   	c    s   ø ù t  |  i ƒ Sd  S(   N(   s   lens   selfs   _index(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __len__ø s   c    s   û ü |  i | \ } } ý |  i i | ƒ þ |  i i | ƒ } ÿ |  i	 t
 j	 o   |  i	 i t i | ƒ ƒ Sn | Sd  S(   N(   s   selfs   _indexs   keys   starts   lens   _handles   seeks   reads   datas   _parsers   Nones   parses   Files   StringHandle(   s   selfs   keys   lens   datas   start(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __getitem__û s    c    s   t  |  i | ƒ Sd  S(   N(   s   getattrs   selfs   _indexs   name(   s   selfs   name(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __getattr__s   (   s   __doc__s   _Dictionary__filename_keys   Nones   __init__s   __len__s   __getitem__s   __getattr__(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys
   Dictionaryä s   		s   ExPASyDictionaryc      s§   d  Z  	
d e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z !d „  Z #d	 „  Z	 %d
 „  Z
 (d „  Z 0e d „ Z 7d „  Z RS(   sF   Access PROSITE at ExPASy using a read-only dictionary interface.

    f5.0c    s(   
| |  _  t | ƒ |  _ d S(   so  __init__(self, delay=5.0, parser=None)

        Create a new Dictionary to access PROSITE.  parser is an optional
        parser (e.g. Prosite.RecordParser) object to change the results
        into another form.  If set to None, then the raw contents of the
        file will be returned.  delay is the number of seconds to wait
        between each query.

        N(   s   parsers   selfs   RequestLimiters   delays   limiter(   s   selfs   delays   parser(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__
s   	c    s   t  d ‚ d  S(   Ns    Prosite contains lots of entries(   s   NotImplementedError(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __len__s   c    s   t  d ‚ d  S(   Ns   This is a read-only dictionary(   s   NotImplementedError(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   clears   c    s   t  d ‚ d  S(   Ns   This is a read-only dictionary(   s   NotImplementedError(   s   selfs   keys   item(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __setitem__s   c    s   t  d ‚ d  S(   Ns   This is a read-only dictionary(   s   NotImplementedError(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   updates   c    s    t  d ‚ d  S(   Ns   You don't need to do this...(   s   NotImplementedError(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   copys   c    s   !"t  d ‚ d  S(   Ns#   You don't really want to do this...(   s   NotImplementedError(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   keys!s   c    s   #$t  d ‚ d  S(   Ns#   You don't really want to do this...(   s   NotImplementedError(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   items#s   c    s   %&t  d ‚ d  S(   Ns#   You don't really want to do this...(   s   NotImplementedError(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   values%s   c    sC   ()*y +|  | Wn ,t j
 o -d Sn X.d Sd S(   s   has_key(self, id) -> booli    i   N(   s   selfs   ids   KeyError(   s   selfs   id(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   has_key(s   c    sB   01y 2|  | SWn 3t j
 o 4| Sn X5d ‚ d  S(   Ns   How did I get here?(   s   selfs   ids   KeyErrors   failobj(   s   selfs   ids   failobj(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   get0s
   c    sÓ   7=@|  i i ƒ  By Ct i | ƒ } Wn" Dt j
 o Et | ‚ n XFy Gt	 i
 t | ƒ ƒ } Wn" Ht j
 o It | ‚ n XK|  i t j	 o L|  i i | ƒ Sn M| i ƒ  Sd S(   s³   __getitem__(self, id) -> object

        Return a Prosite entry.  id is either the id or accession
        for the entry.  Raises a KeyError if there's an error.
        
        N(   s   selfs   limiters   waits   ExPASys   get_prosite_entrys   ids   handles   IOErrors   KeyErrors   Files   StringHandles   _extract_records
   ValueErrors   parsers   Nones   parses   read(   s   selfs   ids   handle(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __getitem__7s   (   s   __doc__s   Nones   __init__s   __len__s   clears   __setitem__s   updates   copys   keyss   itemss   valuess   has_keys   gets   __getitem__(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   ExPASyDictionarys   	s   RecordParserc      s&   Od  Z  RSd „  Z Wd „  Z RS(   s/   Parses Prosite data into a Record object.

    c    s%   STt  ƒ  |  _ Ut ƒ  |  _ d  S(   N(   s   _Scanners   selfs   _scanners   _RecordConsumers	   _consumer(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__Ss   c    s-   WX|  i i | |  i ƒ Y|  i i Sd  S(   N(   s   selfs   _scanners   feeds   handles	   _consumers   data(   s   selfs   handle(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   parseWs   (   s   __doc__s   __init__s   parse(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   RecordParserOs   	s   _Scannerc      s  [d  Z  abd „  Z ~d „  Z „d „  Z ‘e e e e d „ Z ¦d „  Z ©d „  Z ¬d „  Z ¯d „  Z	 ²d	 „  Z
 µd
 „  Z Äd „  Z Çd „  Z Ëd „  Z Îd „  Z Òd „  Z Öd „  Z Ùd „  Z Üe e e e	 e
 e e e e e e e e g Z RS(   sU   Scans Prosite-formatted data.

    Tested with:
    Release 15.0, July 1998
    
    c    sÿ   bijt  | t i ƒ o k| } n mt i | ƒ } oxº od o¯ p| i ƒ  } q| o rPnŠ st | ƒ o u| i ƒ  vqA nc w| d  d j o x|  i
 | | ƒ n8 y| d  d j o z|  i | | ƒ n |t d ‚ qA Wd S(   sî   feed(self, handle, consumer)

        Feed in Prosite data for scanning.  handle is a file-like
        object that contains prosite data.  consumer is a
        Consumer object that will receive events as the report is scanned.

        i   i   s   IDs   CCs#   There doesn't appear to be a recordN(   s
   isinstances   handles   Files
   UndoHandles   uhandles   peeklines   lines   is_blank_lines   readlines   selfs   _scan_records   consumers   _scan_copyrightss   SyntaxError(   s   selfs   handles   consumers   uhandles   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   feedbs"    

c    sS   ~| i ƒ  €|  i d | | i d d ƒ|  i | | ƒ ‚| i ƒ  d  S(   Ns   CCs
   any_numberi   (   s   consumers   start_copyrightss   selfs
   _scan_lines   uhandles	   copyrights   _scan_terminators   end_copyrights(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_copyrights~s   c    s}   „…| i ƒ  †xV |  i d †rF } ‡| |  | | ƒ | |  i i j o Ž|  i | | ƒ n q W| i	 ƒ  d  S(   Ni    (
   s   consumers   start_records   selfs	   _scan_fnss   fns   uhandles   _scan_dos   im_funcs   _scan_3ds
   end_record(   s   selfs   uhandles   consumers   fn(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_record„s    	c    s¥   ‘œ| p | o t | | d | ƒn ž| p | o> Ÿx4 Ÿd o)  t | | ¡d | ƒo ¢Pn qE Wn £| o ¤t | | d | ƒn d  S(   Ns   starti   (	   s   exactly_ones   one_or_mores   read_and_calls   uhandles   event_fns	   line_types
   any_numbers   attempt_read_and_calls	   up_to_one(   s   selfs	   line_types   uhandles   event_fns   exactly_ones   one_or_mores
   any_numbers	   up_to_one(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys
   _scan_line‘s    

c    s&   ¦§|  i d | | i d d ƒd  S(   Ns   IDs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers   identification(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_id¦s   c    s&   ©ª|  i d | | i d d ƒd  S(   Ns   ACs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers	   accession(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_ac©s   c    s&   ¬­|  i d | | i d d ƒd  S(   Ns   DTs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers   date(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_dt¬s   c    s&   ¯°|  i d | | i d d ƒd  S(   Ns   DEs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers   description(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_de¯s   c    s&   ²³|  i d | | i d d ƒd  S(   Ns   PAs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   pattern(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_pa²s   c    sÁ   µ¹x´ ¹d o© ºt  | | i d d ƒoˆ »| i ƒ  } ¼| i ƒ  } ½| i | ƒ ¾| i | ƒ ¿| d  d j o | d  d j o Àt | | i	 d d ƒn ÂPn q	 Wd  S(   Ni   s   starts   MAi   s   CC(
   s   attempt_read_and_calls   uhandles   consumers   matrixs   readlines   line1s   line2s   savelines   read_and_calls   comment(   s   selfs   uhandles   consumers   line1s   line2(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_maµs    
%c    s&   ÄÅ|  i d | | i d d ƒd  S(   Ns   RUs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   rule(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_ruÄs   c    s)   ÇÈ|  i d | | i Éd d ƒd  S(   Ns   NRs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   numerical_results(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_nrÇs   c    s&   ËÌ|  i d | | i d d ƒd  S(   Ns   CCs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   comment(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_ccËs   c    s)   ÎÏ|  i d | | i Ðd d ƒd  S(   Ns   DRs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   database_reference(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_drÎs   c    s)   ÒÓ|  i d | | i Ôd d ƒd  S(   Ns   3Ds
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   pdb_reference(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_3dÒs   c    s&   Ö×|  i d | | i d d ƒd  S(   Ns   DOs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers   documentation(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_doÖs   c    s&   ÙÚ|  i d | | i d d ƒd  S(   Ns   //s   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers
   terminator(   s   selfs   uhandles   consumer(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _scan_terminatorÙs   (   s   __doc__s   feeds   _scan_copyrightss   _scan_records   Nones
   _scan_lines   _scan_ids   _scan_acs   _scan_dts   _scan_des   _scan_pas   _scan_mas   _scan_rus   _scan_nrs   _scan_ccs   _scan_drs   _scan_3ds   _scan_dos   _scan_terminators	   _scan_fns(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _Scanner[s&   	s   _RecordConsumerc      sì   ìd  Z  òód „  Z öd „  Z ùd „  Z üd „  Z d „  Z 
d „  Z d „  Z d „  Z d	 „  Z	 !d
 „  Z
 $d „  Z Dd „  Z Zd „  Z md „  Z rd „  Z ud „  Z xd d „ Z ~d d „ Z RS(   su   Consumer that converts a Prosite record to a Record object.

    Members:
    data    Record with Prosite data.

    c    s   óôt  |  _ d  S(   N(   s   Nones   selfs   data(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__ós   c    s   ö÷t  ƒ  |  _ d  S(   N(   s   Records   selfs   data(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   start_recordös   c    s   ùú|  i |  i ƒ d  S(   N(   s   selfs   _clean_records   data(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys
   end_recordùs   c    s{   üýt  i | ƒ } þt | ƒ d j o ÿt d | ‚ n |  i | d ƒ |  i _	 |  i | d ƒ |  i _
 d  S(   Ni   s)   I don't understand identification line
%si   i   (   s   strings   splits   lines   colss   lens   SyntaxErrors   selfs   _chomps   datas   names   type(   s   selfs   lines   cols(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   identificationüs
   c    s_   t  i | ƒ } t | ƒ d j o t d | ‚ n |  i | d ƒ |  i _	 d  S(   Ni   s$   I don't understand accession line
%si   (
   s   strings   splits   lines   colss   lens   SyntaxErrors   selfs   _chomps   datas	   accession(   s   selfs   lines   cols(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys	   accessions   c    sÔ   
t  i | ƒ } t  i | ƒ } | d d j pE | d d j p4 | d d j p# | d d  d j p | d	 d
 j o t d | ‚ n | d |  i _	 | d |  i _
 | d |  i _ d  S(   Ni   s
   (CREATED);i   s   (DATAi   s   UPDATE);i   s   (INFi   s   UPDATE).s   I don't understand date line
%si   i   i   (   s   strings   uppers   lines   uprlines   splits   colss   SyntaxErrors   selfs   datas   createds   data_updates   info_update(   s   selfs   lines   colss   uprline(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   date
s   \c    s   |  i | ƒ |  i _ d  S(   N(   s   selfs   _cleans   lines   datas   description(   s   selfs   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   descriptions   c    s)   |  i i |  i | ƒ |  i _ d  S(   N(   s   selfs   datas   patterns   _cleans   line(   s   selfs   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   patterns   c    s&   |  i i i |  i | ƒ ƒ d  S(   N(   s   selfs   datas   matrixs   appends   _cleans   line(   s   selfs   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   matrixs   c    s&   !"|  i i i |  i | ƒ ƒ d  S(   N(   s   selfs   datas   ruless   appends   _cleans   line(   s   selfs   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   rule!s   c 
   sE  $%t  i |  i | ƒ d ƒ } &x| d &r} '| o
 (q- n )t t  i t  i | d ƒ ƒ \ } } *| d j oC +t  i | d ƒ \ } } ,| |  i
 _ -t | ƒ |  i
 _ ny.| d j o /t | ƒ |  i
 _ nP0| d j o 1t | ƒ |  i
 _ n'2| d d	 d
 d g j oî 3t i d | ƒ } 4| o  5t d t | ƒ | f ‚ n 7t t t | i ƒ  ƒ ƒ }	 8| d j o 9|	 |  i
 _ nj :| d	 j o ;|	 |  i
 _ nG <| d
 j o =|	 |  i
 _ n$ >| d j o ?|	 |  i
 _ n n At d t | ƒ | f ‚ q- Wd  S(   Ns   ;i    s   =s   /RELEASEs   ,s
   /FALSE_NEGs   /PARTIALs   /TOTALs	   /POSITIVEs   /UNKNOWNs
   /FALSE_POSs   (\d+)\((\d+)\)s!   Broken data %s in comment line
%ss"   Unknown qual %s in comment line
%s(   s   strings   splits   selfs   _cleans   lines   colss   cols   maps   lstrips   quals   datas   releases   seqss   nr_sp_releases   ints
   nr_sp_seqss   nr_false_negs
   nr_partials   res   matchs   ms   errors   reprs   tuples   groupss   hitss   nr_totals   nr_positives
   nr_unknowns   nr_false_poss   SyntaxError(
   s   selfs   lines   cols   datas   releases   quals   colss   ms   seqss   hits(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   numerical_results$s8    	
' c    sZ  DEt  i |  i | ƒ d ƒ } Fx/| d Fr"} J| p | d  d j o
 Kq- n Lt t  i t  i | d ƒ ƒ \ } } M| d j o N| |  i
 _ n­ O| d j o P| |  i
 _ nŠ Q| d j o: Rt  i | d	 ƒ \ } } St | ƒ | f |  i
 _ n@ T| d
 j o U| |  i
 _ n Wt d t | ƒ | f ‚ q- Wd  S(   Ns   ;i    i   s   Automatic scalings   =s   /TAXO-RANGEs   /MAX-REPEATs   /SITEs   ,s
   /SKIP-FLAGs"   Unknown qual %s in comment line
%s(   s   strings   splits   selfs   _cleans   lines   colss   cols   maps   lstrips   quals   datas   cc_taxo_ranges   cc_max_repeats   poss   descs   ints   cc_sites   cc_skip_flags   SyntaxErrors   repr(   s   selfs   lines   descs   cols   datas   poss   quals   cols(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   commentDs     	
'c    s}  Z[t  i |  i | ƒ d ƒ } \xR| d \rE} ]| o
 ^q- n _t t  i t  i | d ƒ ƒ \ } } } `| d j o  a|  i i i | | f ƒ nÑ b| d j o  c|  i i i | | f ƒ n¡ d| d j o  e|  i i i | | f ƒ nq f| d j o  g|  i i i | | f ƒ nA h| d j o  i|  i i i | | f ƒ n kt d	 | ‚ q- Wd  S(
   Ns   ;i    s   ,s   Ts   Fs   Ns   Ps   ?s   I don't understand type flag %s(   s   strings   splits   selfs   _cleans   lines   refss   refs   maps   strips   accs   names   types   datas   dr_positives   appends   dr_false_poss   dr_false_negs   dr_potentials
   dr_unknowns   SyntaxError(   s   selfs   lines   refss   refs   names   types   acc(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   database_referenceZs"    	
*     c    sU   mnt  i | ƒ } ox6 | d d or% } p|  i i i |  i	 | ƒ ƒ q% Wd  S(   Ni   i    (
   s   strings   splits   lines   colss   ids   selfs   datas   pdb_structss   appends   _chomp(   s   selfs   lines   ids   cols(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   pdb_referencems    	c    s(   rs|  i |  i | ƒ ƒ |  i _ d  S(   N(   s   selfs   _chomps   _cleans   lines   datas   pdoc(   s   selfs   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   documentationrs   c    s
   uvd  S(   N(    (   s   selfs   line(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys
   terminatorus   s   .,;c    s3   xz| d | j o {| d  Sn || Sd  S(   Ni   (   s   words   to_chomp(   s   selfs   words   to_chomp(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _chompxs   i   c    s4   ~€| o t i  | d ƒ Sn ‚| d Sd  S(   Ni   (   s   rstrips   strings   line(   s   selfs   lines   rstrip(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _clean~s   
(   s   __doc__s   __init__s   start_records
   end_records   identifications	   accessions   dates   descriptions   patterns   matrixs   rules   numerical_resultss   comments   database_references   pdb_references   documentations
   terminators   _chomps   _clean(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _RecordConsumerìs&   	 c    s_   „Ž|  o | p |  p | o t d ‚ n ‘t i |  | | ƒ } ’t | ƒ Sd S(   s  scan_sequence_expasy(seq=None, id=None, exclude_frequent=None) ->
    list of PatternHit's

    Search a sequence for occurrences of Prosite patterns.  You can
    specify either a sequence in seq or a SwissProt/trEMBL ID or accession
    in id.  Only one of those should be given.  If exclude_frequent
    is true, then the patterns with the high probability of occurring
    will be excluded.

    s)   Please specify either a sequence or an idN(   s   seqs   ids
   ValueErrors   ExPASys   scanprosite1s   exclude_frequents   handles   _extract_pattern_hits(   s   seqs   ids   exclude_frequents   handle(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   scan_sequence_expasy„s
   
 c    sr   ”š›d t  i f d „  ƒ  Y} Í| ƒ  } Î| i |  i ƒ  ƒ Ï| i o Ðt | i ‚ n Ñ| i	 Sd S(   s›   _extract_pattern_hits(handle) -> list of PatternHit's

    Extract hits from a web page.  Raises a ValueError if there
    was an error in the query.

    s   parserc      sA   ›œd „  Z  £d „  Z Âd „  Z Èd „  Z Ëd „  Z RS(   Nc    sV   œt  i i |  ƒ žg  |  _ Ÿd |  _  d |  _ ¡t |  _ ¢t |  _	 d  S(   Ns   Some error occurredi    (
   s   sgmllibs
   SGMLParsers   __init__s   selfs   hitss   broken_messages   _in_pres   Nones   _current_hits   _last_found(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__œs   c    s  £¤t  i | d ƒ d j o ¥| |  _ ¦d  Sn( §| d j o ¨d |  _ ©d  Sn ª|  i o «d  Sn  ¬t  i | ƒ o ­d  Sn ®|  i t j o | d  d j o ¯| |  i	 _
 °d |  _ n8±|  i d j oG ²| d  d	 j o ³t d
 | ‚ n ´| |  i	 _ µd |  _ nÞ ¶|  i d j o ·| |  i	 _ ¸d |  _ n¬ ¹|  i d j o º| |  i	 _ »d |  _ nz ¼|  i d j of ½t i d | ƒ } ¾xG | d ¾r: \ } } } ¿|  i	 i i t | ƒ t | ƒ | f ƒ qÊWn d  S(   Ns	   try againi    s   illegals$   Sequence contains illegal charactersi   s   PDOCs   pdoci   s   PSs   Expected accession but got:
%ss	   accessions   names   descriptions   (\d+)-(\d+) (\w+)(   s   strings   finds   datas   selfs   broken_messages   _in_pres   strips   _last_founds   Nones   _current_hits   pdocs   SyntaxErrors	   accessions   names   descriptions   res   findalls   ms   starts   ends   seqs   matchess   appends   int(   s   selfs   datas   starts   ms   seqs   end(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   handle_data£s:   $ c    sI   ÂÄ|  i o5 Åt ƒ  |  _ Æ|  i i |  i ƒ Çt |  _ n d  S(   N(   s   selfs   _in_pres
   PatternHits   _current_hits   hitss   appends   Nones   _last_found(   s   selfs   attrs(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   do_hrÂs   c    s   ÈÉd |  _ Êt |  _ d  S(   Ni   (   s   selfs   _in_pres   Nones   broken_message(   s   selfs   attrs(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys	   start_preÈs   c    s   ËÌd |  _ d  S(   Ni    (   s   selfs   _in_pre(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   end_preËs   (   s   __init__s   handle_datas   do_hrs	   start_pres   end_pre(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   parser›s
   N(
   s   sgmllibs
   SGMLParsers   parsers   ps   feeds   handles   reads   broken_messages
   ValueErrors   hits(   s   handles   parsers   p(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _extract_pattern_hits”s   2c 	   sc  Ößàt  i i |  ƒ o át d |  ‚ n ãt i | d d ƒ} ä|  | t i	 <æt
 t |  ƒ d t ƒ  ƒ} çxâ çd o× è| i i ƒ  } é| i ƒ  } ê| i i ƒ  | } ì| t j o íPn î| t j	 o ï| | ƒ } n ñ| i } ó| o ôt d ‚ n( õ| i | ƒ o öt d | ‚ n ø| | f | | <q} Wd S(   sS  index_file(filename, indexname, rec2key=None)

    Index a Prosite file.  filename is the name of the file.
    indexname is the name of the dictionary.  rec2key is an
    optional callback that takes a Record and generates a unique key
    (e.g. the accession number) for the record.  If not specified,
    the id name will be used.

    s   %s does not exists   truncatei   s   parsers   empty key was produceds   duplicate key %s foundN(   s   oss   paths   existss   filenames
   ValueErrors   Indexs	   indexnames   indexs
   Dictionarys   _Dictionary__filename_keys   Iterators   opens   RecordParsers   iters   _uhandles   tells   starts   nexts   recs   lengths   Nones   rec2keys   keys   names   KeyErrors   has_key(	   s   filenames	   indexnames   rec2keys   lengths   recs   starts   iters   indexs   key(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys
   index_fileÖs*   	 
c    s|   ú d t  i f d „  ƒ  Y} | ƒ  } | i |  i ƒ  ƒ | i o t d ‚ n t	 i
 | i d ƒ Sd S(   sŽ   _extract_record(handle) -> str

    Extract PROSITE data from a web page.  Raises a ValueError if no
    data was found in the web page.

    s   parserc      sA   d „  Z  	d „  Z d „  Z d „  Z d „  Z RS(   Nc    s2   t  i i |  ƒ d |  _ g  |  _ d  S(   Ni    (   s   sgmllibs
   SGMLParsers   __init__s   selfs   _in_pres   data(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   __init__s   c    s+   	
|  i o |  i i | ƒ n d  S(   N(   s   selfs   _in_pres   datas   append(   s   selfs   data(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   handle_data	s   c    s+   |  i o |  i i d ƒ n d  S(   Ns   
(   s   selfs   _in_pres   datas   append(   s   selfs   attrs(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   do_brs   c    s   d |  _ d  S(   Ni   (   s   selfs   _in_pre(   s   selfs   attrs(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys	   start_pres   c    s   d |  _ d  S(   Ni    (   s   selfs   _in_pre(   s   self(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   end_pres   (   s   __init__s   handle_datas   do_brs	   start_pres   end_pre(    (    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   parsers
   s   No data found in web page.s    N(   s   sgmllibs
   SGMLParsers   parsers   ps   feeds   handles   reads   datas
   ValueErrors   strings   join(   s   handles   parsers   p(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   _extract_recordús   (   s   __doc__s   __all__s   typess   strings   res   sgmllibs   Bios   Files   Indexs   Bio.ParserSupports   Bio.WWWs   ExPASys   RequestLimiters   Records
   PatternHits   Iterators
   Dictionarys   ExPASyDictionarys   AbstractParsers   RecordParsers   _Scanners   AbstractConsumers   _RecordConsumers   Nones   scan_sequence_expasys   _extract_pattern_hitss
   index_files   _extract_record(   s   Iterators   _Scanners   Files   RequestLimiters   RecordParsers   res   scan_sequence_expasys   _extract_records   __all__s   ExPASys
   index_files   sgmllibs   _extract_pattern_hitss   ExPASyDictionarys   _RecordConsumers
   PatternHits   Records
   Dictionarys   strings   Index(    (    s-   /mit/seven/lib/python/Bio/Prosite/__init__.pys   ?( s,   

Q#9"I‘˜B$