ó
Wi[c           @   sµ   d  d l  Z  d  d l 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 d  d l	 m
 Z
 d  d l m Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d S(
   iÿÿÿÿN(   t
   addsitedir(   t   dir_util(   t   isfilec            s  t  j d ƒ } | r d } n d } | j d | d ƒ g  } x¹ |  D]± } x¨ | j ƒ  D]š \ } }	 | j d ƒ rY g  }
 xi |	 D]a } |
 j | d ƒ t | ƒ sÕ t |
 d ƒ rº q n  t  j d | d	 | ƒ n  | j | ƒ q W|
 | | <qY qY WqF Wt | ƒ r| rIxú | D]. } t  j	 | d
 d d t
 | ƒ | g | ƒ qWqt | ƒ t j j d ƒ r~d d l m } m ‰  n+ t j j d ƒ r©d d l m } m ‰  n  t t | ƒ | ƒ } | d | ƒ ‡  f d †  | Dƒ ƒ } x' | D] } | rê| j | ƒ qêqêWn  d  S(   Nt   pigzt   gzips&   
== Compressing corrected reads (with t   )t   readss   .gziÿÿÿÿs4   something went wrong and file with corrected reads (s   ) is missing!s   -fs   -7s   -ps   2.(   t   Parallelt   delayeds   3.t   n_jobsc         3   s0   |  ]& } ˆ  t  j ƒ d  d d | g ƒ Vq d S(   R   s   -fs   -7N(   t   supportt   sys_call(   t   .0t
   reads_file(   R   (    sb   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/hammer_logic.pys	   <genexpr>6   s    (   R
   t   whicht   infot   itemst   endswitht   appendR   t   errort   lenR   t   strR    t   syst   versiont
   startswitht   joblib2R   R   t   joblib3t   min(   t   dataset_datat   ext_python_modules_homet   max_threadst   logt	   pigz_patht
   compressort   to_compresst   reads_libraryt   keyt   valuet   compressed_reads_filenamesR   R   R	   t   outputst   output(    (   R   sb   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/hammer_logic.pyt   compress_dataset_files   s@    	/
%c         C   s:   x3 t  j  t j j |  d ƒ ƒ D] } t j | ƒ q Wd  S(   Ns   *.bad.fastq(   t   globt   ost   patht   joint   remove(   t
   output_dirt   not_corrected(    (    sb   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/hammer_logic.pyt   remove_not_corrected_reads<   s    %c         C   s  t  ƒ  } t j | j ƒ | d <t j | j ƒ | d <t j | j ƒ | d <| j | d <| j | d <| j | d <| j | d <| j | d <| j | d	 <| j | d
 <d | j	 k rÅ | j
 | d <n  d | j	 k rä | j | d <n  d | j	 k r| j | d <n  t j |  | | ƒ d  S(   Nt   datasett   input_working_dirR/   t   general_max_iterationst   general_max_nthreadst   count_merge_nthreadst   bayes_nthreadst   expand_nthreadst   correct_nthreadst   general_hard_memory_limitt   qvoffsett   input_qvoffsett   count_filter_singletonst   read_buffer_sizet   count_split_buffer(   t   dictt   process_cfgt   process_spacest   dataset_yaml_filenamet   tmp_dirR/   t   max_iterationsR   t
   max_memoryt   __dict__R;   R=   R>   t   substitute_params(   t   filenamet   cfgR   t
   subst_dict(    (    sb   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/hammer_logic.pyt   prepare_config_bhA   s$    	c      
   C   sÚ   t  | ƒ t j j d ƒ r+ d d  l } n! t j j d ƒ rL d d  l } n  | j t |  d ƒ ƒ } | j | d <| j	 | d <| j
 | d <| j | d <| j | d	 <| j | t |  d
 ƒ d t d d d t d ƒ ƒd  S(   Ns   2.iÿÿÿÿs   3.t   rR2   t   working_dirR/   t   hard_memory_limitt   max_nthreadst   wt   default_flow_stylet   default_stylet   "t   widtht   inf(   R    R   R   R   t   pyyaml2t   pyyaml3t   loadt   openRC   RD   R/   RF   R   t   dumpt   Falset   float(   RI   RJ   R   t   pyyamlt   data(    (    sb   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/hammer_logic.pyt   prepare_config_ihW   s    
c      
   C   sz  t  | ƒ t j j d ƒ r+ d d  l } n! t j j d ƒ rL d d  l } n  t j | t j	 ƒ rà t j
 | t j	 ƒ }	 t j | t j	 ƒ }
 t j j | j d ƒ } | j |
 t | d ƒ d t d d d	 t d
 ƒ ƒ| | _ n d  }	 | sut j j | j d ƒ } t j j | ƒ r&t j | ƒ n  | j rlt j t j j | d ƒ | d t ƒt j j | d ƒ } n: t j t j j | d ƒ | d t ƒt j j | d ƒ } t j d d ƒ | _ | j rÝt | | | ƒ d } n t | | | ƒ d } t j j | | ƒ t j j  | ƒ g } | j! d d j | ƒ d ƒ t j" | | ƒ t j j# |  ƒ s“t j$ d |  d ƒ q“n | j! d d ƒ t j% | ƒ | j& t |  d ƒ ƒ } t' | j ƒ t } | j( ræt) } t* | | | j+ | ƒ n  |	 rÿt) } | |	 7} n  | r9| j | t |  d ƒ d t d d d	 t d
 ƒ ƒn  | j! d |  d ƒ t j j, | j ƒ rvt j | j ƒ n  d  S(   Ns   2.iÿÿÿÿs   3.s   to_correct.yamlRQ   RR   RS   RT   RU   RV   t   configst	   ionhammert   preserve_timess   ionhammer.cfgt   hammers   config.infot   prefixt   hammer_s   spades-ionhammers   spades-hammers(   
== Running read error correction tool: t    s   
s+   read error correction finished abnormally: s    not found!s)   
===== Skipping %s (already processed). 
s   read error correction toolRM   s*   
== Dataset description file was created: (-   R    R   R   R   RW   RX   R
   t   get_lib_ids_by_typet   options_storaget   LONG_READS_TYPESt   get_libs_by_typet   rm_libs_by_typeR+   R,   R-   R/   R[   RZ   R\   R]   RC   t   Nonet   existst   shutilt   rmtreet
   iontorrentR   t	   copy_treet   get_tmp_dirRD   R`   RL   t   abspathR   R   R   R   t   continue_from_hereRY   R1   t   gzip_outputt   TrueR)   R   t   isdir(   t   corrected_dataset_yaml_filenamet   configs_dirt   execution_homeRJ   R   R   t   only_compressing_is_neededR   R^   t   not_used_dataset_datat   to_correct_dataset_datat    to_correct_dataset_yaml_filenamet   dst_configst   cfg_file_namet   binary_namet   commandt   corrected_dataset_datat
   is_changed(    (    sb   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/hammer_logic.pyt
   run_hammerh   sf    
	%%			(   R+   R   R*   Ro   R
   Ri   RA   t   siteR    t	   distutilsR   t   os.pathR   R)   R1   RL   R`   R†   (    (    (    sb   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/hammer_logic.pyt   <module>   s   	%			