3
ê6Ÿb/…  ã            
   @   sP  d dl Z d dlmZmZ d dlmZ d dlmZ eejƒZ	ye
 W n   eefZ
Y nX G dd„ dƒZd dlmZ eejƒZ	i Zg Zdd„ Zd	d
„ Zdd„ Zdd„ ZG dd„ deƒZd5dd„Zdd„ Zejdfdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd6d$d%„Z d&d'„ Z!d7d(d)„Z"d8d+d,„Z#d-d.„ Z$d/d0„ Z%d1d2„ Z&d3d4„ Z'dS )9é    N)ÚqconfigÚqutils)Ú
get_logger)Ú
val_to_strc            H   @   sª  e Zd ZdZdZdZdZdeej	ƒfZ
dZdZdeej	ƒfZd	Zd
ZdZdZdZdZdZdZdej ZdZdej ZdZdZdZdZdZdZdZ dZ!dZ"dZ#deej$ƒfZ%dZ&d Z'd!Z(d"Z)d#Z*d$Z+d%Z,d&Z-ed' Z.ed( Z/ed) Z0ed* Z1d"Z2ed+ Z3ed, Z4ed- Z5ed. Z6d#Z7d$Z8d/Z9d0Z:d1Z;d2Z<d3Z=ed4 Z>d5Z?d6Z@ed7 ZAed8 ZBed9 ZCed: ZDed; ZEed< ZFed= ZGed> ZHed? ZIed@ ZJdAZKdBZLdCZMdDZNd/ZOdEZPdFZQdGZRdHZSdIZTdJZUdKZVdLZWdMZXdNZYedO ZZedP Z[dQZ\dRZ]dSZ^dTZ_dUZ`dVZadWZbdXZcdYZddZZed[Zfd\Zgd]Zhd^Zid_Zjd`ej Zkdaej Zldbej Zmdcej Znddej Zodeej ZpdfZqdgZrdhZsdiZtdjZuedk Zvedl ZwdmZxdneejyƒfZzdoZ{dpZ|dqZ}drZ~dsZdtZ€duZdvZ‚dwZƒdxZ„dyZ…dzZ†d{Z‡d|Zˆd}Z‰d~ZŠdZ‹d€ZŒdZd‚ZŽdƒZd„eej$ƒfZd…Z‘d†Z’d‡Z“dˆZ”d‰Z•ee
eeeee~eeeeeeeekeeeeheene„e…e†eeˆeeŠe#ee&e‘e-e)e*e+eOe:e;e@e?eTeKeLe^e_e`e]eXeYeaebe|e}exeze{ecedefegelemeeeiejeoepeqereseugHZ–ee„e…e†eeeeee e!e"e#e%e‡eˆe‰eŠe‹eŒeeŽeegZ—e3e4e5e6gZ˜eAeBeCeDeEeFeGeHeIeJg
Z™ee2gZše7e8e=e>e9e:e;e<e@e?eTeUeVeZe[eWgZ›eše˜ e› Zœeše™ e› ZeePeQeReSe\gZžeeqereseteuevewgZŸdŠe^e_e`eaebecedeeekeefeleegemeeheneieoejepe|e}gfd‹eeeeee e!e"e#e%g
fdŒe-e.e/e0e1e2e3e4e5e6e7e8e=e>e9e:e;e@e?eTgfdePeQeReSgfdŽeXeUeYeVeZe[eWe]e\g	fdee
eeeeeeeeegfdeqereseteuevewgfd‘exeze{gfd’e”e•gfd“e~ee€ee‚eƒe„e…e†e‡eˆe‰eŠe‹eŒeeŽeegfg
Z eeeecedeeee-e2e8eXeYe]e^e_e`eee e"eaebe|e}egejexeze{e#e&eqeug"Z¡G d”d•„ d•ƒZ¢e¢j£eeeeeeecedeeeeekeeefegelemeee^e`eaebexeze{e|eeeeeqere#e%g$e¢j¤eeheeneOe)e*e+e,e-e2e=e>eKeLeMeNe\e]e}ee e!e"eseteueiejeoepe_eVeYeUeXeZe[eWg'e¢j¥e~eeee
ee@e?e”e•g
iZ¦x&d–d—„ e D ƒD ]Z§e¦d˜ j¨e§ƒ qŽW d™S )šÚFieldsz    z  ZAssemblyz	# contigsz# contigs (>= %d bp)zLargest contigzTotal lengthzTotal length (>= %d bp)zTotal length (>= 1000 bp)zTotal length (>= 10000 bp)zTotal length (>= 50000 bp)ÚN50ÚauNÚauNGÚauNAÚauNGAzN%dÚL50zL%dzGC (%)z# mappedz
Mapped (%)z# properly pairedzProperly paired (%)z# singletonszSingletons (%)z# misjoint mateszMisjoint mates (%)zAvg. coverage depthzCoverage >= %dx (%%)zCoverage >= 1x (%)zCoverage >= 5x (%)zCoverage >= 10x (%)z# misassembliesz# misassembled contigszMisassembled contigs lengthz"Misassemblies inter-contig overlapz# large blocks misassembliesz# large relocationsz# large translocationsz# large inversionsz# large i/s translocationsz# relocationsz# translocationsz# inversionsz# interspecies translocationsz# local misassembliesz# scaffold gap ext. mis.z# scaffold gap loc. mis.z.# misassemblies caused by fragmented referencez# possibly misassembled contigsz# possible misassembliesz# possible TEsz# structural variationsz# contig misassembliesz# c. relocationsz# c. translocationsz# c. inversionsz # c. interspecies translocationsz# scaffold misassembliesz# s. relocationsz# s. translocationsz# s. inversionsz # s. interspecies translocationsz# unaligned contigszUnaligned lengthz# ambiguously mapped contigsz)Extra bases in ambiguously mapped contigsz# fully unaligned contigszFully unaligned lengthz# partially unaligned contigszPartially unaligned lengthz# unaligned mis. contigsz# mismatchesz# indelszIndels lengthz# mismatches per 100 kbpz# indels per 100 kbpz# indels (<= 5 bp)z# indels (> 5 bp)z# N'sz# N's per 100 kbpzGenome fraction (%)zDuplication ratiozAvg contig read supportz# genomic featuresz	# operonszLargest alignmentzTotal aligned lengthÚNG50ÚNA50ÚNGA50ÚLG50ÚLA50ÚLGA50zNG%dzNA%dzNGA%dzLG%dzLA%dzLGA%dzK-mer-based compl. (%)zK-mer-based cor. length (%)zK-mer-based mis. length (%)zK-mer-based undef. length (%)z# k-mer-based misjoinsz# k-mer-based translocationsz # k-mer-based 100kbp relocationsz# predicted genes (unique)z# predicted genes (>= %d bp)z# predicted rRNA geneszComplete BUSCO (%)zPartial BUSCO (%)zReference lengthzEstimated reference lengthzReference fragmentszReference GC (%)zReference genomic featureszReference operonsz# total readsz# leftz# rightz# reference mappedzReference mapped (%)z# reference properly pairedzReference properly paired (%)z# reference singletonszReference singletons (%)z# reference misjoint mateszReference misjoint mates (%)zReference avg. coverage depthzReference coverage >= %dx (%%)zReference coverage >= 1x (%)zReference coverage >= 5x (%)zReference coverage >= 10x (%)z# similar correct contigsz# similar misassembled blockszGenome statisticszReads mappingÚMisassembliesÚ	UnalignedZ
MismatcheszStatistics without referencezK-mer-based statisticszPredicted geneszSimilarity statisticszReference statisticsc               @   s   e Zd ZdZdZdZdS )zFields.QualityzMore is betterzLess is betterZEqualN)Ú__name__Ú
__module__Ú__qualname__ÚMORE_IS_BETTERÚLESS_IS_BETTERÚEQUAL© r   r   ú>/home/psgendb/BIRCHDEV/pkg/quast-5.2.0/quast_libs/reporting.pyÚQuality5  s   r   c             C   s   g | ]\}}|dkr|‘qS )r   r   )r   r   r   )Ú.0ÚnameÚvr   r   r   ú
<listcomp>W  s    zFields.<listcomp>zLess is betterN)©r   r   r   ÚTABÚHALF_TABÚNAMEZCONTIGSÚtupler   Úcontig_thresholdsÚCONTIGS__FOR_THRESHOLDSZ
LARGCONTIGZTOTALLENÚTOTALLENS__FOR_THRESHOLDSZTOTALLENS__FOR_1000_THRESHOLDZTOTALLENS__FOR_10000_THRESHOLDZTOTALLENS__FOR_50000_THRESHOLDr   r   r	   r
   r   Úx_for_additional_NxZNxr   ZLxZGCZMAPPED_READSZMAPPED_READS_PCNTZPROPERLY_PAIRED_READSZPROPERLY_PAIRED_READS_PCNTZ
SINGLETONSZSINGLETONS_PCNTZMISJOINT_READSZMISJOINT_READS_PCNTZDEPTHÚcoverage_thresholdsZCOVERAGE__FOR_THRESHOLDSZCOVERAGE_1X_THRESHOLDZCOVERAGE_5X_THRESHOLDZCOVERAGE_10X_THRESHOLDZ
MISASSEMBLZ
MISCONTIGSZMISCONTIGSBASESZMISINTERNALOVERLAPZLARGE_MIS_EXTENSIVEZLARGE_MIS_RELOCATIONZLARGE_MIS_TRANSLOCATIONZLARGE_MIS_INVERTIONZLARGE_MIS_ISTRANSLOCATIONSZMIS_ALL_EXTENSIVEZMIS_RELOCATIONZMIS_TRANSLOCATIONZMIS_INVERTIONZMIS_ISTRANSLOCATIONSZMIS_EXTENSIVE_CONTIGSZMIS_EXTENSIVE_BASESZ	MIS_LOCALZMIS_SCAFFOLDS_GAPZMIS_LOCAL_SCAFFOLDS_GAPZMIS_FRAGMENTEDZCONTIGS_WITH_ISTRANSLOCATIONSZPOSSIBLE_MISASSEMBLIESZPOTENTIAL_MGEZSTRUCT_VARIATIONSZCTG_MIS_ALL_EXTENSIVEZCTG_MIS_RELOCATIONZCTG_MIS_TRANSLOCATIONZCTG_MIS_INVERTIONZCTG_MIS_ISTRANSLOCATIONSZSCF_MIS_ALL_EXTENSIVEZSCF_MIS_RELOCATIONZSCF_MIS_TRANSLOCATIONZSCF_MIS_INVERTIONZSCF_MIS_ISTRANSLOCATIONSZ	UNALIGNEDZUNALIGNEDBASESZ	AMBIGUOUSZAMBIGUOUSEXTRABASESZMISLOCALZUNALIGNED_FULL_CNTGSZUNALIGNED_FULL_LENGTHZUNALIGNED_PART_CNTGSZUNALIGNED_PART_LENGTHZUNALIGNED_MISASSEMBLED_CTGSZ
MISMATCHESZINDELSZINDELSBASESZ	SUBSERRORZINDELSERRORZMIS_SHORT_INDELSZMIS_LONG_INDELSZUNCALLEDZUNCALLED_PERCENTÚMAPPEDGENOMEZDUPLICATION_RATIOZAVE_READ_SUPPORTZGENESZOPERONSZ	LARGALIGNZTOTAL_ALIGNED_LENr   r   r   r   r   r   ÚNGxÚNAxÚNGAxÚLGxÚLAxÚLGAxZKMER_COMPLETENESSZKMER_CORR_LENGTHZKMER_MIS_LENGTHZKMER_UNDEF_LENGTHZKMER_MISASSEMBLIESZKMER_TRANSLOCATIONSZKMER_RELOCATIONSZPREDICTED_GENES_UNIQUEÚgenes_lengthsZPREDICTED_GENESÚ	RNA_GENESZBUSCO_COMPLETEZ
BUSCO_PARTÚREFLENZ	ESTREFLENZREF_FRAGMENTSZREFGCZ	REF_GENESZREF_OPERONSZTOTAL_READSZ
LEFT_READSZRIGHT_READSZREF_MAPPED_READSZREF_MAPPED_READS_PCNTZREF_PROPERLY_PAIRED_READSZREF_PROPERLY_PAIRED_READS_PCNTZREF_SINGLETONSZREF_SINGLETONS_PCNTZREF_MISJOINT_READSZREF_MISJOINT_READS_PCNTZ	REF_DEPTHZREF_COVERAGE__FOR_THRESHOLDSZREF_COVERAGE_1X_THRESHOLDZREF_COVERAGE_5X_THRESHOLDZREF_COVERAGE_10X_THRESHOLDZSIMILAR_CONTIGSZSIMILAR_MIS_BLOCKSÚorderÚreads_orderZclassic_misassemblies_orderZctg_scf_misassemblies_orderZprefix_misassemblies_orderZsuffix_misassemblies_orderZmisassemblies_orderÚmisassemblies_order_advancedÚunaligned_orderÚkmers_orderZgrouped_orderÚmain_metricsr   r   r   r   Úquality_dictÚmetricsÚextendr   r   r   r   r      sì  





















r   c                s   ‡ fdd„|D ƒS )Nc                s   g | ]}ˆ |ƒ‘qS r   r   )r   Úthis)Úfuncr   r   r!   v  s    z_mapme.<locals>.<listcomp>r   )r?   Údatar   )r?   r   Ú_mapmeu  s    rA   c              C   s:   t ttjƒ} g }x$| D ]}x|D ]}|j|ƒ q W qW |S )N)rA   Útake_tuple_metric_apartr   r:   Úappend)ZlistsZ	m_metricsÚlÚmr   r   r   Úget_main_metricsy  s    

rF   c             C   s\   g }t | tƒrRttdj| d ƒjdƒƒ}x.t|ƒD ]\}}|j| d | ƒ q2W n| g}|S )NÚ é   ú,r   )Ú
isinstancer%   rA   ÚintÚjoinÚsplitÚ	enumeraterC   )Úfieldr<   Z
thresholdsÚiÚfeaturer   r   r   rB   ‚  s    
rB   c             C   s2   x(t jjƒ D ]\}}| t j| kr|S qW t jjS )N)r   r;   Úitemsr   r   )ZmetricÚqualityr<   r   r   r   Úget_quality  s    rT   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚReportc             C   s   i | _ | jtj|ƒ d S )N)ÚdÚ	add_fieldr   r$   )Úselfr   r   r   r   Ú__init__˜  s    zReport.__init__c          	   C   sT   y|t jjƒ kstd| ƒ‚W n&   |t jjƒ ks@td| ƒ‚Y nX || j|< d S )NzUnknown field: %s)r   Ú__dict__Ú
itervaluesÚAssertionErrorÚvaluesrV   )rX   rO   Úvaluer   r   r   rW     s
     zReport.add_fieldc          	   C   s^   y|t jjƒ kstd| ƒ‚W n&   |t jjƒ ks@td| ƒ‚Y nX | jj|g ƒj|ƒ d S )NzUnknown field: %s)r   rZ   r[   r\   r]   rV   Ú
setdefaultrC   )rX   rO   r^   r   r   r   Úappend_field¥  s
     zReport.append_fieldc          	   C   sT   y|t jjƒ kstd| ƒ‚W n&   |t jjƒ ks@td| ƒ‚Y nX | jj|d ƒS )NzUnknown field: %s)r   rZ   r[   r\   r]   rV   Úget)rX   rO   r   r   r   Ú	get_field¬  s
     zReport.get_fieldN)r   r   r   rY   rW   r`   rb   r   r   r   r   rU   —  s   rU   c             C   sL   | rt jrtjt jƒ}| tkr*tj| ƒ tjtj	j
