3
bʇ                 @   sh  d dl mZ dddddZdZdZd	Zd
ZdZdZdZ	dZ
d	Zd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!dZ"ej#r`ytd dl$Z$e$j%d e$j&j'dse$j&j'drej(d ej)d n.ej*Z*e+dde_*d dl,j-Z.d dl/Z$e*e_*dZ"W n* e0k
r^   ej(d ej)d Y nX g a1g a2G dd de3Z4G dd de3Z5d d! Z6d"d# Z7dKd$d%Z8dLd&d'Z9dMd(d)Z:d*d+ Z;d,d- Z<ddddddddddefd.d/Z=d0d1 Z>d2d3 Z?dNd5d6Z@d7d8 ZAd9d: ZBd;d< ZCdOd=d>ZDdPd?d@ZEddddefdAdBZFdQdCdDZGdRdEdFZHdGdH ZIdIdJ ZJdS )S    )divisionz
sans-serifZnormalZmedium
   )familystyleZweightsizeg       @soliddashed   Tlargez#000000FN)fastaparserqconfig	reporting)
get_loggerget_main_logger)label_from_fpathparse_str_to_numrun_parallel)get_color_and_lscolorsZAgg0z1.0 zYCan't draw plots: matplotlib version is old! Please use matplotlib version 1.1 or higher.z	/dev/nullwz<Can't draw plots: python-matplotlib is missing or corrupted.c               @   s&   e Zd Zd	ddZdd Zdd ZdS )
PlotN   c             C   s,   ||||||f\| _ | _| _| _| _| _d S )N)x_valsy_valscolorlsmarker
markersize)selfr   r   r   r   r   r    r!   </home/psgendb/BIRCHDEV/pkg/quast-5.2.0/quast_libs/plotter.py__init__Q   s    zPlot.__init__c          	   C   s(   t j| j| j| j| jt| j| jd d S )N)r   r   Zlwr   r   )	pltplotr   r   r   r   
line_widthr   r   )r    r!   r!   r"   r%   T   s    z	Plot.plotc             C   s
   t | jS )N)maxr   )r    r!   r!   r"   	get_max_yX   s    zPlot.get_max_y)Nr   )__name__
__module____qualname__r#   r%   r(   r!   r!   r!   r"   r   P   s   
r   c               @   s&   e Zd ZdddZdd Zd	d
 ZdS )Bar皙?Nr   edgec	       	   	   C   s8   ||||||||f\| _ | _| _| _| _| _| _| _d S )N)x_valy_valr   widthbottomhatch	edgecoloralign)	r    r/   r0   r   r1   r2   r3   r4   r5   r!   r!   r"   r#   ]   s    zBar.__init__c          
   C   s.   t j| j| j| j| j| j| j| j| j	d d S )N)r1   r5   r   r4   r3   r2   )
r$   Zbarr/   r0   r1   r5   r   r4   r3   r2   )r    r!   r!   r"   r%   a   s    zBar.plotc             C   s2   t | jtrt| jS | jr(| j| j S | jS d S )N)
isinstancer0   listr'   r2   )r    r!   r!   r"   r(   e   s
    
zBar.get_max_y)r-   Nr   Nr.   )r)   r*   r+   r#   r%   r(   r!   r!   r!   r"   r,   \   s   
r,   c             C   s8   t jjddd}t jjdd| r(dddgnd d}||fS )N   T)nbinsintegerr      r   )r9   r:   Zsteps)
matplotlibtickerZMaxNLocator)is_histogramxLocatoryLocatorr!   r!   r"   get_locatorso   s     rA   c             C   sL   |dkrdd }| d7 } n*|dkr4dd }| d7 } nd	d }| d
7 } | |fS )Nr;   g     @@c             S   s   d| d  S )Nz%dr   r!   )xposr!   r!   r"   <lambda>w   s    zy_formatter.<locals>.<lambda>z (bp)g    .Ac             S   s   d| d  S )Nz%dgMbP?r!   )rB   rC   r!   r!   r"   rD   z   s    z (kbp)c             S   s   d| d  S )Nz%dgư>r!   )rB   rC   r!   r!   r"   rD   }   s    z (Mbp)g     @g    SAr!   )ylabelmax_ymkfuncr!   r!   r"   y_formatteru   s    

