ó
gbc           @   sY   d  Z  d d l m Z m Z m Z m Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d S(	   s,   
Created on 13 fevr. 2011

@author: coissac
iÿÿÿÿ(   t   Taxonomyt   EcoTaxonomyDBt   TaxonomyDumpt   ecoTaxonomyWriterc         C   so   |  j  d ƒ } | j d d d d d d d d	 d
 d d d ƒ| j d d d d d d d d	 d
 d d d ƒd  S(   Ns   Taxonomy loading optionss   -ds
   --databaset   actiont   storet   destt   taxonomyt   metavars
   <FILENAME>t   typet   stringt   helps   ecoPCR taxonomy Database names   -ts   --taxonomy-dumpt   taxdumps"   NCBI Taxonomy dump repository name(   t   add_option_groupt
   add_option(   t   optionManagert   group(    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   addTaxonomyDBOptions   s    c         C   s¶   t  |  ƒ |  j d ƒ } | j d d d d d d d d	 d
 d g  d d ƒ| j d d d d d d d d d	 d d g  d d ƒ| j d d d d d d d d d	 d d g  d d ƒd  S(   Ns"   Taxonomy-related filtering optionss   --require-rankR   t   appendR   t   requiredRankR   s   <RANK_NAME>R	   R
   t   defaultR   sF   select sequence with taxid tag containing a parent of rank <RANK_NAME>s   -rs
   --requiredt   requireds   <TAXID>t   ints³   Select the sequences having the ancestor of taxid <TAXID>. If several ancestors are specified (with 
'-r taxid1 -r taxid2'), the sequences having at least one of them are selecteds   -is   --ignoret   ignoreds   ignored taxid(   R   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   addTaxonomyFilterOptions#   s.    
c         C   s/  t  |  d ƒ s t d ƒ ‚ t |  j t ƒ r4 |  j Sd  } |  j d  k	 sX |  j d  k	 r(|  j d  k	 ry t |  j ƒ } n  | d  k	 r¶ t |  j t ƒ r¶ t	 |  j | ƒ |  j |  _
 n  t |  j t ƒ rÔ |  j } n  | d  k rt |  j t ƒ rd d  l } t |  j ƒ } |  j |  _
 n  | |  _ n  |  j S(   NR   s%   No options to load Taxonomy availableiÿÿÿÿ(   t   hasattrt   AssertionErrort
   isinstanceR   R    t   NoneR   R   t   strR   t   ecodbt   sysR   (   t   optionsR   R   (    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   loadTaxonomyDatabaseD   s&    c            sD   t  ˆ  ƒ ˆ  j d  k	 r7 ˆ  j ‰ ‡  ‡ f d †  } n	 d „  } | S(   Nc            sð   ‡ f d †  ‰  t  } d ˆ k rì ˆ d ‰ ˆ j rn t d „  ‡  ‡ f d †  ˆ j Dƒ t  ƒ } | oh | } n  ˆ j r« | o¥ t d „  ‡ ‡ f d †  ˆ j Dƒ t ƒ } n  ˆ j rì | oã t d „  ‡ ‡ f d †  ˆ j Dƒ t ƒ } qì n  | S(	   Nc            s:   d |  k r6 |  d d  k	 r6 ˆ  j |  d | ƒ } | Sd  S(   Nt   taxid(   R   t   getTaxonAtRank(   t   seqt   rankt   rtaxid(   R   (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   annotateAtRank`   s    R"   c         S   s
   |  o	 | S(   N(    (   t   xt   y(    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   <lambda>j   s    c         3   s$   |  ] } ˆ  ˆ | ƒ d  k	 Vq d  S(   N(   R   (   t   .0R%   (   R'   R$   (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pys	   <genexpr>k   s   c         S   s
   |  p	 | S(   N(    (   R(   R)   (    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyR*   p   s    c         3   s!   |  ] } ˆ j  | ˆ  ƒ Vq d  S(   N(   t
   isAncestor(   R+   t   r(   R"   R   (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pys	   <genexpr>q   s    c         S   s
   |  p	 | S(   N(    (   R(   R)   (    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyR*   u   s    c         3   s!   |  ] } ˆ j  | ˆ  ƒ Vq d  S(   N(   R,   (   R+   R-   (   R"   R   (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pys	   <genexpr>v   s    (   t   TrueR   t   reduceR   t   FalseR   (   R$   t   goodt   taxonatrank(   R    R   (   R'   R$   R"   s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   taxonomyFilter_   s$    
				c         S   s   t  S(   N(   R.   (   R$   (    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyR3      s    (   R!   R   R   (   R    R3   (    (   R    R   s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   taxonomyFilterGenerator[   s    
	 	c            s   t  |  ƒ ‰  ‡  f d †  } | S(   Nc         3   s)   x" |  D] } ˆ  | ƒ r | Vq q Wd  S(   N(    (   t   seqiteratorR$   (   R3   (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   filterIterator‡   s    (   R4   (   R    R6   (    (   R3   s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   taxonomyFilterIteratorGenerator„   s    N(   t   __doc__t   obitools.ecopcr.taxonomyR    R   R   R   R   R   R!   R4   R7   (    (    (    s6   lib/python2.7/site-packages/obitools/ecopcr/options.pyt   <module>   s   "
		!		)