| ƒ|fttj| ƒƒƒS )N)r   Ú	referencer   Úname_from_fpathÚassembly_fpathsrC   Úreportsr_   ÚosÚpathÚabspathrU   Úlabel_from_fpath)Úassembly_fpathÚref_namer   r   r   ra   ´  s
    
ra   c             C   s,   | t krt j| ƒ | tjƒ kr(tj| ƒ d S )N)re   Úremoverf   ÚkeysÚpop)rk   r   r   r   Údelete¼  s    
rp   c                sè   t | d tƒsd| fg} g }g ‰‡ ‡fdd„}d‡fdd„	}|ƒ  x~| D ]v\}}g }|j||fƒ xZ|D ]R}t |tƒr¬xBt|d ƒD ]"\}	}
|||d	|d |
|	ˆ d
 q„W qh|||ˆ d qhW qHW t | d tƒsà|d \}}|S |S d S )Nr   rG   c                 sÂ   t jrˆjtjƒ d S ttd ˆ d} | jtjƒr¾d}x*tD ]"}t|ˆ d} | jtj	ƒr<d}P q<W |r€ˆjtj
tjtjtjgƒ t js¾ˆjtjtjtjtjgƒ |r¾ˆjtjtjtjtjgƒ d S )Nr   )rl   FT)r   Úreport_all_metricsr=   r   r5   ra   re   rb   r4   r+   r   r   r-   r0   Úis_combined_refr   r   r,   r/   r   r   r.   r1   )ÚreportZanyone_alignedrk   )rl   Úrequired_fieldsr   r   Údefine_required_fieldsË  s"    
z%table.<locals>.define_required_fieldsFc                s²   t |ƒ}g }xTtD ]L}	t|	|d}
|
j|ƒ}|rT|j|rL|t|ƒk rL|| nd ƒ q|j|ƒ qW ttdd„ |ƒƒs||ˆ kr®|d krˆ|n
|t|ƒ }| j||||t	j
kdœƒ d S )N)rl   c             S   s   | d k	S )Nr   )r    r   r   r   Ú<lambda>ï  s    z,table.<locals>.append_line.<locals>.<lambda>)Ú
metricNamerS   r]   ZisMain)rT   re   ra   rb   rC   ÚlenÚlistÚfilterrK   r   r:   )ÚrowsrO   Úare_multiple_thresholdsÚpatternrQ   rP   rl   rS   r]   rk   rs   r^   Zmetric_name)rt   r   r   Úappend_lineâ  s    

