a
    ê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	ze
 W n   eefZ
Y n0 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¦d–d—„ e D ƒD ]Z§e¦d˜  ¨e§¡ qŒd™S )šÚFieldsz    ú  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 betterú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 v r|‘qS ))r   r   r   )Ú.0ÚnameÚvr   r   r   Ú
<listcomp>W  ó    zFields.<listcomp>r   N)©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  r%   z_mapme.<locals>.<listcomp>r   )rE   Údatar   rD   r   Ú_mapmeu  s    rG   c                  C   s2   t ttjƒ} g }| D ]}|D ]}| |¡ qq|S ©N)rG   Útake_tuple_metric_apartr   r>   Úappend)ZlistsZ	m_metricsÚlÚmr   r   r   Úget_main_metricsy  s    rM   c                 C   sX   g }t | tƒrNttd | d ¡ d¡ƒ}t|ƒD ]\}}| | d | ¡ q0n| g}|S )NÚ é   ú,r   )Ú
isinstancer)   rG   ÚintÚjoinÚsplitÚ	enumeraterJ   )Úfieldr@   Z
thresholdsÚiÚfeaturer   r   r   rI   ‚  s    
rI   c                 C   s2   t j ¡ D ]\}}| t j| v r
|  S q
t jjS rH   )r   r?   Úitemsr    r   )ZmetricÚqualityr@   r   r   r   Úget_quality  s    
r[   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚReportc                 C   s   i | _ |  tj|¡ d S rH   )ÚdÚ	add_fieldr   r(   )Úselfr"   r   r   r   Ú__init__˜  s    zReport.__init__c                 C   sT   z|t j ¡ v sJ d| ƒ‚W n&   |t j ¡ v s@J d| ƒ‚Y n0 || j|< d S ©NzUnknown field: %s)r   Ú__dict__Ú
itervaluesÚvaluesr]   ©r_   rV   Úvaluer   r   r   r^     s
     zReport.add_fieldc                 C   s^   z|t j ¡ v sJ d| ƒ‚W n&   |t j ¡ v s@J d| ƒ‚Y n0 | j |g ¡ |¡ d S ra   )r   rb   rc   rd   r]   Ú
setdefaultrJ   re   r   r   r   Úappend_field¥  s
     zReport.append_fieldc                 C   sT   z|t j ¡ v sJ d| ƒ‚W n&   |t j ¡ v s@J d| ƒ‚Y n0 | j |d ¡S ra   )r   rb   rc   rd   r]   Úget)r_   rV   r   r   r   Ú	get_field¬  s
     zReport.get_fieldN)r   r   r   r`   r^   rh   rj   r   r   r   r   r\   —  s   r\   c                 C   sJ   |st jrt t j¡}| tvr(t | ¡ t tj	 
| ¡|ftt | ¡ƒ¡S rH   )r   Ú	referencer   Úname_from_fpathÚassembly_fpathsrJ   Úreportsrg   ÚosÚpathÚabspathr\   Úlabel_from_fpath)Úassembly_fpathÚref_namer   r   r   ri   ´  s
    

ri   c                 C   s,   | t v rt  | ¡ | t ¡ v r(t | ¡ d S rH   )rm   Úremovern   ÚkeysÚpop)rs   r   r   r   Údelete¼  s    
rx   c                    sÜ   t | d tƒsd| fg} g }g ‰‡ ‡fdd„}d‡fdd„	}|ƒ  | D ]n\}}g }| ||f¡ |D ]N}t |tƒr¤t|d ƒD ]"\}	}
|||d	|d |
|	ˆ d
 q~qd|||ˆ d qdqFt | d tƒsÔ|d \}}|S |S d S )Nr   rN   c                     sÀ   t jrˆ tj¡ d S ttd ˆ d} |  tj¡r¼d}tD ]$}t|ˆ d} |  tj	¡r:d} q`q:|r~ˆ tj
tjtjtjg¡ t js¼ˆ tjtjtjtjg¡ |r¼ˆ tjtjtjtjg¡ d S )Nr   ©rt   FT)r   Úreport_all_metricsrA   r   r9   ri   rm   rj   r8   r/   r   r   r1   r4   Úis_combined_refr   r   r0   r3   r   r   r2   r5   )ÚreportZanyone_alignedrs   ©rt   Úrequired_fieldsr   r   Údefine_required_fieldsË  s"    z%table.<locals>.define_required_fieldsFc                    s®   t |ƒ}g }tD ]L}	t|	|d}
|
 |¡}|rR| |rJ|t|ƒk rJ|| nd ¡ q| |¡ qttdd„ |ƒƒsx|ˆ v rª|d u r„|n
