ó
gbc           @   sL   d  Z  d d l m Z d d l m Z d d l Z d e f d „  ƒ  YZ d S(   s,   
Created on 24 sept. 2010

@author: coissac
iÿÿÿÿ(   t   TaxonomyDump(   t   TaxonomyNt   EcoTaxonomyDBc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s-  | |  _  t j d IJ|  j ƒ  t j d IJt j d IJg  |  _ xg |  j ƒ  D]Y \ } } } |  j j | | |  j | f ƒ | d k rP |  j |  j | j | ƒ qP qP Wt j d IJx. |  j	 ƒ  D]  \ } } |  j | |  j | <qÇ Wt j d IJx! |  j
 ƒ  D] } d  |  j | <qWt j |  ƒ d  S(   Ns'   Reading ecobarcode taxonomy database...s    oks   Adding scientific name...s   scientific names   Adding taxid alias...s   Adding deleted taxid...(   t
   _dbconnectt   syst   stderrt   _readNodeTablet   _namet   _nameIteratort   appendt   _indext	   _taxonomyt   _mergedNodeIteratort   _deletedNodeIteratort   NoneR   t   __init__(   t   selft	   dbconnectt   taxidt   namet	   classnamet   current(    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pyR      s"    	
	 "c         C   sl  |  j  j ƒ  } | j d ƒ t j d IJg  | D] } t | ƒ ^ q0 } t j d IJt t d „  | Dƒ ƒ ƒ } | j ƒ  t t	 d  | t t | ƒ ƒ ƒ ƒ } t j d IJ| j t j ƒ | |  _ t j d IJi  } x, |  j D]! } |  j | d ƒ | | d <qâ Wt j d IJx5 |  j D]* } | | d	 | d	 <| | d
 | d
 <qW| |  _ | |  _ | j ƒ  d  S(   Ns…   
                            select     taxid,rank,parent
                            from ncbitaxonomy.nodes
                       s   Reading taxonomy nodes...s   List all taxonomy rank...c         s   s   |  ] } | d  Vq d S(   i   N(    (   t   .0t   x(    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pys	   <genexpr>;   s    s   Sorting taxons...s   Indexing taxonomy...i    s   Indexing parent and rank...i   i   (   R   t   cursort   executeR   R   t   listt   sett   sortt   dictt   mapR   t   xranget   lenR    t	   _taxonCmpR   t   _bsearchTaxont   _ranksR
   t   close(   R   R   t   nt   taxonomyt   rankst   rankidxt   indext   t(    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pyR   .   s.    
$			c         c   sR   |  j  j ƒ  } | j d ƒ x% | D] \ } } } | | | f Vq# W| j ƒ  d  S(   Nsˆ   
                            select     taxid,name,nameclass
                            from ncbitaxonomy.names
                       (   R   R   R   R$   (   R   R   R   R   t	   nameclass(    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pyR   S   s    c         c   sL   |  j  j ƒ  } | j d ƒ x | D] \ } } | | f Vq# W| j ƒ  d  S(   Ns†   
                            select     oldtaxid,newtaxid
                            from ncbitaxonomy.merged
                       (   R   R   R   R$   (   R   R   t   oldtaxidt   newtaxid(    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pyR   `   s    c         c   sD   |  j  j ƒ  } | j d ƒ x | D] } | d Vq# W| j ƒ  d  S(   Nsy   
                            select  taxid
                            from ncbitaxonomy.delnodes
                       i    (   R   R   R   R$   (   R   R   R   (    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pyR   m   s    (   t   __name__t
   __module__R   R   R   R   R   (    (    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pyR      s
   	!	%		(   t   __doc__t   obitools.ecopcr.taxonomyR    R   R   R   (    (    (    s;   lib/python2.7/site-packages/obitools/ecobarcode/taxonomy.pyt   <module>   s   