ó
§Sc           @   sh   d  d l  Z  d  d l Z d  d l Z e ƒ  a d a d a d a d a g  a	 g  a
 d d d „  ƒ  YZ d S(   iÿÿÿÿNi    t    t   Get_Info_NUCMerc           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C   s¡   t  d t | ƒ d d ƒ } xV t j ƒ  D]H } t j | ƒ } t | ƒ t k r* t | j ƒ  ƒ a | a | a	 q* q* Wt j
 t ƒ | j t ƒ | j t	 ƒ d  S(   Ns	   CISA1/Refs   .fat   w(   t   opent   strt   dt   keyst   gett   lent   max_vt   stript   max_ht   max_st   popt   write(   t   selft   countt   fwt   keyt   seq(    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt
   export_ref   s    c         C   se   t  d t | ƒ d d ƒ } x7 t j ƒ  D]) } | j | ƒ | j t j | ƒ ƒ q* W| j ƒ  d  S(   Ns   CISA1/Querys   .faR   (   R   R   R   R   R   R   t   close(   R   R   R   R   (    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   export_query   s
    c         C   s‘  t  d t t d ƒ d ƒ } x  t d ƒ D] } | j ƒ  } q+ Wt ƒ  } t ƒ  } t ƒ  } d } d } d }	 x‹t rû| j ƒ  } | s Pn  t | j	 ƒ  d ƒ }
 |
 d k  rµ qq n  | j	 d	 ƒ d j	 ƒ  d } | j	 d
 ƒ d j
 d d ƒ } t t j d d | ƒ j	 d ƒ d j	 d ƒ d ƒ } t | j	 d	 ƒ d j
 d d ƒ ƒ } | j	 ƒ  d } | j	 ƒ  d } | d k sƒ| | k rt | | <n
 t | | <| j	 d
 ƒ d j	 d ƒ d }	 | j | ƒ } | rê| | | 7} | | | <qq | | | | <qq Wxi | j ƒ  D][ } | j | ƒ r<| j | ƒ d k  rWq	qWn | j | ƒ d k  rWq	n  | j | ƒ q	W|	 rÐ| rÐt  d d ƒ } | j |	 d ƒ x | D] } | j | d
 ƒ q›W| j d ƒ | j ƒ  n  xj t j ƒ  D]\ } t j | ƒ } | j	 d ƒ d j
 d d ƒ j
 d d ƒ } | | k rÝt j | ƒ qÝqÝW| j ƒ  t j j d t t d ƒ d ƒ rt j d t t d ƒ d ƒ n  d  S(   Ns   CISA1/resulti   s   .coordsi   i    R    iüÿÿÿg     ÀW@t   :s   	s   
s    +t    t   |i   t   1iÿÿÿÿgš™™™™™é?gffffffî?s   CISA1/explained.txtt   at   >(   R   R   R   t   ranget   readlinet   sett   dictt   Truet   floatt   splitt   replacet   ret   subt   FalseR   R   t   addR   R   R   R   t   ost   patht   existst   remove(   R   t   fmapt   it   st   h_sett   score_dt   isHEADorTAILt   ref_st   ref_et   my_refIDt   idyt   tempt	   align_lent
   contig_lent   ref_mapped_st   ref_mapped_et   temp_sR   t   f_ext   myidR   t   temph(    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   modify_dict   sj    			  	  5% 
  	 + 
$ c         C   sm   d t  | ƒ d t  | ƒ d GHt j | d t  | ƒ d t  | ƒ d t  | ƒ d ƒ \ } } d GHd  S(	   Nt   Refs   .fa and Querys   .fa start to run NUCmer!s    -o -p CISA1/results
    CISA1/Refs   .fa CISA1/Querys   .fas   Done!(   R   t   commandst   getstatusoutput(   R   R   t   nucmerR/   t   o(    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt
   run_NucmerQ   s    !Cc         C   s:  t  d t t ƒ d ƒ } t  d t t ƒ d d ƒ } x  t d ƒ D] } | j ƒ  } qD WxÅ t r!| j ƒ  } | sy Pn  t | j ƒ  d ƒ } | d k  r¡ q] n  t t j	 d d	 | ƒ j d
 ƒ d j d	 ƒ d ƒ } t | j d ƒ d j
 d d ƒ ƒ } | | d k  rq] n  | j | ƒ q] W| j ƒ  | j ƒ  d  S(   Ns   CISA1/results   .coordss   CISA1/new_coords/n_resultR   i   iüÿÿÿg     ÀW@s    +R   R   i   R   s   
R    gš™™™™™é?(   R   R   R   R   R   R!   R"   R#   R%   R&   R$   R   R   (   R   t   fR   R.   R/   R6   R8   R9   (    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   make_new_coordsU   s$    	  5% 
 c   
      C   s  t  } t  } g  a g  a d } t t t j d d ƒ ƒ ƒ } xŽt rÌt d t	 t
 ƒ d ƒ } | j ƒ  } | s™ | j ƒ  t j d ƒ t j d ƒ Pn$ | j ƒ  t d t	 t
 ƒ d ƒ } d t	 | ƒ d } d t	 | ƒ d } x} t rd| j ƒ  } | sPn  | j d ƒ d	 }	 | s<| |	 k r<t j | ƒ q<n  | sè | |	 k rat j | ƒ qaqè qè Wt t ƒ d	 k r€t } n  t t ƒ d	 k r›t } n  | r«| r«Pn  | d 7} | d 8} | j ƒ  q? Wt j j d t	 t
 ƒ d ƒ rt j d t	 t
 ƒ d ƒ n  d  S(
   Ni   s   
R    s   CISA1/new_coords/n_results   .coordst   noneR   R   i    (   R'   t   h_listt   t_listt   intR   R   R$   R!   R   R   R   R   R   t   appendR#   R)   R*   R+   R,   (
   R   t   headt   tailt   t_ht   t_tRG   R/   t   key_ht   key_tt	   key_range(    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   find_head_tailg   sP         	

	    	 	 
 
  c         C   s<   t  d d ƒ } | j d t | d ƒ d ƒ | j ƒ  d  S(   Nt   infoR   s   Total:i   s   
(   R   R   R   R   (   R   R   t   f_out(    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   out_data†   s    c         C   s¾   t  j j d t | ƒ d ƒ r> t  j d t | ƒ d ƒ n  t  j j d t | ƒ d ƒ r| t  j d t | ƒ d ƒ n  t  j j d t | ƒ d ƒ rº t  j d t | ƒ d ƒ n  d  S(   Ns	   CISA1/Refs   .fas   CISA1/Querys   CISA1/results   .delta(   R)   R*   R+   R   R,   (   R   R   (    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   to_del_file‹   s          c         C   s‰  t  | ƒ } x6 t rD | j ƒ  } | s+ Pn  | j ƒ  } | t | <q W| j ƒ  t j j d ƒ sq t j d ƒ n  d } t	 | ƒ d } t  d d ƒ }	 x4t rÌt
 t j ƒ  ƒ d k  rÈ |  j t ƒ Pn  | | k rù d t | ƒ GHd GH|  j t ƒ Pn  t d k r|  j ƒ  n  d	 t t
 t j ƒ  ƒ ƒ GHd t | ƒ GHt
 t j ƒ  ƒ d k  re|  j t ƒ Pn  d a d
 a d
 a |  j t ƒ |  j t ƒ |  j t | ƒ |  j ƒ  |  j ƒ  |  j t ƒ d GH|	 j t j d d
 ƒ d t t ƒ d ƒ xX t D]P }
 t j d d |
 ƒ } | d d k r<| j d d
 d ƒ } n  |	 j | ƒ qùWxX t D]P }
 t j d d |
 ƒ } | d d k r—| j d d
 d ƒ } n  |	 j | ƒ qTW|	 j d ƒ | t 7} t d 7a q™ W|	 j ƒ  t j j d ƒ rùt j d ƒ n  | | k  r…x} t rd t | f GHt  ƒ  j! ƒ  } | d k sD| d k rHPn  | d k sl| d k sl| d
 k r| GHt" d ƒ qqWn  d  S(   Ns   CISA1/new_coordsi    gš™™™™™ñ?s   CISA1/Wait2Process.txtR   i   s   Whole_Genome: s   Break!s	   Contigs: R    s
   Writing...s   
t   ,s    +R   i   t   #sÉ   (%d) representative contigs were selected to contain (%d) bp, but fewer than 3 contigs were left. CISA1 will not select additional representative contigs, do you want to jump to CISA2?(y/n, default: n)t   yt   yest   nt   nos   #
(#   R   R!   R   R   R   R)   R*   R+   t   makedirsR"   R   R   RX   R   R   R@   R	   R   R   R   R   RF   RH   RU   RY   R   R$   RJ   R%   R&   RK   t   rmdirt	   raw_inputt   lowert   exit(   R   t   genome_lt   infileRD   RG   t   hR   t   whole_gt
   breakpointt   f_listt   rowR7   t   choice(    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   Start   s‚    	 
	       

+  

 	$(   t   __name__t
   __module__R   R   R@   RF   RH   RU   RX   RY   Rm   (    (    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyR      s   			7					(    (   RB   R%   R)   R    R   R	   R   R   R   RJ   RK   R   (    (    (    sB   /woldlab/castor/home/georgi/programs/CISA1.3/src/CISA1/Auto_Run.pyt   <module>   s   	     