rH   c             C   s   t j }|jd |j }| rB|j|j|j|jd |jd g n(|j|j|j|jd  |j|jd g |j	j
t t j
t |S )NTg?g      ?g?)r$   ZgcaZset_axisbelowZget_positionZset_positionZx0Zy0r1   heightyaxisZgrid	with_grid)vertical_legendaxZboxr!   r!   r"   set_ax   s    
$(
rN   c       
      C   s   |r2d|kr2t ||\}}tjj|}|jj| | rDtj| td |rVtj	|td t
|\}}	|jj|	 |jj| |r|  r|jj jd |r|jd d S )Nlength)ZfontsizeFlog)rH   r<   r=   ZFuncFormatterrJ   Zset_major_formatterr$   xlabelaxes_fontsizerE   rA   Zset_major_locatorZxaxisZaxesZ	get_xaxisZset_visibleZ
set_xscale)
rQ   rE   rF   rM   logarithmic_x_scaler>   rG   Zmkformatterr?   r@   r!   r!   r"   
add_labels   s    
rT   c             C   sv   y\|r| j |dddddd}n"| j |dddd|d
k r8|nd
d}x|jD ]}|jd qHW W n tk
rp   Y nX d S )Nzcenter left      ?      ?Tr   )locbbox_to_anchorfancyboxshadowZ	numpointszupper center\(\?g333333?   )rW   rX   rY   rZ   Zncolr   )rU   rV   333333ÿ)r[   r]   )legendZlegendHandlesZ	set_hatch	Exception)rM   legend_list	n_columnsrL   r^   handler!   r!   r"   
add_legend   s    rc   c             C   s   yddl m} || }W n   tjd d S xtD ]}|j|dd q4W xtD ]}|j| qPW y@|j }d|d< d|d	< dd l}|jj	 |d
< |jj	 |d< W n t
k
r   Y nX |j  tjd d S )Nr   )PdfPagesz/PDF with all tables and plots cannot be createdtight)bbox_incheszQUAST full reportZTitleZQUASTZAuthorZCreationDateZModDateall)Zmatplotlib.backends.backend_pdfrd   loggerwarningpdf_tables_figuressavefigpdf_plots_figuresZinfodictdatetimenowAttributeErrorcloser$   )all_pdf_fpathrd   Zall_pdf_filefiguredrm   r!   r!   r"   save_to_pdf   s*    


rt   c             C   s   t j| dd d S )Nre   )rf   )r$   rk   )
plot_fpathr!   r!   r"   	save_plot   s    rv   c             C   sB  t j }t jdt d}t|}x"|D ]}t||j }|j  q&W |rXt||t	|d t
|||||d |rxt j| |	pdtdttj|d g}	t j|	 |
rt jtt|
|
d|rdnd d	 tst j  d S trt j| | d
tj 7 } tjrtt| fgd nt|  |jd|   |r4tj| t jd d S )Nfontr   )ra   rL   )r>   r;   g?ZsmallZvertical)r   Zrotation.   z    saved to rg   )rw   )r$   Zgcfrcrw   rN   r'   r(   r%   rc   ra   rT   ZxlimintmathceilZylimZxticksrangelencan_draw_plotsrp   
with_titletitler   plot_extensionis_combined_refr   rv   inforl   append)ru   r   plotsr`   x_labely_labelrL   r>   x_limity_limitx_ticksvertical_ticksadd_to_reportrh   rr   rF   rM   r%   r!   r!   r"   create_plot   s:    

 
"

r   c          	   C   sn  t sd S tjd g }d}xt||D ]z\}}dg}	x&t|ddD ]}
|	j|	d |
  qBW ttdt|	}|rt	|d |}t
|\}}|jt||	|| q&W | r2dg}	x0ttj| j ddD ]}
|	j|	d |
  qW ttdt|	}|	d }t	||d }|	j| |j| |jt||	tt dd |D }| rP|dg7 }t||||d	d
d|gd d S )Nz  Drawing cumulative plot...r   T)reverser   c             S   s   g | ]}t |qS r!   )r   ).0fpathr!   r!   r"   
<listcomp>  s    z#cumulative_plot.<locals>.<listcomp>	ReferencezContig indexzCumulative length)r   r   r   r   r   r   r   )r   rh   r   zipsortedr   r7   r~   r   r'   r   r   r   get_chr_lengths_from_fastafilevaluesreference_colorreference_lsr   )	referencecontigs_fpathslists_of_lengthsru   r   r   max_xcontigs_fpathlengthsr   lr   r   r   Zreference_lengthr`   r!   r!   r"   cumulative_plot   s:    



