a
    b                     @   sh   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
 dd Zdd Zd	d
 Zdd Zdd ZdS )    )with_statement)defaultdict)fastaparserqconfigqutils)	AlignmentContigc           (      C   s  g }g }t | V}tt}tt}d }d }	d }
d }d }d }d }d }d }d }t|D ]\}}|ddd}|dkr|d}	|d}
|d}|d}|d	}|d
}|d}|d}|d}qT|r|d dkr|\}}}}t|t||d}|	| qT|r:t
|dk r:|| 	|  qT|rTt
|dkrT||	 ||
 || || || || || || || f	\	}}}}}}}} }!t|t|t|t|f\}}}}||| pd}"||" d }#||" d }$|#|$ ||  dk }%|}&t||#|$|||%|||&|||!dkd}'| |'_|'jr@|| 	|' n|| 	|' |	|' qTW d    n1 sp0    Y  ||||fS )N
 	r   S1E1ZS2ZE2	Referencer   IDY	Ambiguous
Best_groupCONTIG)namesizecontig_type      True)r   startendunshifted_startunshifted_endis_rcstart_in_contigend_in_contigposition_in_refref_nameidyis_best_set)openr   list	enumeratereplacesplitindexr   intappendlenstripr   	ambiguousr#   )(report_fpath	ref_namescumulative_ref_lengthsaligned_blockscontigsreport_filemisassembled_id_to_structureambiguity_alignments	contig_id	start_colend_colZstart_in_contig_colZend_in_contig_colref_col
contig_colidy_col	ambig_colbest_coliline
split_line_r   r   r   contigr   r   r   r   r!   r"   	ambiguityis_best	cur_shiftr   r   r   r    block rH   B/home/psgendb/BIRCHDEV/pkg/quast-5.2.0/quast_libs/icarus_parser.pyparse_aligner_contig_report   sr    









,rJ   c                 C   s6   g }t | D ]"\}}t|t|d}|| q|S )N)r   r   )r   
read_fastar   r,   r+   )contigs_fpathr3   r   seqrC   rH   rH   rI   parse_contigs_fpathQ   s
    rN   c                    s  | sdS t t}t t}g }t| dH}t }|D ]R rR fdd|D }	nt|dkrd|}	n g}	|	D ]}
 ||
< qn||	 q4dd tt|D }d }t|D ]h\}}|	 }|
dr|d dd  }||v r||nd }q|d urtt|d }|| | qt|D ]$\}}
||
 }|| ||  q| D ]\}}t|||< qJW d    n1 sx0    Y  ||fS )	N)NNrc                    s   g | ]}|  kr|qS rH   rH   .0rC   chrcontig_names_by_refsrH   rI   
<listcomp>c       z#parse_cov_fpath.<locals>.<listcomp>r   c                 S   s   g | ]}g qS rH   rH   )rQ   xrH   rH   rI   rU   k   rV   #r   )r   r%   r*   r$   dictr,   extendranger&   r(   
startswithr)   floatr+   itemsmax)	cov_fpath	chr_nameschr_full_namesrT   cov_data	max_depthZchr_contigscoverageZcontig_to_chrr3   rC   Zdata_by_contigZchrom_indexr)   r@   fschr_namedepthr?   chromdepthsrH   rR   rI   parse_cov_fpathY   s@    

0rk   c                 C   sJ  d}| rF|d7 }g }| D ]}t |jdkr0q|d7 }|jD ]}|jrZ|j|jv rZ|jn|j}||jv rt|j| nd }|r>||vrq>||}|| }	|j|	 }
|j|	 }|dt|j	 d t|j d t|j d t|
 d	 t| d
 t|j
 d t|j d t| d 7 }q>||j |d7 }q|d d d }|S )Nzvar features_data = [];
zfeatures_data = [ r   z[ z{name: "z
", start: z, end: z,corr_start: z,corr_end: z, id_: "z	",kind: "z", chr:z},z],z];
)r,   region_list
chromosomechr_names_dictseqnamer)   r   r   strr   idkindr+   )featuresr1   r0   features_dataZcontainers_kindfeature_containerregionri   Zref_idrF   
corr_startcorr_endrH   rH   rI   parse_features_data}   s\    




*
rz   c                 C   sx   |sd S |  D ]b\}}|sqtjr<tdd | | D }ntdd | | D }|D ]}||j }|j| qVqd S )Nc                 s   s"   | ]}|j d tj |fV  qd S N)r   r   MAX_CONTIG_NAME_GLIMMERrP   rH   rH   rI   	<genexpr>   rV   z#parse_genes_data.<locals>.<genexpr>c                 s   s   | ]}|j |fV  qd S r{   )r   rP   rH   rH   rI   r}      rV   )r^   r   glimmerrY   rC   genesr+   )contigs_by_assembliesgenes_by_labelslabelr   r3   generC   rH   rH   rI   parse_genes_data   s    
r   N)
__future__r   collectionsr   
quast_libsr   r   r   quast_libs.icarus_utilsr   r   rJ   rN   rk   rz   r   rH   rH   rH   rI   <module>
   s   ?$