
    bVf3                         d dl Z d dlZd dlZd dlZd dlZd dlZ G d d      Z G d d      Z G d d      Z	 G d d	      Z
y)
    Nc                   ^    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y)
TestRemoteNhttp://raw.githubusercontent.com/dpryan79/pyBigWig/master/pyBigWigTest/test.bwc                 L    t        j                  | j                        }|J |S )N)pyBigWigopenfnameselfbws     Z/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/pyBigWigTest/test.pydoOpenzTestRemote.doOpen   s#    ]]4::&~~	    c                     t        j                  | j                        5 }|j                         dddk(  sJ 	 d d d        y # 1 sw Y   y xY w)NcQ?110)r   r   r	   chromsr
   s     r   
doOpenWithzTestRemote.doOpenWith   sF    ]]4::& 	E"99;	"CCDC	E 	E 	Es   AAc                     |j                         dddk(  sJ |j                  d      dk(  sJ |j                  d      J y )Nr   r   r   r   c)r   r
   s     r   doChromszTestRemote.doChroms   sE    yy{IY??@?yy~*+*yy~%&%r   c           	      >    |j                         ddddddddk(  sJ y )	N   i  r              )maxValsumDataminValversion
sumSquarednLevelsnBasesCovered)headerr
   s     r   doHeaderzTestRemote.doHeader   s9    yy{saTUehuv  JM  N  N  	O  Nr   c                 Z   |j                  ddd      dgk(  sJ |j                  dddd      dgk(  sJ |j                  ddd	dd
      ddgk(  sJ |j                  dt        j                  d      t        j                  d	      dd
      ddgk(  sJ |j                  d      dgk(  sJ y )Nr   r      gUUU?max)type   @33?c      r   r-   nBins   `ff?      ?gq\?)statsnpint64r
   s     r   doStatszTestRemote.doStats   s    xxQ"'9&::;:xxQx.3F2GGHGxxBsax8=NPS<TTUTxxBHHRL"((3-e1xMRcehQiijixx}!3 4454r   c                     |j                  ddd      g dk(  sJ |j                  dt        j                  d      t        j                  d            g dk(  sJ y )Nr   r   r+   )   ?   ?r.   )valuesr6   r7   r
   s     r   doValueszTestRemote.doValues#   sJ    yya#'ffgfyybhhqk288A;7;zz{zr   c                     |j                  ddd      dk(  sJ |j                  dt        j                  d      t        j                  d            dk(  sJ |j                  d      dk(  sJ y )Nr   r   r+   )r   r   r:   r   r   r;   r   r+   r.   )r?   r@   rA   )d      r3   )rC      r4   )	intervalsr6   r7   r
   s     r   doIntervalszTestRemote.doIntervals(   s    ||CA&  +B  B  	C  B||C!bhhqk:  ?V  V  	W  V||C   %l  l  	m  lr   c                 >    |j                  ddddd      ddgk(  sJ y )	Nr   rB   rD   sumr   r1   g     A@g     @B@)r5   r
   s     r   doSumzTestRemote.doSum-   s'    xxS#Ex;d|KLKr   c                    t        j                  d      }|j                  }|j                          t	        j
                  |d      }|J d|j                  d      fd|j                  d      fg}t        |j                               dk(  sJ |j                  |d       |D ]  }|j                  |d	         }g }g }	g }
g }|D ]R  }|j                  |d	          |	j                  |d	          |
j                  |d          |j                  |d          T |j                  ||	|
|
        |j                          t	        j
                  |      }|j                         |j                         k(  sJ |j                         |j                         k(  sJ |D ]1  }|j                  |d	         }|j                  |d	         }||k(  r1J  |j                          |j                          t        j                  |       y )NFdeletewr   r   r   r   maxZoomsr   endsr<   )tempfileNamedTemporaryFilenamecloser   r   r   len	addHeaderrE   append
addEntriesr(   osremove)r   r   ofileonamebw2r   r   intschroms2startsrQ   r<   entryints1ints2s                  r   doWritezTestRemote.doWrite0   s   ++59

mmE3'		#'$		$)@A299;1$%$fq) 	FA<<!%DGFDF (qt$eAh'E!H%eAh'	(
 NN7FfNE	F 			mmE"yy{cjjl*+*yy{cjjl*+* 	#ALL1&EMM!A$'EE>">	# 	
		
		%r   c                    dgdz  }g d}g d}g d}t        j                  d      }|j                  }|j                          t	        j
                  |d      }|j                  d	d
g       |j                  |dd |dd |dd |dd        |j                  |dd |dd |dd |dd        |j                  d|dd |dd d       |j                  d|dd |dd d       |j                  dd|dd dd       |j                  dd|dd dd       	 |j                  |dd |dd |dd |dd        ddk(  sJ 	 	 |j                  d|dd |dd d       ddk(  sJ 	 	 |j                  d|dd |dd d       ddk(  sJ 	 	 |j                  dd|dd dd       ddk(  sJ 	 |j                  dgdz  |dd |dd |dd        |j                          t        j                  t        |d      j                               j                         }|dk(  sJ t        j                  |       y# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w)z
        Test all three modes of storing entries. Also test to ensure that we get error messages when doing something silly

        This is a modified version of the writing example from libBigWig
        r      )r   rB   }   r0         r   iX  iq  i  i   iR  )   x   ~            )              ?      i@            b@      9@rq   rr   rs   rt   ru   rv               4rv   rw   rx   rv   FrK   rM   r   @B 2` r   r+   rP   	      )r<   span   i        )r<   r   stepi     r   3r|   rb ef104f198c6ce8310acc149d0377fc16N)rR   rS   rT   rU   r   r   rW   rY   RuntimeErrorhashlibmd5read	hexdigestrZ   r[   )	r   r   ra   rQ   r<   r\   r]   r   hs	            r   doWrite2zTestRemote.doWrite2U   s    qK+++59

]]5#&
nn56 	fQqk6!A;T!AYvaPQ{S
fQqk6!A;T!AYvaPQ{S 	c6!A;va{D
c6!B<q2F 	c3vb}2BG
c3vb}2BG	MM&1+va{a6RSTU;MWa4L4	MM#va{6!A;RMHa4L4	MM#va{6!A;RMHa4L4	MM#s6"R=rMKa4L4
 	seAgva{a6!A;O

KKUD)..01;;=4454
		%3  		
  		
  		
  		sH   (H6 "I '"I  I# 6	II	II	I I #	I/.I/c                    t        j                  d      }|j                  }|j                          t	        j
                  |d      }|j                  ddg       |j                          t        j                  t        |d      j                               j                         }|dk(  sJ t	        j
                  |      }|j                         dd	d
k(  sJ |j                  d      d k(  sJ |j                  ddd      g k(  sJ |j                  dddd      d d gk(  sJ |j                          t        j                   |       y )NFrK   rM   ry   r{   r    361c600e5badf0b45d819552a7822937rz   r}   )r   r|   r   r   r   )r2   )rR   rS   rT   rU   r   r   rW   r   r   r   r   r   rE   r<   r5   rZ   r[   )r   r\   r]   r   r   s        r   doWriteEmptyzTestRemote.doWriteEmpty   s   ++59

]]5#&
nn56

 KKUD)..01;;=4454 ]]5!yy{G'::;:||C D()(yya)R/0/xxQqx1dD\ABA

 			%r   c                    t        j                  d      }|j                  }|j                          t	        j
                  |d      }|j                  g d       t        j                  dgdz  dgdz  z   dgdz  z   d	gdz  z         }t        j                  g d
