
    DUf3                         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
dS )
    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dS )
TestRemoteNhttp://raw.githubusercontent.com/dpryan79/pyBigWig/master/pyBigWigTest/test.bwc                 @    t          j        | j                  }|J |S )N)pyBigWigopenfnameselfbws     N/var/www/html/software/conda/lib/python3.11/site-packages/pyBigWigTest/test.pydoOpenzTestRemote.doOpen   s!    ]4:&&~~~	    c                     t          j        | j                  5 }|                                dddk    sJ 	 d d d            d S # 1 swxY w Y   d S )NcQ?110)r   r   r	   chromsr
   s     r   
doOpenWithzTestRemote.doOpenWith   s    ]4:&& 	E"99;;	"C"CCCCCC	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   AA
A
c                     |                                 dddk    sJ |                     d          dk    sJ |                     d          J d S )Nr   r   r   r   c)r   r
   s     r   doChromszTestRemote.doChroms   sZ    yy{{IY??????yy~~****yy~~%%%%%r   c           	      J    |                                 ddddddddk    sJ d S )	N   i  r              )maxValsumDataminValversion
sumSquarednLevelsnBasesCovered)headerr
   s     r   doHeaderzTestRemote.doHeader   sS    yy{{saTUehuv  JM  N  N  N  N  N  N  N  Nr   c                    |                     ddd          dgk    sJ |                     dddd          dgk    sJ |                     ddd	dd
          ddgk    sJ |                     dt          j        d          t          j        d	          dd
          ddgk    sJ |                     d          dgk    sJ d S )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GGGxxBsax88=NPS<TTTTTxxBHRLL"(3--e1xMMRcehQiiiiixx}}!3 4444444r   c                     |                     ddd          g dk    sJ |                     dt          j        d          t          j        d                    g dk    sJ d S )Nr   r   r+   )   ?   ?r.   )valuesr6   r7   r
   s     r   doValueszTestRemote.doValues#   sh    yya##'f'f'fffffyybhqkk28A;;77;z;z;zzzzzzzr   c                     |                     ddd          dk    sJ |                     dt          j        d          t          j        d                    dk    sJ |                     d          dk    sJ d S )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  B  B  B||C!bhqkk::  ?V  V  V  V  V||C    %l  l  l  l  l  l  lr   c                 J    |                     ddddd          ddgk    sJ d S )	Nr   rB   rD   sumr   r1   g     A@g     @B@)r5   r
   s     r   doSumzTestRemote.doSum-   s3    xxS#Ex;;d|KKKKKKr   c                    t          j        d          }|j        }|                                 t	          j        |d          }|J d|                    d          fd|                    d          fg}t          |                                          dk    sJ |                    |d           |D ]}|	                    |d	                   }g }g }	g }
g }|D ]n}|
                    |d	                    |	
                    |d	                    |

                    |d                    |
                    |d                    o|                    ||	|
|
           |                                 t	          j        |          }|                                |                                k    sJ |                                |                                k    sJ |D ]@}|	                    |d	                   }|	                    |d	                   }||k    sJ A|                                 |                                 t          j        |           d S )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   s9   +5999
mE3''		#'$		$)@A299;;1$$$$fq))) 	F 	FA<<!%%DGFDF ( (qt$$$eAh'''E!H%%%eAh''''NN7FfNEEEE		mE""yy{{cjjll****yy{{cjjll**** 	# 	#ALL1&&EMM!A$''EE>>>>>



		
	%r   c                 r   dgdz  }g d}g d}g d}t          j        d          }|j        }|                                 t	          j        |d          }|                    d	d
g           |                    |dd         |dd         |dd         |dd                    |                    |dd         |dd         |dd         |dd                    |                    d|dd         |dd         d           |                    d|dd         |dd         d           |                    dd|dd         dd           |                    dd|dd         dd           	 |                    |dd         |dd         |dd         |dd                    ddk    sJ n# t          $ r Y nw xY w	 |                    d|dd         |dd         d           ddk    sJ n# t          $ r Y nw xY w	 |                    d|dd         |dd         d           ddk    sJ n# t          $ r Y nw xY w	 |                    dd|dd         dd           ddk    sJ n# t          $ r Y nw xY w|                    dgdz  |dd         |dd         |dd                    |                                 t          j
        t          |d                                                                                    }|dk    sJ t          j        |           dS )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KK++++5999
]5#&&
nn5666 	fQqSk6!A#;T!A#YvaPQc{SSS
fQqSk6!A#;T!A#YvaPQc{SSS 	c6!A#;vac{DDD
c6!B$<qt2FFF 	c3vbe}2BGGG
c3vbe}2BGGG	MM&1+vac{ac6RSTURU;MWWWa44444 	 	 	D		MM#vac{6!A#;RMHHHa44444 	 	 	D		MM#vac{6!A#;RMHHHa44444 	 	 	D		MM#s6"R%=rMKKKa44444 	 	 	D	 	seAgvac{ac6!A#;OOO



KUD))..0011;;==44444
	%sI   8AF: :
GG1G= =
H
	H
1I   
II*I< <
J	J	c                    t          j        d          }|j        }|                                 t	          j        |d          }|                    ddg           |                                 t          j        t          |d          	                                          
                                }|dk    sJ t	          j        |          }|                                dd	d
k    sJ |                    d          d k    sJ |                    ddd          g k    sJ |                    dddd          d d gk    sJ |                                 t          j        |           d S )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   sa   +5999
]5#&&
nn5666



 KUD))..0011;;==44444 ]5!!yy{{G'::::::||C  D((((yya))R////xxQqx11dD\AAAA



 		%r   c                    t          j        d          }|j        }|                                 t	          j        |d          }|                    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
                            d          t          j                  }|                    ||||           |                                 d t          |||          D             }t	          j        |          }|                                dddddk    sJ t!          g d          D ]\  }	}
