

PXc           @   s   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   Z d   Z	 d e
 d  Z d   Z d   Z d	 d
  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d S(   iN(   t   defaultdictc         C   sM   d j  g  |  D], } i d d 6d d 6d d 6d d 6| ^ q d  d  d   S(   Nt    t   Tt   At   Gt   Ci(   t   join(   t   xt   B(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   revcompl   s    c       U   C   s  d d f d d f d d f d
 d f d d f d d f d d f d df d df d df d df d" df d% df d( df d+ df d. d	f d1 d
f d4 df d7 df d: df d= df d@ df dC df dF df dI df dL df dO df dR df dU df dX df d[ df d^ df da df dd df dg df dj df dm df dp df ds d f dv d!f dy d"f d| d#f d d$f d d%f d d&f d d'f d d(f d d)f d d*f d d+f d d,f d d-f d d.f d d/f d d0f d d1f d d2f d d3f d d4f d d5f d d6f d d7f d d8f d d9f d d:f d d;f d d<f d d=f d d>f d d?f d d@f d dAf d dBf d dCf d dDf d dEf d dFf d dGf d dHf d dIf d dJf d dKf d dLf gS }  |  S(M  Nt   oMCB1685_sublib_1t   CTTAAACCGGCCAACATACCt   ATGCTACTCGTTCCTTTCGAt   oMCB1686_sublib_2t   TGCTCTTTATTCGTTGCGTCt   TCTTATCGGTGCTTCGTTCTt   oMCB1687_sublib_3t   TGAGCCTTATGATTTCCCGTt   GTCCGTTTTCCTGAATGAGCt   oMCB1688_sublib_4t   CGTTCTAAACGGCTAGATGCt   AGTCTGTCTTTCCCCTTTCCt   oMCB1689_sublib_5t   GTATCCGAAGCGTGGAGTATt   CAGGTATGCGTAGGAGTCAAt   oMCB1690_sublib_6t   CCAAAGATTCAACCGTCCTGt   ATTAGCCATTTCAGGACGGAt   oMCB1691_sublib_7t   TATTCATGCTTGGACGGACTt   ACTATGTACCGCTTGTTGGAt   oMCB1692_sublib_8t   ATCGACAATGGTATGGCTGAt   TATGTCTCCTAGCCACTCCTt   oMCB1693_sublib_9t   GTCCTAGTGAGGAATACCGGt   CCGAAGAATCGCAGATCCTAt   oMCB1694_sublib_10t   TTAGATAGGTGTGTAGGCGCt   TAAGGTGCGTACTAGCTGACt   oMCB1695_sublib_11t   TTCCGTTTATGCTTTCCAGCt   TCCTTGGAGTTTAGAGCGAGt   oMCB1696_sublib_12t   GTATAGTTTGTGCGGTGGTCt   ATCAATCCCCTACACCTTCGt   oMCB1697_sublib_13t   TCAGCCTTTCATTGATTGCGt   TTCCTTGATACCGTAGCTCGt   oMCB1698_sublib_14t   AGGGTCGTGGTTAAAGGTACt   CGTTTCTTTCCGGTCGTTAGt   oMCB1699_sublib_15t   TGCAAGTGTACAAATCCAGCt   GAACGGTGATCCCTTTCCTAt   oMCB1700_sublib_16t   CTTAAGGTTTGCCCATTCCCt   TGTTATAGCTTCCACGGTGTt   oMCB1701_sublib_17t   TGGTTCGTTAGTCGATCTCCt   AGACGGGATTTTACTGGGTCt   oMCB1702_sublib_18t   TATTTTGTAGAGCGTTCGCGt   TCTTTGCTTCGCAAGTCTTGt   oMCB1703_sublib_19t   TTCTGTAAGTTTCGTCGGGAt   CTAAACACCGCACCTCACTAt   oMCB1704_sublib_20t   TTGACGTACGTAGGTTCTCCt   GAACACAACTACACTGACGCt   oMCB1705_sublib_21t   GAGATGAGTAGACGAGTGGGt   ATGGTCACTGACTCGCATTAt   oMCB1706_sublib_22t   CTTTGGGCTTTCAGATGAGCt   CAAAGATTTCTGTCGGTCGGt   oMCB1707_sublib_23t   TGTCATATGCTAACGTCCGTt   TGGCTACTTTCTTAGCGGAAt   oMCB1708_sublib_24t   TTGCGACATCACAATTCTCGt   TACTTCGAGACTTCATGCGTt   oMCB1709_sublib_25t   TCAGTATGGCGTCTTGAAGTt   ATGGCCCGACCTCTATTATGt   oMCB1710_sublib_26t   TCATGTCGTGACCAGTAGACt   TGGGTCTAGTGAACTTCGTCt   oMCB1711_sublib_27t   AACTAACGGATTTAAGCGCGt   AACATATGTTGCTTCGTCCGt   oMCB1712_sublib_28t   CATTTTCTGTTCCCCAGTGGt   TCGAGTTAGATTGTCACCCCt   oMCB1713_sublib_29t   ATTTGCCTAACCACTCCACTt   TCAGAGCTTTTCGGTACAGTt   oMCB1714_sublib_30t   TGACTTATGAACCTTTGCGCt   GCCCAGGAGTAGTCGTTAATt   oMCB1715_sublib_31t   ATAGGATTAGCTGATGGGCCt   TCTGTGTTCCGACTAAGGTCt   oMCB1716_sublib_32t   TGAGATTCGGGACTATTCGGt   TCTGTTGTTAGACTCCGACCt   oMCB1717_sublib_33t   TTGGTTAGTACACGGGACTCt   GTACGTCTGAACTTGGGACTt   oMCB1718_sublib_34t   ATTTGTGTATCGAGGCTCGTt   AGACACGCGATTGTTTAACCt   oMCB1719_sublib_35t   ATCGTTCCCCATCACATTCTt   CCGTTCGTTTTGAGCACTTAt   oMCB1720_sublib_36t   ATTACCATGTTATCGGGCGAt   AGGTTAGGGAACGCAAGATTt   oMCB1721_sublib_37t   TCGGTGGATATGACGTAACCt   CCAGACTGTGCTCGTTATCTt   oMCB1722_sublib_38t   GGTCAGATGGTTTACATGCGt   AGTTGTTCTCTATCCGCGATt   oMCB1723_sublib_39t   TCTCGTTCGAAAATCATCGCt   GATTAAATCTCGCCGGTGACt   oMCB1724_sublib_40t   TGCAAATGTGAGGTAGCAACt   TTGTAGTTTTCGCTTGCGTTt   oMCB1725_sublib_41t   AAAGTCAAAGTGCGTTTCGTt   TGTGTTGCTCTCTCATAGCCt   oMCB1725_sublib_42t   GCTTATTCGTGCCGTGTTATt   TACTTTTGATTGCTGTGCCCt   oMCB1725_sublib_43t   TTTGCTTCAGTCAGATTCGCt   GTTCAATCACTGAATCCCGGt   oMCB1725_sublib_44t   GTCGAGTCCTATGTAACCGTt   CAGGGGTCGTCATATCTTCAt   oMCB1725_sublib_45t   GTAAGATGGAAGCCGGGATAt   CACCTCATAGAGCTGTGGAAt   oMCB1725_sublib_46t   GGTGTCGCAACATGATCTACt   CGGTTCCTAGTCATGTTTGCt   oMCB1725_sublib_47t   GTGCTAAGTCACACTGTTGGt   TTGTACTAATCTCGTCCCGGt   oMCB1725_sublib_48t   TCTAAACAGTTAGGCCCAGGt   TTATGTTCACAACTGGCGTGt   oMCB1725_sublib_49t   GTCTTTATACTTGCCTGCCGt   TGGAACTGATTTGGCCTTTGt   oMCB1725_sublib_50t   CACCGCGATCAATACAACTTt   TATAGTTCCTCCCATGCACCt   oMCB1725_sublib_51t   TTCGGATAGACTCAGGAAGCt   ACAATAGACAGACCCATGCAt   oMCB1725_sublib_52t   CCATTGATAGATTCGCTCGCt   GAGTCGAGCTAGCATAGGAGt   oMCB1725_sublib_53t   TTTTCTACTTTCCGGCTTGCt   TTGTGGGAGCTTCTTACCATt   oMCB1725_sublib_54t   ATGACTATTGGGGTCGTACCt   TCGTACGGGAATGACCATAGt   oMCB1725_sublib_55t   TCGACAATAGTTGAGCCCTTt   AGACACAACGTAGCCGATTAt   oMCB1725_sublib_56t   GAGCCATGTGAAATGTGTGTt   CGGACTAAAGGATCGAGTCAt   oMCB1725_sublib_57t   CGTATACGTAAGGGTTCCGAt   CATCGGATAACACAAAGCGTt   oMCB1725_sublib_58t   TTATGATGTCCGGATACCCGt   GATGTATACTCCACCGTGGTt   oMCB1725_sublib_59t   TCTTAGAAATCCACGGGTCCt   TGAGATATGTACCTGGTGCCt   oMCB1725_sublib_60t   GAAGGGTGGATCATCGTACTt   ATTCTTGGGCCTATCGTTGTt   oMCB1725_sublib_61t   GGCTGTTAGTTTTAGAGCCGt   AAACCATATACAGCCGTCGTt   oMCB1725_sublib_62t   AGTGGTGTAGTGGCTTCTACt   TAGCTAAATCCCACCCGATGt   oMCB1725_sublib_63t   CTCAGAGGGAGTTCAACTGTt   GTGCGGTTACAGTTTTGACTt   oMCB1725_sublib_64t   TTTGGCAGATCATTAACGGCt   GGGACTACATAGGGTGACAGt   oMCB1725_sublib_65t   TATGATCTCCGTACACGAGCt   CGTTGTCGTTCCAAAGAAGTt   oMCB1725_sublib_66t   AGTGCCATGTTATCCCTGAAt   AGTCACACATATACGGACCCt   oMCB1725_sublib_67t   TTATACATCTGGACGCCTCCt   AGAGAACCCCTATTATGGCGt   oMCB1725_sublib_68t   TCCTCGATTCTCCAATCAGGt   TCGTTAGGCTAAAACATGCGt   oMCB1725_sublib_69t   GCTTAACGCATTTCAAGCACt   TGATAGGTCGTTCAGCCTACt   oMCB1725_sublib_70t   CTTTTATGTTCCTCGCAGGGt   TCGGGACTTTCATAAGCACTt   oMCB1725_sublib_71t   GTGGGCGTTAGCAAATTACAt   ATTTTATGCGTCCAGTTCGGt   oMCB1725_sublib_72t   AGAGATTATTAGGCGTGGGGt   AAGGCTGGTATTTCCCTTCAt   oMCB1725_sublib_73t   TAGGATTACTGCTCGGTGACt   CATACTGTTGGTTGCTAGGCt   oMCB1725_sublib_74t   TCGCGTGAGTGGTTCATATAt   ATATACTGGATTCCGCCGTTt   oMCB1725_sublib_75t   CAATAGATACCCACCCGTCAt   ACTTATGAACCCTTGGCACTt   oMCB1725_sublib_76t   ATATATCCGCCGTTGTACGTt   ATAGATGTATGCCGTTCGGTt   oMCB1725_sublib_77t   CGAGAGTCTCCCACGATATCt   TCTCTGTTTTCCGCACTTTGt   oMCB1725_sublib_78t   ATTCAGTTGGTCTTACGGGTt   AGTTATTCGTCTTTCCCGGTt   oMCB1725_sublib_79t   GGATTGCAACGTCAGGAAATt   TACAGGAATCTCCACGAAGCt   oMCB1725_sublib_80t   GAATGTTGCAGACTGGAAGGt   CCTCGGGCTTGTTACTAGATt   oMCB1725_sublib_81t   GTCCATGAATACAACACCGGt   ATTCTTCCGTCCAACGTACTt   oMCB1725_sublib_82t   TCGAACAATTTGCGATACCCt   TAATCATACGAGTGGGCCTCt   oMCB1725_sublib_83t   AAGTGCACATTTCGTTTCGAt   AGTTGGTAGAATTGACCGGT(   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R    R!   (   R#   R$   (   R&   R'   (   R)   R*   (   R,   R-   (   R/   R0   (   R2   R3   (   R5   R6   (   R8   R9   (   R;   R<   (   R>   R?   (   RA   RB   (   RD   RE   (   RG   RH   (   RJ   RK   (   RM   RN   (   RP   RQ   (   RS   RT   (   RV   RW   (   RY   RZ   (   R\   R]   (   R_   R`   (   Rb   Rc   (   Re   Rf   (   Rh   Ri   (   Rk   Rl   (   Rn   Ro   (   Rq   Rr   (   Rt   Ru   (   Rw   Rx   (   Rz   R{   (   R}   R~   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R   R   (   R  R  (    (   t   primers(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   retrievePrimers   s    																																																																																		s+   /mnt/lab_data/bassik/All_Screen_Data/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(    (    (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   <lambda>   s    c           S   s   d S(   Ns   N/A(    (    (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyR     s    c           S   s   d S(   Ns   N/A(    (    (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyR     s    c           S   s   d S(   Ns   N/A(    (    (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyR     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   pathR   R    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(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   retrieveInfow   sN    &

&

&c         C   s   |  | k r% |  } |  } | | } nd |  | k rN |  } | |  } | |  } n; |  | k rw | |  } |  } | | } n |  } |  } |  } | | | f S(   N(    (   t   geneR  R  R  t   geneIDt   entrezt   name(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   retrieveIDs   s     

c   
      C   s   t  j j |   \ } } t  j j |  \ } } t  j j |  \ } } t  j j | | d  } t  j j | d |  }	 |	 | f S(   Ns   _legend.csvt   Align(   R	  R
  t   splitR   (
   t	   gene_fileR#  t   fil_chip_genest   fil_namet   chip_loct   genest	   directoryt	   chip_namet   legend_filet   out_file(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   dissectFolder   s    s,   /mnt/lab_data/bassik/All_Screen_Data/Resultsc      
   C   s  g  } g  } x t  j |  D] \ } } } xo | D]g }	 d | k s2 d | k s2 d | k s2 d | k rn q2 n  d |	 k r2 | j t  j j | |	   q2 q2 Wq Wx=| D]5}
 t |
 d  } t j | d d } y | j   \ } } Wn t	 k
 r
