ó
¦s§]c           @   sO   d  d l  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(	   iÿÿÿÿNc         C   s  d } d } d } d } d } d }	 | |  j  }
 t } | } xO | rŽ | d k rŽ | |  | d k r t } | |  | j  } q@ | d 8} q@ W| rç x3 t | |
 ƒ D]" } | | |
 | 7} | d 7} q¥ W| d k rç | | } qç n  t } | } xO | rD| d k rD| |  | d k r7t } | |  | j  } qö | d 8} qö W| r¡x7 t |
 d | ƒ D]" } | | | |
 7} | d 7} q_W| d k r¡| | }	 q¡n  | d k r| d k r| |	 k r| |	 d } |	 | t |	 | ƒ | | d | |	 | d | } n d } | S(   so   Calculates directionality score for locus. See Dixon 2012 supplemental. Positive=downstream. Negative=upstream.i    i   i   (   t   relative_indext   Falset   Truet   ranget   abs(   t	   abs_indext   pointst
   contactMatt	   numPointst   at   bt   aCountt   bCountt   avg_at   avg_bt	   currIndext   upstreamIndexFoundt   numPointsUpstreamt   minIndext   it   downstreamIndexFoundt   numPointsDownstreamt   maxIndext   et   score(    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyt	   calcScore   sL    $;c         C   s€   g  } t  |  ƒ } xg | j ƒ  D]Y } | j | | j j } t | | d | | f ƒ } | j t | | j |  | ƒ ƒ q W| S(   s3   Calculates all directionality scores for chromosomei   (   t   lent   nonzero_abs_indicesR   t   offsetR    t   mint   appendR   (   R   t	   structuret   maxNumPointst   scorest	   totNumLocR   R   R   (    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyt	   allScores7   s    #c   	      C   sØ   | t  |  ƒ } d } d } g  } x¦ t t  |  ƒ ƒ D]’ } |  | } | t  |  ƒ d k rw | } | j | | g ƒ nJ | d k rÁ | d k  rÁ | | | k rÁ | } | j | | g ƒ | } n  | } q5 Wt j | ƒ S(   Ni    i   (   R   R   R   t   npt   array(	   R!   t   minSizeFractiont	   minNumLoct   startt	   prevScoret   domainsR   R   t   end(    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyt   domainsFromScoresA   s    
(	
c         C   sP   t  |  | d ƒ } t t t |  ƒ | ƒ d f ƒ } t | | ƒ } t | | ƒ S(   s   Identify TADs in contact matrixi2   i   (   R#   t   maxt   intR   t   smoothWithMovingAverageR,   (   R   R   t   sizeParameterR&   R!   t   smoothingFactort   smoothed(    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyt
   getDomainsR   s    "c         C   s<   t  j | ƒ } t  j t  j | | |  d ƒ t | d ƒ ƒ S(   sb   Modified from http://beauty-of-imagination.blogspot.fr/2012/09/fun-with-signal-processing-and.htmlt   validi   (   R$   t   onest   rollt   convolveR.   (   t   signalt   size_of_windowt   window(    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyt   movingAverageY   s    c         C   s‘   t  |  | ƒ } t |  ƒ } |  | | d | !} t j | ƒ } | d } x2 t | ƒ D]$ } t  | | | !| | ƒ | | <qV Wt j | | f ƒ S(   Ni   (   R;   R   R$   t
   zeros_likeR   t   concatenate(   R8   R9   R2   t   signal_sizet	   remaindert   smoothed_remaindert   remainder_sizeR   (    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyR/   ^   s    
"c         C   sw   |  j  ƒ  } d } x^ | D]V } | | d } | | d } |  j | |  j | |  j !} |  j | | ƒ | } q Wd  S(   Ni    i   (   R   R   R   t   createSubstructure(   R   t   tadst   abs_indicesR   t   tdR(   R+   R   (    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyt   substructuresFromTadsh   s    (	   t   numpyR$   R   R#   R,   R3   R;   R/   RF   (    (    (    sf   /oak/stanford/groups/akundaje/marinovg/Symbiodinium/2019-09-27-figures/multi_mds/miniMDS-master/tad.pyt   <module>   s   	4	
				