|t|ƒ }|  ||||t	j
v dœ¡ d S )Nry   c                 S   s   | d uS rH   r   )r#   r   r   r   Ú<lambda>ï  r%   z,table.<locals>.append_line.<locals>.<lambda>)Ú
metricNamerZ   rd   ZisMain)r[   rm   ri   rj   rJ   ÚlenÚlistÚfilterrR   r   r>   )ÚrowsrV   Úare_multiple_thresholdsÚpatternrX   rW   rt   rZ   rd   rs   r|   rf   Zmetric_name)r~   r   r   Úappend_lineâ  s     
$üztable.<locals>.append_linerO   T)r†   r‡   rX   rW   rt   ry   )FNNNN)rQ   r)   rJ   rU   )r9   rt   Útabler   rˆ   Ú
group_namer@   r…   rV   rW   rX   r   r}   r   r‰   Ä  s*    

ÿ
r‰   c                 C   s   t | d tƒS )Nr   )rQ   r)   )r‰   r   r   r   Úis_groupped_table  s    r‹   c                 C   s,   g }t | ƒr$| D ]\}}||7 }qn| }|S rH   )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  }|D ]D}t|d gdd„ |d D ƒ ƒD ]\}}t|| t |ƒƒ||< qBqt| dƒ}tjr’| dtj d	 ¡ | d
¡ |D ]@}| d dd„ t||d gdd„ |d D ƒ ƒD ƒ¡d
 ¡ q–| 	¡  d S )Nr   rd   rO   r   c                 S   s   g | ]}t |ƒ‘qS r   r   rB   r   r   r   r$      s   ÿzsave_txt.<locals>.<listcomp>ÚwúMAll 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).
Ú
r   c                 s   s   | ]\}}d ||f V  qdS )z%-*sNr   )r!   ÚcolwidthÚcellr   r   r   Ú	<genexpr>,  r%   zsave_txt.<locals>.<genexpr>c                 S   s   g | ]}t |ƒ‘qS r   r   rB   r   r   r   r$   -  r%   )
r‚   rU   ÚmaxÚopenr   Ú
min_contigÚwriterS   ÚzipÚclose)ÚfpathrŒ   Z	colwidthsÚrowrW   r’   Ztxt_filer   r   r   Úsave_txt  s&    ÿ
ÿ
 ÿÿrœ   c              	   C   sL   t | dƒ}|D ]0}| d |d gdd„ |d D ƒ ¡d ¡ q| ¡  d S )NrŽ   ú	r   c                 S   s   g | ]}t |ƒ‘qS r   r   rB   r   r   r   r$   7  s   ÿzsave_tsv.<locals>.<listcomp>rd   r   )r•   r—   rS   r™   )rš   rŒ   Ztsv_filer›   r   r   r   Úsave_tsv2  s    
ÿÿrž   c                 C   sH   zt | ƒ}W n6 tyB   zt| ƒ}W n ty<   d }Y n0 Y n0 |S rH   )rR   Ú
ValueErrorÚfloat)ÚvalÚnumr   r   r   Úparse_number<  s    r£   c                 C   s˜   t | tƒst | tƒr| }nzt | tƒrt|  ¡ ƒdkr|  ¡ }t|ƒdkr‚t|d ƒt|d ƒ }}|d u sr|d u rxd }qŽ||f}q”t|d ƒ}n| }|S )Nr   é   é   )rQ   rR   r    Ú
basestringr‚   rT   r£   )r¡   r¢   ÚtokensÚxÚyr   r   r   Úget_num_from_table_valueJ  s    
rª   Fc                    sn  t | dƒ}| d¡ | d¡ | d¡ | d¡ | dtj d ¡ t|d d	 ƒ}| d
t|ƒ d ¡ | d¡ |D ]ª}|d	 }d|v r˜|d ntjj}|s¸|tjj	tjj
fvrÄtt|ƒ}n¨t|d ƒ}	|	d u rätt|ƒ}nˆtt|ƒ}
d ‰ |tjj	krtdd„ |
D ƒƒ‰ |tjj
kr2tdd„ |
D ƒƒ‰ t‡ fdd„|
D ƒƒdkrZtt|ƒ}n‡ fdd„|D ƒ}d |d g| ¡}d ¡ D ]}| |d| ¡}qˆ| dd¡}| dd¡}| dd¡}| tj¡rÞd| ¡  }| tj¡rød| ¡  }| d d!¡}| d"d#¡}|d$7 }| |d% ¡ qz| d&¡ | d'¡ | d(¡ | d)¡ | ¡  tj | ¡d*krjd 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   rd   z\begin{tabular}{|l*{z}{|r}|}
z\hline
rZ   c                 s   s   | ]}|d ur|V  qd S rH   r   ©r!   Únr   r   r   r“   ~  r%   zsave_tex.<locals>.<genexpr>c                 s   s   | ]}|d ur|V  qd S rH   r   r«   r   r   r   r“   €  r%   c                    s   g | ]}|ˆ kr|‘qS r   r   )r!   r¢   ©Úbestr   r   r$   ‚  r%   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 & r   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–   r‚   r   r   r    r   r   r   rG   rª   r”   ÚminrS   rT   ÚreplaceÚ
startswithr&   Úlstripr'   r™   ro   rp   Úbasename)rš   rŒ   Úis_transposedZtex_fileZrows_nr›   rd   rZ   Zcellsr¢   ZnumsZesc_charr   r­   r   Úsave_tex_  sj    