$ztable.<locals>.append_linerH   T)r|   r}   rQ   rP   rl   )rl   )FNNNN)rJ   r%   rC   rN   )r5   rl   Útableru   r~   Ú
group_namer<   r{   rO   rP   rQ   r   )rl   rt   r   r   Ä  s(    


r   c             C   s   t | d tƒS )Nr   )rJ   r%   )r   r   r   r   Úis_groupped_table  s    r   c             C   s0   g }t | ƒr(x| D ]\}}||7 }qW n| }|S )N)r   )r   Úall_rowsr€   r{   r   r   r   Úget_all_rows_out_of_table  s    rƒ   c          
   C   sð   dgt |d d ƒd  }xP|D ]H}xBt|d gdd„ |d D ƒ ƒD ]\}}t|| t |ƒƒ||< qFW q W t| dƒ}tjrš|jdtj d	 ƒ |jd
ƒ xH|D ]@}|jdjdd„ t||d gdd„ |d D ƒ ƒD ƒƒd
 ƒ q W |j	ƒ  d S )Nr   r]   rH   rw   c             S   s   g | ]}t |ƒ‘qS r   )r   )r   r>   r   r   r   r!      s   zsave_txt.<locals>.<listcomp>ÚwzMAll statistics are based on contigs of size >= %d bp, unless otherwise noted zP(e.g., "# contigs (>= 0 bp)" and "Total length (>= 0 bp)" include all contigs).