d	 |
 GHw n X| j
 |   s w n  | | k rCd
 | d |
 GHw n  y| j   d } | j   d } | j   d } | j   d } | j   d } | j   d } | j   d } | j   d } | j   d } t | j   d  } t | j   d  } | j   d } t | j   d  } t | j   d  } t | j   d  } Wn t k
 rtd |
 GHw n XWd  QX| | k r t  j j t  j j |  | d  } t  j j |  sd | GHq n  | j |  q q W| S(   Ns	   DM/Growths
   Results/DBs   DM/Parnas2015s   DM/Bassiketals   _record.txtR  R  s   	s   Warning: Empty record file: s   Incorrect version (s   ): i   s"   Warning: Record formatting error: s   .csvs    Warning: Result file not found: (   R	  t   walkt   appendR
  R   R  R  R  R  t   StopIterationt
   startswitht   intt   floatt
   ValueErrort   dirnamet   exists(   t
   script_allt   screen_typest   current_versionR
  t   record_filest   result_filest   roott   dirst   filest   filt   record_filet   record_opent
   record_csvt   scriptt   versiont	   last_timet   unt_filet   trt_filet	   time_zerot   res_filet   screen_typet   neg_namet
   split_markt   excludet   thresht   Kt   backt   I_stept   scalet   draw_numt   full_res_file(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   retrieveResults   s^    0'		%	c         C   sj  t  t  } xW| D]O} t | d  8} t j | d d } t |  x| D]} | sc qQ n  y" | d }	 | d }
 | | } Wn t k
 r d | GHPn X| j d  \ } } | j |  d } |	 |  k r | |	 c | | f g 7<qQ qQ |
 j   |  k r'| |
 c | | f g 7<qQ qQ | j   |  k rQ | | c | | f g 7<qQ qQ qQ WWd  QXq W| S(   NR  R  R  i    i   s"   Warning: Result formatting error: s   : (	   R    t   listR  R  R  R  t
   IndexErrorR&  R  (   R+  R>  RO  t   element_colt
   gene2linest   result_filet   result_opent
   result_csvR  R!  R#  t   elementt   element_effectt   element_namet   ID_from_element(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   extractLines4  s6    


	c         C   s  g  } x |  D] } | j  d  \ } }	 | rJ |	 j  |  d j   }
 nI | r t t t d   |	 j  |  d    } | j | | g  }
 n  | j t |  |
 f  q W| d k r | j d d   d t	  n( | d k  r | j d d   d t
  n  | S(	   Nt   :ic         S   s
   |  j    S(   N(   t   isdigit(   R   (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyR  q  s    i    t   keyc         S   s   |  d S(   Ni    (    (   R   (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyR  w  s    t   reversec         S   s   |  d S(   Ni    (    (   R   (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyR  z  s    (   R&  t   stript   strR5  t   filterR   R2  R6  t   sortt   Truet   False(   t   elementsR!  t   effectt   Cas9t   shRNARO  t   effects_guidesR`  Ra  Rb  t
   element_IDt   ID_num(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   extractElementsd  s    +c      
   C   s  t  t  } g  } | \ } }	 }
 | \ } } } } } xT|  j   D]F\ } } x7| D]/\ } } yH | | } t | |  } t | |  } t | |  } | | } Wn   | j d | f  Pn X| | k  sV | |
 k  r qV n  t | | | | | |  } g  } g  } xP | D]H \ } } t |  |	 t |  k rEqn  | j |  | j |  qW| | c | | | | | f g 7<qV WqC W| | f S(   Ns"   Warning: Result formatting error: (   R    RY  t   itemsR6  R5  R2  Rv  t   abs(   R\  t   colst   threshesRq  Rr  RO  t
   gene2likest   result_errorst   L_thresht
   off_thresht
   num_thresht
   L_stat_colt   num_colt
   effect_colR[  t   ID_colR   t   linesR]  R  R!  t   L_statt   numRp  Ro  t   effects_elementst   element_effectsRa  Rt  (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   extractLikes  s8    
*c         C   s  t    } g  } x$ |  D] } | j t j |   q Wt } x | D] } | | j   k ra qC n  | d d t | d d  }	 }
 |	 | } | |
 } t } xD |  D]< } t j |  } | j |  s | j |  r t } q q W| sC t } PqC qC W| st	 j
 d  n  |	 |
 | f S(   Ni   i    s!   Error: Free primer pair not found(   R  R2  t   ret   compileRn  t   valuesR	   t   searchRm  t   syst   exit(   t   restriction_sitest   name2primert
   context_upt   context_downR  t   RE_REt   sitet   broket   primert	   up_primert   down_primert
   example_upt   example_downt   re_foundt   re_re(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt
   pickPrimer  s,    	#

c   	      C   si   | |  } t  j |  d } g  } x9 | |  D]- } | | } | j | | g  | d 7} q. W| | f S(   Ni    i   (   t   randomt   shuffleR2  (	   RN  t
   gene2namest   name2seqt   numbert	   neg_namesR  t   non_seqsR#  t   seq(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   retrieveNegatives  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    R   R   t   ct   gi   (   t   lenRY  R6  (   t   guidet   numGCt   totalt   nuc(    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   getGC  s    0c         C   s2   |  j    d d k r  |  j    Sd |  j    Sd  S(   Ni    R   (   R  (   R  (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   addG  s    
(   R	  R  t   argparseR  t   collectionsR    R  R  R	   R  Rn  R  R$  R0  RX  Rd  Rv  R  R  R  R  R  (    (    (    s[   /oak/stanford/groups/akundaje/marinovg/ENCODE4/CRISPR/sgRNAs-DMorgens/Scripts/libraryFun.pyt   <module>   s&   		^K		G	0	!	1	(		