r   c       "      C   sh  t rtjd| d  g }d}ttj|j }	g }
g }tdd |j D d }g }x|D ]}|| }|| }| s^| rq^|j| d}g }g }x<t	||D ].\}}|dkr||7 }q|j| |j| qW t
t	||dd d	d
}dd |D }dd |D }g }g }xt|D ]}d}|}xBt	||D ]4\}}|| |kr4||7 }||7 }||kr4P q4W |j| |j|d |	  |j|d  |j|d |	  qW |
j| |j| t|t|}t|\}}|jt|||| q^W tjrddlm}  | j| |
|d| | t rdd| d }dd |D }!t||||!ddd|gdtd|gd d S )Nz
  Drawing z FRCurve plot...r   c             s   s   | ]}t |V  qd S )N)sum)r   feature_in_contigsr!   r!   r"   	<genexpr>#  s    zfrc_plot.<locals>.<genexpr>r   c             S   s   | d d | d  S )Nr   g      ?r   r!   )tupler!   r!   r"   rD   7  s    zfrc_plot.<locals>.<lambda>T)keyr   c             S   s   g | ]}|d  qS )r   r!   )r   r   r!   r!   r"   r   8  s    zfrc_plot.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r   r!   )r   r   r!   r!   r"   r   9  s    g      Y@)
html_savercoordz	FRCurve ()c             S   s   g | ]}t |qS r!   )r   )r   r   r!   r!   r"   r   X  s    zFeature spacezGenome coverage (%)d   )r   r   r   r   )r   rh   r   r   r   r   r   r'   r   r   r   r~   r   r   r   html_reportquast_libs.html_saverr   
save_coordr   )"results_dir	ref_fpathr   contigs_aligned_lengthsZfeatures_in_contigs_by_fileru   r   r   rF   Z
ref_lengthjson_vals_xjson_vals_yZmax_featuresaligned_contigs_fpathsr   Zaligned_lengthsr   Zlen_with_zero_featuresr   Znon_zero_feature_in_contigsr   featureZoptimal_sorted_tuplesZsorted_lengthsZsorted_featuresr   r   Z
features_nZfeatures_cntZcumulative_lenr   r   r   r`   r!   r!   r"   frc_plot  sn    







r   Nxc          	   C   s(  t rtjd| d  g }g }g }	xtt||D ]\}
\}}|s\|jg  |	jg  q4|jdd dg}|d g}dg}|d g}d}t|}|r||
 }d}|rtj	}x|D ]}||7 }|d | }t r|j|d d	  |j| |j| |j| |d | |ks t
|dkr|j|d d	  |j| |j| |j| qW |j| |	j| t r4|j|d d	  |jd |j|d d	  |jd t|\}}|jt|||| q4W tjrdd
lm} |j| ||	d| | t sd S dd |D }t||||ddddgd d S )Nz
  Drawing z plot...T)r   g        r   g      Y@r   g|=)r   r   c             S   s   g | ]}t |qS r!   )r   )r   r   r!   r!   r"   r     s    zNx_plot.<locals>.<listcomp>rB   zContig lengthr   )r   r   r   r   r   r   r   r   )r   rh   r   	enumerater   r   sortr   r   min_differencer   r   r   r   r   r   r   r   )r   Zreduce_pointsr   r   ru   r   Zreference_lengthsr   r   r   idr   r   Zvals_xZvals_yZvals_NxZvals_lZlcurZlsumr   r   rB   r   r   r   r`   r!   r!   r"   Nx_plot^  sf     













