ó
¼Tc           @   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	 Z	 d  d l
 Z d „  Z d „  Z d d „ Z d d d „ Z d „  Z d S(	   iÿÿÿÿNc         C   sì   d } t  |  d ƒ �. } x$ | D] } | j ƒ  } | d 7} q WWd QXt j | | f d t j ƒ} d } t  |  d ƒ �n } xd | D]\ } | j ƒ  j d ƒ } x4 t t | ƒ ƒ D]  } t | | ƒ | | | f <q° W| d 7} q‚ WWd QX| S(   s   reads pure matrix format
    i    t   ri   Nt   dtypes   	(   t   opent   rstript   npt   zerost   floatt   splitt   xranget   len(   t   filepatht	   linecountt   infilet   linet   freqmatt   rowint   partst   colind(    (    s   ../sedfm/lib/ArmatusLib.pyt   readMatrixFormat   s    c      	   C   s�   t  ƒ  } t |  d ƒ �c } xY | D]Q } g  | j ƒ  j d ƒ d D] } t | ƒ ^ qB \ } } | j | | f ƒ q" WWd QX| S(   sV   reads armatus out file
    Args:
       armaoutpath:
    Returns:
       domains:
    R    s   	i   N(   t   setR   R   R   t   intt   add(   t   armaoutpatht   domainsR   R   t   itemt   startt   end(    (    s   ../sedfm/lib/ArmatusLib.pyt   readArmatusOut    s    	8i   c         C   sÊ  d „  } t  j j | ƒ s+ t  j | ƒ n  d j | |  | | | | ƒ } t  j | ƒ i  } g  t j | ƒ D]- }	 |	 j d ƒ d k rl d j | |	 ƒ ^ ql }
 x¸ |
 D]° } t	 | ƒ } t
 d j | j | d ƒ d j d ƒ d d	 !ƒ ƒ } | j | t ƒ  ƒ | | c t | ƒ O<x< t j t | ƒ d	 ƒ D]" \ } } | | | ƒ s0t ‚ q0Wq¦ Wt  j d
 j | ƒ ƒ xS | j ƒ  D]E } x< t j t | | ƒ d	 ƒ D] \ } } | | k s t ‚ q Wq}W| S(   sÄ   Runs Armatus
    Args:
       filepath:
       maxscale:
       outprefix:
       armaoutfolder:
       ARMATUSPATH:
       topcount: suboptimal solution count
    Returns:
       alldomains:
    c         S   s8   |  \ } } | \ } } | | k  s0 | | k  r4 t  St S(   N(   t   Falset   True(   t   .0t   .1t   s1t   e1t   s2t   e2(    (    s   ../sedfm/lib/ArmatusLib.pyt   <lambda>;   s    s.   {0}/armatus -i {1} -g {2} -o {3}/{4} -k {5} -mt   gammaiÿÿÿÿs   {0}/{1}t   .s   .gamma.i    i   s
   rm -rf {0}(   t   ost   patht   existst   makedirst   formatt   systemt   myutilt	   listfilest   findR   R   t   joinR   t
   setdefaultR   t	   itertoolst   combinationst   listt   AssertionErrort   keys(   R
   t   maxscalet	   outprefixt   armaoutfoldert   ARMATUSPATHt   topcountt	   intersectt   codet
   scale2domst   tarmaoutfilet   outpathst   outpathR   t   scalet   dom1t   dom2(    (    s   ../sedfm/lib/ArmatusLib.pyt
   runArmatus/   s&    	C6%)gš™™™™™©?c         C   sÐ   d „  } t  j j | ƒ s+ t  j | ƒ n  d j | |  | | | | | ƒ } t  j | ƒ d j | | ƒ }	 t |	 ƒ }
 x< t j t	 |
 ƒ d ƒ D]" \ } } | | | ƒ s� t
 ‚ q� Wt  j d j | ƒ ƒ |
 S(   sá   Runs Armatus only for consensus
    Args:
       filepath:
       maxscale:
       outprefix:
       armaoutfolder:
       ARMATUSPATH:
       topcount:
       stepsize:
    Returns:
       consdomains: consensus domains
    c         S   s8   |  \ } } | \ } } | | k  s0 | | k  r4 t  St S(   N(   R   R   (   R   R   R    R!   R"   R#   (    (    s   ../sedfm/lib/ArmatusLib.pyR$   ]   s    s5   {0}/armatus -i {1} -g {2} -o {3}/{4} -m -k {5} -s {6}s   {0}/{1}.consensus.txti   s
   rm -rf {0}(   R'   R(   R)   R*   R+   R,   R   R2   R3   R4   R5   (   R
   R7   R8   R9   R:   R;   t   stepsizeR<   R=   RA   t   consdomainsRC   RD   (    (    s   ../sedfm/lib/ArmatusLib.pyt   runArmatusConsensusP   s    	!%c         C   sZ  d „  } t  j j | ƒ s+ t  j | ƒ n  d j | |  | | | | ƒ } t  j | ƒ g  t j | ƒ D]- } | j d ƒ d k rf d j | | ƒ ^ qf }	 i  }
 xž |	 D]– } t	 | ƒ } t
 d j | j | d ƒ d j d ƒ d d	 !ƒ ƒ } t | j | d ƒ d j d ƒ d	 ƒ } |
 j | i  ƒ t | ƒ |
 | | <q¦ Wt  j d
 j | ƒ ƒ |
 S(   sÏ   Runs Armatus as method
    Args:
       filepath:
       maxscale:
       outprefix:
       armaoutfolder:
       ARMATUSPATH:
       compcount: suboptimal solution count
    Returns:
       alldomains:
    c         S   s8   |  \ } } | \ } } | | k  s0 | | k  r4 t  St S(   N(   R   R   (   R   R   R    R!   R"   R#   (    (    s   ../sedfm/lib/ArmatusLib.pyR$   v   s    s.   {0}/armatus -i {1} -g {2} -o {3}/{4} -k {5} -mR%   iÿÿÿÿs   {0}/{1}R&   s   .gamma.i    i   s
   rm -rf {0}(   R'   R(   R)   R*   R+   R,   R-   R.   R/   R   R   R0   R   R   R1   R   (   R
   R7   R8   R9   R:   t	   compcountR<   R=   R?   R@   t   scale2comp2domsRA   R   RB   t   comp(    (    s   ../sedfm/lib/ArmatusLib.pyt   runArmatusAsMethodj   s    	C6*(   t   networkxt   nxt   numpyR   R'   t   syst   matht   randomt   EmbedUtilitiesR2   t   myutilitiesR-   R   R   RE   RH   RL   (    (    (    s   ../sedfm/lib/ArmatusLib.pyt   <module>   s   		!