ó
 ¨èIc           @   sü  d  Z  d d l Z d d l Z e j ƒ  d d l m Z d d l m Z d d l m	 Z	 d d l m
 Z
 d d d	 d
 d d d d d d g f d d d d d d d d d g f d d d d d d d d g f g Z d GHxe D]\ Z Z Z Z Z Z d  e e e e ƒ f GHy7 e	 j e e e d! d d" d d# d d$ e d% e ƒZ Wn e k
 rfe d& ƒ ‚ n Xe
 j e ƒ Z e j d' k r£e e ƒ e j k süt ‚ nY e j d( ƒ rÞe d) j d* d) ƒ d+ e j k süt ‚ n e e j j d, ƒ k süt ‚ e e j ƒ e k st ‚ e j  j! ƒ  e k s2t ‚ e e j" ƒ d k sMt ‚ e e j# ƒ d k sht ‚ e d k r˜e e j" ƒ d+ k st d- ƒ ‚ n„ e e j" ƒ d+ k s¹t d. ƒ ‚ x` e D]X Z$ e% Z& x3 e j" D]( Z' e$ e' j( j d, ƒ k rÖe) Z& PqÖqÖWe& sÀt d/ e$ ƒ ‚ qÀWe d k rLe e j# ƒ d+ k sït d0 ƒ ‚ qà e e j# ƒ d+ k smt d1 ƒ ‚ x e D]w Z$ e% Z& xR e j# D]G Z* e$ e* j+ k sÇe$ e* j, j d d) ƒ d+ j d, ƒ k rŠe) Z& PqŠqŠWe& stt d2 e$ ƒ ‚ qtWqà Wd3 GHd S(4   sP  Testing online code for fetching NCBI qblast.

Uses Bio.Blast.NCBIWWW.qblast() to run some online blast queries, get XML
blast results back, and then checks Bio.Blast.NCBIXML.parse() can read them.

Goals:
    Make sure that all retrieval is working as expected.
    Make sure we can parse the latest XML format being used by the NCBI.
iÿÿÿÿN(   t   MissingExternalDependencyError(   t	   HTTPError(   t   NCBIWWW(   t   NCBIXMLt   blastpt   nrt	   160837788gü©ñÒMbP?s
   rat [ORGN]t   9506405t   13592137t   37589612t	   149064087t   56912225t   blastnt   GTACCTTGATTTCGTATTCt   Ni   t   GACTCTACTACCTTTACCCi
   s
   pan [ORGN]t   37953274t   blastxsò  >gi|116660609|gb|EG558220.1|EG558220 CR02019H04 Leaf CR02 cDNA library Catharanthus roseus cDNA clone CR02019H04 5', mRNA sequence
CTCCATTCCCTCTCTATTTTCAGTCTAATCAAATTAGAGCTTAAAAGAATGAGATTTTTAACAAATAAAA
AAACATAGGGGAGATTTCATAAAAGTTATATTAGTGATTTGAAGAATATTTTAGTCTATTTTTTTTTTTT
TCTTTTTTTGATGAAGAAAGGGTATATAAAATCAAGAATCTGGGGTGTTTGTGTTGACTTGGGTCGGGTG
TGTATAATTCTTGATTTTTTCAGGTAGTTGAAAAGGTAGGGAGAAAAGTGGAGAAGCCTAAGCTGATATT
GAAATTCATATGGATGGAAAAGAACATTGGTTTAGGATTGGATCAAAAAATAGGTGGACATGGAACTGTA
CCACTACGTCCTTACTATTTTTGGCCGAGGAAAGATGCTTGGGAAGAACTTAAAACAGTTTTAGAAAGCA
AGCCATGGATTTCTCAGAAGAAAATGATTATACTTCTTAATCAGGCAACTGATATTATCAATTTATGGCA
GCAGAGTGGTGGCTCCTTGTCCCAGCAGCAGTAATTACTTTTTTTTCTCTTTTTGTTTCCAAATTAAGAA
ACATTAGTATCATATGGCTATTTGCTCAATTGCAGATTTCTTTCTTTTGTGAATGgH¯¼šò×z>t	   157341404t   21554275t   18409071s8   Checking Bio.Blast.NCBIWWW.qblast() with various queriess   qblast('%s', '%s', %s, ...)t
   alignmentst   descriptionst   hitlist_sizet   entrez_queryt   expects   internet connection faileds   No definition linet   >i   s   
i    t   |s   Expected no alignments!s   Expected some alignments!s   Missing %s in alignmentss   Expected no descriptions!s   Expected some descriptions!s   Missing %s in descriptionst   Done(-   t   __doc__t   syst   requires_internett   checkt   BioR    t   urllib2R   t	   Bio.BlastR   R   t   Nonet   testst   programt   databaset   queryt   e_valuet   entrez_filtert   expected_hitst   reprt   qblastt   handlet   readt   recordt   lent   query_letterst   AssertionErrort
   startswitht   splitt   query_idt   floatR   t   applicationt   lowerR   R   t   expected_hitt   Falset   found_resultt	   alignmentt   hit_idt   Truet   descrt	   accessiont   title(    (    (    s   test_NCBI_qblast.pyt   <module>   sr   
	,$!$!(