r   c          	   C   s   t  stjrd S d}tjd| d  g }|}| r<|| g }xt|D ]t\}\}}	x$t|	D ]\}
}|dkr\d|	|
< q\W | r|t|d krt}t}nt	|| \}}|j
t||	|| qFW dd |D }| r|d	g7 }t||||d
dddgd d S )Nz
GC contentz
  Drawing z plot...r   g?r   c             S   s   g | ]}t |qS r!   )r   )r   r   r!   r!   r"   r     s    z#GC_content_plot.<locals>.<listcomp>r   zGC (%)z	# windowsr   )r   r   r   )r   r   no_gcrh   r   r   r   r   r   r   r   r   r   )r   r   Zlist_of_GC_distributionsru   r   r   Z
all_fpathsiZGC_distribution_xZGC_distribution_yZid2vr   r   r`   r!   r!   r"   GC_content_plot  s*    

r   c          	   C   s   t  stjrd S t| d }tjd| d  g }t| \}}|\}}x,t||D ]\}	}
|jt	|	|
|dd qRW t| g}t
||||dddd	gd
 d S )Nz GC contentz
  Drawing z plot...r;   )r1   zGC (%)z	# contigsr   r   )r   r   r   )r   r   r   r   rh   r   r   r   r   r,   r   )r   ZGC_distributionsru   r   r   r   r   r   r   ZGC_xZGC_yr`   r!   r!   r"   contigs_GC_content_plot  s    
r   c             C   s  t sd S tjd| d  g }d}x|D ]}|| }ttt|d }	dg}
d}x|D ]}||7 }|
j| qXW t|	dkrt|	d |}t|\}}|jt	|	|
|| q(W | r|jt	d|g| | gt
t d| }dd |D }| r|dg7 }t||||d	|d
 d S )Nz
  Drawing z cumulative plot...r   r   zCumulative # complete c             S   s   g | ]}t |qS r!   )r   )r   r   r!   r!   r"   r     s    z&genes_operons_plot.<locals>.<listcomp>r   zContig index)r   r   r   )r   rh   r   r7   r~   r   r   r'   r   r   r   r   r   )Zreference_valuer   Zfiles_feature_in_contigsru   r   r   r   r   r   r   r   Z
total_fullZfeature_amountr   r   r`   r!   r!   r"   genes_operons_plot  s0    


r   c             C   s  t sd S t| dk r*tjd| d  d S tjd| d  g }t|d }t|ddd }	d }
|	|kr|	dkrtjd	tjtj|	d	}
qd
}
ntjd	tjtj|	| d	}
|stj||
 d |
 }|stj	|	|
 d
 |
 }d}|d }|d }xdt
t| |D ]R\}\}}t|\}}|tkr0d}nd}|jt||| |  ||||d qW dd | D }t||||d|dd||t|   |t| d
   gt|d|gd	 d S )Nry   z  Skipping drawing z< histogram... (less than 2 columns histogram makes no sense)z
  Drawing z histogram...r   T)r   r   r   r;   g333333?r\   r   rB   )r1   r3   c             S   s   g | ]}t |qS r!   )r   )r   r   r!   r!   r"   r     s    zhistogram.<locals>.<listcomp>)r   r   r>   r   r   )r   r   rh   r   r   r|   powfloorrP   r}   r   r   r   primary_line_styler   r,   r   r'   )r   r   ru   r   yaxis_titleZbottom_valueZ	top_valuer   	min_value	max_valueZexponentr1   intervalZ	start_posr   r   valr   r   r3   r`   r!   r!   r"   	histogram  s@    
