3
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yd dlZW nD ek
r   yd dlZW n" ek
r   ejd dZY nX Y nX 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j| rtj|  t| d}tj||dd |j  | S )Nw,:)
separators)r	   r
   )	simplejson_errorospathexistsremoveopenjsondumpclose)fpathwhat	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}|j| |j  | S )Nr   )r   writer   )r   r   r   r   r   r   save_as_text8   s    

r   c             C   sL   ddl m} tjj }tt| t|jdg |r8tj	|ndg d g g |dS )Nr   )	reportingz%d %B %Y, %A, %H:%M:%Sr   )dateassembliesNamesreferenceNameorderreportsubreferences
subreports	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    

r0   c                s   ddl m  dd  jD } j jj}g }g }tjrltrlt	t
tdd tj D } fdd|D }tjj }tt| t|jd||rtj|ndd	d t|D ||||d
S )Nr   )r   c             S   s   g | ]}t j|qS r   )r   label_from_fpath).0thisr   r   r   
<listcomp>Q   s    z%save_total_report.<locals>.<listcomp>c             S   s   g | ]}|qS r   r   )r2   refr   r   r   r4   V   s    c                s   g | ]} j  jj|d qS ))ref_name)tableFieldsgrouped_order)r2   r6   )r   r   r   r4   W   s    z%d %B %Y, %A, %H:%M:%Sr   c             S   s   g | ]\}}|qS r   r   )r2   i_r   r   r   r4   ^   s    )r   r   r    r!   r"   r#   r$   r%   )r&   r   assembly_fpathsr7   r8   r9   r   is_combined_refr   sortedlistsetvaluesr'   r(   r   r   r)   r*   r   r+   	enumerate)r,   r-   r.   Z	asm_namesr"   r$   	ref_namesr/   r   )r   r   save_total_reportO   s$    


rD   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)r>   )r2   r?   r   r   r   r4      s    z(save_contigs_lengths.<locals>.<listcomp>c             S   s   g | ]}t j|qS r   )r   r1   )r2   labelr   r   r   r4      s    )	filenameslists_of_lengths)r   r   contigs_lengths_fn)r,   contigs_fpathsrH   r   r   r   save_contigs_lengths   s    
rK   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    rN   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    rR   c             C   s*   |t  }tt| |||dd |D dS )Nc             S   s   g | ]}t j|qS r   )r   r1   )r2   rF   r   r   r   r4      s    zsave_coord.<locals>.<listcomp>)coord_xcoord_yrG   )	suffix_fnr   r   )r,   rS   rT   
name_coordrJ   coord_fnr   r   r   
save_coord   s
    
rX   c             C   s   t t| |t |S )N)r   r   rU   )r,   filenamerecordr   r   r   save_record   s    r[   c             C   s&   d| t  }tt| |||||dS )Ncoord)rS   rT   rG   refnames)rU   r   r   )r,   rS   rT   rV   labels
refs_namesrW   r   r   r   save_meta_summary   s    
r`   c             C   s&   d| t  }tt| |||||dS )Nr\   )rS   rT   rG   r]   )rU   r   r   )r,   rS   rT   rV   r^   r_   rW   r   r   r   save_meta_misassemblies   s    
ra   c             C   s    t t| tdd |D |dS )Nc             S   s   g | ]}t j|qS r   )r   r1   )r2   rF   r   r   r   r4      s    z)save_assembly_lengths.<locals>.<listcomp>)rG   assemblies_lengths)r   r   assemblies_lengths_fn)r,   rJ   rb   r   r   r   save_assembly_lengths   s    
rd   c             C   sH   t t| |t ddd |D |d tdd |j D d| d |iS )	NrG   c             S   s   g | ]}t j|qS r   )r   r1   )r2   rF   r   r   r   r4      s    z,save_features_in_contigs.<locals>.<listcomp>Z_in_contigsc             s   s    | ]\}}t j||fV  qd S )N)r   r1   )r2   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,   rJ   feature_nameZfeatures_in_contigsZref_features_numr   r   r   save_features_in_contigs   s
    rk   c             C   s&   t t| tdd |D |||d dS )Nc             S   s   g | ]}t j|qS r   )r   r1   )r2   rF   r   r   r   r4      s    z save_GC_info.<locals>.<listcomp>)rG   reference_indexlist_of_GC_distributions list_of_GC_contigs_distributionsZlists_of_gc_info)r   r   gc_fn)r,   rJ   rm   rn   rl   r   r   r   save_GC_info   s    
rp   c             C   s   t t| t||dS )N)
assembliespaths)r   r   krona_fn)r,   krona_fpathsr^   r   r   r   save_krona_paths   s    
ru   c             C   s   t t| t|d |d dS )Nlinkslinks_names)rv   rw   )r   r   	icarus_fn)r,   icarus_linksr   r   r   save_icarus_links   s    
rz   c             C   s0   |rt t| |t |S tt| |t ||iS )N)r   r   rU   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)   rI   rL   rP   Zaligned_contigs_fnrc   rg   ro   rs   rx   rU   	json_textr   r   r0   rD   rK   rN   rR   rX   r[   r`   ra   rd   rk   rp   ru   rz   r~   r   r   r   r   <module>   sX   

6						