ó
›¢yZc           @   só   d  d l  Z  d  d l Z d  d l Z d  d l m Z m Z m Z m Z d  d l m	 Z	 d d l m
 Z
 m Z d  d l m Z m Z d  d l m Z e e j ƒ Z d d	 d
 g Z d „  Z d „  Z e j j e j d ƒ Z e d „ Z d „  Z d S(   iÿÿÿÿN(   t	   reportingt   qconfigt   qutilst   ca_utils(   t   compile_aligneri   (   t   get_path_to_programt
   is_python2(   t   joint   abspath(   t
   get_loggert   Utilst	   SizeFastat   GetFastaStatsc         C   s>   x7 t  D]/ } t j j t j j |  | d ƒ ƒ s t Sq Wt S(   Ns   .class(   t   required_java_fnamest   ost   patht   isfileR   t   Falset   True(   t   dirpatht   required_name(    (    s>   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/gage.pyt   all_required_java_classes_exist   s    %c      
   C   sŸ  t  j | ƒ } t  j | ƒ } t j d t  j |  ƒ | d ƒ t j j | d | d ƒ } t j j | d | d ƒ }	 t j d t  j |  ƒ d t j j	 | ƒ d t j j	 |	 ƒ d ƒ t
 | d ƒ }
 t
 |	 d ƒ } t  j d	 | t t j j ƒ | | | t t j ƒ g d
 |
 d | d d t  j |  ƒ d t ƒ} | d k rit j d t  j |  ƒ d ƒ n t j d t  j |  ƒ d ƒ |
 j ƒ  | j ƒ  | S(   Ns     s   ...t   gage_s   .stdouts   .stderrs   Logging to files s    and t   wt   sht   stdoutt   stderrt   indentt   only_if_debugi    s   Failed.s   Done.(   R   t   label_from_fpatht   label_from_fpath_for_fnamet   loggert   infot   index_to_strR   R   R   t   basenamet   opent   call_subprocessR   R   t   misct   contig_aligner_dirpatht   strR   t
   min_contigR   t   close(   t   it   contigs_fpatht   gage_results_dirpatht   gage_tool_patht	   referencet   tmp_dirt   assembly_labelt   corr_assembly_labelt   log_out_fpatht   log_err_fpatht	   log_out_ft	   log_err_ft   return_code(    (    s>   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/gage.pyt   run_gage   s,    "@	!

t   gagec         C   sÖ  |  rV xI t  D]A } t j j t | d ƒ } t j j | ƒ r t j | ƒ q q Wt St d ƒ } | d  k r‡ t
 j d t d ƒ t St j ƒ  } t j t ƒ t
 j d t j j t d ƒ d ƒ y{ g  t  D]j } t j d t j j t | d ƒ g d	 t t j j t d ƒ d
 ƒ d t t j j t d ƒ d
 ƒ ƒ^ qÎ } Wn4 t k
 rut
 j d t d ƒ t j | ƒ t SXt j | ƒ t d „  | Dƒ ƒ s¦t t ƒ rÒt
 j d t d t j sÆd n d ƒ t St S(   Ns   .classt   javacsZ   Java compiler not found (javac)! Please install it or compile GAGE java classes manually (s	   /*.java)!s'   Compiling JAVA classes (details are in s   make.logs    and make.err)s   .javaR   R   R   s   make.errs   Permission denied accessing s   . Did you forget sudo?c         s   s   |  ] } | d  k Vq d S(   i    N(    (   t   .0R6   (    (    s>   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/gage.pys	   <genexpr>_   s    s3   Error occurred during compilation of java classes (s&   /*.java)! Try to compile it manually. sD   You can restart Quast with the --debug flag to see the command line.t    (   R   R   R   R   t   gage_dirpathR   t   removeR   R   t   NoneR   t   errorR   t   getcwdt   chdirt	   main_infoR   R$   R#   t   IOErrort   warningt   anyR   R   t   debug(   t
   only_cleanR   t   fpatht
   javac_patht   cur_dirt
   java_fnamet   return_codes(    (    s>   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/gage.pyt   compile_gageA   s8    $x#c            sb  t  j j | d ƒ ‰ t  j j ˆ ƒ s7 t  j ˆ ƒ n  t  j j t d ƒ ‰ t j ƒ  t j d ƒ d d d d d d	 d
 d d d d d d d d d d d d d d d d d d g } t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j t	 j
 j  t	 j
 j! t	 j
 j" t	 j
 j# g } t  j j ˆ d ƒ ‰ t  j j$ ˆ ƒ sÒt  j% ˆ ƒ n  t& t ƒ söt' t ƒ rt( ƒ  rt j) d ƒ d  St* t+ | ƒ t, j- ƒ } t. ƒ  rAd d l/ m0 } m1 ‰  n d d l2 m0 } m1 ‰  t, j3 sš| d | ƒ ‡  ‡ ‡ ‡ ‡ f d †  t4 | ƒ Dƒ ƒ } n: g  t4 | ƒ D]' \ } }	 t5 | |	 ˆ ˆ ˆ ˆ ƒ ^ q§} d | k rt j) d  t  j j ˆ d! ƒ ƒ d  Sx$t4 | ƒ D]\ } }	 t6 j7 |	 ƒ }
 t	 j8 |	 ƒ } t  j j ˆ d" |
 d# ƒ } t9 | d$ ƒ } d } x­ | D]¥ } | | | k rt| | j: d ƒ rÏ| j; | | | j< | | d% ƒ d& j= ƒ  ƒ n' | j; | | | j< d% ƒ d& j= ƒ  ƒ | d& 7} | t+ | ƒ k rPqqtqtW| j> ƒ  qWt	 j? | ƒ t, j@ sQtA jB ˆ ƒ n  t j d' ƒ d  S((   NR8   s   getCorrectnessStats.shs   Running GAGE...s   Total unitst   Mint   Maxt   N50s   Genome Sizes   Assembly Sizes   Chaff basess   Missing Reference Basess   Missing Assembly Basess   Missing Assembly Contigss   Duplicated Reference Basess   Compressed Reference Basess   Bad Trims   Avg Idyt   SNPss   Indels < 5bps   Indels >= 5t
   Inversionst
   Relocationt   Translocationt   BasesInFastat   tmpsT   GAGE module was not installed properly, so it is disabled and you cannot use --gage.iÿÿÿÿ(   t   Parallelt   delayedt   n_jobsc         3   s6   |  ], \ } } ˆ  t  ƒ | | ˆ ˆ ˆ ˆ ƒ Vq d  S(   N(   R7   (   R:   R*   R+   (   RX   R,   R-   t	   ref_fpatht   tmp_dirpath(    s>   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/gage.pys	   <genexpr>’   s   i    sX   Error occurred while GAGE was processing assemblies. See GAGE error logs for details: %ss   gage_*.stderrR   s   .stdoutt   rt   :i   s   Done.(C   R   R   R   t   isdirt   mkdirR<   R   t   print_timestampRB   R    t   Fieldst   GAGE_NUMCONTIGSt   GAGE_MINCONTIGt   GAGE_MAXCONTIGt   GAGE_N50t   GAGE_GENOMESIZEt   GAGE_ASSEMBLY_SIZEt   GAGE_CHAFFBASESt   GAGE_MISSINGREFBASESt   GAGE_MISSINGASMBLYBASESt   GAGE_MISSINGASMBLYCONTIGSt   GAGE_DUPREFBASESt   GAGE_COMPRESSEDREFBASESt   GAGE_BADTRIMt   GAGE_AVGIDYt	   GAGE_SNPSt   GAGE_SHORTINDELSt   GAGE_LONGINDELSt   GAGE_INVERSIONSt   GAGE_RELOCATIONt   GAGE_TRANSLOCATIONt   GAGE_NUMCORCONTIGSt   GAGE_CORASMBLYSIZEt   GAGE_MINCORCONTIGt   GAGE_MAXCORCOTINGt   GAGE_CORN50t   existst   makedirsR   R   RM   R?   t   mint   lenR   t   max_threadsR   t   joblibRW   RX   t   joblib3t   memory_efficientt	   enumerateR7   R   R   t   getR#   t
   startswitht	   add_fieldt   splitt   stripR)   t	   save_gageRF   t   shutilt   rmtree(   RZ   t   contigs_fpathst   output_dirpatht   metricst   metrics_in_reportingRY   RW   RL   R*   R+   R1   t   reportR2   t   logfile_outt   cur_metric_idt   line(    (   RX   R,   R-   RZ   R[   s>   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/gage.pyt   dog   sv    
	$		$7		2'
	(   t   loggingR   RŠ   t
   quast_libsR    R   R   R   t   quast_libs.ca_utils.miscR   R   R   t   os.pathR   R   t   quast_libs.logR	   t   LOGGER_DEFAULT_NAMER   R   R   R7   R   t   LIBS_LOCATIONR<   R   RM   R”   (    (    (    s>   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/gage.pyt   <module>   s   "		!&