*
͑:c       s?    d  Z    d k T d k Z  d k l Z  d k l Z  d k Z   d k Z ! d k T" d k	 Z # d k
 Z
 % d f  d     YZ 6 d f  d     YZ b d	 f  d
     YZ  d e i f d     YZ Le d j oQ Me d  Z Ne i i e  Z Oe   Z Pe i e  Qe i   n d S(   s"  Rebase.py

This module provides code to work with files from
http://rebase.neb.com/rebase/rebase.html


Classes:
Record             Holds rebase sequence data.
Iterator           Iterates over sequence data in a rebase file.
Dictionary         Accesses a rebase file using a dictionary interface.
RecordParser       Parses rebase sequence data into a Record object.

_Scanner           Scans a rebase-format stream.
_RecordConsumer    Consumes rebase data to a Record object.


Functions:
index_file         Index a FASTA file for a Dictionary.

(   s   *N(   s   File(   s   Indexs   Recordc      s   % d  Z  , - d   Z RS(   sm   Holds information from a Rebase record.

    Members:
    seq_5_to_3       The sequence.
    seq_3_to_5

    c    s"   - 2 3 d |  _ 4 d |  _ d S(   s7   __init__(self )

        Create a new Record.

        s    N(   s   selfs
   seq_5_to_3s
   seq_3_to_5(   s   self(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   __init__- s   (   s   __doc__s   __init__(    (    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   Record% s   	s   Iteratorc      s)   6 d  Z  < = e d  Z J d   Z RS(   s   Returns one record at a time from a Rebase file.

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

    c    sj   = D E t  |  t j	 o t  |  t j	 o F t d  n G t t i |   |  _	 H | |  _ 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
   SGMLHandles   Files
   UndoHandles   selfs   _uhandles   parsers   _parser(   s   selfs   handles   parser(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   __init__= s
   )c    s   J P Q g  } R d } S xi S d o^ T |  i i   } U | o V Pn W | t |   | j o X |  i i |  Y Pn q W[ | o \ t Sn ^ |  i	 t j	 o  _ |  i	 i
 t i t   Sn ` t Sd S(   s~   next(self) -> object

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

        s   <!DOCTYPE HTML>i   N(   s   liness	   first_tags   selfs   _uhandles   readlines   lines   lens   savelines   Nones   _parsers   parses   Files   StringHandles   data(   s   selfs   liness   lines	   first_tag(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   nextJ s    		 
 (   s   __doc__s   Nones   __init__s   next(    (    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   Iterator6 s   	s
   Dictionaryc      sJ   b d  Z  e f d Z h e d  Z v d   Z y d   Z  d   Z RS(   s:   Accesses a rebase file using a dictionary interface.

    s
   __filenamec    sG   h q r t  i  |  |  _ s t |  i t i  |  _ t | |  _	 d S(   s  __init__(self, indexname, parser=None)

        Open a Rebase 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/Rebase/Rebase.pys   __init__h s   	c    s   v w t  |  i  Sd  S(   N(   s   lens   selfs   _index(   s   self(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   __len__v s   c    s   y z |  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/Rebase/Rebase.pys   __getitem__y s    c    s     t  |  i |  Sd  S(   N(   s   getattrs   selfs   _indexs   name(   s   selfs   name(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   __getattr__ s   (   s   __doc__s   _Dictionary__filename_keys   Nones   __init__s   __len__s   __getitem__s   __getattr__(    (    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys
   Dictionaryb s   		s   RebaseParserc      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   Z  d   Z d   Z d   Z d   Z $d   Z -d   Z 2d d  Z Gd   Z RS(   s7   Parses Rebase sequence data into a Record object.

    c    s     t  i i |    d |  _  t i   |  _  d |  _  d |  _  g  |  i d < t i   |  i d < d |  _	  d |  _
  d |  _ d  S(   Ns    s   titles   factoidss   number_of_sitesi    (   s   sgmllibs
   SGMLParsers   resets   selfs   texts   UserDicts   enzyme_dicts   _states   key_waitings   _table_nest_levels   _table_nest_dirs   _factoid(   s   self(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   reset s   c    s.     |  i    |  i |   |  i Sd  S(   N(   s   selfs   resets   feeds   handles   enzyme_dict(   s   selfs   handle(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   parse s   c    s      t  | t i  o  | } n  t i |  }  d }  xy  d on  | i   }  t i	 |  }  t
 | d  o  Pn  | d d j o  Pn  | d | } qJ W t i i |  |  d S(   s   feed(self, handle )

        Feed in rebase data for scanning.  handle is a file-like object
        containing rebase data.  consumer is a Consumer object that will
        receive events as the rebase data is scanned.

        s    i   i    i   s   </HTML>s    N(   s
   isinstances   handles   Files
   UndoHandles   uhandles   texts   readlines   lines   strings   strips   is_blank_lines   sgmllibs
   SGMLParsers   feeds   self(   s   selfs   handles   uhandles   texts   line(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   feed s   	 
c    s,     t  i |  }  |  i | |  _ d  S(   N(   s   strings   strips   newtexts   selfs   text(   s   selfs   newtext(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   handle_data s   c    s&     |  i d |  _  d |  _ d  S(   Ni   s
   increasing(   s   selfs   _table_nest_levels   _table_nest_dir(   s   selfs   attrs(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   start_table s   c    s     |  i d |  _  |  i d j od  |  i d j o  |  i    d |  _ n1  |  i d j o  |  i    d |  _ n n  d |  _ d  S(   Ni   s
   increasings   detailss   number_of_sitess   completes
   decreasing(   s   selfs   _table_nest_levels   _table_nest_dirs   _states   extract_detailss   extract_number_of_sites(   s   self(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys	   end_table s   c    s8     |  i d j o  |  i   n  |  i   d  S(   Ns   details(   s   selfs   _states   extract_detailss
   flush_text(   s   selfs   attrs(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   start_b s   c    s     |  i d j o  |  i   }  | d j o  | d d j oT  |  i }  | d j o#  |  i |  i | < d |  _ n  | d  |  _ n  |  i d | |  _ n n d  S(   Ns   detailss    i   s   :s    (   s   selfs   _states
   flush_texts   texts   key_waitings   keys   _factoids   enzyme_dict(   s   selfs   keys   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   end_b s   c    s+     |  i d j o  |  i   n d  S(   Ns   number_of_sites(   s   selfs   _states   extract_number_of_sites(   s   selfs   attrs(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   start_i s   c    s     |  i d j o  |  i   n  |  i d j o  |  i   }  | d j oq  | d d j o  | d  |  _ nD  |  i d j o0  |  i }  d |  _  | |  i d | <n n n d  S(   Ns   detailss   number_of_sitess    i   s   :(   s   selfs   _states   extract_detailss
   flush_texts   texts   key_waitings   keys   enzyme_dict(   s   selfs   keys   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   end_i s   c    s7     |  i    |  i d j o  d |  _ n d  S(   Ns   sequences   5_to_3_strand(   s   selfs
   flush_texts   _state(   s   selfs   attrs(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys	   start_pre s   c    s     |  i d j or  |  i   }  t i | d  }  t |  d j o(  | d |  i d < d |  i d <n  d |  _ nC  |  i d j o/  |  i   }  | |  i d < d |  _ n d  S(   Ns   5_to_3_strands   ...i   s    s   3_to_5_strands   details(	   s   selfs   _states
   flush_texts   texts   strings   splits   colss   lens   enzyme_dict(   s   selfs   colss   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   end_pre s   c    s     |  i d j oC  |  i   } | d j o  | |  i d <d |  _ n n |  i d j o |  i   |  i } |  i d j o] | d j o# 	|  i |  i | <
d |  _ n |  i d i	 |  i  d |  _ n n d  S(   Ns   5_to_3_strands    s   3_to_5_strands   detailss   factoids(
   s   selfs   _states
   flush_texts   texts   enzyme_dicts   extract_detailss   key_waitings   keys   _factoids   append(   s   selfs   attrss   keys   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   do_br s   c    s   |  i   d  S(   N(   s   selfs
   flush_text(   s   selfs   attrs(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys
   start_fonts   c    s   |  i d j oC |  i   } | d j o  d |  _ | |  i d <n nW |  i d j oC |  i   } | d j o  d |  _ | |  i d <n n d  S(   Ns   titles    s
   descriptors   sequence(   s   selfs   _states
   flush_texts   texts   enzyme_dict(   s   selfs   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   end_fonts   c    sA    |  i   } !| d j o "|  i d | |  _ n d  S(   Ns    s    (   s   selfs
   flush_texts   texts   _factoid(   s   selfs   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   extract_detailss   c    sj   $%|  i   } &| d j oD '|  i } (| d j o$ )| |  i d | <*d |  _ n n d  S(   Ns    s   number_of_sites(   s   selfs
   flush_texts   texts   key_waitings   keys   enzyme_dict(   s   selfs   keys   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   extract_number_of_sites$s   c    s0   -.t  i |  i  } /d |  _ 0| Sd  S(   Ns    (   s   strings   strips   selfs   text(   s   selfs   text(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys
   flush_text-s   i   c    s  23d } 4x) t d |  d 4r } 5| d } q! W6t |  t d  j o* 7| d j o 8d | | f GHn n+9t |  t g   j o4 :x* | d :r } ;|  i | | d  q Wn <t	 | t
 i
  oP =xF | i   d =r3 } >d | | f GH?|  i | | | d  q Wnu @t |  t h   j oP AxF | i   d Ar3 } Bd | | f GHC|  i | | | d  qeWn	 E| GHd  S(   Ns       i    s    s   %s%si   s   %skey is %s(   s   indents   ranges   levels   js   types   items   subitems   selfs
   print_items
   isinstances   UserDicts   keys(   s   selfs   items   levels   subitems   js   indent(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys
   print_item2s,   	 	 	 	# 	#c    sL   GHx? |  i i   d Hr) } Id | GHJ|  i |  i |  q Wd  S(   Ni    s   key %s(   s   selfs   enzyme_dicts   keyss   keys
   print_item(   s   selfs   key(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys
   print_tagsGs    	(   s   __doc__s   resets   parses   feeds   handle_datas   start_tables	   end_tables   start_bs   end_bs   start_is   end_is	   start_pres   end_pres   do_brs
   start_fonts   end_fonts   extract_detailss   extract_number_of_sitess
   flush_texts
   print_items
   print_tags(    (    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   RebaseParser s*   		s   __main__s	   bamii.htm(   s   __doc__s   typess   strings   Bios   Files   Indexs   urllibs   sgmllibs   Bio.ParserSupports   Bio.Files   UserDicts   Records   Iterators
   Dictionarys
   SGMLParsers   RebaseParsers   __name__s   opens   handles
   UndoHandles   undo_handles   rebase_parsers   parses
   print_tags(   s   rebase_parsers   sgmllibs   handles   Files   Records   Indexs   urllibs   RebaseParsers   UserDicts   undo_handles   Iterators   strings
   Dictionarys   Bio(    (    s*   /mit/seven/lib/python/Bio/Rebase/Rebase.pys   ? s&   

,"