ó
QŽfXc           @   sX   d  d l  Z  d  d l Z d  d l Z d d „ Z d d „ Z d „  Z d d d „ Z d S(   iÿÿÿÿNi   c   
   
   C   s  | j  d ƒ | j  d | ƒ | j  d | ƒ | j  d | ƒ t j j | ƒ rb t j | ƒ n  t j | ƒ t j j | d ƒ } t j j | d ƒ } t j j | d ƒ }	 | j  d | ƒ | j  d	 | ƒ t j	 |  d
 d t
 | ƒ d d | | | g	 | |	 | ƒ | j  d |	 ƒ |	 S(   Ns   Aligning paired-end librarys   Left reads: s   Right reads: s   Output directory: s
   output.logt
   err_outputs   alignment.sams;   Starting alignment of reads using bwa. See detailed log in s-   Starting read alignment. See detailed log in t   mems   -ts   -Ss   -Ms   Done. See result in (   t   infot   ost   patht   existst   shutilt   rmtreet   makedirst   joint   supportt   universal_sys_callt   str(
   t   commandt   indext   reads_file1t   reads_file2t   work_dirt   logt   threadst   log_filet   err_log_filet   result(    (    sf   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/common/alignment.pyt   align_bwa_pe_lib   s    7t   isc      	   C   sâ   t  j j | ƒ r" t j | ƒ n  t  j | ƒ | j d ƒ t  j j | d ƒ } t  j j | d ƒ } t  j j | d ƒ } | j d j |  d d | d | | g ƒ ƒ t j	 |  d d | d | | g | | | ƒ | j d ƒ | S(	   Ns   Constructing bwa indexR   s
   output.logR    t    s   -as   -ps   Index constructed.(
   R   R   R   R   R   R   R   R	   R
   R   (   R   R   t	   referenceR   t	   algorithmR   R   R   (    (    sf   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/common/alignment.pyt	   index_bwa   s    ++c      
   C   s   | j  d ƒ g  } d } x^ | D]V \ } }	 t j j | t | ƒ ƒ }
 | j t |  | | |	 |
 | | ƒ ƒ | d 7} q  W| j  d | ƒ | S(   Ns   ===== Starting read alignmenti   s-   ===== Read alignment finished. See result in (   R   R   R   R	   R   t   appendR   (   R   R   t   readsR   R   R   R   t   lib_numt
   left_readst   right_readst   lib_dir(    (    sf   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/common/alignment.pyt   align_bwa_pe_libs+   s    c   
      C   s¿   | d  k r t j d ƒ } n  t j j | ƒ r@ t j | ƒ n  t j | ƒ t j j	 | d ƒ } t
 |  | | | ƒ } g  | D]" } | d d | d d f ^ q~ }	 t |  | |	 | | | ƒ S(   Nt    R   s
   left readsi    s   right reads(   t   Nonet   loggingt	   getLoggerR   R   R   R   R   R   R	   R   R#   (
   R   R   t   datasetR   R   R   t	   index_dirR   t   libR   (    (    sf   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/common/alignment.pyt	   align_bwa9   s    /(   R
   R   R   R   R   R#   R%   R+   (    (    (    sf   /home/psgendb/BIRCHDEV/pkg/SPAdes-3.13.0/linux-x86_64/share/spades/spades_pipeline/common/alignment.pyt   <module>   s   	