
+[c           @   s  d  d l  Z  e  j j d  d e f d     YZ iR d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d d" 6d d# 6d$ d% 6d d& 6d' d( 6d) d* 6d d+ 6d d, 6d- d. 6d/ d0 6d1 d 6d2 d3 6d4 d5 6d6 d7 6d8 d9 6d: d; 6d< d= 6d> d? 6d@ dA 6dB dC 6dD dE 6dF dG 6dF dH 6dF dI 6dF dJ 6dF dH 6dK dL 6dK dM 6dK dN 6dO dP 6dQ dR 6dQ dS 6dQ dT 6dU dV 6dU dW 6dX dY 6dU dZ 6dU d[ 6d\ d] 6d\ d^ 6dU d_ 6d` da 6d` db 6d` dc 6d` dd 6d` de 6d` df 6dg dh 6dg di 6dg dj 6dg dk 6dg dl 6dm dn 6do dp 6do dq 6dr ds 6dt du 6dv dw 6dx dy 6dx dz 6dx d{ 6d| d} 6d~ d 6d~ d 6d~ d 6d d 6Z i d d[ 6d ds 6d\ d 6Z d   Z d f  d     YZ d e	 f d     YZ
 d   Z d   Z d   Z e d k re   n  d S(   iNs    /apps/lib/python2.7/site-packaget   dupKeyErrorc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   keyt   line(   t   selfR   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   __init__
   s    	c         C   s   t  |  j  d t  |  j  S(   Ns    from (   t   reprR   R   (   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   __str__   s    (   t   __name__t
   __module__R   R   (    (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyR    	   s   	s   0,0,200t   Inputt
   MeDIPInputs   0,133,66t   H3K4me1s   0,82,41t   H3K4me2s   0,117,0t   H3K4me3s   33,97,11t   H3K36me3s   46,92,0t   H3K9acs   150,0,0t   H3K9me1s   159,0,72t   H3K9me3s   180,0,0t   H3K27me3s   140,97,0t   H3K27acs   158,84,0t   p300s
   51,102,190t   NR2F1s   0,148,64t   TFAP2At   H2AK5act   H2AK9acs   H2A.Zt	   H2BK120acs   0,0,175t   H2BK12act   H2BK15acs	   0,120,110t   H2BK5acs	   40,100,20t   H2BK20act   H3K14act   H3K18acs   0,150,0t   H3K23acs	   0,110,120t   H3K23me2s   0,0,150s	   113,113,0t   H3K4acs	   0,149,149t   H3K56acs	   185,0,185t   H3K79me1s	   170,170,0t   H3K79me2s	   0,185,134t   H3T11phs	   0,150,150t   H4K20me1s	   150,0,150t   H4K5acs   94,97,11t   H4K8acs	   123,0,102t   H4K12acs	   0,120,120t   H4K91acs   0,100,00t   Mret   MREt   mres   MRE-Seqs   153,0,0t   medipt   MeDIPs	   MeDIP-Seqs   128,0,0t   mbds   0,77,0t   ChromatinAccessibilitys   DNase hypersensitivityt   DNases   200,0,0t   BisulfiteSeqs   Bisulfite-Seqs
   255,51,102t   Bismarkt   BSt   SBSs	   172,0,230t	   methylCRFt	   methylcrft   Covs
   40,113,155t   CAGEt   mRNASeqt   RNASeqt   mRNAt   RNAs   mRNA-Seqs   0,43,173t   smRNASeqt   smRNAs	   smRNA-Seqs	   ssRNA-Seqs	   ssRNA-seqs   0,0,255t   DGFs   11,59,23t   Digital_Genomic_Footprintings   Digital Genomic Footprintings   180,49,4t   RRBSs	   102,0,153t   STAT1s
   77,121,255t   IgGs	   255,83,26s   4074-1s   4074-2s   4074-3s	   209,157,0s   4074-0s
   198,26,255s   V5-1s   V5-3s   V5-4s
   204,51,255t   infms   122,0,0s   240,64,5t   mCRFc         C   sE  g  } y t  |  } Wn4 t k
 rJ t j d j |   IJt j d  n X| j d  } | } g  | D] } t |  ^ qg } d | k r | j d  } d | }	 t	 |	 |  | | <n} d | k r | j d  } d | }	 t	 d |	 |  | | <n= t
 |  }
 | j |
  } |
 | }	 t	 |
 |	 |  | | <d j |  S(   Ns$   ERROR: {0} not existed in assay listi   t   ,i    i   (   t   tkColort   KeyErrort   syst   stderrt   formatt   exitt   splitt   intt   indext   strt   maxt   join(   t   xt   tott   foldt   alist   colt   blist   it   clist   aindt   stept   amax(    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   trackGraColork   s,    


t   trackDbc           B   s    e  Z d  Z d   Z d   Z RS(   s   trackDb parserc         C   s   | |  _  d  S(   N(   t   f(   R   Rc   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyR      s    c         c   s   t  |  j d   } g  } xq | D]i } | j d  r= q" n  | j   } | r" | j d  r{ | r{ t |  Vg  } q{ n  | j |  q" q" W| r t |  Vg  } n  Wd  QXd  S(   Nt   rUt   #t   track(   t   openRc   t
   startswitht   stripRf   t   append(   R   t   fft   linesR   t   aline(    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   parse   s     (   R   R   t   __doc__R   Rn   (    (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyRb      s   	Rf   c           B   s   e  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   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s   a track recordc   	      C   s8  | |  _  i  |  _ d |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t	 |  _
 x |  j  D]y } | j d  rv q[ n  | j   } | d } d j | d  } | |  j k r | |  j | <q[ t | |  j d   q[ Wd |  j k r&t	 |  _ t |  _
 d |  j k sd	 |  j k r&t	 |  _ q&n  d	 |  j k rYd
 |  j k rYt	 |  _ t |  _
 n  d
 |  j k r}t	 |  _ t |  _
 n  d |  j k rt	 |  _ t |  _
 n  |  j d |  _ |  j d |  _ d |  j k r|  j d |  _ n  d |  j k r|  j d |  _ n  d |  j k r'|  j d |  _ n  d	 |  j k rS|  j rS|  j d	 |  _ n  d |  j k ru|  j d |  _ n  d |  _ |  _ |  _ |  _ |  _ |  j
 rd |  j k ri  } |  j d } x5 | j   D]' } | j d  } | d | | d <qWd | k r| d |  _ n  d | k r5| d |  _ n  d | k rQ| d |  _ n  d | k rm| d |  _ n  d | k r| d |  _ n  d | k r| d |  _ qn) |  j j   } | d |  _ | d |  _ |  j d k rd |  _ d |  _ n  |  j d k rd |  _ d |  _ n  |  j d k r=d |  _ d |  _ n  |  j d k rk|  j j   } | d |  _ n  |  j d k r|  j j   } | d |  _ qn  |  j d k rd  |  _ n  |  j d k rd! |  _ n  |  j d k rd" |  _ n  |  j d# k rd$ |  _ n  |  j d% k r#d& |  _ n  |  j d' k r>d( |  _ n  |  j rZ|  j d |  _ n  |  j rd) |  j k r|  j |  j d)  |  _ n  d* |  j k r|  j |  j d*  |  _ n  d+ |  j k r|  j |  j d+  |  _ n  d, |  j k r|  j |  j d,  |  _ qn  d- |  j k r4|  j d- |  _ n  d  S(.   Nt    Re   i    t    i   Rf   t   compositeTrackt   parentt
   superTrackt	   containert   viewt
   shortLabelt	   longLabelt
   visibilityt   subTrackt	   subGroupst   =t
   sampleTypet   cellTypet	   assayTypet   donorIDt   dataTypes   UCSD H9 H3K18ac SK375R   t   H9s   H22510 FB MRE 10R-   t   FBs   H22510 FB MeDIP 10R0   R6   s   Bisulfite-Seqs	   MeDIP-Seqs   MRE-SeqR>   s   mRNA-SeqRA   s	   smRNA-SeqR3   R2   t	   subGroup1t	   subGroup2t	   subGroup3t	   subGroup4t
   bigDataUrl(   Rl   t   infoRs   t   Falset   isSupert   isCompositet   isContainert	   isCompsubt   isCompchildt   Truet   isNormalRh   RP   RU   R    Rf   Rw   Rx   Ry   Rv   R}   R~   R   R   R   t   subGroupParset   viewListt
   sampleListt	   assayListt	   donorListR   (	   R   Rl   R\   t   tt   at   bt   dR{   t   j(    (    s'   /bar/xzhuo/public_html/trackDbParser.pyR      s    									 
					%						c         C   s|   g  } d } |  j  s |  j r' d } n  |  j r9 d } n  x& |  j D] } | j | | d  qC W| j d  d j |  S(   NRp   s       s           s   
(   R   R   R   Rl   Rj   RU   (   R   t   outlinet   spaceR\   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyR     s    			c         C   s
   |  j    S(   N(   R   (   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   __repr__'  s    c         C   sd   i  } xW | j    D]I } d | k r | j  d  } | d | k r\ | d | | d <q\ q q W| S(   NR|   i   i    (   RP   (   R   R   R   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyR   *  s    c         C   s  d } |  j  d k s0 |  j s0 |  j s0 |  j r9 d } n  |  j r xt t |  j  D]S \ } } | j d  r d j | |  |  j | <n  | j d  rR |  j | =qR qR Wn |  j	 d  |  j s |  j rx t |  j  D] \ } } | j d  r | j
   } | d	 d
 k r|  j d k s?d |  j k s?d |  j k r_d |  j | <|  j j d  qd |  j | <|  j j d  qq q Wn  d  S(   Nt   offt   H1t   onRs   s   {} {}Ry   t   denset   typei   t   bigWigs   Bisulfite-Seqt	   BisulfiteRD   s   type bigWig 0 1s   viewLimits 0.0:1.0s   type bigWig 0 30s   viewLimits 0.0:30.0(   R}   R   R   R   R   t	   enumerateRl   Rh   RN   t   changevisibilityRP   R   Rx   Rj   (   R   RV   R\   R   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt
   changeShow7  s(    *		-c         C   s  |  j  s |  j r` xK t |  j  D]7 \ } } | j d  r" | j d d  |  j | <q" q" Wn  |  j sr |  j r xK t |  j  D]7 \ } } | j d  r | j d d  |  j | <q q Wn  |  j s |  j rx? t |  j  D]+ \ } } | j d  r d |  j | <q q Wn  d S(   s$   change subTrack,superTrack to parentRz   Rs   Rt   t   dragAndDrops   dragAndDrop onN(	   R   R   R   Rl   Rh   t   replaceR   R   R   (   R   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt	   fixParentP  s    ##c         C   st   xm t  |  j  D]\ \ } } | j d  rD d j |  |  j | <q | j d  r d j |  |  j | <q q Wd  S(   NRz   s
   parent {0}Rs   (   R   Rl   Rh   RN   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changeParent`  s
    c         C   sz   t  } xK t |  j  D]: \ } } | j d  r d j |  |  j | <t } q q W| rv |  j j d j |   n  d  S(   NRy   s   visibility {0}(   R   R   Rl   Rh   RN   R   Rj   (   R   RV   t   nothaveR\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyR   h  s    c         C   sL   xE t  |  j  D]4 \ } } | j d  r d j |  |  j | <q q Wd  S(   NRx   s   longLabel {0}(   R   Rl   Rh   RN   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changelongLabelq  s    c         C   sL   xE t  |  j  D]4 \ } } | j d  r d j |  |  j | <q q Wd  S(   NRw   s   shortLabel {0}(   R   Rl   Rh   RN   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changeshortLabelv  s    c         C   sL   xE t  |  j  D]4 \ } } | j d  r d j |  |  j | <q q Wd  S(   Nt   colors	   color {0}(   R   Rl   Rh   RN   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changeColor{  s    c         C   sz   d |  j  k rZ xd t |  j  D]4 \ } } | j d  r d j |  |  j | <q q Wn |  j j d d j |   d  S(   Nt   prioritys   priority {0}i(   R   R   Rl   Rh   RN   t   insert(   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changePriority  s
     c         C   sz   d |  j  k rZ xd t |  j  D]4 \ } } | j d  r d j |  |  j | <q q Wn |  j j d d j |   d  S(   NR   s   bigDataUrl {0}i   (   R   R   Rl   Rh   RN   R   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changeBigDataUrl  s
     c         C   sm   xf t  |  j  D]U \ } } | j d  r d j |  j | |  j | |  j | |  j  |  j | <q q Wd  S(   NR{   s;   subGroups view={0} sampleType={1} assayType={2} donorID={3}(   R   Rl   Rh   RN   Rv   R}   R   R   (   R   t   d1t   d2t   d3R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changesubGroups  s    c         C   s^   xW t  |  j  D]F \ } } | j d  r d j |  j | |  j |  j  |  j | <q q Wd  S(   NR{   s;   subGroups view={0} sampleType={1} assayType={2} donorID={3}(   R   Rl   Rh   RN   Rv   R   R   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changesampleType  s    c         C   sX   xQ t  |  j  D]@ \ } } | j d  r d j d |  j |  j  |  j | <q q Wd  S(   NR{   s,   subGroups view={0} assayType={1} donorID={2}t   COV(   R   Rl   Rh   RN   R   R   (   R   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   removesubGroupsSample  s    c         C   sX   xQ t  |  j  D]@ \ } } | j d  r d j d |  j |  j  |  j | <q q Wd  S(   NR{   s-   subGroups view={0} sampleType={1} donorID={2}R   (   R   Rl   Rh   RN   R}   R   (   R   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   removesubGroupsAssay  s    c         C   s   | j    } | r| |  j r+ | |  j | <n  xN t |  j  D]: \ } } | j d  r; |  j | c d j |  7<q; q; Wn  d  S(   NR   s    {0}={0}(   Ri   R   R   Rl   Rh   RN   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt	   addSample  s    	c         C   s   | j    } | r| |  j r+ | |  j | <n  xN t |  j  D]: \ } } | j d  r; |  j | c d j |  7<q; q; Wn  d  S(   NR   s    {0}={0}(   Ri   R   R   Rl   Rh   RN   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   addAssay  s    	c         C   s   | j    } | r| |  j r+ | |  j | <n  xN t |  j  D]: \ } } | j d  r; |  j | c d j |  7<q; q; Wn  d  S(   NR   s    {0}={0}(   Ri   R   R   Rl   Rh   RN   (   R   RV   R\   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   addDonor  s    	c         C   s    d j  | |  j  |  j d <d  S(   Ns   track {0}{1}i    (   RN   Rf   Rl   (   R   RV   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   nameAletter  s    c         C   s$   d j  | |  j d  |  j d <d  S(   Ns   track {0}{1}i   i    (   RN   Rf   Rl   (   R   RV   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   replaceAletter  s    c         C   s#   d j  |  |  j d <| |  _ d  S(   Ns	   track {0}i    (   RN   Rl   Rf   (   R   RV   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   changeTrackName  s    c         C   s   t  j d d d |  } | j   } d j | |  j  } yL | j d j |   | j d j |   | j d j | |  j   Wn0 t j d j |  j |  IJt j d  n X| j	   | j	   d  S(	   Nt	   localhostt   hgusers   {0}{1}s   drop table if exists {0}s1   create table {0} (fileName varchar(255) not null)s   insert {0} select * from {1}s   copy track {0} to {1} errori   (
   t   MySQLdbt   connectt   cursorRN   Rf   t   executeRL   RM   RO   t   close(   R   t   dbt   aLettert   cont   curt   ntk(    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   copyTrackinDB  s     
c         C   s   t  j d d d |  } | j   } y | j d j |  j   Wn  t j d j |  j  IJn Xt j d j |  j  IJ| j   | j   d  S(   NR   R   s   drop table if exists {0}s   Error: delete track {0} errors   delete track {0} success(	   R   R   R   R   RN   Rf   RL   RM   R   (   R   R   R   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   deleteTrackinDB  s    
c         C   s   t  j d d d |  } | j   } d } y* | j d j |   | j   d } Wn t j d j |  IJn X| j   | j   | S(   NR   R   t   Nones   select * from {}i    s   {} not existed(	   R   R   R   R   RN   t   fetchoneRL   RM   R   (   R   R   t   tkR   R   t   row(    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   getbbiTrackPath  s    

(   R   R   Ro   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   (    (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyRf      s6   	~																												c         C   sC   g  } x |  D] } | j  | j  q Wt t |   } t |  S(   N(   Rj   R   t   listt   sett   len(   t   tklisRY   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   lenAssay  s
    c         C   sC   g  } x |  D] } | j  | j  q Wt t |   } t |  S(   N(   Rj   R}   R   R   R   (   R   RY   R   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt	   lenSample  s
    c          C   sG   t  t j d  j   }  x' |  D] } | j   | j   | GHq  Wd  S(   Ni   (   Rb   RL   t   argvRn   R   R   (   t   tksR   (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   main  s
    

t   __main__(   RL   t   pathRj   t	   ExceptionR    RJ   t   tkColor2Ra   Rb   t   objectRf   R   R   R   R   (    (    (    s'   /bar/xzhuo/public_html/trackDbParser.pyt   <module>   s   

	 \			