
[_Sc           @@ sV  d  d l  m Z m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z m Z m Z d  d l Td  d l m Z d  d	 l m Z m Z d
 d l Td
 d l m Z m Z d
 d l m Z m Z m Z m Z m Z m Z m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& d   Z' d d  Z( d   Z) d   Z* d   Z+ d S(   i    (   t   absolute_importt   print_functionN(   t   OptionGroup(   t   Template(   t   seq_io(   t   Seqt   SeqListt   nucleic_alphabet(   t   *(   t   DeOptionParser(   t	   iteritemst   StringIOi   (   t   ColorSchemet
   ColorGroup(   t   LogoOptionst   LogoDatat
   LogoFormatt   parse_priort   descriptiont   release_descriptiont
   formatterst   default_formattert   std_alphabetst	   std_unitst	   std_sizest   std_color_schemest   read_seq_datac          C@ s1  t    }  |  j t j d  \ } } | r? |  j d |  n  | j re t | j  t j d  n  yp t	 |  } t
 | |  } | j } | | |  } t j d d k r | j j j |  n | j j |  WnU t k
 r} t d | d t j t j d  n  t k
 r,} t j d  n Xd S(	   s   WebLogo command line interface i   s   Unparsable arguments: %s i    i   s   Error:t   filei   N(   t   _build_option_parsert
   parse_argst   syst   argvt   errort   servet   httpd_serve_forevert   portt   exitt   _build_logodatat   _build_logoformatt	   formattert   version_infot   foutt   buffert   writet
   ValueErrort   printt   stderrt   KeyboardInterrupt(   t   parsert   optst   argst   datat   formatR'   t   logot   err(    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyt   mainA   s(    	 		i  c   	      C@ s3  t  j d d k r4 d d l j } d d l j } n d d l } d d l } d | j f d     Y} t j d d  } | d t j	 j
 t  j	 d  j   d 7} | t j d <t t d	 t  } t j |  | } | j } | d |  f |  } t d
 |   y | j   Wn t k
 r.t  j d  n Xd S(   s#    Start a webserver on a local port.i    i   Nt   __HTTPRequestHandlerc           B@ s   e  Z d    Z d   Z RS(   c         S@ s)   t  |  _ |  j d k r% d |  _ t St  S(   Ns   /create.cgit    s
   create.cgi(   R9   s
   create.cgi(   t   Falset	   have_forkt   patht   cgi_infot   True(   t   self(    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyt   is_cgiv   s
    		c         S@ s   t  S(   N(   R>   (   R?   R<   (    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyt	   is_python|   s    (   t   __name__t
   __module__R@   RA   (    (    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyR8   r   s   	t
   PYTHONPATHR9   t   :t   htdocss.   WebLogo server running at http://localhost:%d/(   R   R(   t   http.servert   servert   BaseHTTPServert   CGIHTTPServert   CGIHTTPRequestHandlert   ost   getenvR<   t   abspatht   splitt   environt   resource_filenameRB   t   __file__t   chdirt
   HTTPServerR-   t   serve_foreverR/   R$   (	   R#   RH   t	   cgiserverR8   t
   pythonpathRF   t   HandlerClasst   ServerClasst   httpd(    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyR"   f   s&    +	c         C@ sE  t  } |  j } | d  k r3 t t j j    } n  y2 d d l m } | j	 | d |  j
 } t } WnR t k
 r } |  j d k r |  n  t | |  j j d |  j
 d |  j } n X| rL|  j r t d   n  |  j s |  j r | j   n  |  j s	|  j r| j   n  t |  j | j
 |  j  } t j | j
 | |  } n |  j s^|  j rt g  | D] }	 |	 j   ^ qh| j
  } n  |  j s|  j rt j | j
  st d   n  | j
 }
 t | _
 t g  | D] }	 t |	 | j
  j   ^ q| j
  } |
 | _
 n  t |  j | j
 |  j  } t j | |  } | S(   Ni    (   t   Motift   alphabett   transfact   ignore_lower_cases@   error: option --ignore-lower-case incompatible with matrix inputs+   non-nucleic sequence cannot be complemented(   R:   t   fint   NoneR   R   t   stdint   readt   corebio.matrixR[   t   read_transfacR\   R>   R,   t   input_parserR   R^   t   reverset   revcompt
   complementR   t   compositiont   weightR   t   from_countsR   R   t
   alphabeticR   t	   from_seqs(   t   optionst
   motif_flagR_   R[   t   motift	   motif_errt   seqst   priorR3   t   st   aaa(    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyR%      sH    	
			  .		7c         C@ sm  i  } d d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d g } x | D] } | j  | | | <qg W| j rt   } x^ | j D]S \ } } } y  | j j t | | |   Wq t k
 r t d |   q Xq W| | d <n  | j r$| j j d  | d <n  t	   }	 x* t
 |  D] \ }
 } t |	 |
 |  q:Wt |  |	  } | S(   sP    Extract and process relevant option values and return a 
    LogoFormat object.t   stacks_per_linet
   logo_titlet   yaxis_labelt
   show_xaxist
   show_yaxist   xaxis_labelt	   show_endst	   fineprintt   show_errorbarst
   show_boxest   yaxis_tic_intervalt
   resolutionR\   t   debugt   default_colort   color_schemet	   unit_namet
   logo_labelt   yaxis_scalet   first_indext
   logo_startt   logo_endt   scale_widtht   annotatet   stack_widtht   stack_aspect_ratiot   reverse_stackss*   error: option --color: invalid value: '%s't   ,(   t   __dict__t   colorsR   t   groupst   appendR   R,   R   RO   R   R
   t   setattrR   (   t   logodataR1   R2   t   direct_from_optst   kR   t   colort   symbolst   desct   logooptionst   at   vt	   theformat(    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyR&      s^    	
		 		c          C@ s	  t    }  t d d d t d t d t  } t | d  } t | d  } t | d d	  } t | d
 d  } t | d d  } t | d d  } t | d d  } | j |  | j |  | j |  | j |  | j |  | j |  | j |  | j d d d d d d d d d d  d d d d t	 t
 j    }	 d |	 d <| j d  d! d d" d d d d# d t
 d$ |	 d d% d& j g  t
 j D] }
 |
 j d' ^ q d d( | j d) d* d d+ d d, d t j d d- d d | j d. d/ d d0 d d d d# d$ t d d( d d1 d t | j d2 d3 d d4 d d d d# d$ t d d5 d d6 | j d7 d8 d d4 d d d d9 | j d: d; d d< d d d$ t t j    d d= d |  j d d> d d? | j d@ dA d dB d d d dC d dD d dE d dF | j d@ dG d dH d d d dI d d  d dJ d d? | j dK dL d dM d d d dN d dO d dP d dQ | j dR dS d dT d d d dN d dU d dQ | j dV dW d dX d d d dN d dY d dQ | j d@ dZ d d[ d d\ d t d d] | j d@ d^ d d_ d d\ d t d d` | j d@ da d db d d\ d t d dc | j d@ dd d de d d\ d t d df | j dg dh d di d d d d# d$ t d dj d |  j d dk | j dl dm d dn d d d dN d do d |  j d dp | j dq dr d ds d d d dC d dt d |  j d du | j d@ dv d dw d d d dC d dx d |  j d du | j dy dz d d d d{ d |  j d d| d d} | j d~ d d d d d d dC d |  j d d d du | j d@ d d d d d d dC d d  d d d du | j d d d d d d d dI d d d d | j d d d d d d{ d d d |  j d d| d d | j d d d d d d d dC d d d du | j d d d d d d{ d |  j  d d| d d | j d d d d d d d dC d |  j! d d d du | j d@ d d d d d d dI d |  j" d d d d? | j d@ d d d d d d d{ d |  j# d d| d d | j d@ d d d d d d d{ d |  j# d d| d d t t$ j    } | j%   | j d d d d d d d d# d$ t$ d d d d  d d d& j |  | 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 |  j& d d | j d d d di d d d dI d |  j d d |  j d d | j d@ d d d d d d dI d |  j' d d |  j' d d | j d@ d d d d d d d{ d t d d| d d | j d@ d d d d d d dI d d d d d d | j d@ d d d d d d d{ d t( d d| d d | j d@ d d d d d{ d |  j) d d| d d | j d@ d d d d d\ d t d d | j d@ d d d d d d dN d d d d d d | S(   Nt   usages7   %prog [options]  < sequence_data.fa > sequence_logo.epsR   t   versiont   add_verbose_optionss   Input/Output Optionss   Logo Data Optionst   Transformationss.   Optional transformations of the sequence data.s   Logo Format Optionss9   These options control the format and display of the logo.s   Color OptionssF   Colors can be specified using CSS2 syntax. e.g. 'red', '#FF0000', etc.s   Advanced Format OptionssA   These options provide fine control over the display of the logo. s   WebLogo Servers+   Run a standalone webserver on a local port.s   -fs   --fint   destR_   t   actiont   storet   typet   file_int   defaultt   helps$   Sequence input file (default: stdin)t   metavart   FILENAMER]   s   -Ds
   --datatypeRe   t   dictt   choicessR   Type of multiple sequence alignment or position weight matrix file: (%s, transfac)s   , i    t   FORMATs   -os   --foutR)   t   file_outs   Output file (default: stdout)s   -Fs   --formatR'   sI   Format of output: eps (default), png, png_print, pdf, jpeg, svg, logodatas   -As   --sequence-typeR\   s5   The type of sequence data: 'protein', 'rna' or 'dna'.t   TYPEs   -as
   --alphabets  The set of symbols to count, e.g. 'AGTC'. All characters not in the alphabet are ignored. If neither the alphabet nor sequence-type are specified then weblogo will examine the input data and make an educated guess. See also --sequence-type, --ignore-lower-cases   -Us   --unitsR   t   choices   A unit of entropy ('bits' (default), 'nats', 'digits'), or a unit of free energy ('kT', 'kJ/mol', 'kcal/mol'), or 'probability' for probabilitiest   NUMBERR9   s   --compositionRi   t   stringt   autos{  The expected composition of the sequences: 'auto' (default), 'equiprobable', 'none' (do not perform any compositional adjustment), a CG percentage, a species name (e.g. 'E. coli', 'H. sapiens'), or an explicit distribution (e.g. "{'A':10, 'C':40, 'G':40, 'T':10}"). The automatic option uses a typical distribution for proteins and equiprobable distribution for everything else. s   COMP.s   --weightRj   t   floats=   The weight of prior data.  Default depends on alphabet lengths   -is   --first-indexR   t   inti   s5   Index of first position in sequence data (default: 1)t   INDEXs   -ls   --lowerR   s"   Lower bound of sequence to displays   -us   --upperR   s"   Upper bound of sequence to displays   --ignore-lower-caseR^   t
   store_truesL   Disregard lower case letters and only count upper case letters in sequences.s	   --reverseRf   s   reverse sequencess   --complementRh   s   complement nucleic sequencess	   --revcompRg   s$   reverse complement nucleic sequencess   -ss   --sizeR   t   LOGOSIZEs=   Specify a standard logo size (small, medium (default), large)s   -ns   --stacks-per-lineRv   s@   Maximum number of logo stacks per logo line. (default: %default)t   COUNTs   -ts   --titleRw   s   Logo title text.t   TEXTs   --labelR   s   A figure label, e.g. '2a's   -Xs   --show-xaxist   booleans   YES/NOs:   Display sequence numbers along x-axis? (default: %default)s   -xs   --xlabelR{   s   X-axis labels
   --annotateR   sz   A comma separated list of custom stack annotations, e.g. '1,3,4,5,6,7'.  Annotation list must be same length as sequences.s   -Ss   --yaxisR   sL   Height of yaxis in units. (Default: Maximum value with uninformative prior.)t   UNITs   -Ys   --show-yaxisRz   s7   Display entropy scale along y-axis? (default: %default)s   -ys   --ylabelRx   s5   Y-axis label (default depends on plot type and units)s   -Es   --show-endss3   Label the ends of the sequence? (default: %default)s   -Ps   --fineprintR}   s)   The fine print (default: weblogo version)s
   --ticmarksR   s-   Distance between ticmarks (default: %default)s   --errorbarsR~   s'   Display error bars? (default: %default)s   --reverse-stacksR   s<   Draw stacks with largest letters on top? (default: %default)s   -cs   --color-schemeR   t   SCHEMEs$   Specify a standard color scheme (%s)s   -Cs   --colorR   R   s   COLOR SYMBOLS DESCRIPTION t   nargsi   sR   Specify symbol colors, e.g. --color black AG 'Purine' --color red TC 'Pyrimidine' s   --default-colorR   t   COLORs(   Symbol color if not otherwise specified.s   -Ws   --stack-widths#   Width of a logo stack (default: %s)t   POINTSs   --aspect-ratioR   s,   Ratio of stack height to width (default: %s)s   --boxR   s(   Draw boxes around symbols? (default: no)s   --resolutionR   i`   s   Bitmap resolution in dots per inch (DPI).  (Default: 96 DPI, except png_print, 600 DPI) Low resolution bitmaps (DPI<300) are antialiased.t   DPIs   --scale-widthR   s   Scale the visible stack width by the fraction of symbols in the column?  (I.e. columns with many gaps of unknowns are narrow.)  (Default: yes)s   --debugs=   Output additional diagnostic information. (Default: %default)s   --serveR!   s>   Start a standalone WebLogo server for creating sequence logos.s   --portR#   i  s.   Listen to this local port. (Default: %default)t   PORT(*   R   R	   R   R   R:   R   t   add_option_groupt
   add_optionR`   R   R   t   format_namest   joint   formatst   namesR   t   stdoutR   R   R   t   listR   t   keysR   R   R   Rv   Rw   R   Ry   R{   Rz   R|   R}   R   R~   R   t   sortR   R   R>   R   (   t   defaultsR0   t   io_grpt   data_grpt	   trans_grpt
   format_grpt	   color_grpt   advanced_grpt
   server_grpt   fin_choicest   ft   color_scheme_choices(    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyR     sb   										
-														
				(,   t
   __future__R    R   RL   R   t   optparseR   R   R   t   corebioR   t   corebio.seqR   R   R   t   corebio.utilst   corebio.utils.deoptparseR	   t   corebio._py3kR
   R   R   t   colorschemeR   R   R9   R   R   R   R   R   R   R   R   R   R   R   R   R   R7   R"   R%   R&   R   (    (    (    s9   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/weblogolib/_cli.pyt   <module>+   s"   

X	%1	3	N