*ë
°ä:c    
   sU    d  Z  ! " d k T# d k Z $ d k Z % d k Z & d k Z ' d k l Z ( d k l Z ) d k	 T* d k
 l Z , d f  d „  ƒ  YZ < d f  d	 „  ƒ  YZ J d
 f  d „  ƒ  YZ v d f  d „  ƒ  YZ ˜ d f  d „  ƒ  YZ æ d e f d „  ƒ  YZ ò d f  d „  ƒ  YZ ?d e f d „  ƒ  YZ ze d „ Z žd „  Z d S(   s   Prodoc.py

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

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


Classes:
Record             Holds Prodoc data.
Reference          Holds data from a Prodoc reference.
Iterator           Iterates over entries in a Prodoc file.
Dictionary         Accesses a Prodoc file using a dictionary interface.
ExPASyDictionary   Accesses Prodoc records from ExPASy.
RecordParser       Parses a Prodoc record into a Record object.

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


Functions:
index_file         Index a Prodoc file for a Dictionary.
_extract_record    Extract Prodoc data from a web page.

(   s   *N(   s   File(   s   Index(   s   ExPASys   Recordc      s   , d  Z  5 6 d „  Z RS(   s  Holds information from a Prodoc record.

    Members:
    accession      Accession number of the record.
    prosite_refs   List of tuples (prosite accession, prosite name).
    text           Free format text.
    references     List of reference objects.

    c    s7   6 7 d |  _ 8 g  |  _ 9 d |  _ : g  |  _ d  S(   Ns    (   s   selfs	   accessions   prosite_refss   texts
   references(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   __init__6 s   (   s   __doc__s   __init__(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   Record, s   		s	   Referencec      s   < d  Z  D E d „  Z RS(   sº   Holds information from a Prodoc citation.

    Members:
    number     Number of the reference. (string)
    authors    Names of the authors.
    citation   Describes the citation.

    c    s+   E F d |  _ G d |  _ H d |  _ d  S(   Ns    (   s   selfs   numbers   authorss   citation(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   __init__E s   (   s   __doc__s   __init__(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys	   Reference< s   	s   Iteratorc      s)   J d  Z  P Q e d „ Z ^ d „  Z RS(   s€   Returns one record at a time from a Prodoc file.

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

    c    sd   Q X Y t  | ƒ t j	 o t  | ƒ t j	 o Z 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/Prodoc.pys   __init__Q s
   )c    sÞ   ^ d e g  } f x` f d oU g |  i i ƒ  } h | o i Pn j | i | ƒ k | d  d j o l Pn q Wn | o o t Sn q t i | d ƒ } r |  i
 t j	 o  s |  i
 i t i | ƒ ƒ Sn t | Sd S(   s~   next(self) -> object

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

        i   i   s   {END}s    N(   s   liness   selfs   _uhandles   readlines   lines   appends   Nones   strings   joins   datas   _parsers   parses   Files   StringHandle(   s   selfs   datas   liness   line(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   next^ s    	 
 (   s   __doc__s   Nones   __init__s   next(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   IteratorJ s   	s
   Dictionaryc      sJ   v d  Z  y z d Z | e d „ Z Š d „  Z  d „  Z • d „  Z RS(   s:   Accesses a Prodoc file using a dictionary interface.

    s
   __filenamec    sG   | … † t  i  | ƒ |  _ ‡ t |  i t i ƒ |  _ ˆ | |  _	 d S(   s  __init__(self, indexname, parser=None)

        Open a Prodoc 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/Prodoc.pys   __init__| s   	c    s   Š ‹ t  |  i ƒ Sd  S(   N(   s   lens   selfs   _index(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.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/Prodoc.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/Prodoc.pys   __getattr__• s   (   s   __doc__s   _Dictionary__filename_keys   Nones   __init__s   __len__s   __getitem__s   __getattr__(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys
   Dictionaryv 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 Ã e d „ Z Ê d „  Z RS(   sE   Access PRODOC at ExPASy using a read-only dictionary interface.

    f5.0c    s.   œ ¥ ¦ | |  _  § | |  _ ¨ t |  _ d S(   sm  __init__(self, delay=5.0, parser=None)

        Create a new Dictionary to access PRODOC.  parser is an optional
        parser (e.g. Prodoc.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   delays   selfs   parsers   Nones   last_query_time(   s   selfs   delays   parser(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   __init__œ s   	c    s   ª « t  d ‚ d  S(   Ns   Prodoc contains lots of entries(   s   NotImplementedError(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.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/Prodoc.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/Prodoc.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/Prodoc.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/Prodoc.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/Prodoc.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/Prodoc.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/Prodoc.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/Prodoc.pys   has_key» s   c    sB   Ã Ä y Å |  | SWn Æ t j
 o Ç | Sn XÈ 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/Prodoc.pys   getÃ s
   c    s-  Ê Ð Ó |  i t j	 oE Ô |  i |  i t i ƒ  } Õ | d j o Ö t i | ƒ n n × t i ƒ  |  _ Ù y Ú t i | ƒ } Wn" Û t
 j
 o Ü t | ‚ n XÝ y Þ t i t | ƒ ƒ } Wn" ß t j
 o à t | ‚ n Xâ |  i t j	 o ã |  i i | ƒ Sn ä | i ƒ  Sd S(   s²   __getitem__(self, id) -> object

        Return a Prodoc entry.  id is either the id or accession
        for the entry.  Raises a KeyError if there's an error.
        
        f0.0N(   s   selfs   last_query_times   Nones   delays   times   sleeps   ExPASys   get_prodoc_entrys   ids   handles   IOErrors   KeyErrors   Files   StringHandles   _extract_records
   ValueErrors   parsers   parses   read(   s   selfs   ids   handles   delay(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   __getitem__Ê 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/Prodoc.pys   ExPASyDictionary˜ s   	s   RecordParserc      s&   æ d  Z  é ê d „  Z î d „  Z RS(   s.   Parses Prodoc data into a Record object.

    c    s%   ê ë t  ƒ  |  _ ì t ƒ  |  _ d  S(   N(   s   _Scanners   selfs   _scanners   _RecordConsumers	   _consumer(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   __init__ê s   c    s-   î ï |  i i | |  i ƒ ð |  i i Sd  S(   N(   s   selfs   _scanners   feeds   handles	   _consumers   data(   s   selfs   handle(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   parseî s   (   s   __doc__s   __init__s   parse(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   RecordParseræ s   	s   _Scannerc      sb   ò d  Z  ø ù d „  Z d „  Z d „  Z !d „  Z &d „  Z /d „  Z 7d „  Z RS(   sT   Scans Prodoc-formatted data.

    Tested with:
    Release 15.0, July 1998
    
    c    s°   ù  t  | t i ƒ o | } n t i | ƒ } xk d o` | i ƒ  } | o 	Pn; 
t | ƒ o | i ƒ  qA n |  i
 | | ƒ qA Wd S(   sí   feed(self, handle, consumer)

        Feed in Prodoc 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   N(   s
   isinstances   handles   Files
   UndoHandles   uhandles   peeklines   lines   is_blank_lines   readlines   selfs   _scan_records   consumer(   s   selfs   handles   consumers   uhandles   line(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   feedù s    

c    s²   | i ƒ  |  i | | ƒ |  i | | ƒ t | | i d d ƒ|  i | | ƒ |  i	 | | ƒ |  i
 | | ƒ t | | i d d ƒ| i ƒ  d  S(   Ns   starts   {BEGIN}s   {END}(   s   consumers   start_records   selfs   _scan_accessions   uhandles   _scan_prosite_refss   read_and_calls   noevents
   _scan_texts
   _scan_refss   _scan_copyrights
   end_record(   s   selfs   uhandles   consumer(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _scan_records   c    s    t  | | i d d ƒd  S(   Ns   starts   {PDOC(   s   read_and_calls   uhandles   consumers	   accession(   s   selfs   uhandles   consumer(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _scan_accessions   c    s4   !"x' "t  | | i #d d ƒo $q	 Wd  S(   Ns   starts   {PS(   s   attempt_read_and_calls   uhandles   consumers   prosite_reference(   s   selfs   uhandles   consumer(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _scan_prosite_refs!s    c    sš   &'x 'd o‚ (t  | ƒ } )| d d j o | d d j o | d d j p | d  d	 j o +| i | ƒ ,Pn -| i | ƒ q	 Wd  S(
   Ni   i    s   [i   s   ]i   s    i   s   {END}(   s   safe_readlines   uhandles   lines   savelines   consumers   text(   s   selfs   uhandles   consumers   line(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys
   _scan_text&s    
Gc    st   /0xg 0d o\ 1t  | ƒ } 2| d  d j p
 t | ƒ o 3| i | ƒ 4Pn 5| i | ƒ q	 Wd  S(   Ni   i   s   {END}(   s   safe_readlines   uhandles   lines   is_blank_lines   savelines   consumers	   reference(   s   selfs   uhandles   consumers   line(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys
   _scan_refs/s    
!c    sr   7:t  | | i d d ƒ;t | | i d d ƒo6 <t  | | i d d ƒ=t | | i d d ƒn d  S(   Ns   blanki   s   starts   +----s   |(   s   read_and_call_whiles   uhandles   consumers   noevents   attempt_read_and_calls   read_and_call(   s   selfs   uhandles   consumer(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _scan_copyright7s   (   s   __doc__s   feeds   _scan_records   _scan_accessions   _scan_prosite_refss
   _scan_texts
   _scan_refss   _scan_copyright(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _Scannerò s   		s   _RecordConsumerc      sn   ?d  Z  EFd „  Z Id „  Z Ld „  Z Od „  Z Xd „  Z _d „  Z bd „  Z td „  Z RS(	   ss   Consumer that converts a Prodoc record to a Record object.

    Members:
    data    Record with Prodoc data.

    c    s   FGt  |  _ d  S(   N(   s   Nones   selfs   data(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   __init__Fs   c    s   IJt  ƒ  |  _ d  S(   N(   s   Records   selfs   data(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   start_recordIs   c    s   LM|  i ƒ  d  S(   N(   s   selfs   _clean_data(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys
   end_recordLs   c    s›   OPt  i | ƒ } Q| d d j p | d d j o Rt d | ‚ n S| d d !} T| d  d j o Ut d | ‚ n V| |  i _ d  S(	   Ni    s   {i   s   }s$   I don't understand accession line
%si   s   PDOCs   Invalid accession in line
%s(   s   strings   rstrips   lines   SyntaxErrors   accs   selfs   datas	   accession(   s   selfs   lines   acc(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys	   accessionOs   &c    s’   XYt  i | ƒ } Z| d d j p | d d j o [t d | ‚ n \t  i | d d !d ƒ \ } } ]|  i i	 i
 | | f ƒ d  S(   Ni    s   {i   s   }s$   I don't understand accession line
%ss   ; (   s   strings   rstrips   lines   SyntaxErrors   splits   accs   names   selfs   datas   prosite_refss   append(   s   selfs   lines   names   acc(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   prosite_referenceXs
   &#c    s    _`|  i i | |  i _ d  S(   N(   s   selfs   datas   texts   line(   s   selfs   line(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   text_s   c    s+  bc| d d j o | d d j o› dt ƒ  |  _ et i | d d !ƒ |  i _ f| d d j o  it i | d ƒ |  i _ n kt i | d ƒ |  i _ l|  i	 i
 i |  i ƒ ne m| d  d j oC n|  i o ot d	 | ‚ n p|  i i | d
 |  i _ n rd | ‚ d  S(   Ni    s   [i   s   ]i   s   Ei   s       s   Unnumbered reference lines
%si   s(   I don't understand the reference line
%s(   s   lines	   References   selfs   _refs   strings   strips   numbers   citations   authorss   datas
   referencess   appends   SyntaxError(   s   selfs   line(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys	   referencebs   % !c    sV   tvxI |  i i d vr6 } wt i | i ƒ | _ xt i | i ƒ | _ q Wd  S(   Ni    (   s   selfs   datas
   referencess   refs   strings   rstrips   citations   authors(   s   selfs   ref(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _clean_datats    	(	   s   __doc__s   __init__s   start_records
   end_records	   accessions   prosite_references   texts	   references   _clean_data(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _RecordConsumer?s   		c 	   sc  zƒ„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(   sR  index_file(filename, indexname, rec2key=None)

    Index a Prodoc 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	   accessions   KeyErrors   has_key(	   s   filenames	   indexnames   rec2keys   lengths   recs   starts   iters   indexs   key(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys
   index_filezs*   	 
c    s‹   ž¤¨d t  i f d „  ƒ  Y} ·| ƒ  } ¸| i |  i ƒ  ƒ ¹t i t i	 | i
 d ƒ ƒ } º| o »t d ‚ n ¼| Sd S(   s   _extract_record(handle) -> str

    Extract PRODOC 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/Prodoc.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/Prodoc.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/Prodoc.pys   do_br°s   c    s   ³´d |  _ d  S(   Ni   (   s   selfs   _in_pre(   s   selfs   attrs(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys	   start_pre³s   c    s   µ¶d |  _ d  S(   Ni    (   s   selfs   _in_pre(   s   self(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   end_preµs   (   s   __init__s   handle_datas   do_brs	   start_pres   end_pre(    (    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   parser¨s
   s    s   No data found in web page.N(   s   sgmllibs
   SGMLParsers   parsers   ps   feeds   handles   reads   strings   lstrips   joins   datas
   ValueError(   s   handles   datas   parsers   p(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   _extract_recordžs   !(   s   __doc__s   typess   strings   res   sgmllibs   times   Bios   Files   Indexs   Bio.ParserSupports   Bio.WWWs   ExPASys   Records	   References   Iterators
   Dictionarys   ExPASyDictionarys   AbstractParsers   RecordParsers   _Scanners   AbstractConsumers   _RecordConsumers   Nones
   index_files   _extract_record(   s
   index_files   ExPASyDictionarys   Iterators   times   Files   _Scanners   RecordParsers   Records   Indexs   _RecordConsumers   _extract_records   res	   References   strings   ExPASys
   Dictionarys   sgmllib(    (    s+   /mit/seven/lib/python/Bio/Prosite/Prodoc.pys   ?! s&   

,"NM;$