ó
›¢yZc           @€  s&  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l 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  d l m Z d  d l m Z d  d l m Z d  d	 l m Z e e	 j ƒ Z e Z d
 „  Z d „  Z d „  Z d „  Z  e d „ Z! d „  Z" d S(   iÿÿÿÿ(   t   with_statementN(   t	   reportingt   qconfigt   qutils(   t   open_gzipsafe(   t
   read_fastat   write_fastat   rev_comp(   t   add_genes_to_fasta(   t   Gene(   t
   get_logger(   t
   is_python2c      
   C€  sl   t  | d ƒ } | j d ƒ x? |  D]7 } t | ƒ # } | j t j | d d ƒ ƒ Wd QXq# W| j ƒ  | S(   s<   Merges all GFF files into a single one, dropping GFF header.t   ws   ##gff-version 3
i   N(   R   t   writet   opent
   writelinest	   itertoolst   islicet   Nonet   close(   t   gffst   out_patht   out_filet   gff_patht   gff_file(    (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt
   merge_gffs   s    &
c      
   c€  sÇ   t  |  ƒ } t j t t d „  | ƒ ƒ d d ƒ} xƒ | D]{ \	 } } } } } } }	 }
 } | d k rm q: n  t d „  | j d ƒ Dƒ ƒ } | | j d ƒ t | ƒ t | ƒ |	 f Vq: W| j	 ƒ  d  S(   Nc         S€  s   |  j  d ƒ S(   Nt   #(   t
   startswith(   t   l(    (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt   <lambda>*   s    t	   delimiters   	t   mRNAc         s€  s   |  ] } | j  d  ƒ Vq d S(   t   =N(   t   split(   t   .0t   kv(    (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pys	   <genexpr>0   s    t   ;t   Name(
   R   t   csvt   readert   listt   filtert   dictR!   t   gett   intR   (   R   R   t   rt   indext   _sourcet   typet   startt   endt   scoret   strandt   phaset   extrat   attrs(    (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt	   parse_gff(   s    	(-c         €  s½  ‡  ‡ ‡ ‡ f d †  } t  j j |  d ƒ ‰ t  j j |  d d ƒ ‰ i  } g  }	 t j d | ƒ }
 x¶ t t | ƒ ƒ D]¢ \ } \ } } t | ƒ } | t j	  } t  j j |
 | d ƒ } t  j j |
 | d ƒ } t
 | | | f g ƒ | | | ƒ d k rv |	 j | ƒ | | | <qv qv W|	 s&d S| d	 t j s<d
 n d } t |	 | ƒ } t ƒ  d } } g  } d g t | ƒ } xí t | ƒ D]ß \ } } } } } | d 7} | d k rË| | | | d !} n t | | | | d !ƒ } | | k r| j | ƒ n  | j t d | d | d | d | d | ƒ ƒ x4 t | ƒ D]& \ } } | | c | | | k 7<q=WqˆWt r‹| d } t | | ƒ n  t j s¤t j |
 ƒ n  | | t | ƒ | | f S(   Nc         €  sg   t  ˆ  d ƒ R } t j ˆ |  d ˆ d d | g d | d | d d t j ˆ ƒ d ƒ} | SWd  QXd  S(	   Nt   as   -ds   -gs   -ot   stdoutt   stderrt   indents     (   R   R   t   call_subprocesst   index_to_str(   t   contig_patht   tmp_patht   err_filet   return_code(   t   err_pathR.   t	   tool_exect   trained_dir(    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt   run6   s    t
   glimmerhmmt   trainedt   arabidopsist   dirs   .fastas   .gffi    s
   _genes.gffs   .gzt    i   t   +t   contigR1   R2   R4   t   seqs   _genes.fasta(   NNNN(   t   ost   patht   joint   tempfilet   mkdtempt	   enumerateR   t   strR   t   MAX_CONTIG_NAME_GLIMMERR   t   appendR   R   t   no_gzipR   t   sett   lenR8   R   t   addR	   t   OUTPUT_FASTAR   t   debugt   shutilt   rmtree(   t   tool_dirt   fasta_fpatht	   out_fpatht   gene_lengthsRC   t   tmp_dirR.   RF   t   contigsR   t   base_dirt   seq_numt   indRN   R?   R   t   out_gff_fpatht   out_gff_patht   uniquet   totalt   genest   cntRM   t   gene_idR1   R2   R4   t   gene_seqt   idxt   gene_lengtht   out_fasta_fpath(    (   RC   R.   RD   RE   sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt
   glimmerHMM5   sL    	%"
."
	c         C€  s  t  j | ƒ } t  j | ƒ } t j d t  j |  ƒ | ƒ t j j | | d ƒ } t j j | | d ƒ }	 t	 | | | | |	 | |  ƒ \ }
 } } } } |
 r t j d t  j |  ƒ d t
 | ƒ d t
 | ƒ d ƒ t j d t  j |  ƒ d |
 ƒ n  | | | f S(   Ns     t   _glimmers   _glimmer.stderrs
     Genes = s	    unique, s    totals     Predicted genes (GFF): (   R   t   label_from_fpatht   label_from_fpath_for_fnamet   loggert   infoR>   RO   RP   RQ   Rt   RU   (   R.   t   contigs_fpathRc   t   out_dirpatht   tool_dirpatht   tmp_dirpatht   assembly_labelt   corr_assembly_labelRb   t	   err_fpathRj   Rm   Rk   Rl   Rn   (    (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt   predict_genesp   s    ':%c      	   C€  s&  t  j j t j d ƒ } t  j j | d ƒ } t  j j | d ƒ } | rn t  j j | ƒ rj t  j | ƒ n  t St  j j | ƒ s"|  j d ƒ t	 j
 d d | g d t t  j j | d ƒ d	 ƒ d
 t t  j j | d ƒ d	 ƒ d d ƒ} | d k st  j j | ƒ r"|  j d | d ƒ d  Sn  | S(   Nt   glimmert   srcRG   s   Compiling GlimmerHMM...t   makes   -CR:   s   make.logR   R;   s   make.errR<   s       i    s   Failed to compile GlimmerHMM (s€   )!
Try to compile it manually or do not use --gene-finding option with --eukaryote.
Use --debug option to see the command lines.(   RO   RP   RQ   R   t   LIBS_LOCATIONt   isfilet   removet   Truet	   main_infoR   R=   R   t   errorR   (   Rx   t
   only_cleanR|   t   tool_src_dirpatht   tool_exec_fpathRB   (    (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt   compile_glimmer†   s&    	c      	   €  sy  t  j ƒ  t  j d ƒ t j j t j d ƒ ‰ t j j ˆ d ƒ ‰ t t  ƒ } | sZ d  St j j	 ˆ ƒ s| t j
 ˆ ƒ n  t j j	 ˆ ƒ sž t j
 ˆ ƒ n  t t |  ƒ t j ƒ } t ƒ  rØ d d l m } m ‰  n d d l m } m ‰  t j r1| d | ƒ ‡  ‡ ‡ ‡ ‡ f d †  t |  ƒ Dƒ ƒ } n: g  t |  ƒ D]' \ } } t | | ˆ ˆ ˆ ˆ ƒ ^ q>} t ƒ  }	 xØ t |  ƒ D]Ê \ }
 } t j | ƒ } t j | ƒ } | |
 \ |	 | <} } | d  k	 rç| j t j j | ƒ n  | d  k	 r| j t j j | ƒ n  | d  k r| d  k rt  j  d t j! s<d	 n d
 | ƒ qqWt j! sht" j# ˆ ƒ n  t  j d ƒ |	 S(   Ns   Running GlimmerHMM...R‚   t   tmpiÿÿÿÿ(   t   Parallelt   delayedt   n_jobsc         3€  s6   |  ], \ } } ˆ  t  ƒ | | ˆ ˆ ˆ ˆ ƒ Vq d  S(   N(   R   (   R"   R.   Rz   (   R‘   Rc   R{   R}   R|   (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pys	   <genexpr>´   s   s'   Glimmer failed running Glimmer for %s. s4   Run with the --debug option to see the command line.RK   s   Done.($   Rx   t   print_timestampR‰   RO   RP   RQ   R   R…   RŽ   t   isdirt   makedirst   minRZ   t   max_threadsR   t   joblibR   R‘   t   joblib3t   memory_efficientRT   R   R*   R   R+   R   Rv   R   t	   add_fieldt   Fieldst   PREDICTED_GENES_UNIQUEt   PREDICTED_GENESRŠ   R]   R^   R_   (   t   contigs_fpathsRc   R{   R   R’   R   t   resultsR.   Rz   t   genes_by_labelst   it   reportt   labelRk   Rn   (    (   R‘   Rc   R{   R}   R|   sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt   doŸ   sJ    
		$7	"	(#   t
   __future__R    RO   RR   R   R&   R^   t
   quast_libsR   R   R   t   quast_libs.ca_utils.miscR   t   quast_libs.fastaparserR   R   R   t   quast_libs.genemarkR   t   quast_libs.genes_parserR	   t   quast_libs.logR
   t   quast_libs.qutilsR   t   LOGGER_DEFAULT_NAMERx   t   FalseR\   R   R8   Rt   R   RŽ   R¥   (    (    (    sA   /home/birch/BIRCH/local/install/quast-4.6.3/quast_libs/glimmer.pyt   <module>   s(   			;	