ó
gbc           @   s^   d  d l  m Z d  d l  m Z m Z d  d l  m Z d   Z d   Z d   Z d   Z d S(	   i˙˙˙˙(   t   wordSelector(   t   allDNAWordIteratort
   encodeWord(   t	   predicatec         C   sA   t  | j d  s! g  | j _ n  | j j j t j |   d  S(   Nt   acceptedOligo(   t   hasattrt   valuesR   t   appendR   t   predicateMatchPattern(   t   optionst   optt   valuet   parser(    (    s4   lib/python2.7/site-packages/obitools/word/options.pyt   _acceptedOptionCallback   s    c         C   sA   t  | j d  s! g  | j _ n  | j j j t j |   d  S(   Nt   rejectedOligo(   R   R   R   R   R   R   (   R	   R
   R   R   (    (    s4   lib/python2.7/site-packages/obitools/word/options.pyt   _rejectedOptionCallback   s    c         C   sĆ  |  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 |  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 d |  j  d d d d d d d d d	 d d d  d d! |  j  d" d# d d$ d d% d d& d g  d	 d
 d d' |  j  d( d) d d$ d d* d d& d g  d	 d
 d d+ |  j  d, d- d d d d. d d d	 d d d  d d/ |  j  d0 d1 d d d d2 d d d	 d d d  d d3 d  S(4   Ns   -Ls   --oligo-listt   actiont   storet   destt	   oligoListt   metavars
   <filename>t   typet   strt   helps-   filename containing a list of oligonucleotides   -ss   --oligo-sizet	   oligoSizes   <###>t   ints#   Size of oligonucleotide to generates   -fs   --family-sizet
   familySizes*   Size of oligonucleotide family to generates   -ds
   --distancet	   oligoDistt   defaulti   s-   minimal distance between two oligonucleotidess   -gs   --gc-maxt   gcMaxi    s7   maximum count of G or C nucleotide acceptable in a words   -as
   --acceptedR   t   acceptedPatterns   <regular pattern>s#   pattern of accepted oligonucleotides   -rs
   --rejectedt   rejectedPatterns#   pattern of rejected oligonucleotides   -ps   --homopolymert   homopolymeres*   reject oligo with homopolymer longer than.s   -Ps   --homopolymer-mint   homopolymere_mins6   accept only oligo with homopolymer longer or equal to.(   t
   add_option(   t   optionManager(    (    s4   lib/python2.7/site-packages/obitools/word/options.pyt   addOligoOptions   sf    c         C   s$  |  j  d  k	 s* |  j d  k	 s* t d   |  j d  k	 sE t d   |  j d  k	 s` t d   |  j d  k	 rŻ t t |  j  j   j	    |  _  d   t |  j  D } n t
 |  j   } g  |  _ xU |  j D]J } t |  |  j  k sü t d |   |  j j t j | |  j    qŃ Wg  |  _ xU |  j D]J } t |  |  j  k s]t d |   |  j j t j | |  j    q2W|  j rŽ|  j j t j |  j |  j    n  |  j rŕ|  j j t j |  j d |  j    n  |  j r|  j j t j |  j |  j    n  t | |  j |  j  S(   Ns+   option -s or --oligo-size must be specifieds,   option -f or --family-size must be specifieds)   option -d or --distance must be specifiedc         s   s'   |  ] } t  | j   j    Vq d  S(   N(   R   t   stript   lower(   t   .0t   x(    (    s4   lib/python2.7/site-packages/obitools/word/options.pys	   <genexpr>[   s    s"   Accept pattern with bad lenth : %ss"   Reject pattern with bad lenth : %si   (   R   t   NoneR   t   AssertionErrorR   R   t   lent   opent   nextR%   R   R   R   R   R   R   R   R   R    t   predicateHomoPolymerLargerR!   R   t   predicateGCUpperBondR    (   R	   t   wordst   p(    (    s4   lib/python2.7/site-packages/obitools/word/options.pyt   dnaWordIteratorS   s,    *$	%#	%#	%	)	%N(	   t   obitools.wordR    R   R   R   R   R   R$   R2   (    (    (    s4   lib/python2.7/site-packages/obitools/word/options.pyt   <module>   s   			?