ó
£žbc        
   @€  sÃ  d  d l  m Z d  d l m Z m Z m Z m Z m Z d  d l m	 Z	 m
 Z
 m Z m Z d  d l m Z d  d l m Z m Z m Z m Z m Z m Z m Z y d  d l m Z Wn! e k
 rÕ d  d l m Z n Xd  d l Z d  d l Z d  d l m Z d  d	 l m Z m Z m  Z  m! Z! d  d
 l" m# Z# d  d l$ j% j% Z% d  d l m& Z& d  d l' m( Z( e( e j) ƒ Z* d d d d e, d d d d „ Z- d „  Z. d d d d d d d d d d „	 Z/ d S(   iÿÿÿÿ(   t   with_statement(   t"   prepare_alignment_data_for_one_reft   save_alignment_data_for_one_reft   save_contig_size_htmlt   get_assemblies_datat   get_contigs_data(   t   parse_contigs_fpatht   parse_features_datat   parse_cov_fpatht   parse_genes_data(   t   parse_aligner_contig_report(   t   make_output_dirt   group_referencest   format_cov_datat   format_long_numberst   get_info_by_chrt   get_assembliest   check_misassembled_blocks(   t   OrderedDictN(   t   defaultdict(   t   qconfigt   qutilst   fastaparsert   genome_analyzer(   t   ref_labels_by_chromosomes(   t	   reporting(   t
   get_loggerc   -      C€  s.  t  | ƒ g  } t ƒ  } i  } i  } d } t ƒ  } d  } d  } g  } d  } | r_xZ t j | ƒ D]I \ } } | j ƒ  d } | j | ƒ t | ƒ } | | 7} | | | <qb Wd } d g } t rÍ t } nß t	 | j
 ƒ  ƒ t j k r¬t ƒ  } t | ƒ t j k rŽd } d } t j t | ƒ } x | j ƒ  D]U \ } } | | 7} | | | <| t j k r2d } | d 7} t j t | ƒ } q2q2Wq¬x | D] } | | | <q•Wn  xƒ t | ƒ D]u \ } }  | |  }! | d |! }" | r!| t | ƒ d k  r!| |  | | | d k r!d }" q!n  | j |" ƒ q¹Wt	 | j
 ƒ  ƒ | t | j
 ƒ  ƒ d }# n  xø |  D]ð }$ t j |$ }% | sŽt |$ ƒ }& n¾ | t j |$ ƒ }' t |' t | j ƒ  ƒ | ƒ \ }( }) }& }* |& sàt |$ ƒ }& n  |( d  k rðd  Sx |( D] }+ |% |+ _ q÷Wt |( |) ƒ }( | j |( ƒ |) | |% <t j d k rL|* | |% <n  |& | |% <qfW| rut |	 | | ƒ } n  |  r”t j r”t | | ƒ n  | r¸| r¸t  |  | |# | ƒ } n  | sÄ| r$t j! r$t" | |  | | | d | d | d | d	 | d
 | d | d | d | d | d |
 ƒ
}, n d  }, |, S(   Ni    id   i   iÿÿÿÿt   allt   contig_names_by_refst	   ref_fpatht   stdout_patternt   ambiguity_alignments_by_labelst   contigs_by_assembliest   features_datat   gc_fpatht	   cov_fpatht   physical_cov_fpatht   json_output_dir(#   R   R   t   NoneR   t
   read_fastat   splitt   appendt   lenR   t   sumt   valuesR   t   MAX_SIZE_FOR_COMB_PLOTt   dictt   ICARUS_MAX_CHROMOSOMESt   alignment_viewer_part_namet   strt   itemst	   enumeratet   assembly_labels_by_fpathR   R   t   label_from_fpath_for_fnameR
   t   listt   keyst   labelR   t   ambiguity_usageR   t   gene_findingR	   R   t   create_icarus_htmlt   js_data_gen(-   t   contigs_fpathst   contig_report_fpath_patternt   output_dirpathR   R#   R$   R"   R   t   find_similart   featuresR%   t   genes_by_labelst   lists_of_aligned_blocksR    t   structures_by_labelsR   t   total_genome_sizet   reference_chromosomesR   t
   assembliest	   chr_namesR!   t   namet   seqt   chr_namet   chr_lent   virtual_genome_shiftt   cumulative_ref_lengthst   summary_lent	   num_partst	   html_namet   it   chrt
   chr_lengtht   len_to_appendt   virtual_genome_sizet   contigs_fpathR8   t   contigst   report_fpatht   aligned_blockst   misassembled_id_to_structuret   ambiguity_alignmentst   blockt   icarus_html_fpath(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/icarus.pyt   do%   sœ    
		
			



2-$
c         C€  s;   g  t  j d |  ƒ D]$ } | j ƒ  r1 t | ƒ n | ^ q S(   Ns   (\d+)(   t   reR(   t   isdigitt   int(   t   string_t   s(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/icarus.pyt   natural_sort‚   s    c   P      C€  ss	  g  } | rü |  rü t  ƒ  } t | j ƒ  ƒ } xÌ |  j D]¾ } t t ƒ | | j <d } d } xX | j D]M } | | j | j j | ƒ | j	 rf | j
 r¦ | d 7} q³ | d 7} qf qf Wt j | j ƒ } | j t j j | ƒ | j t j j | ƒ q7 Wn  t j j | t j ƒ } t j j | t j ƒ } t j j | ƒ sNt j | ƒ n  t | | | | ƒ \ } } t | | | | ƒ \ } } t | | | | ƒ \ } } t | | | | ƒ \ } } i  } i  }  t j ƒ  }! t j j t j j t j j  t j j! g }" t" | | |	 |" ƒ \ }# }$ }% i  }& i  }' d }( t# d „  t$ | ƒ Dƒ ƒ }) x: |) j% ƒ  D], \ }* }+ |( d t& |+ ƒ d |* d 7}( qUWx¢ t$ | ƒ D]” \ }+ }, | rÐg  | D] }- | |- |, k r«|- ^ q«}. n$ t' | ƒ d k rë| }. n	 |, g }. |. |& |, <d g g  |. D] }- | |- ^ q|' |, <q’Wt t( ƒ }/ t t ƒ }0 t t) ƒ }1 xèt$ | ƒ D]Ú\ }+ }, |& |, }. |' |, }2 t* g  |. D] }- | |- ^ q…ƒ }3 |3 | |, <t' |. ƒ |  |, <g  }4 |4 j d ƒ xP |. D]H }5 | |5 }6 |4 j d	 |5 d
 t& |6 ƒ d ƒ |0 |, j+ |! |5 ƒ qÒW| r<t, |, | d | d ƒ n d  }7 | r`t, |, | d | d ƒ n d  }8 | r„t, |, | d d d ƒ n d  }9 t. |, | |) |. |4 | | | d | d |7 d |8 d |9 d | d | ƒ\ }: }; }< }= }> |/ |, <|1 |, <t/ j0 | ƒ }? t1 |, |. |? | |: |; |> d |( d |
 d |# d |< d |= ƒq[Wt2 | |" |% | | | | ƒ \ }@ }A |# |$ |@ }B t3 | | |A |B ƒ t t ƒ }C t' | ƒ d k rÍt j }D |C d j |D ƒ |C d j t j4 ƒ n  t5 j6 t j7 ƒ }E t# ƒ  }F g  | D] }G t j8 |G ^ qï}H |H |F d  <t5 j9 | d! j |H ƒ d  ƒ t j j t j t j: ƒ }I |I |F d" <t5 j9 | |I d" ƒ | s”|C d j |I ƒ |C d j t j4 ƒ n  | r?t' | ƒ d k sµt j; r?i g  d# 6|F d$ <g  | D] }, t' |1 |, ƒ ^ qÍ}J t' t) |J ƒ ƒ d k }K |K rt< |F d$ d% <n  xt= | d& t> ƒD]ð }, t? |, |0 | | | d' t' | ƒ d k ƒ\ }D }L }M }3 }N t# ƒ  }O |D |O d( <|N |O d) <t j j@ |L ƒ |O d* <t& |  |, ƒ |O d+ <tA |3 ƒ |O d, <|K rät& t' |1 |, ƒ ƒ |O d- <n  d. |M |O d/ <t& |/ |, ƒ |O d0 <|F d$ d# j |O ƒ q+Wt5 j9 | |F d$ d$ d1 tB ƒn| rL	| d }, t? |, |0 | | | d' t< ƒ\ }D }L }M }3 }N t# ƒ  |F d2 <|D |F d2 d3 <t j j@ | ƒ |F d2 d4 <t& |  |, ƒ |F d2 d5 <tA |3 ƒ |F d2 d6 <d. |M |F d2 d7 <t& |/ |, ƒ |F d2 d0 <|C d j |D ƒ |C d j t j4 ƒ t5 j9 | |F d2 d8 d1 tB ƒn  t5 jC |E | |F ƒ t5 jD | |C ƒ | S(9   Ni    i   s   var references_by_id = {};
c         s€  s'   |  ] \ } } | t  | ƒ f Vq d  S(   N(   R1   (   t   .0RR   t   chrom(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/icarus.pys	   <genexpr>³   s    s   references_by_id["s   "] = "s   ";
s   var chromosomes_len = {};s   chromosomes_len["s   "] = t   ;t   coverage_datat   reads_max_deptht   physical_coverage_datat   physical_max_deptht   gc_dataid   t   max_gcR   t   cov_data_strt   physical_cov_data_strt   gc_data_strR   t   output_dir_patht   ref_dataR!   t   assemblies_datat   contigs_structure_strt   additional_assemblies_datat   linkst   links_namesRG   s   , t   contig_size_htmlt
   referencest   table_referencest   th_assembliest   keyt   one_chromosomet   chr_linkt   tooltipRK   t   num_contigst   chr_sizet   num_assembliess   %.3ft   chr_gft   num_misassembliest   as_textt   one_referencet   alignment_linkR   t   ref_fragmentst   ref_sizet   ref_gft   menu_reference(E   R   R6   R7   RG   R   R8   t
   alignmentst   ref_nameR)   t   similart   misassembledR   t   gett   fpatht	   add_fieldt   Fieldst   SIMILAR_CONTIGSt   SIMILAR_MIS_BLOCKSt   ost   patht   joinR   t   icarus_html_fnamet   icarus_dirnamet   existst   mkdirR   R   R   t   get_ref_aligned_lengthst   N50t   Nxt   NG50t   NGxR   R.   R3   R2   R1   R*   Rb   t   setR+   t   extendR   R&   R   R   t   name_from_fpathR   R   R   t   icarus_linkt
   html_savert   get_real_patht   icarus_menu_template_fnameR4   t   save_icarus_datat   contig_size_viewer_fnamet   is_combined_reft   Truet   sortedRe   R   t   basenameR   t   Falset   save_icarus_htmlt   save_icarus_links(P   RG   R=   t   chromosomes_lengthR?   RD   R    R   R   R   R   R!   R"   R#   R$   R%   RH   t   chr_to_aligned_blockst   assemblyt   similar_correctt   similar_misassembledt   alignt   reportt   main_menu_fpatht   output_all_files_dir_patht   chr_full_namest   cov_datat	   max_deptht   physical_cov_dataRl   Rm   Rn   t	   chr_sizesR   t   aligned_basest   nx_marksRt   t   assemblies_contig_size_datat   assemblies_n50t   ref_contigs_dictt   chr_lengths_dictRs   t   chr_names_by_idRg   RR   RS   t   contigt   ref_contigsR…   t   aligned_bases_by_chrt   aligned_assembliest   chr_lengthsR‚   t   data_strt
   ref_contigt   lRo   Rp   Rq   t   alignment_viewer_fpatht   ref_data_strRu   Rv   t   ms_selectorsRŽ   t   contigs_sizes_strt   too_many_contigst   all_datat   icarus_linksR   t   main_menu_template_fpatht   main_data_dictRW   t   labelst   contig_size_browser_fpatht   num_aligned_assembliest   is_unaligned_asm_existsRK   t
   chr_genomeR€   t   reference_dict(    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/icarus.pyR<   †   s    			*$,		
,

#

#$$$,		 

!#*	

 
 (0   t
   __future__R    t   quast_libs.icarus_builderR   R   R   R   R   t   quast_libs.icarus_parserR   R   R   R	   R
   t   quast_libs.icarus_utilsR   R   R   R   R   R   R   t   collectionsR   t   ImportErrort%   quast_libs.site_packages.ordered_dictR—   R`   R   t
   quast_libsR   R   R   R   t   quast_libs.ca_utils.miscR   t    quast_libs.html_saver.html_saverR§   R   t   quast_libs.logR   t   LOGGER_DEFAULT_NAMEt   loggerR&   R­   R_   Re   R<   (    (    (    s?   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/icarus.pyt   <module>
   s,   ("4"	[		