Ú
z  c             s   s   | ]\}}d ||f V  qdS )z%-*sNr   )r   ÚcolwidthÚcellr   r   r   ú	<genexpr>,  s    zsave_txt.<locals>.<genexpr>c             S   s   g | ]}t |ƒ‘qS r   )r   )r   r>   r   r   r   r!   -  s    )
rx   rN   ÚmaxÚopenr   Ú
min_contigÚwriterL   ÚzipÚclose)Úfpathr‚   Z	colwidthsÚrowrP   r‡   Ztxt_filer   r   r   Úsave_txt  s    



2r‘   c             C   sP   t | dƒ}x8|D ]0}|jdj|d gdd„ |d D ƒ ƒd ƒ qW |jƒ  d S )Nr„   ú	rw   c             S   s   g | ]}t |ƒ‘qS r   )r   )r   r>   r   r   r   r!   7  s   zsave_tsv.<locals>.<listcomp>r]   r…   )rŠ   rŒ   rL   rŽ   )r   r‚   Ztsv_filer   r   r   r   Úsave_tsv2  s
    

r“   c             C   sL   yt | ƒ}W n: tk
rF   yt| ƒ}W n tk
r@   d }Y nX Y nX |S )N)rK   Ú
ValueErrorÚfloat)ÚvalÚnumr   r   r   Úparse_number<  s    r˜   c             C   s˜   t | tƒst | tƒr| }nzt | tƒrt| jƒ ƒdkr| jƒ }t|ƒdkr‚t|d ƒt|d ƒ }}|d ksr|d krxd }qŽ||f}q”t|d ƒ}n| }|S )Nr   é   é   )rJ   rK   r•   Ú
basestringrx   rM   r˜   )r–   r—   ÚtokensÚxÚyr   r   r   Úget_num_from_table_valueJ  s    
rŸ   Fc                sx  t | dƒ}|jdƒ |jdƒ |jdƒ |jdƒ |jdtj d ƒ t|d d	 ƒ}|jd
t|ƒ d ƒ |jdƒ x¸|D ]®}|d	 }d|krœ|d ntjj}|s¼|tjj	tjj
gkrÈtt|ƒ}n¨t|d ƒ}	|	d krètt|ƒ}nˆtt|ƒ}
d ‰ |tjj	krtdd„ |
D ƒƒ‰ |tjj
kr6tdd„ |
D ƒƒ‰ t‡ fdd„|
D ƒƒdkr^tt|ƒ}n‡ fdd„|D ƒ}dj|d g| ƒ}x"djƒ D ]}|j|d| ƒ}qŽW |jddƒ}|jddƒ}|jddƒ}|jtjƒræd|jƒ  }|jtjƒr d|jƒ  }|jd d!ƒ}|jd"d#ƒ}|d$7 }|j|d% ƒ q~W |jd&ƒ |jd'ƒ |jd(ƒ |jd)ƒ |jƒ  tjj| ƒd*krtd S )+Nr„   z&\documentclass[12pt,a4paper]{article}
z\begin{document}
z\begin{table}[ht]
z\begin{center}
zZ\caption{All statistics are based on contigs of size $\geq$ %d bp, unless otherwise noted zZ(e.g., "\# contigs ($\geq$ 0 bp)" and "Total length ($\geq$ 0 bp)" include all contigs).}
r   r]   z\begin{tabular}{|l*{z}{|r}|}
z\hline
rS   c             s   s   | ]}|d k	r|V  qd S )Nr   )r   Únr   r   r   rˆ   ~  s    zsave_tex.<locals>.<genexpr>c             s   s   | ]}|d k	r|V  qd S )Nr   )r   r    r   r   r   rˆ   €  s    c                s   g | ]}|ˆ kr|‘qS r   r   )r   r—   )Úbestr   r   r!   ‚  s    zsave_tex.<locals>.<listcomp>c                s0   g | ](}t |ƒˆ kr$d t|ƒ d nt|ƒ‘qS )ÚHIGHLIGHTEDSTARTÚHIGHLIGHTEDEND)rŸ   r   )r   r    )r¡   r   r   r!   …  s   z & rw   z\ % $ # _ { } ~ ^ú\z>=z$\geq$z<=z$\leq$ú>z$>$z\hspace{5mm}z\hspace{2mm}r¢   z{\bf r£   ú}z
 \\ \hliner…   z\end{tabular}