*"r   c	                s  t sd S tjd| d  g }	d}
tdd |D }ttd|}d}|g| }|rn|rn|j|d  d|d <  fd	d
|D }rdd
 |D }d|d< d|d<  xtt| |D ]\}\}}tt||
}
t	|\}}|rPxVt|||D ]F\}}}|dkr |	jt
||||ddd q|	jt
||||d qW |	jt
dd|d q|j|d!  dd
 |D }|d"  d7  < |	jt||d d# dd||d qW tdt|d }|d d | }|d d | }r|jdd |rFr |   d n|  d fdd
|D }|d t| }|j |jt| xjtt|d dd$D ]R}|| ||d   }}x4|d |kr|d8 }|j|| |j|d qxW q\W dd
 | D }d}d}t|||	|||ddt|gd|
d g|d
 d S )%Nz
  Drawing z...r   c             s   s   | ]}t |V  qd S )N)r   )r   r   r!   r!   r"   r   ,  s    z%coverage_histogram.<locals>.<genexpr>g      ?r   g       @c                s   g | ]}t |   qS r!   )str)r   r/   )bin_sizelow_thresholdr!   r"   r   3  s    z&coverage_histogram.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r   r!   )r   r/   r!   r!   r"   r   5  s    ry   z#595959rB   )r1   r4   r3   )r1   )r   c             S   s   g | ]}|d  qS )g      ?r!   )r   r/   r!   r!   r"   r   E  s    or\   )r   r   r   r   r   r	   c                s   g | ]}| k r|qS r!   r!   )r   rB   )	last_tickr!   r"   r   T  s    r   c             S   s   g | ]}t |qS r!   )r   )r   r   r!   r!   r"   r   _  s    zCoverage depth (x)zTotal lengthTg?)r   r   r>   r   r   r   r   r   r   r   r   )r   rh   r   r'   r7   r~   r   r   r   r   r,   r   r   insertr   r   )r   r   ru   r   r   Z	draw_barsZmax_covr   Zhigh_thresholdr   rF   r   r   	bar_widthZ
bar_widthsZx_ticks_labelsr   r   r   r   r   r/   r0   Zplot_x_valsZx_factorr   r   Zprev_valr`   rQ   rE   r!   )r   r   r   r"   coverage_histogram#  sl    

&
r   c                s  t r|
jd| d  g }t|}t|}d}g  g g }g xt|D ]g }g }ttd|d }xt|D ]|  d|d d   7  < |j|  |  r|  dkr|jt|   qp|	r|jd qp|jd  qpW  j| j| qHW g }xt|D ]fdd	t|D fd
d	ttD }|s\|	rj |jtttd d t  |j|  qW g }g }t	j
stt|||dd dfdd	tdD \}}xt|D ] fdd	ttD }fdd	ttD t|t}td | \}}|jt||dddd t	j
s|j| |j qW dd	 |D }t	j
r2tt|||dd dfdd	tdD \}}x^t|D ]R fdd	ttD }fdd	ttD |j| |j qW t	jrj| rjddlm} |j| ||||jdd|| t r|}t|||||dd g| ddt|d gd!|
d" d S )#Nz
  Drawing z metaQUAST summary plot...r   r   gQ?g      ?-c                s(   g | ] }t  | k r |  qS r!   )r   )r   j)arr_yr   r!   r"   r     s    z*draw_meta_summary_plot.<locals>.<listcomp>c                s    g | ]} | d k	r | qS )Nr!   )r   k)points_yr!   r"   r     s    g      ?c             S   s   | d S )Nr   r!   )rB   r!   r!   r"   rD     s    z(draw_meta_summary_plot.<locals>.<lambda>)r   r   c                s   g | ]  fd dD qS )c                s   g | ]}|  qS r!   r!   )r   rB   )r   r!   r"   r     s    z5draw_meta_summary_plot.<locals>.<listcomp>.<listcomp>r!   )r   )sorted_values)r   r"   r     s    r\   c                s   g | ]}  | qS r!   r!   )r   r   )arr_xr   r!   r"   r     s    c                s   g | ]} |  qS r!   r!   )r   r   )arr_y_by_refsr   r!   r"   r     s    Zdottedr      )r   r   r   r   c             S   s   g | ]}|qS r!   r!   )r   rr!   r!   r"   r     s    c             S   s   | d S )Nr   r!   )rB   r!   r!   r"   rD     s    c                s   g | ]  fd dD qS )c                s   g | ]}|  qS r!   r!   )r   rB   )r   r!   r"   r     s    z5draw_meta_summary_plot.<locals>.<listcomp>.<listcomp>r!   )r   )r   )r   r"   r     s    c                s   g | ]}  | qS r!   r!   )r   r   )r   r   r!   r"   r     s    c                s   g | ]} |  qS r!   r!   )r   r   )r   r   r!   r"   r     s    )r    _Tr   F)r   rL   r   r   r   r   rh   )r   r   r   r~   r7   r   r   r   filterr   use_input_ref_orderr   r   r'   r   r   r   r   r   Zsave_meta_summaryreplacer   )
html_fpathoutput_dirpathlabels	ref_namesresultsru   r   r   r   Zprint_all_refsrh   r   Zref_numcontigs_numrF   Zmean_valuesZ	to_plot_xZ	to_plot_yZarrZselected_refssignificant_points_yjson_points_xjson_points_ypoints_xr   r   Zrefs_for_htmlr   r`   r!   )r   r   r   r   r   r   r   r"   draw_meta_summary_ploth  s     