t        j                        }t        j                  g dt        j                        }t        j                  t        j                  j                  d      t        j                        }|j                  ||||       |j                          t        |||      D 	
cg c]  \  }}	}
||	|
f }}	}}
t	        j
                  |      }|j                         dddddk(  sJ t!        g d      D ]q  \  }}t!        |j#                  |            D ]O  \  }}|d   |d|z  |z      k(  sJ |d   |d|z  |z      k(  sJ t        j$                  |d   |d|z  |z            rOJ  s |j                          t'        j(                  |       y c c}
}	}w )NFrK   rM   ))chr1rB   )chr2rC   )chr3r0   )chr4   r   r   r   r   r   )r   
   (   2   <   F   P   Z   dtype)rk   r   -   7   A   K   U   _      rP   rB   rC   r0   r   )r   r   r   r   r   r   )rR   rS   rT   rU   r   r   rW   r6   arrayr7   randomrandom_samplefloat64rY   zipr   	enumeraterE   iscloserZ   r[   )r   r\   r]   r   r   ra   rQ   values0xyzvalsidx1chromidx2tups                   r   doWriteNumpyzTestRemote.doWriteNumpy   s   ++59

]]5#&
QR6(Q,&A51DxRS|ST9Jxx7rxxH((2992215RZZH
ff4@

),VT7)CDDgaAAq	DD]]5!yy{sCcRRSR$%EF 	EKD%&r||E':; E	c1vD4!88981va$ho!6676zz#a&'!d(T/*BCDCE	E
 	
 			% Es   H:c                    | j                         }| j                  |       | j                  j                  d      s| j	                  |       | j                  |       | j                  |       | j                  |       | j                  |       | j                  |       | j                          | j                          | j                          | j                          |j                          y )Nhttp)r   r   r	   
startswithr)   r8   rI   r=   rF   re   r   r   r   r   rU   r
   s     r   testAllzTestRemote.testAll   s    [[]bzz$$V,MM"LLJJrNMM"R LLOOMMO

r   N)__name__
__module____qualname__r	   r   r   r   r)   r8   r=   rF   rI   re   r   r   r   r    r   r   r   r      sO    \E
E'
O6|
m
M#J9v.4r   r   c                       e Zd Zd Zy)	TestLocalc                     t               }t        j                  j                  t        j
                        dz   |_        |j                          y )Nz/pyBigWigTest/test.bw)r   rZ   pathdirnamer   __file__r	   r   )r   blahs     r   testFoozTestLocal.testFoo   s2    |WW__X%6%67:QQ
r   N)r   r   r   r   r   r   r   r   r      s    r   r   c                       e Zd Zd Zy)
TestBigBedc                 :   t         j                  j                  t        j                        dz   }t        j
                  |      }|J |j                         dk(  sJ |j                         dk(  sJ d}|j                         }t        |t              r|j                  d      }||k(  sJ |j                  ddd      }g d	}||k(  sJ |j                  dt        j                  d      t        j                  d            }||k(  sJ |j                          y )
Nz/pyBigWigTest/test.bigBedr   r   a  table RnaElements 
"BED6 + 3 scores for RNA Elements data "
    (
    string chrom;      "Reference sequence chromosome or scaffold"
    uint   chromStart; "Start position in chromosome"
    uint   chromEnd;   "End position in chromosome"
    string name;       "Name of item"
    uint   score;      "Normalized score from 0-1000"
    char[1] strand;    "+ or - or . for unknown"
    float level;       "Expression level such as RPKM or FPKM. Set to -1 for no data."
    float signif;      "Statistical significance such as IDR. Set to -1 for no data."
    uint score2;       "Additional measurement/count e.g. number of reads. Set to 0 for no data."
    )
ASCIIr   i i ))i i( z61035	130	-	0.026	0.42	404)i7͘ iQΘ z61047	136	-	0.029	0.42	404)iΘ is z61048	630	-	5.420	0.00	2672399)rZ   r   r   r   r   r   isBigWigisBigBedSQL
isinstancebytesdecodeentriesr6   r7   rU   )r   r	   bbr   outputoexpecteds          r   
testBigBedzTestBigBed.testBigBed   s     1 125PP]]5!~~{{}!"!{{}!"! fe$]]7+F}}JJvhx0 CH}}JJvbhhx0(1CDH}}

r   N)r   r   r   r   r   r   r   r   r      s    r   r   c                       e Zd Zd Zd Zy)	TestNumpyc                    dd l }t        j                  dk(  rydd lt        j                  dd      j	                  dgd        j
                  dgdz        } j
                  g dj                  	      } j
                  g d
j                  	      } j
                  j                  j                  d      j                  	      }j                  ||||        j
                  g dj                  	      } j
                  g dj                  	      } j
                  j                  j                  d      j                  	      }j                  ||||        j
                  g dj                  	      } j
                  j                  j                  d      j                  	      }j                  d| j                  d      |        j
                  g dj                  	      } j
                  j                  j                  d      j                  	      }j                  d| j                  d      |        j
                  j                  j                  d      j                  	      }	j                  d j                  d       j                  d       j                  d      |	        j
                  j                  j                  d      j                  	      }
j                  d j                  d       j                  d       j                  d      |
       j                          t        j                  d      J fd} |d|        |d|        |d|        |d|        |d|	        |d|
       j                  dddd      }t        |t              sJ j                  dddd      }t        |j                        sJ j                           |j                   d       y )Nr   z/tmp/delete.bwrM   )r   i  rN   r   r   )
r   r   r   r   r   r   r   r   r   r   r   )
rk   r      #   r   r   r   r   r   r   rP   )
rB   n   rl         rC               )
i   s   rh                        )
r0      ri   rj      r   i  i  i  i"  r   )r   r<   )
,  i6  i@  iJ  iT  i^  ih  ir  i|  i  i  r   )r   r   r<   r   c                     g }j                  d| | dz         D ]  }|j                  |d            j                  |      } j                   j                  ||z
        dk        sJ y )Nr   rB   r   gh㈵>)rE   rX   r   allabs)startv2vtr   r6   s       r   compyz"TestNumpy.testNumpy.<locals>.compy!  sm    A\\#ueck: 1A266&"&&R.4/010r   rB   r0   r   FnumpyT)rZ   r   r   r   rW   r   r7   r   r   r   rY   rU   r<   r   listndarrayr[   )r   rZ   r   ra   rQ   r   values1values2values3values4values5r   foor   r6   s                @@r   	testNumpyzTestNumpy.testNumpy   sf   >>Q]]+S1
k]Q/3%"*%ARrxx?rxxP"((2992226bjjI
ff4@LTVT\T\]rxxJRTRZRZ["((2992226bjjI
ff4@ LTVT\T\]"((2992226bjjI
c6GDLTVT\T\]"((2992226bjjI
c6GD "((2992226bjjI
c8288C=xrxx{!U\]"((2992226bjjI
c8288C=xrxx{!U\]

]]+,~~	2 	ac7c7c7c7c7 iiQ5i1#t$%$iiQ4i0#rzz*+*

		"#r   c                    t         j                  dk(  rydd l}d}t        j                  |d      } |j                  |j	                  dddd       |j
                  |j	                  ddd      |j                        d	      sJ  |j                  |j                  dddd
dd       |j
                  |j                  dddd
d      |j                        d	      sJ y )Nr   r   rr   r   Tr   r   )	equal_nanmeanrk   )	r   r   r   allcloser<   r   float32r5   r   )r   r6   r	   r   s       r   testNumpyValueszTestNumpy.testNumpyValues8  s    >>Q`]]5#&r{{IIc1bI-BHHRYYsAr*"**=
 	
 
 r{{HHS!R$H7BHHRXXc1b&!4BJJG
 	
 
r   N)r   r   r   r  r  r   r   r   r   r      s    >$@
r   r   )r   rR   rZ   sysr   r   r6   r   r   r   r   r   r   r   <module>r     sE      	 
  G GR  @S
 S
r   