
Yc           @   s  d  Z  d d l m 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	 Z	 d d l
 Z d d l j Z d d l Z d d l Z d d l Z d d l Z d d  Z d   Z d e d	  Z d d
  Z d   Z e d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d S(   s:   
Module containing important auxilary screening functions
i(   t   divisionN(   t   defaultdicti   c         C   sO   |  d k r d St  t j t j t |      } | d | } t |  |  S(   sd   
    Function rounds number in a reasonable manner. Default is to three
    significant digits.
    i    i   (   t   intt   matht   floort   log10t   abst   round(   t   xt   numt   order_of_magnitudet   digits(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   sigDig   s
    $c         C   st   d } t  |   } xQ t |   D]C } | d k sU | d k sU | d k sU | d k r | d 7} q q Wt |  | S(   Ni    t   Ct   Gt   ct   gi   (   t   lent   listt   float(   t   guidet   numGCt   totalt   nuc(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   getGC0   s    0t   GenRefc         C   sa  t  j j |  d  } t  j j |  d  } t  j j |  d  } t d    } t d    } t d    } t d    } yZ t | d  E }	 t j |	 d	 d
 }
 x& |
 D] } | d j   | | d <q WWd QXWn t k
 r d d GHn Xy t | d  y } t j | d	 d } | j	   xP | D]H } | d j   | | d <| d | | d <| d | | d j   <q-WWd QXWn t k
 rd d GHn X| sQy t | d  y } t j | d	 d } | j	   xP | D]H } | d j   | | d <| d | | d <| d | | d j   <qWWd QXWqQt k
 rMd d GHqQXn  | | | | f S(   s   
    Retrieves gene info for the screen type. Location of reference
    files can be changed, defaults to nearby GenRef folder.
    s   Homo_sapiens.gene_infos   Mus_musculus.gene_infos
   ensRef.csvc           S   s   d S(   Ns   N/A(    (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   <lambda>M   s    c           S   s   d S(   Ns   N/A(    (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR   N   s    c           S   s   d S(   Ns   N/A(    (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR   O   s    c           S   s   d S(   Ns   N/A(    (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR   P   s    t   rt	   delimitert   ,i    i   Ns$   Ensembl information file not found.
s   Use -r to change file locations   	i   i   s"   Mouse information file not found.
s"   Human information file not found.
(
   t   ost   patht   joinR   t   opent   csvt   readert   uppert   IOErrort   next(   t   ref_baset   mouset   org_file_humant   org_file_mouset   ens_filet   geneID2Namet   geneID2Infot   geneName2IDt   geneEns2Namet   ens_opent   ens_csvt   linet   org_opent   org_csv(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   retrieveInfo?   sN    &

&

&c      
   C   s  t  j j |  d  } t t  } t t  } t t  } t  j j |  s] d GH| | | f St | d   } t j | d d } x | D] } t	 |  d k r | d d k r q n  | d	 d
 k r | | d c | d d 7<qI| d	 d k r| | d c | d d 7<qI| d	 d k rI| | d c | d d 7<qIq q WWd QXd   | _
 d   | _
 d   | _
 | | | f S(   sE   
    Returns GO component, process, and function data by geneID.
    t   gene2gos;   GO reference file not found; use -r to change file locationR   R   s   	i   i   t   NOTi   t	   Componenti   i   t   |t   Processt   FunctionNc           S   s   d S(   Nt   None(    (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR      s    c           S   s   d S(   NR<   (    (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR      s    c           S   s   d S(   NR<   (    (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR      s    (   R   R   R    R   t   strt   isfileR!   R"   R#   R   t   default_factory(   R'   t   go_filet   geneID2Compt   geneID2Proct
   geneID2Funt   go_opent   go_csvR2   (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt
   retrieveGO   s.    ,c      
      s  t    f d    } t    f d    } |  s: | | f S|  \ } } t | d   } t j   j | j d  d d } t j | |  } xM | D]E }	 t |	 d    k r t |	 d  | |	 d <q   | |	 d <q WWd  QXt | d   }
 t j   j |
 j d  d d } t j |
 |  } xM | D]E }	 t |	 d    k rjt |	 d  | |	 d <q3  | |	 d <q3WWd  QX| | f S(	   Nc              s     S(   N(    (    (   t   thresh(    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR      s    c              s     S(   N(    (    (   RG   (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR      s    R   i   t
   delimiterss   	 ,i   i    (   R   R!   R"   t   Sniffert   snifft   readR#   R   (   t
   zero_filesRG   t   zero_untt   zero_trtt   zero_unt_filet   zero_trt_filet   zero_unt_opent   dialectt   zero_unt_csvR2   t   zero_trt_opent   zero_trt_csv(    (   RG   su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   timeZero   s(    
$$c         C   s  t  | |  \ } } i  } i  } t |  d   }	 t j   j |	 j d  d d }
 |	 j d  t j |	 |
  } x | D] } | s} | d r q} n  | s t t	 | d   | | d <q} x: | D]2 } | | d k r t | d  | | d <Pq q Wq} WWd QXt | d   } t j   j | j d  d d }
 | j d  t j | |
  } x | D] } | se| d rqen  | st t	 | d   | | d <qex: | D]2 } | | d k rt | d  | | d <PqqWqeWWd QXd \ } } d } i  } i  } i  } i  } x | D] } d } d } | | | k  rWd } | d 7} n  | | k ss| | | k  rd } | d 7} n  | r| r| d 7} q"n  | r| | | <n | | | | <| r| | | <n | | | | <| | | | <| | | | <q"Wxx | D]p } | | k r| | | k  r:| d 7} q{| | | | <| | | <| d 7} | | | | <| | | | <qqW| | | f } | | f } | | | | f S(	   s^   
    Takes untreated and treated count files and filters them according
    to threshold.
    R   i   RH   s   	 ,i    i   N(   i    i    (
   RV   R!   R"   RI   RJ   RK   t   seekR#   R   R   (   t   unt_filet   trt_fileRG   RL   t   excludet   zero_unt_rawt   zero_trt_rawt   untreated_rawt   treated_rawt   unt_openRR   t   unt_csvR2   t   ext   trt_opent   trt_csvt   belowUntt   belowTrtt   removedt   treatedt	   untreatedRM   RN   t   entryt   unt   trt   statst	   time_zero(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   filterCounts   s    $!$!


c
         C   s   t  |   | }
 t  |  | } t  |  | } t  |  | } t j |
 | d  t j | | d  } | | } | |	 } | S(   s/   
    Function calculates enrichment values
    i   (   R   R   t   log(   t   count1t   sum1t   zero1t	   sum_zero1t   count2t   sum2t   zero2t	   sum_zero2t   shiftt   normt   prop1t   prop2t
   prop_zero1t
   prop_zero2t
   log_enricht   shift_enricht   norm_enrich(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   enrich|  s    *

c         C   s  | \ } } t  | j    }	 t  | j    }
 t  |  j    } t  | j    } g  } g  } g  } x |  D] } | j |  d j |  r | j t | | | | | |
 |  | | | | |	 d d 
  qm | j t | | | | | |
 |  | | | | |	 d d 
  qm W| d k r0t j |  } nQ | d k rNt j |  } n3 | d k rpt j | |  } n t j	 d |  i  } xI | D]A } t | | | | | |
 |  | | | | |	 | | 
 | | <qWt
 t  } t
 t  } t
 t  } g  } g  } x | D] } | j |  d j |  r@| j | |  q
