3
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   st  g }g }t | P}tt}tt}d }d }	d }
d }d }d }d }d }d }d }xt|D ] \}}|jddjd}|dkr|jd}	|jd}
|jd}|jd}|jd	}|jd
}|jd}|jd}|jd}qX|o|d dkr|\}}}}t|t||d}|j	| qX|r<t
|dk r<|| j	|j  qX|rXt
|dkrX||	 ||
 || || || || || || || f	\	}}}}}}}} }!t|t|t|t|f\}}}}||j| pd}"||" d }#||" d }$|#|$ ||  dk }%|}&t||#|$|||%|||&|||!dkd}'| |'_|'jrB|| j	|' n|| j	|' |j	|' qXW W d Q R X ||||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   sj    







4

rJ   c             C   s:   g }x0t j| D ]"\}}t|t|d}|j| qW |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R}t }x^|D ]V rT fdd|D }	nt|dkrf|}	n g}	x|	D ]}
 ||
< qrW |j|	 q6W dd tt|D }d }xtt|D ]h\}}|j	 }|j
dr|d dd  }||kr|j|nd }q|d k	rtt|d }|| j| qW x0t|D ]$\}}
||
 }|| j||  q*W x"|j D ]\}}t|||< q\W W d Q R X ||fS )	Nrc                s   g | ]}|  kr|qS rH   rH   ).0rC   )chrcontig_names_by_refsrH   rI   
<listcomp>c   s    z#parse_cov_fpath.<locals>.<listcomp>r   c             S   s   g | ]}g qS rH   rH   )rP   xrH   rH   rI   rS   k   s    #r   )NN)r   r%   r*   r$   dictr,   extendranger&   r(   
startswithr)   floatr+   itemsmax)	cov_fpath	chr_nameschr_full_namesrR   cov_data	max_depthZchr_contigscoverageZcontig_to_chrr3   rC   Zdata_by_contigZchrom_indexr)   r@   fschr_namedepthr?   chromdepthsrH   )rQ   rR   rI   parse_cov_fpathY   s@    


rh   c             C   sV  d}| rR|d7 }g }x(| D ]}t |jdkr4q|d7 }x|jD ]}|jr`|j|jkr`|jn|j}||jkrz|j| nd }| sD||krqD|j|}|| }	|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 }qDW |j|j |d7 }qW |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],r   z];
)r,   region_list
chromosomechr_names_dictseqnamer)   r   r   strr   idkindr+   )featuresr1   r0   features_dataZcontainers_kindfeature_containerregionrf   Zref_idrF   
corr_startcorr_endrH   rH   rI   parse_features_data}   s0    


trw   c             C   s   |sd S xr|j  D ]f\}}|s qtjr>tdd | | D }ntdd | | D }x"|D ]}||j }|jj| qZW qW d S )Nc             s   s"   | ]}|j d tj |fV  qd S )N)r   r   MAX_CONTIG_NAME_GLIMMER)rP   rC   rH   rH   rI   	<genexpr>   s    z#parse_genes_data.<locals>.<genexpr>c             s   s   | ]}|j |fV  qd S )N)r   )rP   rC   rH   rH   rI   ry      s    )r[   r   glimmerrV   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   rh   rw   r   rH   rH   rH   rI   <module>
   s   ?$