
bc           @   sY  d  d l  m Z i d d 6d d 6d d 6d d	 6Z d
 Z d Z d Z d Z e Z e Z	 d Z
 d Z d Z e Z d  d l Z d  d l Z d  d l m Z m Z m Z d  d l m Z m Z d  d l m Z m Z m Z d  d l m Z m Z e   Z e e j   Z! e e j"  Z# e Z$ e j% ry d  d l& Z& e& j' d  e& j( j) d  s`e& j( j) d  r}e j* d  e j+ d  nE e j, Z, e- d d  e _, d  d l. j/ Z0 d  d l1 Z& e, e _, e Z$ Wqe2 k
 re j* d  e j+ d  qXn  g  a3 g  a4 d e5 f d     YZ6 d e5 f d      YZ7 d!   Z8 d"   Z9 e d#  Z: e e d$  Z; d e d%  Z= d&   Z> d'   Z? d d d e e d d d e e e! d(  Z@ d)   ZA d*   ZB d+ d d,  ZC d-   ZD d.   ZE d/   ZF d d d d d0  ZG d d d d d d d1  ZH d e d e e! d2  ZI d d3  ZJ d d d4  ZK d5   ZL d6   ZM d S(7   i(   t   divisions
   sans-serift   familyt   normalt   stylet   mediumt   weighti
   t   sizeg       @t   solidt   dashedi   t   larges   #000000N(   t   fastaparsert   qconfigt	   reporting(   t
   get_loggert   get_main_logger(   t   label_from_fpatht   parse_str_to_numt   run_parallel(   t   get_color_and_lst   colorst   Aggt   0s   1.0t    sY   Can't draw plots: matplotlib version is old! Please use matplotlib version 1.1 or higher.s	   /dev/nullt   ws<   Can't draw plots: python-matplotlib is missing or corrupted.t   Plotc           B   s)   e  Z d d  d  Z d   Z d   Z RS(   i   c         C   s@   | | | | | | f \ |  _  |  _ |  _ |  _ |  _ |  _ d  S(   N(   t   x_valst   y_valst   colort   lst   markert
   markersize(   t   selfR   R   R   R   R   R   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   __init__Q   s    c         C   sD   t  j |  j |  j d |  j d |  j d t d |  j d |  j d  S(   NR   R   t   lwR   R   (	   t   pltt   plotR   R   R   R   t
   line_widthR   R   (   R   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyR#   T   s    -c         C   s   t  |  j  S(   N(   t   maxR   (   R   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt	   get_max_yX   s    N(   t   __name__t
   __module__t   NoneR    R#   R&   (    (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyR   P   s   	t   Barc           B   s2   e  Z d  d d d d d  Z d   Z d   Z RS(   g?R   t   edgec	   	   	   C   sR   | | | | | | | | f \ |  _  |  _ |  _ |  _ |  _ |  _ |  _ |  _ d  S(   N(   t   x_valt   y_valR   t   widtht   bottomt   hatcht	   edgecolort   align(	   R   R,   R-   R   R.   R/   R0   R1   R2   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyR    ]   s    c         C   sP   t  j |  j |  j d |  j d |  j d |  j d |  j d |  j d |  j	 d  S(   NR.   R2   R   R1   R0   R/   (
   R"   t   barR,   R-   R.   R2   R   R1   R0   R/   (   R   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyR#   a   s    9c         C   sA   t  |  j t  r t |  j  S|  j r6 |  j |  j S|  j Sd  S(   N(   t
   isinstanceR-   t   listR%   R/   (   R   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyR&   e   s
    	N(   R'   R(   R)   R    R#   R&   (    (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyR*   \   s   	c      	   C   s[   t  j j d d d t  } t  j j d d d t d |  rH d d d g n d   } | | f S(   Nt   nbinsi   t   integert   stepsi   i   i
   (   t
   matplotlibt   tickert   MaxNLocatort   TrueR)   (   t   is_histogramt   xLocatort   yLocator(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   get_locatorso   s    6c         C   sa   | d
 k r" d   } |  d 7}  n5 | d k rD d   } |  d 7}  n d   } |  d	 7}  |  | f S(   Ni   g     @@c         S   s   d |  d S(   Ns   %di   (    (   t   xt   pos(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   <lambda>w   s    s    (bp)g    .Ac         S   s   d |  d S(   Ns   %dgMbP?(    (   RA   RB   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyRC   z   s    s    (kbp)c         S   s   d |  d S(   Ns   %dgư>(    (   RA   RB   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyRC   }   s    s    (Mbp)g     @g    SA(    (   t   ylabelt   max_yt   mkfunc(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   y_formatteru   s    			
c         C   s   t  j   } | j t  | j   } |  r[ | j | j | j | j d | j	 d g  n4 | j | j | j | j	 d | j | j	 d g  | j
 j t  t  j t  | S(   Ng?g      ?g?(   R"   t   gcat   set_axisbelowR<   t   get_positiont   set_positiont   x0t   y0R.   t   heightt   yaxist   gridt	   with_grid(   t   vertical_legendt   axt   box(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   set_ax   s    04c   
      C   s   | rL d | k rL t  | |  \ } } t j j |  } | j j |  n  |  rh t j |  d t n  | r t j	 | d t n  t
 |  \ } }	 | j j |	  | j j |  | r |  r | j j   j t  n  | r | j d  n  d  S(   Nt   lengtht   fontsizet   log(   RG   R9   R:   t   FuncFormatterRO   t   set_major_formatterR"   t   xlabelt   axes_fontsizeRD   R@   t   set_major_locatort   xaxist   axest	   get_xaxist   set_visiblet   Falset
   set_xscale(
   R[   RD   RE   RS   t   logarithmic_x_scaleR=   RF   t   mkformatterR>   R?   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt
   add_labels   s    c         C   s   y | r9 |  j  | d d d d d t d t d d	 } n? |  j  | d d
 d d d t d t d | d k  ro | n d } x | j D] } | j d  q WWn t k
 r n Xd  S(   Nt   locs   center leftt   bbox_to_anchorg      ?g      ?t   fancyboxt   shadowt	   numpointsi   s   upper centerg\(\?g333333ÿt   ncoli   R   (   g      ?g      ?(   g\(\?g333333ÿ(   t   legendR<   t   legendHandlest	   set_hatcht	   Exception(   RS   t   legend_listt	   n_columnsRR   Rm   t   handle(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt
   add_legend   s    0$c         C   s   y  d d l  m } | |   } Wn t j d  d  SXx! t D] } | j | d d q? Wx t D] } | j |  qc WyV | j   } d | d <d | d	 <d d  l } | j j	   | d
 <| j j	   | d <Wn t
 k
 r n X| j   t j d  d  S(   Ni(   t   PdfPagess/   PDF with all tables and plots cannot be createdt   bbox_inchest   tights   QUAST full reportt   Titlet   QUASTt   Authort   CreationDatet   ModDatet   all(   t   matplotlib.backends.backend_pdfRu   t   loggert   warningt   pdf_tables_figurest   savefigt   pdf_plots_figurest   infodictt   datetimet   nowt   AttributeErrort   closeR"   (   t   all_pdf_fpathRu   t   all_pdf_filet   figuret   dR   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   save_to_pdf   s*    


c         C   s   t  j |  d d d  S(   NRv   Rw   (   R"   R   (   t
   plot_fpath(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt	   save_plot   s    c         C   s  t  j   } t  j d t  d } t |  } x- | D]% } t | | j    } | j   q5 W| r t | | d t	 d | n  t
 | | | | d | | r t  j |  n  |	 p d t d t t j | d    g }	 t  j |	  |
 r't  j t t |
   |
 d d	 d
 | rd n d  n  t s;t  j   d  St rQt  j |  n  |  d t j 7}  t j rt t |  f g d  n
 t |   | j d |   | rt j |  n  t  j d  d  S(   Nt   fonti    Rr   RR   R=   i   g?R   t   smallt   rotationt   verticalt   .i   s       saved to R}   (    R"   t   gcft   rcR   RU   R%   R&   R#   Rt   Rr   Rf   t   xlimt   intt   matht   ceilt   ylimt   xtickst   ranget   lenR)   t   can_draw_plotsR   t
   with_titlet   titleR   t   plot_extensiont   is_combined_refR   R   t   infoR   t   append(   R   R   t   plotsRq   t   x_labelt   y_labelRR   R=   t   x_limitt   y_limitt   x_tickst   vertical_tickst   add_to_reportR   R   RE   RS   R#   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   create_plot   s:    .7
	
c         C   s  t  s
 d  St j d  g  } d } x t | |  D] \ } } d g }	 x/ t | d t D] }
 |	 j |	 d |
  q[ Wt t d t	 |	    } | r t
 | d |  } n  t |  \ } } | j t | |	 | |   q3 W|  rd g }	 x> t t j |   j   d t D] }
 |	 j |	 d |
  qWt t d t	 |	    } |	 d } t
 | | d  } |	 j |  | j |  | j t | |	 t t   n  g  | D] } t |  ^ q} |  r| d g 7} n  t | | | | d d d d	 d
 d | g d  S(   Ns     Drawing cumulative plot...i    t   reverseit	   ReferenceR   s   Contig indexR   s   Cumulative lengthR   (   R   R   R   t   zipt   sortedR<   R   R5   R   R   R%   R   R   R
   t   get_chr_lengths_from_fastafilet   valuest   reference_colort   reference_lsR   R   (   t	   referencet   contigs_fpathst   lists_of_lengthsR   R   R   t   max_xt   contigs_fpatht   lengthsR   t   lR   R   R   t   reference_lengtht   fpathRq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   cumulative_plot   s:    	 	(
c   $      C   s^  t  r t j d | d  n  g  } d } t t j |  j    }	 g  }
 g  } t d   | j   D  d } g  } x1| D])} | | } | | } | s~ | r q~ n  | j |  d } g  } g  } xP t	 | |  D]? \ } } | d k r | | 7} q | j |  | j |  q Wt
 t	 | |  d d   d t } g  | D] } | d ^ qI} g  | D] } | d ^ qf} g  } g  } x t |  D] } d } | } xT t	 | |  D]C \ } } | | | k r| | 7} | | 7} | | k rPqqqW| j |  | j | d	 |	  | j | d  | j | d	 |	  qW|
 j |  | j |  t | t |   } t |  \ } }  | j t | | | |    q~ Wt j rd
 d l m }! |! j |  |
 | d | |  n  t  rZd | d } g  | D] }" t |"  ^ q}# t | | | |# d d d d d d | g d d t d |  g n  d  S(   Ns
     Drawing s    FRCurve plot...i    c         s   s   |  ] } t  |  Vq d  S(   N(   t   sum(   t   .0t   feature_in_contigs(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pys	   <genexpr>#  s    i   t   keyc         S   s   |  d d |  d S(   Ni    g      ?i   (    (   t   tuple(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyRC   7  s    R   g      Y@i(   t
   html_savert   coords	   FRCurve (t   )R   s   Feature spaceR   s   Genome coverage (%)R   R   id   (   R   R   R   R   R
   R   R   R%   R   R   R   R<   R   R   R   R   t   html_reportt   quast_libs.html_saverR   t
   save_coordR   R   ($   t   results_dirt	   ref_fpathR   t   contigs_aligned_lengthst   features_in_contigs_by_fileR   R   R   RE   t
   ref_lengtht   json_vals_xt   json_vals_yt   max_featurest   aligned_contigs_fpathsR   t   aligned_lengthsR   t   len_with_zero_featuresR   t   non_zero_feature_in_contigsR   t   featuret   optimal_sorted_tuplesR   t   sorted_lengthst   sorted_featuresR   R   t
   features_nt   features_cntt   cumulative_lenR   R   R   R   Rq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   frc_plot  sn     



 	 t   Nxc         C   s  t  r t j d | d  n  g  } g  } g  }	 x0t t | |   D]\ }
 \ } } | s~ | j g   |	 j g   qF n  | j d t  d g } | d g } d g } | d g } d } t |  } | r | |
 } n  d } | r t	 j
 } n  x | D] } | | 7} | d | } t  ra| j | d d  | j |  | j |  | j |  n  | d | | k st |  d	 k r | j | d d  | j |  | j |  | j |  q q W| j |  |	 j |  t  rF | j | d d  | j d  | j | d d  | j d  t |  \ } } | j t | | | |   qF qF Wt	 j rd d
 l m } | j |  | |	 d | |  n  t  sd  Sg  | D] } t |  ^ q} t | | | | d d d d d d d g d  S(   Ns
     Drawing s    plot...R   g        i    g      Y@ig|=i   (   R   R   R   RA   R   s   Contig lengthR   id   (   R   R   R   t	   enumerateR   R   t   sortR<   R   R   t   min_differenceR   R   R   R   R   R   R   R   R   (   R   t   reduce_pointsR   R   R   R   t   reference_lengthsR   R   R   t   idR   R   t   vals_xt   vals_yt   vals_Nxt   vals_lt   lcurt   lsumR   R   RA   R   R   R   R   Rq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   Nx_plot^  sf    (		
&#	 c         C   sk  t  s t j r d  Sd } t j d | d  g  } | } |  rQ | |  g } n  x t |  D] \ } \ } }	 x3 t |	  D]% \ }
 } | d k r} d |	 |
 <q} q} W|  r | t |  d k r t } t } n t	 | |  \ } } | j
 t | |	 | |   q^ Wg  | D] } t |  ^ q} |  r<| d g 7} n  t | | | | d d	 d
 d d d d g d  S(   Ns
   GC contents
     Drawing s    plot...i    g?i   R   R   s   GC (%)R   s	   # windowsR   id   (   R   R   t   no_gcR   R   R   R   R   R   R   R   R   R   R   (   R   R   t   list_of_GC_distributionsR   R   R   t
   all_fpathst   it   GC_distribution_xt   GC_distribution_yt   id2t   vR   R   R   Rq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   GC_content_plot  s*    	 c         C   s   t  s t j r d  St |   d } t j d | d  g  } t |   \ } } | \ } } x< t | |  D]+ \ }	 }
 | j t	 |	 |
 | d d  qm Wt |   g } t
 | | | | d d d d	 d
 d d g d  S(   Ns    GC contents
     Drawing s    plot...R.   i   R   s   GC (%)R   s	   # contigsR   i    id   (   R   R   R   R   R   R   R   R   R   R*   R   (   R   t   GC_distributionsR   R   R   R   R   R   R   t   GC_xt   GC_yRq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   contigs_GC_content_plot  s    #c      	   C   s  t  s
 d  St j d | d  g  } d } x | D] } | | } t t t |  d   }	 d g }
 d } x% | D] } | | 7} |
 j |  qt Wt |	  d k r t |	 d |  } n  t |  \ } } | j t	 |	 |
 | |   q2 W|  r | j t	 d | g |  |  g t
 t   n  d | } g  | D] } t |  ^ q1} |  r_| d g 7} n  t | | | | d d	 d
 | d  S(   Ns
     Drawing s    cumulative plot...i    i   is   Cumulative # complete R   R   s   Contig indexR   (   R   R   R   R5   R   R   R   R%   R   R   R   R   R   R   (   t   reference_valueR   t   files_feature_in_contigsR   R   R   R   R   R   R   R   t
   total_fullt   feature_amountR   R   R   Rq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   genes_operons_plot  s0    
	
 +
c         C   sg  t  s
 d  St |   d k  r5 t j d | d  d  St j d | d  g  } t |  d } t | d t d }	 d  }
 |	 | k r |	 d k r t j d t j	 t j
 |	 d    }
 q d	 }
 n+ t j d t j	 t j
 |	 | d    }
 | st j	 | |
  d
 |
 } n  | s:t j |	 |
  d	 |
 } n  d } | d } | d } x t t |  |   D]p \ } \ } } t |  \ } } | t k rd } n d } | j t | | | | | | d | d |  qjWg  |  D] } t |  ^ q} t | | | | d d d | d t d d | | t |   | t |   d	 g d t | d  | g d  S(   Ni   s     Skipping drawing s<    histogram... (less than 2 columns histogram makes no sense)s
     Drawing s    histogram...i    R   i
   i   i   g333333?i   R   RA   R.   R0   R   R   R=   R   R   (   R   R   R   R   R   R<   R)   R   t   powt   floorRX   R   R   R   R   t   primary_line_styleR   R*   R   R   R%   (   R   R   R   R   t   yaxis_titlet   bottom_valuet	   top_valueR   t	   min_valuet	   max_valuet   exponentR.   t   intervalt	   start_posR   R   t   valR   R   R0   R   Rq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt	   histogram  s@    *	+

(	5$,c	   "      C   s7  t  s
 d  St j d | d  g  }	 d }
 t d   | D  } t t d |   } d } | g | } | r | r | j | d  d | d <n  g  | D] } t | | |  ^ q } | r g  | D] } | d ^ q } d | d <d | d <n  xdt t	 |  |   D]M\ } \ } } t t |  |
  }
 t
 |  \ } } | rx| t	 | | |  D]h \ } } } | d	 k r|	 j t | | | d
 | d d d d  q\|	 j t | | | d
 |  q\W|	 j t d d d |  q
