a
    b0                     @   s\  d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 e
ejZdZzd dlZW n@ ey   zd dlZW n  ey   ed dZY n0 Y n0 d	Zd
ZdZdZdZdZdZdZdZdZdZdZdd Zdd Zdd Z dd Z!dd Z"dd  Z#d!d" Z$d#d$ Z%d%d& Z&d'd( Z'd)d* Z(d+d, Z)d-d. Z*d/d0 Z+d1d2 Z,d3d4 Z-d5d6 Z.dS )7    N)join)qutilsqconfig)ref_labels_by_chromosomes)
get_loggerFz:Can't build html report - please install python-simplejsonTzreport.jsonzcontigs_lengths.jsonzref_length.jsonztick_x.jsonzaligned_contigs_lengths.jsonzassemblies_lengths.jsonz_in_contigs.jsonzgc.jsonz
krona.jsonzicarus.jsonz.json c                 C   sD   t rd S tj| rt|  t| d}tj||dd |  | S )Nw),:)
separators)	simplejson_errorospathexistsremoveopenjsondumpclosefpathwhatZ	json_file r   J/home/psgendb/BIRCHDEV/pkg/quast-5.2.0/quast_libs/html_saver/json_saver.pysave+   s    

r   c                 C   s    t | d}|| |  | S )Nr   )r   writer   r   r   r   r   save_as_text8   s    

r   c                 C   sL   ddl m} tj }tt| t|dg |r8t	|ndg d g g |dS )Nr   	reporting%d %B %Y, %A, %H:%M:%Sr   dateassembliesNamesreferenceNameorderreportZsubreferences
subreportsZ	minContig)

quast_libsr   datetimenowr   r   total_report_fnamestrftimer   name_from_fpath)output_dirpath
min_contig	ref_fpathr   tr   r   r   save_empty_report?   s    

r1   c                    s   ddl m  dd  jD }  jj}g }g }tjrltrlt	t
tdd t D } fdd|D }tj }tt| t|d||rt|ndd	d t|D ||||d
S )Nr   r   c                 S   s   g | ]}t |qS r   r   label_from_fpath).0thisr   r   r   
<listcomp>Q       z%save_total_report.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   )r4   refr   r   r   r6   V   r7   c                    s   g | ]} j  jj|d qS ))ref_name)tableFieldsgrouped_order)r4   r9   r   r   r   r6   W   r7   r   r   c                 S   s   g | ]\}}|qS r   r   )r4   i_r   r   r   r6   ^   r7   r    )r'   r   assembly_fpathsr:   r;   r<   r   is_combined_refr   sortedlistsetvaluesr(   r)   r   r   r*   r+   r   r,   	enumerate)r-   r.   r/   Z	asm_namesr%   r&   	ref_namesr0   r   r   r   save_total_reportO   s&    


rG   c                 C   s.   dd |D }t t| tdd |D |dS )Nc                 S   s   g | ]}t |d dqS )T)reverse)rA   )r4   rB   r   r   r   r6      r7   z(save_contigs_lengths.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   r2   r4   labelr   r   r   r6      r7   )	filenameslists_of_lengths)r   r   contigs_lengths_fn)r-   contigs_fpathsrL   r   r   r   save_contigs_lengths   s
    
rO   c                 C   s   t t| td|iS )NZreflen)r   r   ref_length_fn)r-   reference_lengthsr   r   r   save_reference_lengths   s    rR   c                 C   s   t t| td|iS )NtickX)r   r   	tick_x_fn)r-   tick_xr   r   r   save_tick_x   s    rV   c                 C   s*   |t  }tt| |||dd |D dS )Nc                 S   s   g | ]}t |qS r   r2   rI   r   r   r   r6      r7   zsave_coord.<locals>.<listcomp>)coord_xcoord_yrK   	suffix_fnr   r   )r-   rW   rX   
name_coordrN   coord_fnr   r   r   
save_coord   s    
r]   c                 C   s   t t| |t |S N)r   r   rZ   )r-   filenamerecordr   r   r   save_record   s    ra   c                 C   s&   d| t  }tt| |||||dS Ncoord)rW   rX   rK   ZrefnamesrY   r-   rW   rX   r[   labelsZ
refs_namesr\   r   r   r   save_meta_summary   s    
rf   c                 C   s&   d| t  }tt| |||||dS rb   rY   rd   r   r   r   save_meta_misassemblies   s    
rg   c                 C   s    t t| tdd |D |dS )Nc                 S   s   g | ]}t |qS r   r2   rI   r   r   r   r6      r7   z)save_assembly_lengths.<locals>.<listcomp>)rK   assemblies_lengths)r   r   assemblies_lengths_fn)r-   rN   rh   r   r   r   save_assembly_lengths   s    
rj   c              	   C   sH   t t| |t ddd |D |d tdd | D d| d |iS )	NrK   c                 S   s   g | ]}t |qS r   r2   rI   r   r   r   r6      r7   z,save_features_in_contigs.<locals>.<listcomp>Z_in_contigsc                 s   s    | ]\}}t ||fV  qd S r^   r2   )r4   contigs_fpathZfeature_amountsr   r   r   	<genexpr>   s   z+save_features_in_contigs.<locals>.<genexpr>Zref_Z_number)r   r   in_contigs_suffix_fndictitems)r-   rN   feature_nameZfeatures_in_contigsZref_features_numr   r   r   save_features_in_contigs   s    rq   c                 C   s&   t t| tdd |D |||d dS )Nc                 S   s   g | ]}t |qS r   r2   rI   r   r   r   r6      r7   z save_GC_info.<locals>.<listcomp>)rK   reference_indexlist_of_GC_distributions list_of_GC_contigs_distributionsZlists_of_gc_info)r   r   gc_fn)r-   rN   rs   rt   rr   r   r   r   save_GC_info   s    
rv   c                 C   s   t t| t||dS )N)
assembliespaths)r   r   krona_fn)r-   krona_fpathsre   r   r   r   save_krona_paths   s    
r{   c                 C   s   t t| t|d |d dS )Nlinkslinks_names)r|   r}   )r   r   	icarus_fn)r-   icarus_linksr   r   r   save_icarus_links   s    
r   c                 C   s0   |rt t| |t |S tt| |t ||iS r^   )r   r   rZ   r   )r-   keywordicarus_dataas_textr   r   r   save_icarus_data   s
    r   )/r(   r   os.pathr   r'   r   r   quast_libs.ca_utils.miscr   quast_libs.logr   LOGGER_DEFAULT_NAMElogr   r   ImportError
simplejsonwarningr*   rM   rP   rT   Zaligned_contigs_fnri   rm   ru   ry   r~   rZ   	json_textr   r   r1   rG   rO   rR   rV   r]   ra   rf   rg   rj   rq   rv   r{   r   r   r   r   r   r   <module>   sX   

6						