$


r   c                s  t rtjd| d  g }t|}t|dtd krF|d d d }tjjtjjtjjg g }d}t	t
d|d }	d}
g }g }xt
|D ]}d}g }d}xt|dko|t k r^| | | r| | | | nd }|o|dkrT|jt| t r8|jt|	| |d t| |
dd	 |j| t|d }|j|	|  |j|d  |d7 }qW xt
|t D ]}| | | | }|rp|dkrp|jt| t r|jt|	| |d t| |
dt|d d d
 |j| |t|d 7 }|j|	|  |j|d  qpW |r(t||}qx.t
t D ]}|j|	|  |jd q6W qW t rt|} fddt|D }t||||ddg| dd|d gdtd
 ||fS )Nz3  Drawing metaQUAST summary misassemblies plot for z...x   r   r   g333333?r   center)r1   r5   )r1   r5   r2   c                s   g | ]} | qS r!   r!   )r   r   )misassembliesr!   r"   r     s    z8draw_meta_summary_misassemblies_plot.<locals>.<listcomp>Tr   F)rL   r   r   r   r   rh   r   r   r   r   )r   meta_loggerr   r   r   FieldsMIS_RELOCATIONMIS_TRANSLOCATIONMIS_INVERTIONr7   r~   r   floatr,   r   r   r'   setr   r   )r   r   Z