| j | d  g  | D] } | d ^ q} | d c d 7<|	 j t | | d  d d d d d | d |  q
Wt d t |  d  } | d  d  |  } | d  d  |  } | r| j d d  n  | r:| r| | | d } n | | d	 } g  | D] } | | k  r| ^ q} | t |   } | j |  | j t |   n  x~ t t |  d d d  D]` } | | | | d } } x> | d | k r| d 8} | j | |  | j | d  qyWqWWg  |  D] } t |  ^ q} d }  d }! t | | |	 | d |  d |! d t d d t |  g d d |
 d  g d! | d  S("   Ns
     Drawing s   ...i    c         s   s   |  ] } t  |  Vq d  S(   N(   R   (   R   R   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pys	   <genexpr>,  s    g      ?i   g       @ii   R.   R1   s   #595959R0   RA   R   g      ?R   t   oR   i   R   i
   i   R   s   Coverage depth (x)s   Total lengthR   R   R=   R   R   g?R   (   R   R   R   R%   R5   R   R   t   strR   R   R   R*   R   R   t   insertR   R   R<   ("   R   R   R   R   t   bin_sizet	   draw_barst   max_covt   low_thresholdt   high_thresholdR   RE   R   R   t	   bar_widtht
   bar_widthsR,   t   x_ticks_labelsR   R   R   R   R   R-   t   plot_x_valst   x_factorR   t	   last_tickRA   R  t   prev_valR   Rq   R[   RD   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   coverage_histogram#  sl    '
(".#6%#
$c   '      C   s  t  r |
 j d | d  n  g  } t |  } t |  } d } g  } g  } g  } g  } x t |  D] } g  } g  } t t d | d   } x t |  D] } | | c d | | d d 7<| j | |  | | | r| | | d k r| j t | | |   q |	 r,| j d  q | j d   q W| j |  | j |  qg Wg  } x t |  D] } g  t |  D]* } | t | |  k  r| | | ^ q} g  t t |   D]  } | | d  k	 r| | ^ q} | s|	 rn| j |  | j t t t	 d  |    d t |   | j | |  qnqnWg  } g  } t
 j st t | | |  d	 | d
 d   } g  t d  D]# } g  | D] } | | ^ q^ q\ } } } n  x t |  D] } g  t t |   D] } | | | ^ q}  g  t t |   D] } | | | ^ q} t | t |   } t d  | |  \ }! }" | j t |  | d |! d d d d d d  t
 j s| j |   | j |  qqWg  | D] }# |# ^ q}$ t
 j rt t | | |  d	 | d
 d   } g  t d  D]# } g  | D] } | | ^ q^ q\ } }$ } x t |  D]z } g  t t |   D] } | | | ^ qj}  g  t t |   D] } | | | ^ q} | j |   | j |  qQWn  t
 j r|  rd d l m }% |% j |  | | | | j d d  | |$  n  t  r| }& t | | | |& d | d t d d g | d t d d t |  d g d t d  |
 n  d  S(!   Ns
     Drawing s    metaQUAST summary plot...i    i   gQ?g      ?t   -g      ?R   R   c         S   s   |  d S(   Ni    (    (   RA   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyRC     s    i   R   R   t   dottedR   R  R   i   c         S   s   |  d S(   Ni    (    (   RA   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyRC     s    i(   R   t    t   _R   RR   R   R   R   R   R   R   (   R   R   R   R   R5   R   R   R)   R   t   filterR   t   use_input_ref_orderR   R   R%   R   R   R   R   R   t   save_meta_summaryt   replaceR   R<   Rb   ('   t
   html_fpatht   output_dirpatht   labelst	   ref_namest   resultsR   R   R   R  t   print_all_refsR   R   t   ref_numt   contigs_numRE   t   arr_xt   arr_yt   mean_valuest   arr_y_by_refst   jt	   to_plot_xt	   to_plot_yt   arrR   t   selected_refst   points_yt   kt   significant_points_yt   json_points_xt   json_points_yt   sorted_valuesRA   t   points_xR   R   t   rt   refs_for_htmlR   Rq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   draw_meta_summary_ploth  s     "=90	'B--.		'?--c         C   s  t  r t j d | d  n  g  } t |  } t |  d t d  k r] | d  d } n  t j j t j j t j j g } g  } d }	 t	 t
 d | d   }
 d } g  } g  } x\t
 |  D]N} d } g  } d } x t |  d k r| t |  k  r|  | | r!|  | | | n d  } | r| d k r| j t |   t  r| j t |
 | | d t | d | d	 d
  | j |  t | d  } n  | j |
 |  | j | d  n  | d 7} q Wx t
 | t |   D] } |  | | | } | r| d k r| j t |   t  r| j t |
 | | d t | d | d	 d
 d t | d    | j |  | t | d  7} n  | j |
 |  | j | d  qqW| rt |	 |  }	 q x8 t
 t |   D]$ } | j |
 |  | j d  qWq Wt  rt |  } g  t |  D] } | | ^ q3} t | | | | d t d d g | d t d d | d g d t d t n  | | f S(   Ns3     Drawing metaQUAST summary misassemblies plot for s   ...ix   i    i   g333333?R  R.   R2   t   centeriR/   RR   R   R   R   R   R   R   (   R   t   meta_loggerR   R   R   t   Fieldst   MIS_RELOCATIONt   MIS_TRANSLOCATIONt   MIS_INVERTIONR5   R   R)   R   t   floatR*   R   R   R%   t   setR   R   R<   Rb   (   R)  R(  t
   contig_numR   R   R   t   refs_numt   misassembliest   legend_nRE   R-  R  R9  R:  R1  t   yt   to_plott   type_misassemblyt   resultR   Rq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt$   draw_meta_summary_misassemblies_plot  sb    !'&1A#+ c         C   ss  t  s
 d  St j d  g  } t |   } g  } x4 t |  D]& } | j |  | j t j j	   q< Wt j j
 t j j t j j t j j g } g  }	 t t d t |   d   }
 g  } g  } xt t |    D]} | j g  t t |   D] } d ^ q  | j g  t t |   D] } d ^ q d } d } x t | |  d k r| t |  k  r|  | j | |  } | r| d k rt |  | | | <|
 | d | t |  d | | | <|	 j |  t |  } n  | d 7} qAWx t | t |   D] } |  | j | |  } | r| d k rt |  | | | <|
 | d | t |  d | | | <|	 j |  | t |  7} qqWq Wx t t |   D] } g  t |  D]( } | | | d k r| | | ^ q} g  t |  D]( } | | | d k r| | | ^ q} | r| r| j t | | d t | d d	 d
 d  qqWxt t |    D]} | | rg  t t |   D] } | | | ^ q} g  t t |   D]( } | | | d k r| | | ^ q} t |  d k rd } x | | d k r8| d 7} qW|
 | d t |  d } | j t | | | d t d d d	 d
 d  | d 7} xw t | t | |   D]Y } | | d k r| j t | | | d t | d d	 d
 d d t | |    qqWqqqWt |	  }	 g  t |	  D] } | | ^ q)} t | | | | d d g | d d | d g d  S(   Ns(     Drawing misassemblies by types plot...i   i    R  gQ?g      ?R   R.   g?R2   R@  R/   R   R   R   (   R   R   R   R   R   R   t	   get_fieldR   RB  t   NAMERC  RD  RE  t   MIS_ISTRANSLOCATIONSR5   RF  R*   R   R   RG  R   R   (   t   reportsR   R   R  R   R,  R'  R1  RJ  RK  t
   main_arr_xR-  R.  RA   RL  RN  RO  R   R<  R6  R8  t   point_xRq   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   draw_misassemblies_plot  sp    $,,+((;;3
-A0
 Q#c         C   s  t  s t |  d k r d  Sd } d } d } d } d } | | }	 t |  }
 t t d | |  | } |
 |	 d | } | | t |  } t j d	 | | f  } t j d
 t  t j d  t j	 d t | d  d t |  d t d |	  | |  j
 d d  j    t j	 d t | d  d t |  d |  | d d } g  | d D] } | d ^ qc} g  | d D] } | d ^ q} t j d | d | d | d g  | d D] } t |  t |  ^ qd d d d d d d d  t j |  t j   d  S(   Ni   g      (@g       @g      $@g?g{Gz?R   i   t   figsizeR   t   offg      ?i    g      ?R   R  t   cellTextt	   rowLabelst	   colLabelst	   colWidthst   rowLoct   leftt   colLocR@  t   cellLoct   rightRg   (   R   R   RF  R   R   R"   R   R   t   axist   textR$  t
   capitalizet   tableR   R   R   (   t   report_namet
   extra_infot   table_to_drawt   column_widthst	   font_sizet
   font_scalet   external_font_scalet   letter_height_coefft   letter_width_coefft
   row_heightt   nrowst   external_text_heightt   total_heightt   total_widthR   R\  t   itemR[  t
   restValuest   column_width(    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   draw_report_table1  s4    
%./!!-c         C   sr   t  s |  r d  St t  r6 t d g t d  a n  t j rX t t |  f g d  n
 t |   g  a g  a d  S(   Nii   (   R   R   R   R   R   R   R   R   (   R   (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   fill_all_pdf_fileZ  s    	
(N   t
   __future__R    R   R$   R  t   secondary_line_styleRr   R<   RQ   R   R\   R   R   Rb   Rd   R   t   syst
   quast_libsR
   R   R   t   quast_libs.logR   R   t   quast_libs.qutilsR   R   R   t   quast_libs.plotter_dataR   R   t   main_loggert   LOGGER_DEFAULT_NAMER   t   LOGGER_META_NAMERA  R   t
   draw_plotsR9   t   uset   __version__t
   startswithR   R   t   stderrt   opent   matplotlib.pyplott   pyplotR"   t   matplotlib.tickerRp   R   R   t   objectR   R*   R@   RG   RU   Rf   R)   Rt   R   R   R   R   R   R   R   R   R   R  R  R?  RP  RW  Rx  Ry  (    (    (    s@   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/plotter.pyt   <module>   s   

		$		
				$	'	D?	!		%	-DN9A	)