| j |  d j   } | | c | | g 7<| j |  } | | c | | | f g 7<| j | |  q
W| | | | | f S(   s:   
    Auxilary function to calculate enrichment values
    i    i   t   negt   tart   alls+   Unrecognized option for background choice: (   t   sumt   valuest   splitt
   startswitht   appendR   t   npt   mediant   syst   exitR   R   R$   (   Rh   Rg   t   neg_namet
   split_markt   KRm   t   backRM   RN   t   total_zero_untt   total_zero_trtt	   total_untt	   total_trtt   neg_rawt   tar_rawt   back_rawRi   Rx   t
   entry_rhost	   gene_rhost   gene_rhos_intt   gene_reft   neg_rhost   tar_rhost   genet   entry_split(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt
   enrich_all  s`    








c         C   s  d } d | } | d k  s( | d k r8 t  j d  n  | d t |  d } | d k  rx|  D] } | | k  r | t j | | | | | | | |  7} qc | d k r | t j | | | | | | |  7} qc | t j | | d | | | |  7} qc Wn | d k rx |  D] } | | k rj| t j | | | | | | | |  7} q&| d k  r| t j | | | | | | |  7} q&| t j | | d | | | |  7} q&Wn, x) |  D]! } | t j | | |  7} qW| S(   se   
    Takes precomputed likelihoods and free parameter values and returns the
    log likelihood.
    i    i   g{Gzg)\(?s!   Error: Impossible background rate(   R   R   R   R   Ro   (   t   rhost   It   hit_ratet	   back_distt   liket	   back_ratet   hit_normt   rho(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   likeGrid  s8    
c         C   s  |  t  j j |  t j |    } t j |  } t j |  d k s] t j |  d k r t t j |   GHt j	 d  n  t j
 |  } | | d } | | } } d }	 t t }
 } x6|	 d 7}	 | | k r Pn  | d k r t }
 n& | | | } t j |  rt }
 n  | t |  | k r5t } n& | | | } t j |  r[t } n  | r|
 rt |	  GHt j	 d  q | r| | 7} | | 8} q |
 r| | 7} | | 7} q | | k r| | 7} | | 8} q | | 7} | | 7} q W| | | f S(   Ngffffff?g?s   Error: Unstable computationi    i   s#   Error: Interval calculation failure(   t   scipyt   misct	   logsumexpt   numpyt   isnant   expt   nansumR=   R   R   t	   nanargmaxt   Falset   TrueR   (   t   log_datat   targett   stept   norm_log_datat   datat   startt   total_weightt   min_indt   max_indt   stepst	   left_edget
   right_edget   leftt   right(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   findInterval@  sN    $*
				



c         C   s  i  } i  } i  } i  } x|  D]} |  | }	 | | \ }
 } t  j d d d  } d } d } t |	 | | |  } i  } | g | d <i  } d } t  j | |
 | d  d } t  j | (| | d	 |
 | <x t | | | |  D] } g  } x0 | D]( } t |	 | | |  } | j |  q W| | | <t j j	 |  t
 j t |   } | | | |
 | <q Wd } x t d	 | |
 | d	 |  D] } g  } x0 | D]( } t |	 | | |  } | j |  qW| | | <t j j	 |  t
 j t |   } | | | |
 | <qWt | d
 |  \ } } } t  j |  } t  j |  |
 | } | | | <| | | <d | | | | <| |
 | | |
 | | f | | <|	 s d | | <d | | <d | | <q q W| | | | f S(   s)   
    Function that runs subprocesses
    g?g?i	   i    i
   i   i   i  igffffff?i   i  (   i    i    i   (   R   t   linspaceR   t   zerost   NANt   rangeR   R   R   R   R   Ro   R   R   t   nanmaxR   (   R   R   t	   gene_spanR   t   geneIt   geneLt   geneIntervalt   geneDistR   R   t   min_It   max_It   pos_hit_rateR   R   t   like0t   all_distt	   I2marglogt	   buff_zerot	   marg_logst   distR   t   marg_logR   R   R   t   maxLt   maxI(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   trial  s`    


%%
%



c   "      C   s  t  |  | |  \ } } t t | d |   } t | | |  }	 | d k rY t }
 n t }
 y |
 sw d d  l } n  Wn t k
 r d GHt }
 n X|
 s | j |  } | j	 | t
 t t f d
  } n  |
 r t
 | |	 | |  \ } } } } n  |
 sxi  } i  } i  } i  } g  } | j   } t t |  |  d } g  t d t |  |  D] } | | | | !^ qZ} x@ | D]8 } i  } x | D] } | | | | <qW| j |  q~Wg  } x- | D]% } | j | j | |	 | |   qWx | D]z } |   } y | \ } } }  }! Wn t k
 r<t j d	  n X| j |  | j |  | j |   | j |!  qWn  | | | | f S(   Ni
   i   is?   Parallel Python package pp not found. Defaulting to single coreR   R   s
   scipy.misci    s   Subprocess failed(   s   numpys   maths
   scipy.misc(   t   intefyR   R   t   precalculateGridR   R   t   ppt   ImportErrort   Servert   TemplateR   R   R   t   keysR   R   R   t   submitt	   TypeErrorR   R   t   update("   R   t	   back_rhost   numsR   t   scalet   I_stepR   t   gene_span_intt   step_scaledt   back_rhos_calct   singleR   t
   job_servert   fnR   R   R   R   t   GeneRhosSplitR   t   nt   it	   keysSplitt   keyListt	   dictChunkt   keyt   jobst   splitst   jobt   valt   geneIit   geneLit   geneIntervalit	   geneDisti(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   retrieveLikelihoods  s\    	
$6#	c         C   s   t  g  t |  D] } | t j | |   f ^ q  } i  }	 xd | j   D]V \ }
 } t d t | d g   } t d t | d g   } | | f |	 |
 <qJ Wt | | | |	 | |  \ } } } } | | | f S(   Ng333333?i    (	   t   dictR   t   randomt   samplet   itemsR   t   maxt   minR   (   t   draw_numt   perm_numR   R   R   R   R   R   t	   perm_rhosR   R   R   R   R   t   permIt   permLt   permIntervalt   permDist(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   retrievePermM  s    7	c   
      C   s   | j    } g  | D] } | d ^ q } g  | D] } | d ^ q0 } t j t |   | d  } t t | |   } i  } x4 | D], }	 d | |	 d t t |    | |	 <q W| S(   Ni    i   R   (   R  R   t   searchsortedt   sortedR   t   zipR   R   (
   t	   perm_ratst   gene2ratt
   genes_ratsR   t   genest   ratst   rat_rankt	   gene_rankt   genePR   (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   rankLikelihoodsf  s    *c   #      C   sg  |  \ } } } } | \ } }	 }
 } i  } i  } i  } x!| D]} | | k r | | | | <| | | | <| | | | <q= n  | | k r | | | | <|	 | | | <|
 | | | <q= n  | | } | | } | d d } | d d } | | } t  | j    } g  } x | D] } | d k r9| j |  qn  | g | | } | g | | } t } g  } xB | D]: } x1 | D]) } | rt } q{n  | j | |  q{WqnWt j j |  t j	 t
 |   } | j |  qWt t j |  d d  \ } }  }! t |  }" | | j |"  | | <d |" | | | <| |  | |! | f | | <q= W| | | f S(   s/   
    Function that calculates combo scores
    i    gffffff?i   i   (   R  R   R   R   R   R   R   R   R   Ro   R   R   R   t   asarrayR  t   index(#   t   data1t   data2R   R   t   geneI1t   geneL1t   geneInterval1t	   geneDist1t   geneI2t   geneL2t   geneInterval2t	   geneDist2R   R   R   R   t   dist1t   dist2t   like01t   like02R   t   pos_IR   R   t   dist1It   dist2It   skip0R   t   like1t   like2R   R   R   R   R   (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   retrieveCombo}  sZ    


%$c         C   sL  t    \ } } } } i  } i  } i  }	 x&|  j   D]\ }
 } t |
 | | |  \ } } } |
 | k r} |
 } | |
 } ni | | k r | } | | } nJ | | k r | } | | } n+ | | k r | } | | } n | } g  } t | t | | d g   } t | t | | d g   } | | f | | <| | | <| |	 | <q4 Wx | j   D] \ }
 } t |
 | | |  \ } } } |
 | k rq]n< | | k rq]n* | | k rq]n | | k rq]n g  } t | t | | d g   } t | t | | d g   } | | f | | <| | | <| |	 | <q]W| |	 | f S(   Ni    (   R5   R  t   retrieveIDsR   R  R  (   t
   gene_rhos1t
   gene_rhos2t   spanR,   R-   R.   R/   R   t   add_gene_rhos1t   add_gene_rhos2R   t   rhos1t   geneIDt   namet   entrezt   unifiedt   rhos2R   R   (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt	   comboSpan  sT    !!
!!
c
         C   s   t  g  t |  D] }
 |
 t j | |   f ^ q  } t  g  t |  D] }
 |
 t j | |  f ^ qG  } t | | d  \ } } } d GHt | | | | |	 |  } d GHt | | | | |	 |  } d GHt | | | |  \ } } } | | | f S(   Ng333333?s   Permuting first screens   Permuting second screens   Combining permutations(   R   R   R   R  R<  R   R/  (   t	   draw_num1t	   draw_num2R  t
   back_rhos1t
   back_rhos2t	   tar_rhos1t	   tar_rhos2R   R   R   R   t
   perm_rhos1t
   perm_rhos2t   add_perm_rhos1t   add_perm_rhos2t	   perm_spanR  R  R  R	  R
  (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt	   comboPerm   s    77c         C   s   t  d |  } i  } i  } x^ |  j   D]P \ } } g  } x1 | D]) }	 t  t | |	   }
 | j |
  qB W| | | <q) Wx\ | j   D]N \ } } | \ } } t  t | |   t  t | |   f } | | | <q W| | f S(   Ni
   (   R   R  R   R   (   R   R   R   t	   magnitudeR   R   R   R   t   rhos_intR   t   rho_intR3  R   R   t   span_int(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR   =  s    ,c         C   s   t  d |  } g  g  } } x8 |  D]0 } |  | \ } } | j |  | j |  q$ Wd t |  }	 d t |  }
 t |
 |	  } g  | D] } | | ^ q } t j j |  } i  } d } x( | D]  } | |  } | | | | <q W| S(   Ni
   i   ig|=(   R   R   R  R  R   R   Rl   t   gaussian_kde(   R   R   R   RI  t   minest   maxesR   R   R   t   max_allt   min_allt   gridR   t   back_dist_scaledR   R   t	   underflowt   pointR   (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR   \  s"    c         C   sK  |  d  } | d } yt  | d  } t j | d d } | j   \ } } | | k rp t j d d  n  | d k r t j d	  n  | j   d
 } | j   d
 }	 | j   d
 }
 | j   d
 } | r t |  } n  | j   d
 } | j   d
 } | j   d
 } | j   d
 } | j   d
 } | rFt |  } n  t | j   d
  } t | j   d
  } | j   d
 } t | j   d
  } t | j   d
  } t | j   d
  } Wd  QXWn" t	 k
 rt j d d  n X| | | f } |	 |
 | | f } | | | | f } | | | | | | f } | | | | f S(   Nis   _record.txtR   R   s   	s"   Error: Version number not current
s   Rerun analysiss   analyzeCounts.pys!   Error: Input is not a result filei   s'   Error: Record of result file not found
s"   Change file name or rerun analysis(
   R!   R"   R#   R&   R   R   t   evalR   R   R%   (   t   res_filet   current_versionR8  t   rec_filet   rec_opent   rec_csvt   scriptt   versiont	   last_timeRX   RY   RL   t   file_outt   screen_typeR   R   RZ   RG   R   R   R   R   R  Rl   t   filest   infot   param(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   retrieveRecord  sL    

	 	c         C   s  |  d  } | d } | rL y t  j |  d GHWqL t k
 rH d GHqL Xn  t | d  N } t j | d d d d	 } x) | D]! }	 | j | |	 | |	 g  q WWd  QXg  }
 t | d
  J } t j | d d d d	 } x% | D] } |
 j t	 | d   q WWd  QXi  } i  } t |  d
  e } t j | d d d d	 } | j
   } x4 | D], } | | | d <t	 | |  | | d <qXWWd  QXt |
 |  } t t |
   } | | | | f S(   Nis   _ref.csvs#   Warning: Previous reference removeds$   Warning: No previous reference foundt   aR   R   t   lineterminators   
R   i   (   R   t   removet   OSErrorR!   R"   t   writert   writerowR#   R   R   R&   R  R=   R   (   RW  R  R	  t   eraset	   ratio_colR8  t   ref_filet   ref_opent   ref_csvt   numberR  R2   t	   gene2lineR  t   res_opent   res_csvt   headerR  t   all_perm_num(    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   calculatePval  s8    

	%!"c         C   s   |  | k r% |  } |  } | | } nd |  | k rN |  } | |  } | |  } n; |  | k rw | |  } |  } | | } n |  } |  } |  } | | | f S(   N(    (   R   R,   R.   R/   R7  R9  R8  (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyR0    s     

()   t   __doc__t
   __future__R    R   R   R   R"   t   collectionsR   R   t
   scipy.miscR   t   scipy.statsRl   t   stR   R   t   reR   R   R   R5   RF   RV   Rn   R   R   R   R   R   R   R  R  R/  R<  RH  R   R   Rd  Rv  R0  (    (    (    su   /mnt/lab_data/kundaje/users/oursu/bassik/pgCTCF/results/2017_10_09/results/genes/weissman/castle/Scripts/screenFun.pyt   <module>	   sF   	K2	2		^	K	J	n	U			S	P			#	6	5