z\end{center}
z\end{table}
z\end{document}
z
report.tex)rŠ   rŒ   r   r‹   rx   r   r   r   r   r   r   rA   rŸ   r‰   ÚminrL   rM   ÚreplaceÚ
startswithr"   Úlstripr#   rŽ   rg   rh   Úbasename)r   r‚   Úis_transposedZtex_fileZrows_nr   r]   rS   Zcellsr—   ZnumsZesc_charr   )r¡   r   Úsave_tex_  sd    











r­   c       
      C   sî   t js
d S t|ƒ}dgt|d d ƒd  }xL|D ]D}x>t|d gtt|d ƒ ƒD ]\}}t|| t|ƒƒ||< qTW q2W t jrdt j d }nd}g }x4|D ],}|j	dd	„ |d gtt|d ƒ D ƒƒ qžW dd
l
m}	 |	j| |||ƒ d S )Nr   r]   rH   rw   zMAll statistics are based on contigs of size >= %d bp, unless otherwise noted zP
(e.g., "# contigs (>= 0 bp)" and "Total length (>= 0 bp)" include all contigs).rG   c             S   s   g | ]}d | ‘qS )z%sr   )r   r‡   r   r   r   r!   º  s    zsave_pdf.<locals>.<listcomp>)Úplotter)r   Ú
draw_plotsrƒ   rx   rN   rA   r   r‰   r‹   rC   Ú
quast_libsr®   Zdraw_report_table)
Úreport_namer   r‚   Zcolumn_widthsr   rP   r‡   Z
extra_infoZtable_to_drawr®   r   r   r   Úsave_pdf¨  s"    
&

