*ë
 Ô;c       s    d  Z    d k Z  d k Z  d k Z  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 Z $ d e f d „  ƒ  YZ 2 d f  d „  ƒ  YZ *d	 d	 d
 d d e d e d e e e d d d d d d d d d d d d e d „ Z Ùd e i f d „  ƒ  YZ ýd „  Z d „  Z /e e e e e e e e e e e e d „ Z pd „  Z d S(   st  NCBIWWW.py

This module provides code to work with the WWW version of BLAST
provided by the NCBI.
http://www.ncbi.nlm.nih.gov/BLAST/

Classes:
BlastParser   Parses output from WWW blast.
_Scanner      Scans output from NCBI's BLAST WWW server.

Functions:
blast         Do a BLAST search against the WWW page.
blasturl      Do a BLAST search against the stable blasturl.

N(   s   File(   s   NCBI(   s   *s   BlastParserc      s&   $ d  Z  ' ( d „  Z - d „  Z RS(   s7   Parses WWW BLAST data into a Record.Blast object.

    c    s1   ( ) * t  ƒ  |  _ + t t i ƒ  ƒ |  _ d S(   s   __init__(self)N(   s   _Scanners   selfs   _scanners   SGMLStrippingConsumers   NCBIStandalones   _BlastConsumers	   _consumer(   s   self(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   __init__( s   c    s0   - . / |  i i | |  i ƒ 0 |  i i Sd S(   s   parse(self, handle)N(   s   selfs   _scanners   feeds   handles	   _consumers   data(   s   selfs   handle(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   parse- s   (   s   __doc__s   __init__s   parse(    (    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   BlastParser$ s   	s   _Scannerc      sÚ   2 d  Z  ; < d „  Z k d „  Z § d „  Z ½ d „  Z Æ d „  Z Ê d „  Z î d „  Z d „  Z )d	 „  Z	 9d
 „  Z
 Zd „  Z ld „  Z rd „  Z …d „  Z œd „  Z «d „  Z Òd „  Z RS(   s·   Scan BLAST output from NCBI's web server at:
    http://www.ncbi.nlm.nih.gov/BLAST/
    
    Tested with BLAST v2.0.10

    Methods:
    feed     Feed data into the scanner.
    
    c    sÞ   < C Z t  | t i ƒ o [ | } n ] t i | ƒ } _ t | | i ` d t i	 d ƒ ƒb |  i | | ƒ c |  i | | ƒ d |  i | | ƒ e |  i | | ƒ h x( h | i ƒ  o i t | | i ƒ q² Wd S(   sð   S.feed(handle, consumer)

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

        s   has_res
   <b>.?BLASTN(   s
   isinstances   handles   Files
   UndoHandles   uhandles   read_and_call_untils   consumers   noevents   res   compiles   selfs   _scan_headers   _scan_roundss   _scan_database_reports   _scan_parameterss   peeklines   read_and_call(   s   selfs   handles   consumers   uhandle(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   feed< s    c    s   k  | i ƒ   t | | i d d ƒ‘ t | | i d d ƒ” t | | i d d ƒ• t | | i ƒ ˜ t	 | | i d d ƒš t	 | | i d d ƒŸ | i
 ƒ  i d ƒ d	 j o*   |  i | | ƒ ¡ |  i | | ƒ n' £ |  i | | ƒ ¤ |  i | | ƒ ¥ | i ƒ  d  S(
   Ns   containss   BLASTs   blanki   s   starts   <p>s   RIDs   Query=i    (   s   consumers   start_headers   read_and_calls   uhandles   versions   read_and_call_whiles   noevents   read_and_call_untils	   references   attempt_read_and_calls   peeklines   finds   selfs   _scan_query_infos   _scan_database_infos
   end_header(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_headerk s   "c    sŽ  § ¨ t  | | i d d ƒ© t | | i d d ƒª t | | i d d ƒ« t | | i d d ƒ¬ t | | i ­ d d ƒ® t  | | i ¯ d d	 ƒoz ° xp ° d oe ± | i ƒ  } ² t | ƒ o ³ Pn% ´ t	 i
 | d
 ƒ d j o µ Pn ¶ | i | i ƒ  ƒ q¨ Wn · t  | | i ¸ d d ƒo ¹ t | | i d d ƒn º t  | | i d d ƒ» t | | i d d ƒd  S(   Ns   starts   <p>s   containss   Databases	   sequencess   blanki   s   problems or questionss	   BLASTFORMs   Query=i    s   Taxonomy reportss   <BR>s   <PRE>(   s   attempt_read_and_calls   uhandles   consumers   noevents   read_and_calls   database_infos   peeklines   lines   is_blank_lines   strings   finds   readlines   read_and_call_while(   s   selfs   uhandles   consumers   line(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_database_info§ s*    
c    s‹   ½ ¿ t  | | i d d ƒÀ t | | i d d ƒÁ t | | i d d ƒÂ t | | i d d ƒo Ã t | | i d d ƒn d  S(   Ns   containss   Query=s   blanki   s   starts   <PRE>(   s   read_and_calls   uhandles   consumers
   query_infos   read_and_call_untils   read_and_call_whiles   noevents   attempt_read_and_call(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_query_info½ s
   c    s-   Æ Ç |  i | | ƒ È |  i | | ƒ d  S(   N(   s   selfs   _scan_descriptionss   uhandles   consumers   _scan_alignments(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_roundsÆ s   c    s  Ê Ë | i ƒ  Ñ t | | i d d ƒoM Ô t | | i Õ d d ƒÖ t | | i d d ƒ× | i ƒ  Ù d  Sn à t	 | | i á d d ƒâ t	 | | i d d ƒå t | | i
 d d d d	 ƒè t | | i é d d
 ƒo ê t | | i d d ƒn ì | i ƒ  d  S(   Ns   containss   Score     Es   No significant similaritys   blanki   s   starts   Sequences producingi    s   <as   </PRE>(   s   consumers   start_descriptionss   attempt_read_and_calls   uhandles   description_headers   no_hitss   read_and_call_whiles   noevents   end_descriptionss   read_and_calls   description(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_descriptionsÊ s   c    s*  î  t  | ƒ } t  | ƒ } | i | ƒ | i | ƒ d } } t i | d ƒ d j o d } nn | d  d j o 	nS 
| d  d j o d } n2 | d  d	 j o d } n t	 d
 | ‚ | o |  i | | ƒ n" | o |  i | | ƒ n d  S(   Ni    s
   Alignmentsi   i
   s
     Databasei	   s	   blast_tmpi   s   <PRE>s#   Cannot resolve location at line:
%s(   s   safe_readlines   uhandles   line1s   line2s   savelines   is_pairwises   is_masterslaves   strings   finds   SyntaxErrors   selfs   _scan_pairwise_alignmentss   consumers   _scan_masterslave_alignment(   s   selfs   uhandles   consumers   line1s   line2s   is_pairwises   is_masterslave(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_alignmentsî s$   

c    s´   x§ d oœ t  | ƒ } t  | ƒ } | i | ƒ | i | ƒ | d  d j o Pn $| d  d j o %|  i | | ƒ n '|  i | | ƒ q	 Wd  S(   Ni   i
   s
     Databasei   s   Query:(	   s   safe_readlines   uhandles   line1s   line2s   savelines   selfs$   _scan_abbreviated_pairwise_alignments   consumers   _scan_one_pairwise_alignment(   s   selfs   uhandles   consumers   line1s   line2(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_pairwise_alignmentss    
c    sg   )2| i ƒ  3| i ƒ  4t | | i d d ƒ5|  i | | ƒ 6| i ƒ  7| i	 ƒ  d  S(   Ns   starts   <PRE>(
   s   consumers   start_alignments	   start_hsps   read_and_calls   uhandles   noevents   selfs   _scan_hsp_alignments   end_hsps   end_alignment(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys$   _scan_abbreviated_pairwise_alignment)s   	c    sù   9D| i ƒ  Et | | i d d ƒFt | | i d d ƒG|  i | | ƒ Jx Jd o‚ Pt | ƒ } Qt | ƒ } R| i | ƒ S| i | ƒ T| d  d j o | d  d j o UPn V|  i | | ƒ q[ WX| i ƒ  d  S(   Ns   containss
   Alignmentss   starts   <PRE>i   i   s    Score(   s   consumers   start_alignments   attempt_read_and_calls   uhandles   noevents   read_and_calls   selfs   _scan_alignment_headers   safe_readlines   line1s   line2s   savelines	   _scan_hsps   end_alignment(   s   selfs   uhandles   consumers   line1s   line2(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_one_pairwise_alignment9s    
%c    sÍ   Z^xƒ ^d ox _t  | ƒ } `t i | ƒ d  d j o a| i | ƒ bPn! ct | ƒ o et d ‚ n f| i	 | ƒ q	 Wht
 | | i id d ƒo jt | | i d d ƒn d  S(   Ni   i   s   Length =s*   I missed the Length in an alignment headers   starts
             s   blank(   s   safe_readlines   uhandles   lines   strings   lstrips   consumers   lengths   is_blank_lines   SyntaxErrors   titles   attempt_read_and_calls   noevents   read_and_call(   s   selfs   uhandles   consumers   line(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_alignment_headerZs    
c    sG   lm| i ƒ  n|  i | | ƒ o|  i | | ƒ p| i ƒ  d  S(   N(   s   consumers	   start_hsps   selfs   _scan_hsp_headers   uhandles   _scan_hsp_alignments   end_hsp(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys	   _scan_hspls   c    s   r|t  | | i d d ƒ}t | | i d d ƒ~t | | i d d ƒ€t  | | i d d ƒ‚t  | | i d d ƒƒt | | i d d ƒd  S(	   Ns   starts   <PRE>s    Scores    Identitiess    Strands    Frames   blanki   (	   s   attempt_read_and_calls   uhandles   consumers   noevents   read_and_calls   scores
   identitiess   strands   frame(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_hsp_headerrs   
c    s×   …‘x˜ ‘d o “t  | | i d d ƒ”t | | i d d ƒ•t | | i d d ƒ–t | | i d d ƒ—t  | | i d d ƒo ˜Pn q	 W™t | | i d d ƒšt | | i d d ƒd  S(   Ni   s   starts        s   Querys   Sbjcts   blanks   </PRE>(	   s   attempt_read_and_calls   uhandles   consumers   noevents   read_and_calls   querys   aligns   sbjcts   read_and_call_while(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_hsp_alignment…s    
c    s×   œ| i ƒ  žt | | i d d ƒŸx~ Ÿd os  t | ƒ } ¡t | ƒ o ¢| i | ƒ n= £| d  d j o ¤| i | ƒ ¥Pn §| i | ƒ q/ W¨t	 | | i d d ƒ©| i
 ƒ  d  S(   Ns   starts   <PRE>i   i   s   </PRE>s   blank(   s   consumers   start_alignments   read_and_calls   uhandles   noevents   safe_readlines   lines   is_blank_lines	   multaligns   read_and_call_whiles   end_alignment(   s   selfs   uhandles   consumers   line(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_masterslave_alignmentœs    
c    sg  «º| i ƒ  ¼t | | i d d ƒ½t | | i d d ƒ¾t | | i d d ƒ¿t | | i Àd d ƒÁt | | i Âd d ƒÃt | | i d d ƒÅt | | i d d ƒÆt | | i	 ƒ Çt | | i d	 d
 ƒÊt
 | | i d d ƒÌt
 | | i d d ƒo Ít | | i ƒ n Ît | | i d	 d
 ƒÐ| i ƒ  d  S(   Ns   starts   <PRE>s
     Databases
       Posteds     Number of letterss     Number of sequencess     s   Lambdas   blanki   s   Gapped(   s   consumers   start_database_reports   read_and_calls   uhandles   noevents   databases   posted_dates   num_letters_in_databases   num_sequences_in_databases	   ka_paramss   attempt_read_and_calls   gappeds   ka_params_gaps   read_and_call_whiles   end_database_report(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_database_report«s"   c    s0  Òí| i ƒ  ït | | i d d ƒñt | | i d d ƒòt | | i ód d ƒôt | | i õd d ƒöt | | i	 ÷d d ƒøt | | i
 ùd d ƒût | | i üd d ƒÿt | | i  d d	 ƒoX t | | i d d
 ƒt | | i d d ƒt | | i d d ƒn t | | i 	d d ƒ
t | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i d d ƒt | | i  d d ƒ!t | | i d d ƒ"t | | i d d ƒ$t | | i d d ƒ%t | | i d d ƒ&t | | i d d ƒ(| i  ƒ  d  S(    Ns   starts   Matrixs   Gaps   Number of Hitss   Number of Sequencess   Number of extensionss   Number of successfuls   Number of sequencess   Number of HSP's betters   Number of HSP's successfullys   Number of HSP's thats   Number of HSP's gappeds   length of querys   length of databases   effective HSPs   effective length of querys   effective length of databases   effective search spaces   effective search space useds
   frameshifts   Ts   As   X1s   X2s   X3s   S1s   S2s   blanki   s   </PRE>s   </form>(!   s   consumers   start_parameterss   read_and_calls   uhandles   matrixs   attempt_read_and_calls   gap_penaltiess   num_hitss   num_sequencess   num_extendss   num_good_extendss   num_seqs_better_es   hsps_no_gaps   hsps_prelim_gappeds   hsps_prelim_gap_attempteds   hsps_gappeds   query_lengths   database_lengths   effective_hsp_lengths   effective_query_lengths   effective_database_lengths   effective_search_spaces   effective_search_space_useds
   frameshifts	   thresholds   window_sizes   dropoff_1st_passs   gap_x_dropoffs   gap_x_dropoff_finals   gap_triggers   blast_cutoffs   noevents   end_parameters(   s   selfs   uhandles   consumer(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _scan_parametersÒs`   (   s   __doc__s   feeds   _scan_headers   _scan_database_infos   _scan_query_infos   _scan_roundss   _scan_descriptionss   _scan_alignmentss   _scan_pairwise_alignmentss$   _scan_abbreviated_pairwise_alignments   _scan_one_pairwise_alignments   _scan_alignment_headers	   _scan_hsps   _scan_hsp_headers   _scan_hsp_alignments   _scan_masterslave_alignments   _scan_database_reports   _scan_parameters(    (    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _Scanner2 s$   		/<	$(!'s    s   (none)s   Ls   10s   nos   ons   0.001s   1s	   alignments   htmls   100s   50s   Pairwises+   http://www.ncbi.nlm.nih.gov/blast/Blast.cgii   c )   sK  *gqh  |  d <| d <| d <| d <| d <| d <| d <| d <| d	 <|
 d
 <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <| d <}" Šh  d d <d d <d d <d d <d d <} ‘|" d	 o! ’| i |" d d ƒ |" d	 <n ”h  }& •xH |" i ƒ  d  •r5 } –|" | t j	 o —t |" | ƒ |& | <n qhW™d! |& d" <šd# |& d$ <›d% |& d& <œd' |& d( <ž|  i  ƒ  d) j o Ÿd* |& d+ <nk  |  i  ƒ  d, j o ¡d- |& d+ <nD ¢|  i  ƒ  d. d/ d0 g j o £d1 |& d+ <n ¥t! d2 |  ƒ ‚ °t" i# | |& d3 d  ƒ}  ³| t j	 o2 ´|  i' ƒ  }% µ| |% ƒ ¶t) i* |% ƒ }  n ·t+ |  ƒ \ }( } ¸t. i/ | |( ƒ }( »t0 | i d4 d5 ƒ ƒ } ½t2 i2 ƒ  }# ¾xí ¾d6 oâ Àt2 i4 | ƒ Ät" i# |( | d3 d  ƒ}  Å| t j	 o2 Æ|  i' ƒ  }% Ç| |% ƒ Èt) i* |% ƒ }  n Ét5 |  ƒ \ }! }' }$ Êt. i/ | |' ƒ }' Ë|! o ÌPn Ît2 i2 ƒ  |# | d7 j o Ït: d8 | ‚ n q WÕ|$ i; d ƒ o Ö|$ d =n ×t" i# |' |$ d3 d  ƒSd9 S(:   sS  blast(program, database, query[, query_from][, query_to]
    [, entrez_query][, filter][, expect]
    [, word_size][, other_advanced][, cdd_search]
    [, composition_based_statistics][, matrix_name][, run_psiblast]
    [, i_thresh][, genetic_code][, show_overview][, ncbi_gi]
    [, format_object][, format_type][, descriptions][, alignments]
    [, alignment_view][, auto_format][, cgi][, timeout]) -> handle

    Blast against the NCBI Blast web page.  This uses the NCBI web
    page cgi script to BLAST, and returns a handle to the
    results. See:
    
    http://www.ncbi.nlm.nih.gov/blast/html/blastcgihelp.html
    
    for more descriptions about the options.

    Required Inputs:
    o program - The name of the blast program to run (ie. blastn, blastx...)
    o database - The database to search against (ie. nr, dbest...)
    o query - The input for the search, which NCBI tries to autodetermine
    the type of. Ideally, this would be a sequence in FASTA format.

    General Options:
    filter, expect, word_size, other_advanced

    Formatting Options:
    show_overview, ncbi_gi, format_object, format_type, descriptions,
    alignments, alignment_view, auto_format

    Protein specific options:
    cdd_search, composition_based_statistics, matrix_name, run_psiblast,
    i_thresh

    Translated specific options:
    genetic code
    
    s   PROGRAMs
   QUERY_FROMs   QUERY_TOs   DATABASEs   QUERYs   ENTREZ_QUERYs   FILTERs   EXPECTs	   WORD_SIZEs   OTHER_ADVANCEDs
   CDD_SEARCHs   COMPOSITION_BASED_STATISTICSs   MATRIX_NAMEs   RUN_PSIBLASTs   I_THRESHs   GENETIC_CODEs   SHOW_OVERVIEWs   NCBI_GIs   FORMAT_OBJECTs   FORMAT_TYPEs   DESCRIPTIONSs
   ALIGNMENTSs   ALIGNMENT_VIEWs   AUTO_FORMATi   s   blastpi   s   blastns   blastxs   tblastns   tblastxi    s   webs   CLIENTs   plains   SERVICEs   Puts   CMDs	   OneWindows   LAYOUTs   BLASTNs   Nucleotidess   PAGEs   BLASTPs   Proteinss   BLASTXs   TBLASTNs   TBLASTXs   Translationss   Unexpected program name %ss   gets   RTOEi   i   i<   s   timed out after %d minutesN(<   s   programs
   query_froms   query_tos   databases   querys   entrez_querys   filters   expects	   word_sizes   other_advanceds
   cdd_searchs   composition_based_statisticss   matrix_names   run_psiblasts   i_threshs   genetic_codes   show_overviews   ncbi_gis   format_objects   format_types   descriptionss
   alignmentss   alignment_views   auto_formats   paramss   default_word_sizess   gets	   variabless   keyss   ks   Nones   strs   uppers
   ValueErrors   NCBIs   _opens   cgis   handles	   output_fns   reads   resultss   Files   StringHandles   _parse_blast_ref_pages   ref_cgis
   ref_paramss   urlparses   urljoins   ints   refresh_delays   times   starts   sleeps   _parse_blast_results_pages   readys   results_cgis   results_paramss   timeouts   IOErrors   has_key()   s   programs   databases   querys
   query_froms   query_tos   entrez_querys   filters   expects	   word_sizes   ungapped_alignments   other_advanceds
   cdd_searchs   composition_based_statisticss   matrix_names   run_psiblasts   i_threshs   genetic_codes   show_overviews   ncbi_gis   format_objects   format_types   descriptionss
   alignmentss   alignment_views   auto_formats   cgis   timeouts	   output_fns   ks
   ref_paramss   refresh_delays   default_word_sizess   handles   readys   paramss   starts   results_paramss   resultss	   variabless   results_cgis   ref_cgi(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   blast*s^   =
á6!	 	 

s   _FormParserc      sJ   Ùd  Z  âãd „  Z çd „  Z ìd „  Z ïd „  Z öd „  Z RS(   s  Parse a form in an HTML page.

    Members:
    forms   List of forms in the page.
            Each form is a tuple of (action, params) where action
            is a string to the CGI script and params is a dict of
            keys and values to pass to the script.

    c    s8   ãät  i i |  ƒ åg  |  _ æd h  f |  _ d  S(   Ns    (   s   sgmllibs
   SGMLParsers   __init__s   selfs   formss   _current_form(   s   self(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   __init__ãs   c    sE   çé|  i | ƒ } ê| i d |  i d ƒ |  i d f |  _ d  S(   Ns   ACTIONi    i   (   s   selfs
   _attr2dicts
   attributess	   attr_dicts   gets   _current_form(   s   selfs
   attributess	   attr_dict(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys
   start_formçs   c    s/   ìí|  i i |  i ƒ îd h  f |  _ d  S(   Ns    (   s   selfs   formss   appends   _current_form(   s   self(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   end_formìs   c    sr   ïð|  i d } ñ|  i | ƒ } ò| i d ƒ o6 ô| i d | i d d ƒ ƒ } õ| | | d <n d  S(   Ni   s   NAMEs   VALUEs   CHECKEDs    (	   s   selfs   _current_forms   paramss
   _attr2dicts
   attributess	   attr_dicts   has_keys   gets   value(   s   selfs
   attributess   values	   attr_dicts   params(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   do_inputïs
   !c    sL   ö÷h  } øx/ | d ør" \ } } ù| | t i | ƒ <q Wú| Sd  S(   Ni    (   s	   attr_dicts
   attributess   names   values   strings   upper(   s   selfs
   attributess   values   names	   attr_dict(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys
   _attr2dictös
   	 (   s   __doc__s   __init__s
   start_forms   end_forms   do_inputs
   _attr2dict(    (    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _FormParserÙs   		c    sœ   ýþÿt  ƒ  }  | i |  i ƒ  ƒ t | i ƒ d j o t d ‚ n | i d \ } } | i
 d ƒ o t d ‚ n | | f Sd S(   s:   _parse_blast_ref_page(handle, base_cgi) -> cgi, parametersi   s#   Form broken in BLAST reference pagei    s   RIDs*   Error getting BLAST results: RID not foundN(   s   _FormParsers   parsers   feeds   handles   reads   lens   formss   SyntaxErrors   cgis   paramss   has_key(   s   handles   paramss   parsers   cgi(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _parse_blast_ref_pageýs   c    s¾   	
d t  f d „  ƒ  Y} "| ƒ  } #| i |  i ƒ  ƒ 't | i ƒ d j o (t d ‚ n )| i	 o *| i d \ } } n ,| i d \ } } -| i	 | | f Sd S(   s7   _parse_blast_results_page(handle) -> ready, cgi, paramss   _ResultsParserc      s   
d „  Z  d „  Z RS(   Nc    s#   t  i |  ƒ d |  _ d  S(   Ni    (   s   _FormParsers   __init__s   selfs   ready(   s   self(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   __init__s   c    sE   t  i | ƒ } t  i | d ƒ d j o d |  _ n d  S(   Ns   status=readyi    i   (   s   strings   lowers   comments   finds   selfs   ready(   s   selfs   comment(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   handle_comments   (   s   __init__s   handle_comment(    (    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _ResultsParser
s   i   s'   I expected 2 forms in the results page.i    i   N(   s   _FormParsers   _ResultsParsers   parsers   feeds   handles   reads   lens   formss   SyntaxErrors   readys   cgis   params(   s   handles   _ResultsParsers   paramss   parsers   cgi(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _parse_blast_results_pages   c    sž  /MNg  } O| i d |  ƒ P| i d | ƒ Rd | f d | f d | f d | f d | f d | f d	 |	 f d
 |
 f d | f d | f d | f d | f g } _xG | d _r: \ } } `| t j	 o a| i d | | f ƒ n q¸ Wc| i d ƒ d| i d ƒ ex0 e| o% f| i | d  ƒ g| d } qWit i | d ƒ } kt i ƒ  } lt | | ƒ m| i d ƒ n| Sd S(   s  blasturl(program, datalib, sequence[, ncbi_gi][, descriptions]
    [, alignments][, expect][, matrix][, gap_existence][, gap_extend]
    [, gapped][, filter][, html][, gcode]) -> handle

    Do a BLAST search using the stable URL provided by NCBI.
    program        BLASTP, BLASTN, BLASTX, TBLASTN, or TBLASTX.
    datalib        Which database to search against.
    sequence       The sequence to search.
    ncbi_gi        TRUE/FALSE whether to give 'gi' identifier.  Def FALSE.
    descriptions   Number of descriptions to show.  Def 100.
    alignments     Number of alignments to show.  Def 50.
    expect         An expect value cutoff.
    matrix         Specify an alt. matrix (PAM30, PAM70, BLOSUM80, BLOSUM45).
    gap_existence  Give a gap open penalty.
    gap_extend     Give a gap extension penalty.
    gapped         TRUE/FALSE for giving gapped alignments.  Def TRUE.
    filter         "none" turns off filtering.  Default uses 'seg' or 'dust'.
    html           TRUE/FALSE for html output.  Def FALSE.
    gcode          Specify an alternate genetic code for (T)BLASTX.

    This function does no checking of the validity of the parameters
    and passes the values to the server as is.  More help is available at:
    http://www.ncbi.nlm.nih.gov/BLAST/blast_overview.html
    
    s
   PROGRAM %ss
   DATALIB %ss   NCBI_GIs   DESCRIPTIONSs
   ALIGNMENTSs   EXPECTs   MATRIXs   GAP_EXISTENCEs
   GAP_EXTENDs   GAPPEDs   FILTERs   HTMLs   GCODEs   PATHi    s   %s %ss    s   BEGINi<   s   
N(   s   liness   appends   programs   datalibs   ncbi_gis   descriptionss
   alignmentss   expects   matrixs   gap_existences
   gap_extends   gappeds   filters   htmls   gcodes   paths
   parameterss   names   values   Nones   sequences   strings   joins   messages	   cStringIOs   StringIOs	   outhandles   _send_to_blasturls   seek(   s   programs   datalibs   sequences   ncbi_gis   descriptionss
   alignmentss   expects   matrixs   gap_existences
   gap_extends   gappeds   filters   htmls   gcodes   paths   values   liness
   parameterss   messages	   outhandles   name(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   blasturl/s(   	u " 
c    s  pwxt  i  t  i t  i ƒ } y| i d d f ƒ {| i d ƒ || i d ƒ }| i d ƒ ~| i d ƒ | i d t |  ƒ ƒ €| i d ƒ | i |  ƒ ƒxD ƒd	 o9 „| i d
 ƒ } …| o †Pn ‡| i | ƒ q· Wˆ| i ƒ  d S(   sÇ   _send_to_blasturl(query, outhandle)

    Send a BLAST request to the stable blasturl server at the NCBI.
    ftp://ncbi.nlm.nih.gov/blast/blasturl/
    The results are written to outhandle.
    
    s   www.ncbi.nlm.nih.goviP   s.   POST /cgi-bin/BLAST/nph-blast_report HTTP/1.0
s   User-Agent: BiopythonClient
s   Connection: Keep-Alive
s0   Content-type: application/x-www-form-urlencoded
s   Content-Length: %d
s   
i   i   N(   s   sockets   AF_INETs   SOCK_STREAMs   socks   connects   sends   lens   querys   recvs   datas	   outhandles   writes   close(   s   querys	   outhandles   datas   sock(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   _send_to_blasturlps"    
(   s   __doc__s   strings   times   res   sgmllibs   urlparses   sockets	   cStringIOs   Bios   Files   Bio.WWWs   NCBIs   Bio.ParserSupports   NCBIStandalones   AbstractParsers   BlastParsers   _Scanners   Nones   blasts
   SGMLParsers   _FormParsers   _parse_blast_ref_pages   _parse_blast_results_pages   blasturls   _send_to_blasturl(   s   sgmllibs   blasts   blasturls   strings   times   Files   _Scanners   _send_to_blasturls   res   urlparses   _parse_blast_results_pages   _parse_blast_ref_pages   _FormParsers   NCBIStandalones   NCBIs   sockets   BlastParsers	   cStringIO(    (    s*   /mit/seven/lib/python/Bio/Blast/NCBIWWW.pys   ? s(   
ÿ ùW¯$'0A