t!          |                    |
                    D ]b\  }}|d         |d|	z  |z            k    sJ |d         |d|	z  |z            k    sJ t          j        |d         |d|	z  |z                      sJ c|                                 t'          j        |           d S )NFrK   rM   ))chr1rB   )chr2rC   )chr3r0   )chr4   r   r   r   r   r   )r   
   (   2   <   F   P   Z   dtype)rk   r   -   7   A   K   U   _      rP   c                      g | ]\  }}}|||fS  r   ).0xyzs       r   
<listcomp>z+TestRemote.doWriteNumpy.<locals>.<listcomp>   s$    DDDgaAAq	DDDr   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valsidx1chromidx2tups                r   doWriteNumpyzTestRemote.doWriteNumpy   sN   +5999
]5#&&
QQQRRR6(Q,&A51DxRS|STT999JJJx777rxHHH(2922155RZHHH
ff4@@@



DDVT7)C)CDDD]5!!yy{{sCcRRRRRR$%E%E%EFF 	E 	EKD%&r||E':':;; E E	c1vD4!888881va$ho!66666z#a&'!d(T/*BCCDDDDE 	


 		%r   c                 P   |                                  }|                     |           | j                            d          s|                     |           |                     |           |                     |           |                     |           |                     |           | 	                    |           | 
                                 |                                  |                                  |                                  |                                 d S )Nhttp)r   r   r	   
startswithr)   r8   rI   r=   rF   re   r   r   r   r   rU   r
   s     r   testAllzTestRemote.testAll   s    [[]]bz$$V,, 
	 MM"LLJJrNNNMM"R   LLOOMMOOO





r   N)__name__
__module____qualname__r	   r   r   r   r)   r8   r=   rF   rI   re   r   r   r   r   r   r   r   r   r      s        \E  
E E E' ' '
O O O6 6 6| | |
m m m
M M M# # #J9 9 9v  .  4    r   r   c                       e Zd Zd ZdS )	TestLocalc                     t                      }t          j                            t          j                  dz   |_        |                                 d S )Nz/pyBigWigTest/test.bw)r   rZ   pathdirnamer   __file__r	   r   )r   blahs     r   testFoozTestLocal.testFoo   s:    ||W__X%677:QQ
r   N)r   r   r   r   r   r   r   r   r      s#            r   r   c                       e Zd Zd ZdS )
TestBigBedc                 z   t           j                            t          j                  dz   }t          j        |          }|J |                                dk    sJ |                                dk    sJ d}|                                }t          |t                    r|                    d          }||k    sJ |                    ddd          }g d	}||k    sJ |                    dt          j        d          t          j        d                    }||k    sJ |                                 d S )
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225PP]5!!~~~{{}}!!!!{{}}!!!! fe$$ 	,]]7++F}}}}JJvhx00 C  C  CH}}}}JJvbhx00(1C1CD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dS )	TestNumpyc                 ,   dd l }t          j        dk    rdS dd lt          j        dd                              dgd            j        dgdz            } j        g dj        	          } j        g d
j        	          } j        j                            d          j	        	          }
                    ||||            j        g dj        	          } j        g dj        	          } j        j                            d          j	        	          }
                    ||||            j        g dj        	          } j        j                            d          j	        	          }
                    d| j        d          |            j        g dj        	          } j        j                            d          j	        	          }
                    d| j        d          |            j        j                            d          j	        	          }	
                    d j        d           j        d           j        d          |	            j        j                            d          j	        	          }

                    d j        d           j        d           j        d          |
                                            t          j        d          J fd} |d|            |d|            |d|            |d|            |d|	            |d|
                               dddd          }t          |t                    sJ                     dddd          }t          |j                  sJ                                   |j        d           d S )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 }                     d| | dz             D ]}|                    |d                     j        |          } j         j        ||z
            dk               sJ d S )Nr   rB   r   gh㈵>)rE   rX   r   allabs)startv2vtr   r6   s       r   compyz"TestNumpy.testNumpy.<locals>.compy!  s    A\\#ueck::  1A26&"&R..4/0011111r   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   sN   			>Q1]+S11
k]Q///3%"*%%AAARRRrx???rxPPP"(2922266bjIII
ff4@@@LLLTVT\]]]rxJJJRTRZ[[["(2922266bjIII
ff4@@@ LLLTVT\]]]"(2922266bjIII
c6GDDDLLLTVT\]]]"(2922266bjIII
c6GDDD "(2922266bjIII
c828C==xrx{{!U\]]]"(2922266bjIII
c828C==xrx{{!U\]]]



]+,,~~~	2 	2 	2 	2 	2 	2 	ac7c7c7c7c7 iiQ5i11#t$$%%%iiQ4i00#rz**+++



	"#####r   c                    t           j        dk    rdS dd l}d}t          j        |d          } |j        |                    dddd           |j        |                    ddd          |j                  d	          sJ  |j        |                    dddd
dd           |j        |                    dddd
d          |j                  d	          sJ d S )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1`]5#&&r{IIc1bI--BHRYYsAr**"*===
 
 
 	
 	
 	
 r{HHS!R$H77BHRXXc1b&!44BJGGG
 
 
 	
 	
 	
 	
 	
r   N)r   r   r   r  r  r   r   r   r   r      s3        >$ >$ >$@
 
 
 
 
r   r   )r   rR   rZ   sysr   r   r6   r   r   r   r   r   r   r   <module>r     s      				 



     G G G G G G G GR              @S
 S
 S
 S
 S
 S
 S
 S
 S
 S
r   