"r²   c                s.  t |ƒ}|stjdƒ tjj| |ƒd }tjj| |ƒd }tjj| |ƒd }t|ƒ‰ t|ˆ ƒ t|ˆ ƒ t	|ˆ ƒ t
||ƒ |d tjj|ƒ d tjj|ƒ }	d }
|s¶tjd|	 ƒ |r&|sÊtjdƒ t|ƒ‰ ˆ d	 d
 tjkròtjdƒ n4ˆ d	 d
 ‡ fdd„tdtˆ ƒƒD ƒdœg}xnttˆ d	 d ƒƒD ]V}g }x.tdtˆ ƒƒD ]}|jˆ | d | ƒ qLW |jˆ d	 d | |dœƒ q4W tjj| |ƒd }tjj| |ƒd }tjj| |ƒd }t|ƒ‰ t|ˆ ƒ t|ˆ ƒ t	|ˆ dd |d tjj|ƒ d tjj|ƒ }
|s&tjd|
 ƒ |	|
fS )Nz  Creating total report...z.txtz.tsvz.texz, z, and z    saved to z'  Transposed version of total report...r   rw   zMtransposed version can't be created! First column have to be assemblies namesc                s   g | ]}ˆ | d  ‘qS )rw   r   )r   rP   )r‚   r   r   r!   ß  s    zsave.<locals>.<listcomp>rH   )rw   r]   r]   T)r¬   )r   ÚloggerÚinforg   rh   rL   rƒ   r‘   r“   r­   r²   r«   r   r$   ÚwarningÚrangerx   rC   )Úoutput_dirpathr±   Ztransposed_report_namer5   ÚsilentÚtabZreport_txt_fpathZreport_tsv_fpathZreport_tex_fpathÚreports_fpathsÚtransposed_reports_fpathsZtransposed_tablerP   r]   Újr   )r‚   r   ÚsaveÀ  sR    