contig_numru   r   r   Zrefs_numlegend_nrF   r   r   r   r   r   yZto_plottype_misassemblyresultr   r`   r!   )r   r"   $draw_meta_summary_misassemblies_plot  sb     $
2
r   c                s  t sd S tjd g }t| }g }x(t|D ]|j|  jtjj	 q,W tjj
tjjtjjtjjgg }ttdt| d }g  g xptt| D ]^ jdd ttD  jdd ttD  d}	d}
xt  dko|
tk rr|  j|
 }|rh|dkrht| |
< | d|
td	      |
< |j|
 t|}	|
d7 }
qW xt|
tD ]r|  j }|r|dkrt| < | dtd	      < |j |	t|7 }	qW qW xnttD ]^ fd
dt|D }fddt|D }|r|r|jt||t ddd qW x$tt| D ] r~fddttD }fddttD }t|dkr~d}
x||
 dkr|
d7 }
qW | dtd	   }|jt|||
 td ddd |
d7 }
xXt|
t D ]B| dkrJ|jt|| t ddt|d  d qJW q~W t|}fddt|D }t||||dg| d|d gd d S )Nz(  Drawing misassemblies by types plot...r   c             S   s   g | ]}d qS )r   r!   )r   rB   r!   r!   r"   r     s    z+draw_misassemblies_plot.<locals>.<listcomp>c             S   s   g | ]}d qS )r   r!   )r   rB   r!   r!   r"   r     s    r   r   gQ?g      ?c                s(   g | ] } |  d kr |  qS )r   r!   )r   r   )r   r   r!   r"   r     s    c                s(   g | ] } |  d kr |  qS )r   r!   )r   r   )r   r   r!   r"   r     s    g?r   )r   r1   r5   c                s   g | ]}  | qS r!   r!   )r   r   )r   r   r!   r"   r     s    c                s(   g | ] }  | d kr  | qS )r   r!   )r   r   )r   r   r!   r"   r      s    )r   r1   r5   r2   c                s   g | ]} | qS r!   r!   )r   r   )r   r!   r"   r   -  s    r   )r   r   )r   rh   r   r   r~   r   	get_fieldr   r   NAMEr   r   r   MIS_ISTRANSLOCATIONSr7   r   r,   r   r   r   r   r   )reportsru   r   r   r   r   r   r   Z
main_arr_xr   r   r   r   r   r   Zpoint_xr`   r!   )r   r   r   r   r   r"   draw_misassemblies_plot  sp    

 $
$
"
 :r  c          
      s  t  st|dkrd S d}d}d}d}d}|| }	t|}
ttd | | | }|
|	 d|  }|| t  }tj||fd	}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d  }dd |dd  D }dd |dd  D }tj||| fdd dd  D ddddd tj| tj  d S )Nr   g      (@g       @g      $@g?g{Gz?r   ry   )Zfigsizerw   offg      ?r   g      ?r   r   c             S   s   g | ]}|d  qS )r   r!   )r   itemr!   r!   r"   r   Q  s    z%draw_report_table.<locals>.<listcomp>c             S   s   g | ]}|d d qS )r   Nr!   )r   r  r!   r!   r"   r   R  s    c                s   g | ]}t |t  qS r!   )r   r   )r   Zcolumn_width)column_widthsr!   r"   r   T  s    leftr   right)ZcellText	rowLabels	colLabelsZ	colWidthsZrowLocZcolLocZcellLocrW   )rw   )r   r   r   rw   r   r$   rr   rz   Zaxistextr   
capitalizetablerj   r   rp   )report_name
extra_infotable_to_drawr  Z	font_sizeZ
font_scaleZexternal_font_scaleZletter_height_coeffZletter_width_coeffZ
row_heightZnrowsZexternal_text_heightZtotal_heightZtotal_widthrr   r	  r  Z
restValuesr!   )r  r"   draw_report_table1  s4    
$&

r  c             C   sZ   t  s|  rd S ttr.td gtd d  atjrFtt| fgd nt|  g ag ad S )Nr   ry   r   r   )r   r   rj   r   r   r   rt   rl   )rq   r!   r!   r"   fill_all_pdf_fileZ  s    r  )F)FF)NF)r   N)r   r   NN)r   NNNNN)r   )r   r   )K
__future__r   rw   r&   r   secondary_line_stylera   rK   r   rR   r   r   rS   r|   sys
quast_libsr   r   r   quast_libs.logr   r   quast_libs.qutilsr   r   r   Zquast_libs.plotter_datar   r   Zmain_loggerLOGGER_DEFAULT_NAMErh   LOGGER_META_NAMEr   r   
draw_plotsr<   Zuse__version__
startswithr   ri   stderropenZmatplotlib.pyplotZpyplotr$   Zmatplotlib.tickerr_   rl   rj   objectr   r,   rA   rH   rN   rT   rc   rt   rv   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r!   r!   r!   r"   <module>   s   









$'D
?!% 
- 
DN
9
A)