ÿ

ÿ

ý



rº   c           
   	   C   sâ   t js
d S t|ƒ}dgt|d d ƒd  }|D ]@}t|d gtt|d ƒ ƒD ]\}}t|| t|ƒƒ||< qPq0t jrˆdt j d }nd}g }|D ],}| 	dd	„ |d gtt|d ƒ D ƒ¡ q”dd
l
m}	 |	 | |||¡ d S )Nr   rd   rO   r   r   zP
(e.g., "# contigs (>= 0 bp)" and "Total length (>= 0 bp)" include all contigs).rN   c                 S   s   g | ]}d | ‘qS )z%sr   )r!   r’   r   r   r   r$   º  r%   zsave_pdf.<locals>.<listcomp>)Úplotter)r   Ú
draw_plotsr   r‚   rU   rG   r   r”   r–   rJ   Ú
quast_libsr»   Zdraw_report_table)
Úreport_namer‰   rŒ   Zcolumn_widthsr›   rW   r’   Z
extra_infoZtable_to_drawr»   r   r   r   Úsave_pdf¨  s&    $ÿ
ÿ
r¿   c                    s&  t |ƒ}|st d¡ tj | |¡d }tj | |¡d }tj | |¡d }t|ƒ‰ t|ˆ ƒ t|ˆ ƒ t	|ˆ ƒ t
||ƒ |d tj |¡ d tj |¡ }	d }
|s¶t d|	 ¡ |r|sÊt d¡ t|ƒ‰ ˆ d	 d
 tjkròt d¡ n,ˆ d	 d
 ‡ fdd„tdtˆ ƒƒD ƒdœg}ttˆ d	 d ƒƒD ]R}g }tdtˆ ƒƒD ]}| ˆ | d | ¡ qH| ˆ d	 d | |dœ¡ q2tj | |¡d }tj | |¡d }tj | |¡d }t|ƒ‰ t|ˆ ƒ t|ˆ ƒ t	|ˆ dd |d tj |¡ d tj |¡ }
|st d|
 ¡ |	|
fS )Nz  Creating total report...z.txtz.tsvz.texz, z, and z    saved to z'  Transposed version of total report...r   r   zMtransposed version can't be created! First column have to be assemblies namesc                    s   g | ]}ˆ | d  ‘qS )r   r   )r!   rW   ©rŒ   r   r   r$   ß  r%   zsave.<locals>.<listcomp>rO   )r   rd   rd   T)r¹   )r‰   ÚloggerÚinforo   rp   rS   r   rœ   rž   rº   r¿   r¸   r   r(   ÚwarningÚranger‚   rJ   )Úoutput_dirpathr¾   Ztransposed_report_namer9   ÚsilentÚtabZreport_txt_fpathZreport_tsv_fpathZreport_tex_fpathÚreports_fpathsÚtransposed_reports_fpathsZtransposed_tablerW   rd   Újr   rÀ   r   ÚsaveÀ  s`    





ÿ

ÿÿ

ÿ
ÿrË   Tc                 C   s.   |st  ¡  t  d¡ t| tjtjtj|dS )NzSummarizing...)rÆ   )	rÁ   Úprint_timestamprÂ   rË   r   Úreport_prefixÚtransposed_report_prefixr   r9   )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   r;   ©rÅ   r   r   r   Úsave_misassembliesü  s    rÑ   c                 C   s   t | ddtjƒ d S )NZunaligned_reportrN   )rË   r   r<   rÐ   r   r   r   Úsave_unaligned   s    rÒ   c                 C   s   t | ddtjƒ d S )NZreads_reportrN   )rË   r   r:   rÐ   r   r   r   Ú
save_reads  s    rÓ   c                 C   s   t | ddtjƒ d S )NZkmers_reportrN   )rË   r   r=   rÐ   r   r   r   Ú
save_kmers  s    rÔ   )N)F)F)T)(ro   r½   r   r   Úquast_libs.logr   Úquast_libs.qutilsr   ÚLOGGER_DEFAULT_NAMErÁ   r¦   ÚstrÚbytesr   rn   rm   rG   rM   rI   r[   Úobjectr\   ri   rx   r9   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
