ó
£žbc           @€  sœ   d  d l  m Z d  d l Z d  d l m Z d  d l m Z m Z m Z d  d l	 m
 Z
 d  d l m Z m Z m Z d „  Z d „  Z d	 „  Z d
 „  Z d S(   iÿÿÿÿ(   t   with_statementN(   t   defaultdict(   t   qconfigt   qutilst	   reporting(   t   Misassembly(   t
   print_filet!   intergenomic_misassemblies_by_asmt   ref_labels_by_chromosomesc         C€  sW  | d } | d } | j  d ƒ | j  d ƒ t j rO | j  d | d ƒ n  | j  d ƒ | j  d ƒ | j  d | j t j ƒ ƒ | j  d | j t j ƒ | j t j ƒ | j t j ƒ | j t j	 ƒ ƒ | j  d	 | j t j ƒ ƒ | j  d
 | j t j ƒ ƒ t j
 r6| j  d | j t j	 ƒ ƒ n  | j  d | j t j ƒ ƒ t j
 r™| j  d | j t j ƒ ƒ | j  d | j t j ƒ ƒ n  |  t j k rå| j  d | j t j ƒ ƒ | j  d | j t j ƒ ƒ n  t j r| j  d | j t j ƒ ƒ n  t j r7| j  d | j t j ƒ ƒ n  t j r`| j  d | j t j ƒ ƒ n  | j  d t | ƒ ƒ | j  d | d ƒ | j  d | d ƒ | j  d | d | d f ƒ | j  d t | d ƒ ƒ | j  d | d | d  ƒ | j  d ƒ | j  d! | d" ƒ | j  d# | d$ ƒ | j  d% | d& ƒ t j d' k rc| j  d( ƒ n> t j d) k r‚| j  d* ƒ n t j d+ k r¡| j  d, ƒ n  | j  d ƒ | j  d- | d. ƒ | j  d/ | d0 ƒ | j  d1 | d0 | d& | d ƒ | j  d ƒ | j  d2 | j ƒ | j  d3 | j ƒ | j  d4 | j ƒ | j  d ƒ | S(5   Nt   misassembled_contigst   region_misassembliess   
s   Analysis is finished!
s   Founded SNPs were written into s	   Results:
s   	Local Misassemblies: %d
s   	Misassemblies: %d
s   		Relocations: %d
s   		Translocations: %d
s"   		Interspecies translocations: %d
s   		Inversions: %d
s;   	Potentially Misassembled Contigs (i/s translocations): %d
s   		Possible Misassemblies: %d
s*   	Scaffold gap extensive misassemblies: %d
s&   	Scaffold gap local misassemblies: %d
s;   	Fake misassemblies matched with structural variations: %d
s9   	Misassemblies caused by transposable elements (TEs): %d
s2   	Misassemblies caused by fragmented reference: %d
s   	Misassembled Contigs: %d
s   	Misassembled Contig Bases: %d
t   misassembled_basess@   	Misassemblies Inter-Contig Overlap ("Extra" Aligned Bases): %d
t   misassembly_internal_overlaps    Unaligned Contigs: %d + %d part
t	   unalignedt   partially_unaligneds.   Half Unaligned Contigs with Misassemblies: %s
t   half_unaligned_with_misassemblys=   Unaligned Bases in Fully and Partially Unaligned Contigs: %d
t   fully_unaligned_basest   partially_unaligned_basess   Ambiguously Mapped Contigs: %d
t   ambiguous_contigss.   Total Bases in Ambiguously Mapped Contigs: %d
t   ambiguous_contigs_lens8   "Extra" Aligned Bases in Ambiguously Mapped Contigs: %d
t   ambiguous_contigs_extra_basest   allsˆ   Note that --allow-ambiguity option was set to "all" and each of these contigs was used several times (there are "extra" aligned bases).
t   nonesy   Note that --allow-ambiguity option was set to "none" and these contigs were skipped (there is no "extra" aligned bases).
t   ones•   Note that --allow-ambiguity option was set to "one" and only first alignment per each of these contigs was used (there is no "extra" aligned bases).
s    	Covered Bases in Reference: %d
t   aligned_ref_basess#   	Raw Aligned Bases in Assembly: %d
t   aligned_assembly_basess5   	Total Aligned Bases in Assembly (with "Extras"): %d
s
   	SNPs: %d
s   	Insertions: %d
s   	Deletions: %d
(   t   writeR   t	   show_snpst   countR   t   LOCALt
   RELOCATIONt	   INVERSIONt   TRANSLOCATIONt   INTERSPECTRANSLOCATIONt   is_combined_reft   POTENTIALLY_MIS_CONTIGSt   POSSIBLE_MISASSEMBLIESt   dict_of_broken_scaffoldst   SCAFFOLD_GAPt   LOCAL_SCAFFOLD_GAPt   bedt
   MATCHED_SVt   large_genomet   POTENTIAL_MGEt   check_for_fragmented_reft
   FRAGMENTEDt   lent   strt   ambiguity_usaget
   mismatchest
   insertionst	   deletions(   t   contigs_fpatht	   log_out_ft   used_snps_fpatht   total_indels_infot   resultR	   R
   (    (    sN   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/save_results.pyt   print_results   sp    

		/	 	  	 	 	 	c         C€  sÓ
  |  d } |  d } |  d } |  d } |  d }	 |  d }
 |  d } |  d } |  d	 } |  d
 } |  d } |  d } |  d } |  d } |  d } |  d } | j  t j j | j t j ƒ ƒ | j  t j j | j t j ƒ | j t j	 ƒ | j t j
 ƒ | j t j ƒ ƒ | j  t j j t | ƒ ƒ | j  t j j | ƒ | j  t j j |	 ƒ t j rŠ| j  t j j | j t j ƒ ƒ n  t j r¸| j  t j j | j t j ƒ ƒ n  | j  t j j d |
 | f ƒ | j  t j j | | ƒ | j  t j j | ƒ | j  t j j | ƒ | j  t j j | ƒ | d  k	 r÷| j  t j j t | ƒ ƒ | j  t j j t | ƒ ƒ | j  t j j t g  | D] } | t j  k r‘| ^ q‘ƒ ƒ | j  t j j! t g  | D] } | t j  k rÏ| ^ qÏƒ ƒ n  | rÅ| d | } t" | |	 | ƒ | } | j  t j j# d | ƒ | j  t j j$ d | ƒ | j  t j j% d t" | ƒ d t" | ƒ ƒ | j  t j j& d t" | j' t j j ƒ ƒ d t" | ƒ ƒ n  | j  t j j( | j t j ƒ | j t j	 ƒ | j t j
 ƒ | j t j ƒ ƒ | j  t j j) | j t j ƒ ƒ | j  t j j* | j t j
 ƒ ƒ | j  t j j+ | j t j	 ƒ ƒ | j  t j j, t | ƒ ƒ | j  t j j- | ƒ | j  t j j. | j t j ƒ ƒ | j  t j j/ | j t j0 ƒ | j t j1 ƒ | j t j2 ƒ | j t j3 ƒ ƒ | j  t j j4 | j t j0 ƒ ƒ | j  t j j5 | j t j2 ƒ ƒ | j  t j j6 | j t j1 ƒ ƒ | j  t j j7 | j' t j j( ƒ | j' t j j/ ƒ ƒ | j  t j j8 | j t j ƒ | j t j0 ƒ ƒ | j  t j j9 | j t j
 ƒ | j t j2 ƒ ƒ | j  t j j: | j t j	 ƒ | j t j1 ƒ ƒ t j; rB	| j  t j j< | j t j ƒ ƒ | j  t j j= | j t j3 ƒ ƒ | j  t j j> | j t j ƒ | j t j3 ƒ ƒ | j  t j j? | j t j@ ƒ ƒ | j  t j jA | j t jA ƒ ƒ tB tC tD g  tE jF ƒ  D] } | ^ q0ƒ ƒ ƒ } x| D]é} t jG | d | ƒ} | | } | j  t j j( | j t j ƒ | j t j	 ƒ | j t j
 ƒ | j t j ƒ ƒ | j  t j j) | j t j ƒ ƒ | j  t j j* | j t j
 ƒ ƒ | j  t j j+ | j t j	 ƒ ƒ | j  t j j< | j t j ƒ ƒ | j  t j j. | j t j ƒ ƒ | j  t j jA | j t jA ƒ ƒ | j  t j j? | j t j@ ƒ ƒ | t jH k r	| j  t j jI | j t jJ ƒ ƒ | j  t j jK | j t jL ƒ ƒ n  t jM rR| j  t j jN | j t jO ƒ ƒ qRqRWn› tP rÝ	tQ jR | ƒ } tQ jS | ƒ } tP | | } | j  t j j< | j t j ƒ ƒ | j  t j jA | j t jA ƒ ƒ | j  t j j? | j t j@ ƒ ƒ n  | t jH k r3
| j  t j jI | j t jJ ƒ ƒ | j  t j jK | j t jL ƒ ƒ n  t jM ra
| j  t j jN | j t jO ƒ ƒ n  | j  t j jT |
 ƒ | j  t j jU | ƒ | j  t j jV | ƒ | j  t j jW | ƒ | j  t j jX | ƒ | S(   NR
   t   misassemblies_by_refR	   R   R   R   R   R   R   R   R   t   SNPst   indels_listR   R   R   s   %d + %d partg      Y@s   %.3fs   %.2fg     jø@t   ref_name(Y   t	   add_fieldR   t   Fieldst   MISLOCALR   R   R   t
   MISASSEMBLR   R   R    R!   t
   MISCONTIGSR.   t   MISCONTIGSBASESt   MISINTERNALOVERLAPR   R(   t   STRUCT_VARIATIONSR)   R*   R+   t	   UNALIGNEDt   UNALIGNEDBASESt	   AMBIGUOUSt   AMBIGUOUSEXTRABASESt
   MISMATCHESt   Nonet   INDELSt   INDELSBASESt   sumt   MIS_SHORT_INDELSt   SHORT_INDEL_THRESHOLDt   MIS_LONG_INDELSt   floatt   MAPPEDGENOMEt   DUPLICATION_RATIOt	   SUBSERRORt   INDELSERRORt	   get_fieldt   MIS_ALL_EXTENSIVEt   MIS_RELOCATIONt   MIS_TRANSLOCATIONt   MIS_INVERTIONt   MIS_EXTENSIVE_CONTIGSt   MIS_EXTENSIVE_BASESt	   MIS_LOCALt   SCF_MIS_ALL_EXTENSIVEt   SCF_RELOCATIONt   SCF_INVERSIONt   SCF_TRANSLOCATIONt   SCF_INTERSPECTRANSLOCATIONt   SCF_MIS_RELOCATIONt   SCF_MIS_TRANSLOCATIONt   SCF_MIS_INVERTIONt   CTG_MIS_ALL_EXTENSIVEt   CTG_MIS_RELOCATIONt   CTG_MIS_TRANSLOCATIONt   CTG_MIS_INVERTIONR"   t   MIS_ISTRANSLOCATIONSt   SCF_MIS_ISTRANSLOCATIONSt   CTG_MIS_ISTRANSLOCATIONSt   CONTIGS_WITH_ISTRANSLOCATIONSR#   R$   t   sortedt   listt   setR   t   valuest   getR%   t   MIS_SCAFFOLDS_GAPR&   t   MIS_LOCAL_SCAFFOLDS_GAPR'   R,   t   MIS_FRAGMENTEDR-   R   R   t   label_from_fpatht   name_from_fpatht   UNALIGNED_FULL_CNTGSt   UNALIGNED_FULL_LENGTHt   UNALIGNED_PART_CNTGSt   UNALIGNED_PART_LENGTHt   UNALIGNED_MISASSEMBLED_CTGS(   R8   t   reportt   fnamet	   ref_fpatht   genome_sizeR
   R:   R	   R   R   R   R   R   R   R   R   R;   R<   R   R   R   t   it   genome_fractiont   duplication_ratiot   reft   all_referencesR=   t	   subreportt   ref_misassembliest   label(    (    sN   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/save_results.pyt   save_resultO   sÜ    















"/	%	% >A../""""/"""8222	""""1
/""""""""%	,""%"%	%c         C€  s   | j  t j j ƒ } | j  t j j ƒ } | j t j j d | d f ƒ | j t j j | ƒ | j t j j | ƒ | j t j j	 | ƒ d  S(   Ns   %d + %d parti    (
   RW   R   R?   t   CONTIGSt   TOTALLENR>   RF   RG   Ry   Rz   (   R8   R~   t   unaligned_ctgst   unaligned_length(    (    sN   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/save_results.pyt   save_result_for_unalignedÈ   s     c         C€  sÃ  g  |  D] } | r | d n d  ^ q } g  |  D] } | rF | d n d  ^ q0 } g  } x0 | j ƒ  D]" }	 |	 | k re | j |	 ƒ qe qe Wt j s¡ | j ƒ  n  g  }
 i d d 6| d 6} |
 j | ƒ | sÒ d  SxÌt | ƒ D]¾\ } } t j | ƒ } i | d 6g  d 6} |
 j | ƒ | | } t	 t
 ƒ t | <x4 | D], }	 | | rZ| | |	 n g  t | |	 <q<W| rß t j | ƒ } g  } i d d 6g  t t | ƒ ƒ D] } | d ^ q¤d 6} | j | ƒ xÿ | D]÷ }	 i |	 d 6g  d 6} xS | D]K } |	 | k s| | k r%| d j d  ƒ qó| d j | |	 | ƒ qóWd } | | } | rq| |	 j t j ƒ } n  t d t g  | d D] } | r…| ^ q…ƒ ƒ } |
 d d j | | ƒ | j | ƒ qÒWt j j | d	 | ƒ } t | d
 ƒ  } | j d ƒ Wd  QXt | | d t ƒt | d ƒ T } | j d ƒ x= t | ƒ D]/ \ } }	 | j t | d ƒ d |	 d ƒ qJWWd  QX| j d | | f ƒ qß qß Wg  } t j r¿d d l m } g  } x= |
 d D]1 } | d rõ| j | d ƒ qÑ|
 j  | ƒ qÑWxd t t | ƒ ƒ D]P } g  } x4 |
 d D]( } | d r0| j | d | ƒ q0q0W| j | ƒ qWt j j | d ƒ } | j! d | | | | | d d d t" d d  d t d | ƒn  d  S(   Nt   istranslocations_by_refsR:   t
   Referencest
   metricNameRr   i   i    iÿÿÿÿs+   interspecies_translocations_by_refs_%s.infot   ws6   Number of interspecies translocations by references: 
t   append_to_existing_filet   as   References:
s    - s   
sS     Information about interspecies translocations by references for %s is saved to %s(   t   plottert   intergenomic_misassembliest    t   titles/   Intergenomic misassemblies (found and supposed)t   reverset   yaxis_titlet   print_all_refst   logger(#   RK   Rr   t   appendR   t   use_input_ref_ordert   sortt	   enumerateR   Rw   R   Rp   R   Rx   t   rangeR.   R   R   R$   t   maxRN   t   ost   patht   joint   openR   R   t   TrueR/   t   infot
   draw_plotst
   quast_libsR–   t   removet   draw_meta_summary_plott   False(   t   resultst   contigs_fpathsR   t
   output_dirR   R8   t   istranslocations_by_asmt   misassemblies_by_asmt   all_refsR…   t   misassemblies_by_refs_rowst   rowR‚   t   fpathR‰   t   istranslocations_by_reft   assembly_namet   all_rowst   ref_numt
   second_reft   possible_misassembliesR:   t   rt   istranslocationst   misassembly_by_ref_fpatht   misassembly_by_ref_filet   misassembliesR–   t   aligned_contigs_labelst   cur_resultst   is_translocations_plot_fpath(    (    sN   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/save_results.pyt   save_combined_ref_statsÒ   sˆ    ))	
*7
2-		

	(   t
   __future__R    R¤   t   collectionsR   R«   R   R   R   t)   quast_libs.ca_utils.analyze_misassembliesR   t   quast_libs.ca_utils.miscR   R   R   R9   RŠ   R   RÆ   (    (    (    sN   /home/psgendb/BIRCHDEV/install/quast-5.2.0/quast_libs/ca_utils/save_results.pyt   <module>   s   	?	y	
