*
Ǒ:c       s    d  Z  ! " d k T# d k Z $ d k Z % d k l Z & d k l Z ' d k l Z ( d k l Z ) d k l	 Z	 * d k
 T+ d k l Z , d	 k l Z . d
 f  d     YZ i d f  d     YZ  d f  d     YZ  d f  d     YZ  d f  d     YZ d e f d     YZ $d e f d     YZ 6d f  d     YZ d e f d     YZ &d e f d     YZ Qe d  Z d S(   se  SProt.py

This module provides code to work with the sprotXX.dat file from
SwissProt.
http://www.expasy.ch/sprot/sprot-top.html

Tested with:
Release 37, Release 38, Release 39


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

_Scanner           Scans SwissProt-formatted data.
_RecordConsumer    Consumes SwissProt data to a Record object.
_SequenceConsumer  Consumes SwissProt data to a Seq object.


Functions:
index_file         Index a SwissProt file for a Dictionary.

(   s   *N(   s   File(   s   Index(   s   Alphabet(   s   Seq(   s	   SeqRecord(   s   ExPASy(   s   RequestLimiters   Recordc      s   . d  Z  N O d   Z RS(   s  Holds information from a SwissProt record.

    Members:
    entry_name        Name of this entry, e.g. RL1_ECOLI.
    data_class        Either 'STANDARD' or 'PRELIMINARY'.
    molecule_type     Type of molecule, 'PRT',
    sequence_length   Number of residues.

    accessions        List of the accession numbers, e.g. ['P00321']
    created           A tuple of (date, release).
    sequence_update   A tuple of (date, release).
    annotation_update A tuple of (date, release).

    description       Free-format description.
    gene_name         Gene name.  See userman.txt for description.
    organism          The source of the sequence.
    organelle         The origin of the sequence.
    organism_classification  The taxonomy classification.  List of strings.
                             (http://www.ncbi.nlm.nih.gov/Taxonomy/)
    taxonomy_id       A list of NCBI taxonomy id's.
    references        List of Reference objects.
    comments          List of strings.
    cross_references  List of tuples (db, id1[, id2][, id3]).  See the docs.
    keywords          List of the keywords.
    features          List of tuples (key name, from, to, description).
                      from and to can be either integers for the residue
                      numbers, '<', '>', or '?'

    seqinfo           tuple of (length, molecular weight, CRC32 value)
    sequence          The sequence.
    
    c    s  O P t  |  _ Q t  |  _ R t  |  _ S t  |  _ U g  |  _ V t  |  _ W t  |  _ X t  |  _	 Z d |  _
 [ d |  _ \ d |  _ ] d |  _ ^ g  |  _ _ g  |  _ ` g  |  _ a g  |  _ b g  |  _ c g  |  _ d g  |  _ f t  |  _ g d |  _ d  S(   Ns    (   s   Nones   selfs
   entry_names
   data_classs   molecule_types   sequence_lengths
   accessionss   createds   sequence_updates   annotation_updates   descriptions	   gene_names   organisms	   organelles   organism_classifications   taxonomy_ids
   referencess   commentss   cross_referencess   keywordss   featuress   seqinfos   sequence(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   __init__O s*   (   s   __doc__s   __init__(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   Record. s   	 s	   Referencec      s   i d  Z  u v d   Z RS(   s  Holds information from 1 references in a SwissProt entry.

    Members:
    number      Number of reference in an entry.
    positions   Describes extent of work.  list of strings.
    comments    Comments.  List of (token, text).
    references  References.  List of (dbname, identifier)
    authors     The authors of the work.
    title       Title of the work.
    location    A citation for the work.
    
    c    s[   v w t  |  _ x g  |  _ y g  |  _ z g  |  _ { d |  _ | d |  _ } d |  _ d  S(   Ns    (	   s   Nones   selfs   numbers	   positionss   commentss
   referencess   authorss   titles   location(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   __init__v s   (   s   __doc__s   __init__(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys	   Referencei s   	s   Iteratorc      s)    d  Z    e d  Z  d   Z RS(   s   Returns one record at a time from a SwissProt 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/SwissProt/SProt.pys   __init__ s
   )c    s      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 swissprot record from the file.  If no more records,
        return None.

        i   i   s   //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/SwissProt/SProt.pys   next s    	 
 (   s   __doc__s   Nones   __init__s   next(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   Iterator s   	s
   Dictionaryc      sV    d  Z    d Z  e d  Z  d   Z  d   Z  d   Z  d   Z RS(   s=   Accesses a SwissProt file using a dictionary interface.

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

        Open a SwissProt 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   _Dictionary__filename_keys   _handles   parsers   _parser(   s   selfs	   indexnames   parser(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   __init__ s   	c    s     t  |  i  Sd  S(   N(   s   lens   selfs   _index(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.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/SwissProt/SProt.pys   __getitem__ s    c    s     t  |  i |  Sd  S(   N(   s   getattrs   selfs   _indexs   name(   s   selfs   name(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   __getattr__ s   c    s3     |  i i   }  | i |  i   | Sd  S(   N(   s   selfs   _indexs   keyss   ks   removes   _Dictionary__filename_key(   s   selfs   k(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   keys s   (   s   __doc__s   _Dictionary__filename_keys   Nones   __init__s   __len__s   __getitem__s   __getattr__s   keys(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.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  e d  Z d   Z RS(   sH   Access SwissProt 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 SwissProt.  parser is an optional
        parser (e.g. SProt.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/SwissProt/SProt.pys   __init__ s   	c    s     t  d  d  S(   Ns"   SwissProt contains lots of entries(   s   NotImplementedError(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.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/SwissProt/SProt.pys   get s
   c    s   
|  i i   y t i |  } Wn" t j
 o t |  n X|  i	 t
 j	 o |  i	 i |  Sn | i   Sd S(   s   __getitem__(self, id) -> object

        Return a SwissProt 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_sprot_raws   ids   handles   IOErrors   KeyErrors   parsers   Nones   parses   read(   s   selfs   ids   handle(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.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/SwissProt/SProt.pys   ExPASyDictionary s   	s   RecordParserc      s&   d  Z  d   Z  d   Z RS(   s1   Parses SwissProt 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/SwissProt/SProt.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/SwissProt/SProt.pys   parse s   (   s   __doc__s   __init__s   parse(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   RecordParsers   	s   SequenceParserc      s,   $d  Z  '(e i d  Z 2d   Z RS(   s.   Parses SwissProt data into a Seq object.

    c    s+   (./t    |  _ 0t |  |  _ d S(   s   Initialize a RecordParser.

        Arguments:
        o alphabet - The alphabet to use for the generated Seq objects. If
        not supplied this will default to the generic protein alphabet.
        N(   s   _Scanners   selfs   _scanners   _SequenceConsumers   alphabets	   _consumer(   s   selfs   alphabet(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   __init__(s   c    s-   23|  i i | |  i  4|  i i Sd  S(   N(   s   selfs   _scanners   feeds   handles	   _consumers   data(   s   selfs   handle(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   parse2s   (   s   __doc__s   Alphabets   generic_proteins   __init__s   parse(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   SequenceParser$s   	
s   _Scannerc      s  6d  Z  <>d   Z Nd   Z [e e e e d  Z pd   Z sd   Z y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 d   Z d   Z d   Z e e e e e	 e
 e e e e e e e e e e e g Z RS(   sT   Scans SwissProt-formatted data.

    Tested with:
    Release 37
    Release 38
    c    sm   >EFt  | t i  o G| } n It i |  } Kx( K| i   o L|  i | |  qA Wd S(   s   feed(self, handle, consumer)

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

        N(	   s
   isinstances   handles   Files
   UndoHandles   uhandles   peeklines   selfs   _scan_records   consumer(   s   selfs   handles   consumers   uhandle(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   feed>s    c    s   NO| i   Pxi |  i d PrY } Q| |  | |  V| |  i i j o* W|  i | |  X|  i | |  n q WY| i	   d  S(   Ni    (
   s   consumers   start_records   selfs	   _scan_fnss   fns   uhandles   _scan_drs   im_funcs   _scan_ccs
   end_record(   s   selfs   uhandles   consumers   fn(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_recordNs    	c    s   [f| p | o gt | | d | n h| p | o> ix4 id o) jt | | kd | o lPn qE Wn m| o n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/SwissProt/SProt.pys
   _scan_line[s    

c    s&   pq|  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/SwissProt/SProt.pys   _scan_idps   c    s&   sw|  i d | | i d d d  S(   Ns   ACs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers	   accession(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_acss   c    sd   yz|  i d | | i d d {|  i d | | i d d ||  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/SwissProt/SProt.pys   _scan_dtys   c    s&   ~|  i d | | i d d d  S(   Ns   DEs   one_or_morei   (   s   selfs
   _scan_lines   uhandles   consumers   description(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_de~s   c    s&   |  i d | | i d d d  S(   Ns   GNs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers	   gene_name(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_gns   c    s)   |  i d | | i d d d  S(   Ns   OSs   one_or_morei   (   s   selfs
   _scan_lines   uhandles   consumers   organism_species(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_oss   c    s&   |  i d | | i d d d  S(   Ns   OGs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers	   organelle(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_ogs   c    s)   |  i d | | i d d d  S(   Ns   OCs   one_or_morei   (   s   selfs
   _scan_lines   uhandles   consumers   organism_classification(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_ocs   c    s)   |  i d | | i d d d  S(   Ns   OXs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   taxonomy_id(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_oxs   c    s   x d o t  |  d  d j o Pn |  i | |  |  i | |  |  i | |  |  i | |  |  i | |  |  i	 | |  |  i
 | |  q	 Wd  S(   Ni   i   s   RN(   s   safe_peeklines   uhandles   selfs   _scan_rns   consumers   _scan_rps   _scan_rcs   _scan_rxs   _scan_ras   _scan_rts   _scan_rl(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_references    
c    s)   |  i d | | i d d d  S(   Ns   RNs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers   reference_number(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_rns   c    s)   |  i d | | i d d d  S(   Ns   RPs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers   reference_position(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_rps   c    s)   |  i d | | i d d d  S(   Ns   RCs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   reference_comment(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_rcs   c    s)   |  i d | | i d d d  S(   Ns   RXs	   up_to_onei   (   s   selfs
   _scan_lines   uhandles   consumers   reference_cross_reference(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_rxs   c    s)   |  i d | | i d d d  S(   Ns   RAs   one_or_morei   (   s   selfs
   _scan_lines   uhandles   consumers   reference_author(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_ras   c    s)   |  i d | | i d d d  S(   Ns   RTs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   reference_title(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_rts   c    s)   |  i d | | i d d d  S(   Ns   RLs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   reference_location(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_rl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/SwissProt/SProt.pys   _scan_ccs   c    s)   |  i d | | i d d d  S(   Ns   DRs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   database_cross_reference(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_drs   c    s&   |  i d | | i d d d  S(   Ns   KWs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   keyword(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_kws   c    s&   |  i d | | i d d d  S(   Ns   FTs
   any_numberi   (   s   selfs
   _scan_lines   uhandles   consumers   feature_table(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_fts   c    s&   |  i d | | i d d d  S(   Ns   SQs   exactly_onei   (   s   selfs
   _scan_lines   uhandles   consumers   sequence_header(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_sqs   c    s&   |  i d | | i d d d  S(   Ns     s   one_or_morei   (   s   selfs
   _scan_lines   uhandles   consumers   sequence_data(   s   selfs   uhandles   consumer(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _scan_sequence_data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/SwissProt/SProt.pys   _scan_terminators   (   s   __doc__s   feeds   _scan_records   Nones
   _scan_lines   _scan_ids   _scan_acs   _scan_dts   _scan_des   _scan_gns   _scan_oss   _scan_ogs   _scan_ocs   _scan_oxs   _scan_references   _scan_rns   _scan_rps   _scan_rcs   _scan_rxs   _scan_ras   _scan_rts   _scan_rls   _scan_ccs   _scan_drs   _scan_kws   _scan_fts   _scan_sqs   _scan_sequence_datas   _scan_terminators	   _scan_fns(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _Scanner6s:   	s   _RecordConsumerc      sy  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 Bd   Z Id   Z Md   Z i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 d   Z d   Z RS(    sy   Consumer that converts a SwissProt record to a Record object.

    Members:
    data    Record with SwissProt data.

    c    s   t  |  _ d  S(   N(   s   Nones   selfs   data(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   __init__s   c    s   t    |  _ d  S(   N(   s   Records   selfs   data(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   start_records   c    s   |  i |  i  d  S(   N(   s   selfs   _clean_records   data(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys
   end_records   c    s   t  i |  } | d |  i _ |  i | d  |  i _ |  i | d  |  i _	 t
 | d  |  i _ |  i i d d g j o   t d |  i i | f  n |  i i	 d j o  t d	 |  i i	 | f  n d  S(
   Ni   i   i   i   s   STANDARDs   PRELIMINARYs%   Unrecognized data class %s in line
%ss   PRTs(   Unrecognized molecule type %s in line
%s(   s   strings   splits   lines   colss   selfs   datas
   entry_names   _chomps
   data_classs   molecule_types   ints   sequence_lengths   SyntaxError(   s   selfs   lines   cols(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   identifications    c    sj   t  i |  i t  i | d   d  } 	x2 | d 	r% } 
|  i i	 i
 t  i |   q: Wd  S(   Ni   s   ;i    (   s   strings   splits   selfs   _chomps   rstrips   lines   colss   acs   datas
   accessionss   appends   lstrip(   s   selfs   lines   acs   cols(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys	   accessions   + 	c    sC  t  i |  } t  i | d  d j oB t  i |  } | d t |  i	 | d   f |  i
 _ n t  i | d  d j oB t  i |  } | d t |  i	 | d   f |  i
 _ no t  i | d  d j oB t  i |  } | d t |  i	 | d   f |  i
 _ n t d |  d  S(   Ns   CREATEDi    i   i   s   LAST SEQUENCE UPDATEs   LAST ANNOTATION UPDATEs#   I don't understand the date line %s(   s   strings   uppers   lines   uprlines   finds   splits   colss   ints   selfs   _chomps   datas   createds   sequence_updates   annotation_updates   SyntaxError(   s   selfs   lines   colss   uprline(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   dates   000c    s$   |  i i | d |  i _ d  S(   Ni   (   s   selfs   datas   descriptions   line(   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   descriptions   c    s$   |  i i | d |  i _ d  S(   Ni   (   s   selfs   datas	   gene_names   line(   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys	   gene_names   c    s$    !|  i i | d |  i _ d  S(   Ni   (   s   selfs   datas   organisms   line(   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   organism_species s   c    s$   #$|  i i | d |  i _ d  S(   Ni   (   s   selfs   datas	   organelles   line(   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys	   organelle#s   c    ss   &'|  i t i | d   } (t i | d  } )x2 | d )r% } *|  i i	 i
 t i |   qC Wd  S(   Ni   s   ;i    (   s   selfs   _chomps   strings   rstrips   lines   splits   colss   cols   datas   organism_classifications   appends   lstrip(   s   selfs   lines   colss   col(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   organism_classification&s
    	c    s   ,8|  i t i | d   } 9t i | d  } :| d j oS ;| |  } <t o | d j p t	 d |  =t i
 | | d d  } n ?t i
 | d  } @|  i i i t t i |   d  S(   Ni   s   =i    s
   NCBI_TaxIDs   Unexpected taxonomy type %si   s   ,(   s   selfs   _chomps   strings   rstrips   lines   finds   indexs   descrs	   __debug__s   AssertionErrors   splits   idss   datas   taxonomy_ids   extends   maps   strip(   s   selfs   lines   idss   descrs   index(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   taxonomy_id,s   %!c    s   BCt  i | d  } Dt o1 | d d j o | d d j p t d |  Et   } Ft | d d ! | _	 G|  i i i |  d  S(   Ni   i    s   [i   s   ]s   Missing brackets %s(   s   strings   rstrips   lines   rns	   __debug__s   AssertionErrors	   References   refs   ints   numbers   selfs   datas
   referencess   append(   s   selfs   lines   refs   rn(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   reference_numberBs
   ;c    sS   IJt  o |  i i p
 t d  K|  i i d i i t i | d   d  S(   Ns   RP: missing RNi   i   (
   s	   __debug__s   selfs   datas
   referencess   AssertionErrors	   positionss   appends   strings   rstrips   line(   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   reference_positionIs   !c    s   MNt  o |  i i p
 t d  Ot i t i | d  d  } P|  i i d } Qx | d Qrs } R| o
 Sqf n Ut i | d  } V| |  | | d f \ } } g| i i t i |  | f  qf Wd  S(   Ns   RC: missing RNi   s   ;i   i    s   =(   s	   __debug__s   selfs   datas
   referencess   AssertionErrors   strings   splits   rstrips   lines   colss   refs   cols   finds   indexs   tokens   texts   commentss   appends   lstrip(   s   selfs   lines   colss   refs   cols   texts   tokens   index(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   reference_commentMs   !" 	
!c    s  ijt  o |  i i p
 t d  st i | d  } t| d j o u| |  } n }t i | d  d j o ~t i	 |  } t  o! t |  d j p t d |  x | d d r } t i	 | d  } t |  d j oB |  i i d i i |  i | d  |  i | d  f  n t d |   q Wn~ t i	 |  } t |  d j oB |  i i d i i |  i | d  |  i | d  f  n t d |   d  S(	   Ns   RX: missing RNs   [NCBI, ExPASy, Israel, Japan]i    s   =i   s   I don't understand RX line %si   i   (   s	   __debug__s   selfs   datas
   referencess   AssertionErrors   strings   finds   lines   inds   splits   colss   lens   info_cols   id_colss   appends   _chomp(   s   selfs   lines   colss   inds   info_cols   id_cols(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   reference_cross_referenceis"   !	+ 	BBc    sS   t  o |  i i p
 t d  |  i i d } | i | d | _ d  S(   Ns   RA: missing RNi   i   (   s	   __debug__s   selfs   datas
   referencess   AssertionErrors   refs   authorss   line(   s   selfs   lines   ref(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   reference_authors   !c    sS   t  o |  i i p
 t d  |  i i d } | i | d | _ d  S(   Ns   RT: missing RNi   i   (   s	   __debug__s   selfs   datas
   referencess   AssertionErrors   refs   titles   line(   s   selfs   lines   ref(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   reference_titles   !c    sS   t  o |  i i p
 t d  |  i i d } | i | d | _ d  S(   Ns   RL: missing RNi   i   (   s	   __debug__s   selfs   datas
   referencess   AssertionErrors   refs   locations   line(   s   selfs   lines   ref(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   reference_locations   !c    sa  | d d !d j o |  i i i | d  n&| d d !d j oZ |  i i o |  i i i | d  n( |  i i d | d |  i i d <n | d d !d j ov |  i i p |  i i d d  d j o |  i i i | d  n( |  i i d | d |  i i d <n( |  i i d | d |  i i d <d  S(	   Ni   i   s   -!-i	   s      i   s   ---i   (   s   lines   selfs   datas   commentss   append(   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   comments   +-+c    s   | d } t i | d  } | d j o | |  } n t i |  i t i |   d  } x9 t	 t
 |   d r  } t i | |  | | <q W|  i i i t |   d  S(   Ni   s   [i    s   ;(   s   lines   strings   finds   is   splits   selfs   _chomps   rstrips   colss   ranges   lens   lstrips   datas   cross_referencess   appends   tuple(   s   selfs   lines   colss   i(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   database_cross_references   ' 	c    sj   t  i |  i t  i | d   d  } x2 | d r% } |  i i	 i
 t  i |   q: Wd  S(   Ni   s   ;i    (   s   strings   splits   selfs   _chomps   rstrips   lines   colss   cols   datas   keywordss   appends   lstrip(   s   selfs   lines   colss   col(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   keywords   + 	c    s  | d } t i | d d ! } y t | d d ! } Wn/ t j
 o  t i | d d ! } n Xy t | d d ! } Wn/ t j
 o  t i | d d ! } n Xt i | d d	 ! } | o t
 o | o | p t  |  i i d
 \ } } } } |  i i d
 =d | | f } | d j o |  i |  } n n |  i i i | | | | f  d  S(   Ni   i    i   i	   i   i   i   i   iF   i   s   %s %ss   VARSPLIC(   s   lines   strings   rstrips   names   ints   from_ress
   ValueErrors   lstrips   to_ress   descriptions	   __debug__s   AssertionErrors   selfs   datas   featuress   old_descriptions   _fix_varsplic_sequencess   append(   s   selfs   lines   old_descriptions   names   descriptions   from_ress   to_res(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   feature_tables&   ! c    s   t  i | d  } t |  d j o | d } | d } d } t  i | d  } | d j o | | } | |  } n t  i
 | d d  } t  i
 | d d  } | d | | } n | Sd S(	   s  Remove unwanted spaces in sequences.

        During line carryover, the sequences in VARSPLIC can get mangled
        with unwanted spaces like:
        'DISSTKLQALPSHGLESIQT -> PCRATGWSPFRRSSPC LPTH'
        We want to check for this case and correct it as it happens.
        s    -> i   i    i   s    s    (s    N(   s   strings   splits   descriptions
   descr_colss   lens	   first_seqs
   second_seqs
   extra_infos   finds   extra_info_poss   replace(   s   selfs   descriptions
   extra_infos
   second_seqs	   first_seqs
   descr_colss   extra_info_pos(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _fix_varsplic_sequencess   	c    st   t  i |  }  t o! t |  d j p t d |  t | d  t | d  | d f |  i	 _
 d  S(   Ni   s   I don't understand SQ line %si   i   i   (   s   strings   splits   lines   colss	   __debug__s   lens   AssertionErrors   ints   selfs   datas   seqinfo(   s   selfs   lines   cols(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   sequence_headers   +c    sA   t  i t  i | d d   } |  i i | |  i _ d  S(   Ns    s    (   s   strings   rstrips   replaces   lines   seqs   selfs   datas   sequence(   s   selfs   lines   seq(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   sequence_datas   !c    s
   	d  S(   N(    (   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys
   terminators   s   .,;c    s3   | d | j o | d  Sn | Sd  S(   Ni   (   s   words   to_chomp(   s   selfs   words   to_chomp(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _chomps   c    s   d d d d g } xA | d r4 } t | |  } t | | t i |   q$ Wx& | i d r } |  i |  qn Wd  S(   Ns   descriptions	   gene_names   organisms	   organellei    (   s   memberss   ms   getattrs   recs   attrs   setattrs   strings   rstrips
   referencess   refs   selfs   _clean_references(   s   selfs   recs   ms   memberss   attrs   ref(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _clean_records    	  	c    s`   !d d d g } "xA | d "r4 } #t | |  } $t | | t i |   q! Wd  S(   Ns   authorss   titles   locationi    (   s   memberss   ms   getattrs   refs   attrs   setattrs   strings   rstrip(   s   selfs   refs   ms   memberss   attr(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _clean_referencess
    	(   s   __doc__s   __init__s   start_records
   end_records   identifications	   accessions   dates   descriptions	   gene_names   organism_speciess	   organelles   organism_classifications   taxonomy_ids   reference_numbers   reference_positions   reference_comments   reference_cross_references   reference_authors   reference_titles   reference_locations   comments   database_cross_references   keywords   feature_tables   _fix_varsplic_sequencess   sequence_headers   sequence_datas
   terminators   _chomps   _clean_records   _clean_references(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _RecordConsumers>   	*	s   _SequenceConsumerc      sh   &d  Z  -.e i d  Z 8d   Z =d   Z @d   Z Dd   Z Hd   Z Ld   Z	 RS(   s   Consumer that converts a SwissProt record to a Seq object.

    Members:
    data      Record with SwissProt data.
    alphabet  The alphabet the generated Seq objects will have.

    c    s"   .45t  |  _ 6| |  _ d S(   s   Initialize a Sequence Consumer

        Arguments:
        o alphabet - The alphabet to use for the generated Seq objects. If
        not supplied this will default to the generic protein alphabet.
        N(   s   Nones   selfs   datas   alphabet(   s   selfs   alphabet(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   __init__.s   c    sC   89t  i  d |  i  } :t i |  |  _ ;d |  i _ d  S(   Ns    (   s   Seqs   selfs   alphabets   seqs	   SeqRecords   datas   description(   s   selfs   seq(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   start_record8s   c    s%   =>t  i |  i i  |  i _ d  S(   N(   s   strings   rstrips   selfs   datas   description(   s   self(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys
   end_record=s   c    s,   @At  i |  } B| d |  i _ d  S(   Ni   (   s   strings   splits   lines   colss   selfs   datas   name(   s   selfs   lines   cols(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   identification@s   c    s<   DEt  i t  i | d  d  } F| d |  i _ d  S(   Ni   s   ;i    (   s   strings   splits   rstrips   lines   idss   selfs   datas   id(   s   selfs   lines   ids(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys	   accessionDs   "c    s1   HI|  i i t i | d  d |  i _ d  S(   Ni   s   
(   s   selfs   datas   descriptions   strings   strips   line(   s   selfs   line(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   descriptionHs   c    sS   LMt  i  t i t i | d d   N|  i  } O|  i i | |  i _ d  S(   Ns    s    (	   s   Seqs   strings   rstrips   replaces   lines   selfs   alphabets   seqs   data(   s   selfs   lines   seq(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   sequence_dataLs   $(
   s   __doc__s   Alphabets   generic_proteins   __init__s   start_records
   end_records   identifications	   accessions   descriptions   sequence_data(    (    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   _SequenceConsumer&s   	
c 	   sc  QZ[t  i i |   o \t d |   n ^t i | d d } _|  | t i	 <at
 t |   d t   } bx bd o c| i i   } d| i   } e| i i   | } g| t j o hPn i| t j	 o j| |  } n l| i } n| o ot d  n( p| i |  o qt d |  n s| | f | | <q} Wd S(   sX  index_file(filename, indexname, rec2key=None)

    Index a SwissProt 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 entry name will be used.

    s   %s does not exists   truncatei   s   parsers   empty sequence 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
   entry_names   KeyErrors   has_key(	   s   filenames	   indexnames   rec2keys   lengths   recs   starts   iters   indexs   key(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys
   index_fileQs*   	 
(   s   __doc__s   typess   oss   strings   Bios   Files   Indexs   Alphabets   Seqs	   SeqRecords   Bio.ParserSupports   Bio.WWWs   ExPASys   RequestLimiters   Records	   References   Iterators
   Dictionarys   ExPASyDictionarys   AbstractParsers   RecordParsers   SequenceParsers   _Scanners   AbstractConsumers   _RecordConsumers   _SequenceConsumers   Nones
   index_file(   s   oss   SequenceParsers   _Scanners   Files   RequestLimiters   RecordParsers	   SeqRecords   Iterators   _SequenceConsumers   ExPASys
   index_files   ExPASyDictionarys   Seqs   _RecordConsumers   Records	   References   Alphabets
   Dictionarys   strings   Index(    (    s,   /mit/seven/lib/python/Bio/SwissProt/SProt.pys   ?! s.   

;,(E @+