"

$r½   Tc             C   s.   |st jƒ  t jdƒ t| tjtjtj|dS )NzSummarizing...)r¸   )	r³   Úprint_timestampr´   r½   r   Úreport_prefixÚtransposed_report_prefixr   r5   )r·   r¸   r   r   r   Ú
save_totalõ  s    
rÁ   c             C   s   t | dtjd tjƒ d S )NZmisassemblies_reportZ_misassemblies)r½   r   rÀ   r   r7   )r·   r   r   r   Úsave_misassembliesü  s    rÂ   c             C   s   t | ddtjƒ d S )NZunaligned_reportrG   )r½   r   r8   )r·   r   r   r   Úsave_unaligned   s    rÃ   c             C   s   t | ddtjƒ d S )NZreads_reportrG   )r½   r   r6   )r·   r   r   r   Ú
save_reads  s    rÄ   c             C   s   t | ddtjƒ d S )NZkmers_reportrG   )r½   r   r9   )r·   r   r   r   Ú
save_kmers  s    rÅ   )N)F)F)T)(rg   r°   r   r   Úquast_libs.logr   Úquast_libs.qutilsr   ÚLOGGER_DEFAULT_NAMEr³   r›   ÚstrÚbytesr   rf   re   rA   rF   rB   rT   ÚobjectrU   ra   rp   r5   r   r   rƒ   r‘   r“   r˜   rŸ   r­   r²   r½   rÁ   rÂ   rÃ   rÄ   rÅ   r   r   r   r   Ú<module>   sJ   
  J
	
I

I
5
