
    DUfco                        d dl 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mZ d dl	Z	d dl
Z
ej                            e          Zej                            ej                            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 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# Z0d$ Z1d% Z2d& Z3d' Z4d( Z5d) Z6d* Z7d+ Z8d, Z9d- Z:d. Z;d/ Z<d0 Z=d1 Z>d2 Z?d3 Z@dS )4    N)dedent)Pathtmpunwriteablec                      t           j                            t                    st          j        dt          z             t          j        t                     d S )Nzmkdir -p %s)ospathexiststempdirsystem
pybedtoolsset_tempdir     X/var/www/html/software/conda/lib/python3.11/site-packages/pybedtools/test/test_issues.pysetup_moduler      sD    7>>'"" +
	-')***7#####r   c                      t           j                            t                    rt          j        dt          z             t          j                     d S )Nzrm -r %s)r   r	   r
   r   r   r   cleanupr   r   r   teardown_moduler      sB    	w~~g (
	*w&'''r   c                 $   d}|                                  D ]x}|                                }|                    d          rd}nd}t          |          dk    rD|                                }d                    |          |z   dz   }||z  }y|S )z
    Replaces spaces with tabs, removes spurious newlines, and lstrip()s each
    line. Makes it really easy to create BED files on the fly for testing and
    checking.
     	r   
)
splitlineslstripendswithlensplitjoin)xsiadd_tabs       r   fixr$      s     	A\\^^ 
 
HHJJ::d 	GGGq66Q;;GGIIIIaLL7"T)	QHr   c                      ddi} t          j                                        | dd          }|t          d          k    s
J |            d S )Nchr1r   i    i  )genomewr!   z
        chr1	0	1000
        chr1	500	1500
        chr1	1000	2000
        chr1	1500	2500
        chr1	2000	3000
        chr1	2500	3500
        chr1	3000	4000
        chr1	3500	4500
        chr1	4000	5000
        chr1	4500	5000
        )r   BedToolwindow_makerr$   )r)   results     r   test_issue_81r.   2   sp    i F!!..f.LLFS	         r   c                  v   t          j        t          j                              } |                                 }t          j        d          }t          j        d          }t          d          D ]+}|                    |          }|	                                 ,|                                 }||k    sJ d S )Na.bedb.bedd   )
psutilProcessr   getpidnum_fdsr   example_bedtoolrange	intersectfield_count)p	start_fdsabr"   cstop_fdss          r   test_issue_118rA   E   s    ry{{##A		I"7++A"7++A3ZZ  KKNN	yy{{H      r   c                      ddl m}  t          j        g d          } | |d           D ]$\  }}t	          |t          d |                     %dS )zL
    Regression test; in previous versions this would cause a segfault.
    r   )groupby))r&         Nr(   +r&   rD   rE   rF   r(   -rH   )r&   s   t   rF   r(   rG   c                 *    | j         | j        | j        fS N)chromstartendrs    r   <lambda>z test_issue_131.<locals>.<lambda>`   s    !'150I r   )keyc                     | j         S rM   )strandrQ   s    r   rS   z test_issue_131.<locals>.<lambda>a   s     r   N)	itertoolsrC   r   r+   printmap)rC   r    rT   group_s       r   test_issue_131r[   Q   s     "!!!!!	
 	
 	
	 	A wq&I&IJJJ 4 4Vc3))62233334 4r   c                     t          j        dd          } t          j        dd          }t          j        dd          }|                    ||d          t          d          k    sJ |                    | |d          t          d	          k    sJ |                    ||||d          t          d
          k    sJ d S )Nz
        chr1	1	100
        Tfrom_stringz'
        chr2	500	600	feature1
        z*
        chr3	99	999	feature2	0	+
        F)	postmergezb
        chr2	500	600	feature1
        chr2	500	600	feature1
        chr3	99	999	feature2
        zE
        chr2	500	600
        chr1	1	100
        chr3	99	999
        z
        chr3	99	999	feature2	0	+
        chr3	99	999	feature2	0	+
        chr3	99	999	feature2	0	+
        chr3	99	999	feature2	0	+
        chr3	99	999	feature2	0	+
        )r   r+   catr$   r    yzs      r   test_issue_138rd   d   s+   	 		 	 	A 		 		 	 	A 		 		 	 	A 55A5''3	, ,     55A5''3	, ,     55Aq!u5--	2 2      r   c                     t          j        d          } t          j        d          }t          j        dd          }t          j        dd          }| |z    t          | |z             dk    sJ t          || z             dk    sJ t          ||z             dk    sJ t	          j        t           j                  5  | |z    d d d            n# 1 swxY w Y   t          j        d          }|| z    d S )	Nr0   r1   r   Tr]   za	a	ar   zx.bam)r   r7   r+   r   pytestraisesMalformedBedLineError)r=   r>   empty	malformedr    s        r   test_issue_141rk      sB   "7++A"7++A rt444E "7===I EE q5y>>Quqy>>Quu}"""" 
z7	8	8  	I               	"7++AEEEEs    CCCc                      t          j        d          } t          j        d          }|                     |d          }|t          d          k    sJ d S )Nzhg38-problem.bedzhg38-base.bedT)nonamecheckz
        chr1 2 50
        )r   r7   r9   r$   r=   r>   ress      r   test_issue_141brp      sl    "#566A"?33A ++aT+
*
*C#	       r   c                     d } t          j        d          }|                    dd                              |                                           }|                    d                              |                                           }||k    sJ |                    dd          }|D ]}t          |t           j                  sJ |                    dd          }t          t          t          |                              D ]}t          |t           j                  sJ |                    dd                              d           D ]}t          |t           j                  sJ d S )Nc                 &    | xj         dz  c_         | S )N
   )rO   r    s    r   funcztest_issue_143.<locals>.func   s    	2r   r0   T)r!   stream)r!   c                     | S rM   r   rt   s    r   rS   z test_issue_143.<locals>.<lambda>   s     r   )r   r7   mergeeachsaveas
isinstanceIntervaliter)ru   r=   r>   r?   r"   s        r   test_issue_143r~      ss      	"7++A	$t$$))$//6688A	$T""))++A6666	$t$$A 2 2!Z0111111	$t$$A$tAww--   2 2!Z0111111WWtDW))..{{;; 2 2!Z01111112 2r   c                     t          j        dd                              d          } t          j        ddid          } | j        d
d|id	di}t          j        t           j                  5  t          |           d d d            n# 1 swxY w Y   t          |j
                  D ]}t          |            | j        d
d|id	di}|j
        D ]}t          |           d S )NzQ
    chr1    1   100 feature1    0   +
    chr1    1   100 feature1    0   +
    Tr]   zfoo.bedr&   )r      z
genome.txtg5r   )r   r+   rz   chromsizes_to_filegenome_coveragerf   rg   rh   rX   openfn)r    r   rb   lines       r   test_issue_145r      sU   	 	 	 	 fY  	%vx&8,GGA--A-#t--A 
z7	8	8  a               QT

  d 	--A-#t--A  d s   0BBBc                  P   t          t          j                                        d          5 } t          j        }| t          _        t          j        d          }t          j        d          }|                    |           d d d            n# 1 swxY w Y   |t          _        d S )Nr*   zvcf-stderr-test.vcfzvcf-stderr-test.bed)r   r   r+   _tmpsysstderrr7   r9   )r   orig_stderrvr>   s       r   test_issue_147r      s    	j %%''	-	- j
&'<==&'<==	A               CJJJs   ABBBc                  p    dt          d          t          d          dfg} t          j        |            d S )Nchr2      tag)intr   r+   )regionss    r   test_issue_154r      s6    AA./Gwr   c                  L    t          j        g d          } | j        dk    sJ d S )N)r&   119770011977580z0.318355266754715rI   foobarbambazbizzlebuzbisbed)r   create_interval_from_list	file_typefs    r   test_issue_151r     s@     	,	
 	
 	
	 	A" ;%r   c                     t          j        d          } t          j        d          t          j        d          g}t          |                     |                    }|t          d          k    s
J |            t          |                     |dddg                    }|t          d	          k    s
J |            d S )
Nr0   r1   c.gffaW  
        chr1    59      100     feature1        0       +
        chr1    155     200     feature2        0       +
        chr1    173     200     feature2        0       +
        chr1    173     200     feature2        0       +
        chr1    100     200     feature2        0       +
        chr1    155     200     feature3        0       -
        chr1    464     500     feature3        0       -
        chr1    485     500     feature3        0       -
        chr1    173     326     feature3        0       -
        chr1    438     500     feature3        0       -
        chr1    495     500     feature3        0       -
        chr1    485     500     feature3        0       -
        chr1    173     326     feature3        0       -
        chr1    438     500     feature3        0       -
        chr1    150     269     feature3        0       -
        chr1    900     901     feature4        0       +
        chr1    900     913     feature4        0       +
        chr1    900     913     feature4        0       +
        chr1    900     950     feature4        0       +
        TBC)wbnamesa  
        chr1	59	100	feature1	0	+	C	chr1	ucb	gene	60	269	.	-	.	ID=thaliana_1_6160_6269;match=fgenesh1_pg.C_scaffold_1000119;rname=thaliana_1_6160_6269
        chr1	155	200	feature2	0	+	B	chr1	155	200	feature5	0	-
        chr1	173	200	feature2	0	+	C	chr1	ucb	CDS	174	326	.	+	.	Parent=AT1G01010.mRNA;rname=AT1G01010
        chr1	173	200	feature2	0	+	C	chr1	ucb	mRNA	174	326	.	+	.	ID=AT1G01010.mRNA;Parent=AT1G01010;rname=AT1G01010
        chr1	100	200	feature2	0	+	C	chr1	ucb	gene	60	269	.	-	.	ID=thaliana_1_6160_6269;match=fgenesh1_pg.C_scaffold_1000119;rname=thaliana_1_6160_6269
        chr1	155	200	feature3	0	-	B	chr1	155	200	feature5	0	-
        chr1	464	500	feature3	0	-	C	chr1	ucb	gene	465	805	.	+	.	ID=thaliana_1_465_805;match=scaffold_801404.1;rname=thaliana_1_465_805
        chr1	485	500	feature3	0	-	C	chr1	ucb	CDS	486	605	.	+	.	Parent=AT1G01010.mRNA;rname=AT1G01010
        chr1	173	326	feature3	0	-	C	chr1	ucb	CDS	174	326	.	+	.	Parent=AT1G01010.mRNA;rname=AT1G01010
        chr1	438	500	feature3	0	-	C	chr1	ucb	CDS	439	630	.	+	.	Parent=AT1G01010.mRNA;rname=AT1G01010
        chr1	495	500	feature3	0	-	C	chr1	ucb	mRNA	496	576	.	+	.	ID=AT1G01010.mRNA;Parent=AT1G01010;rname=AT1G01010
        chr1	485	500	feature3	0	-	C	chr1	ucb	mRNA	486	605	.	+	.	ID=AT1G01010.mRNA;Parent=AT1G01010;rname=AT1G01010
        chr1	173	326	feature3	0	-	C	chr1	ucb	mRNA	174	326	.	+	.	ID=AT1G01010.mRNA;Parent=AT1G01010;rname=AT1G01010
        chr1	438	500	feature3	0	-	C	chr1	ucb	mRNA	439	899	.	+	.	ID=AT1G01010.mRNA;Parent=AT1G01010;rname=AT1G01010
        chr1	150	269	feature3	0	-	C	chr1	ucb	gene	60	269	.	-	.	ID=thaliana_1_6160_6269;match=fgenesh1_pg.C_scaffold_1000119;rname=thaliana_1_6160_6269
        chr1	900	901	feature4	0	+	B	chr1	800	901	feature6	0	+
        chr1	900	913	feature4	0	+	C	chr1	ucb	mRNA	631	913	.	+	.	ID=AT1G01010.mRNA;Parent=AT1G01010;rname=AT1G01010
        chr1	900	913	feature4	0	+	C	chr1	ucb	CDS	760	913	.	+	.	Parent=AT1G01010.mRNA;rname=AT1G01010
        chr1	900	950	feature4	0	+	C	chr1	ucb	CDS	706	1095	.	+	.	Parent=AT1G01010.mRNA;rname=AT1G01010
        )r   r7   example_filenamestrr9   r$   rn   s      r   test_issue_156r     s     	"7++A		$W	-	-z/J7/S/STA
akk!nn

C#	    , -  0 akk!S#Jk77
8
8C#	    , -    r   c                     	 dd l } n$# t          $ r t          j        d           Y nw xY wt	          j        d          }t	          j        dd          }t          |                    |                    }|	                    dg d	          }d

                    d t          |j                  D                       }t          j                                        }t          |d          5 }|                    |           t          j                            ||          }d d d            n# 1 swxY w Y   t          |                    |                    }	||	k    sJ d S )Nr   z#pandas not installed; skipping test1000genomes-example.vcfz20	14300	17000Tr]   #)CHROMPOSIDREFALTQUALFILTERINFOFORMATNA00001NA00002NA00003)commentr   r   c                 <    g | ]}|                     d           |S )r   )
startswith).0r   s     r   
<listcomp>z"test_issue_157.<locals>.<listcomp>s  s)    LLLtts7K7KLdLLLr   r*   )outfile)pandasImportErrorrf   xfailr   r7   r+   r   r9   to_dataframer   r   r   r   writefrom_dataframe)
r   vcfr   non_dataframedfheaderr   foutvcf_from_dfr   s
             r   test_issue_157r   W  s   < < < <:;;;;;<

$%>
?
?C

/T
B
B
BCc**++M			
 
 
 
 
 
B$ WWLLtCF||LLLMMF %%''G	gs		 Jt

6 (77D7IIJ J J J J J J J J J J J J J J ..s3344NN******s    ((/7D22D69D6c                  L    t          j        d          } t          |            d S )Nzissue_121.bam)r   r7   rX   )r>   s    r   test_PR_158r   |  s#     	"?33A	!HHHHHr   c                  v   t          j        dd          } t          j        d          }t          j                    }t          j        t
                    5  |                    |           d d d            n# 1 swxY w Y   t          |                    |                     t          d          k    sJ d S )Nr   Tr]   r1   z3
        chr1	155	200
        chr1	800	901
        )	r   r+   r7   rf   rg   
ValueErrorr`   r   r$   )r=   r>   r?   s      r   test_issue_162r     s    24000A"7++AA	z	"	"  	a              quuQxx==C	       s   A99A= A=c                      t          j        d          } |                     d                                           }t	          d          }t          |          |k    sJ d S )Nz164.gtfc                     | j         dv S )N)ENSMUSG00000000003ENSMUSG00000000037)name)genes    r   rS   z test_issue_164.<locals>.<lambda>  s    TY"NN r   z    chrX	gffutils_derived	gene	77837901	77853623	.	-	.	gene_id "ENSMUSG00000000003";
    chrX	gffutils_derived	gene	161117193	161258213	.	+	.	gene_id "ENSMUSG00000000037";
    )r   r7   filterrz   r   r   )r=   rb   expecteds      r   test_issue_164r     sl    "9--A	NN	 	fhh 
 	 H q66Xr   c                      t          j        d          } |                     dd          }t          j        |          }d S )Nr   T	is_sortedforce)r   r7   bgzipr+   )r    r   rb   s      r   test_issue_168r     s>     	"#<==A	
4t	,	,B2AAAr   c                     t          j        d          } |                     dd          }t          j        |d                                          }t          |                              d          s
J |            d S )Nr   FTr   rtr   )r   r7   r   gzipr   readliner   r   )r    r   r   s      r   test_issue_169r     ss    "#<==A	
5	-	-B9R''))Dt99$$**d*****r   c                  2   t          j        dd          } |                                 } t          j        dd          }|                     d                    ddd                                        |dd	          }	 |t          d
          k    sJ d S )NzQ
        8 129185980 129186130 A 0.1
        8 129185980 129186130 B 0.2
        Tr]   z 8	129186110	129186111	rs72722756z{}:{}-{}8i>9i?9)war   z
        8       129185980       129186130       A       0.1     8       129186110       129186111       rs72722756
        8       129185980       129186130       B       0.2     8       129186110       129186111       rs72722756
        )r   r+   tabixtabix_intervalsformatr9   r$   )r   snpintersections      r   test_issue_196r     s    

	   C ))++C

BPT
U
U
UC&&#y)44 ii&& 
 3	       r   c                  :   	 t          j        d          } t           j        j                            | dd           t           j        j                            d          }|t          d          k    sJ t          j        d           d S # t          $ r Y d S w xY w)Nzgdc.othersort.bamdm3ztmp.bw)r)   outputa=  
            chr2L   70      75      1
            chr2L   140     145     1
            chr2L   150     155     1
            chr2L   160     165     1
            chr2L   210     215     1
            chrX    10      15      1
            chrX    70      75      1
            chrX    140     145     1
            )
r   r   contribbigwigbam_to_bigwigbigwig_to_bedgraphr$   r   unlinkFileNotFoundError)r   r    s     r   test_issue_178r     s    ()<==!//5/RRR%88BBC	
 
 
 
 
 
 		(    s   BB 
BBc                      t          j        d          } |                     d          } |                                 dgk    sJ d S )Nr0   Tr   r&   )r   r7   r   tabix_contigsr=   s    r   test_issue_180r    sH    "7++A	dA??((((((r   c                     t          j        d          } |                     d          } |                     d           t	          j        t                    5  |                     dd           d d d            d S # 1 swxY w Y   d S )Nr0   Tr  znone:1-5)check_coordinates)r   r7   r   r   rf   rg   r   r  s    r   test_issue_181r    s    "7++A	dAj!!!	z	"	" > >	*===> > > > > > > > > > > > > > > > > >s   A>>BBc                  Z    t          j        d          } |                     d           d S )Nx.bedhg19r)   )r   r7   truncate_to_chromrt   s    r   test_issue_203r    s/    "7++Av&&&&&r   c            	          t          j        d          d         } t          |            | j        dk    sJ t          j        | j        d         t          | j        d                   t          | j        d                   | j        d         | j        d         | j        d                   }t          j        | j                  }| j        |j        cxk    r|j        k    sn J t          |           t          |          cxk    rt          |          cxk    rd	k    sn J t          |           t          |          cxk    r$t          |          cxk    rt           j        k    sn J | j
        |j
        cxk    r|j
        cxk    rd
k    sn J | j        |j        cxk    r|j        cxk    rdk    sn J | j        |j        cxk    r|j        cxk    rdk    sn J | j        |j        cxk    r|j        cxk    rdk    sn J | j        |j        cxk    r|j        cxk    rdk    sn J | j        dk    sJ |j        dk    sJ |j        dk    sJ | j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr0   r   feature1r   r            zchr1	1	100	feature1	0	+
r&   r2   rG   r   r   )r   r7   rX   r   r|   fieldsr   r   r   typerN   rO   stoprV   scorer   ra   s      r   test_issue_217r    s   
 	"7++A.A	!HHH6Z 		AHQKAHQK				 	A 	,QX66A 8qx++++18++++++q66SVVIIIIs1vvIIII)IIIIIII77d1gg????a????J,???????7ag22222222F2222227ag--------A------6QV,,,,qv,,,,,,,,,,8qx2222182222s2222227ag////////C//////;% ;%;%6Z 6Z6Zr   c                  .   ddl m} m} ddlm}  |            }d d d fD ]r} |d          }|                                 dt          j        j        j        j        v sJ d|j        j        v sJ  | d	           t          j	        t                    5  |                                 d d d            n# 1 swxY w Y   d|j        j        v sJ t          j        j        j        j        J  |d          }t          j	        t                    5  |                                 d d d            n# 1 swxY w Y   |j        j        J t          j        j        j        j        J  |               |d          }|                                 td S )
Nr   )set_bedtools_pathget_bedtools_path)r+   c                 *    t          j        |           S rM   r   r7   rt   s    r   rS   z test_issue_218.<locals>.<lambda>5  s    *,Q// r   c                 N    t          j        t          j        |                     S rM   )r   r+   r   rt   s    r   rS   z test_issue_218.<locals>.<lambda>6  s    *$Z%@%C%CDD r   c                 d    t           j                            t          j        |                     S rM   )r   bedtoolr+   r   rt   s    r   rS   z test_issue_218.<locals>.<lambda>7  s"    *$,,Z-H-K-KLL r   r	  zOriginal BEDTools helpnonexistent)pybedtools.helpersr  r  r   r+   sortr  __doc__rf   rg   OSErrorNotImplementedError)r  r  r+   	orig_pathconstructorr    rb   rc   s           r   test_issue_218r(  +  sK   GGGGGGGG""""""!!##I 	0/DDLL ( ( K  	':+=+E+J+RRRRR'16>9999-((( ]7## 	 	FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'16>9999 !).6>>>
 K  ].// 	 	FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 v~%%%!).6>>> 	K  	Q( (s$   B77B;	>B;	D44D8	;D8	c                  x   d t          j        d          } t          j        t                    5  t          |                                         g k    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  fd| D             g k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                      t          d          )Nfailed)r   r   s    r   filtztest_issue_231.<locals>.filt`  s    """r   r0   c                 *    g | ]} |          |S r   r   )r   r"   r,  s     r   r   z"test_issue_231.<locals>.<listcomp>i  s&    (((aQ((((r   )r   r7   rf   rg   r   listr   )r=   r,  s    @r   test_issue_231r/  _  sM   # # # 	"7++A 
z	"	" * *AHHTNN##r)))))* * * * * * * * * * * * * * *	z	"	" / /((((1(((B...../ / / / / / / / / / / / / / / / / /s#   )A((A,/A,B//B36B3c                     t           j                                        } t          | d          5 }|                    t          d                     ddd           n# 1 swxY w Y   t          j        |           }t          |           dS )zS
    Make sure hitting a blank line while iterating does not raise IndexError.
    r*   z;

            chr1	1	5

            # chr2	5	9
            N)r   r+   r   r   r   r   rX   )r   r   r    s      r   test_issue_233r1  l  s     

!
!
#
#C	c3 

4

 		
 		
 		


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 	3A 
!HHHHHs   #AA"%A"c                      t          j        dd          } t          j        dd          }|                     |d          }|j        dk    sJ t	          |           d S )Na  
        chr1    14831331        14831332        0       name1   A       25      16      0       9       0       0
        chr1    14831623        14831624        0       name2   A       23      16      0       7       0       0
        chr2    7730095 7730096 0       name3   A       20      18      0       2       0       0
        chr2    7735877 7735878 0       name4   A       25      16      0       9       0       0
        Tr]   zK
        chr1    14805135        14882224        geneA   100     +
        )lojr   )r   r+   r9   r   rX   )r=   r>   abs      r   test_issue_246r5    s    	 	 	 	A 		 		 	 	A 
QD	!	!B<5    	"IIIIIr   c                  l    t          j        d          } | d         }| |j         |j         |j         d S )Nr0   r   )r   r7   r  attrs)r   r"   s     r   test_issue_251r8    s;    "7++A	!AAHHGG
 HHHHr   c                  l   	 dd l } dd l}n/# t          $ r" t          j                            d           Y nw xY wt          j        d                                          }|j	        |j
        ddd f<   t          j                            |          }t          |          t          d          k    sJ d S )Nr   zPandas not installed; skippingr0   a  
        chr1        1       100     feature1        0.0     +
        chr1        100     200     feature2        0.0     +
        chr1        150     500     feature3        0.0     -
        chr1        900     950     .               .       .
        )r   numpyr   rf   markskipr   r7   r   nanilocr+   r   r   r$   )r   npr   r>   s       r   test_issue_257rB    s    ; ; ; ;9:::::;		#G	,	,	9	9	;	;BvBGBG))"--Aq66S	       s    )77c                  x   t          j        dd          } t           j                                        }t          |d          5 }|                    d           ddd           n# 1 swxY w Y   |                     |          }|                    d          }t          |j                  g d	k    sJ dS )
z`
    Non-BED format BedTool objects can still use to_dataframe and use their own
    header
    z.
        chr1  1 5
        chr1  5 10
        Tr]   r*   z9>chr1
ACACGACTACACTGACTGTGTCGACTAGCACTACGACTGCAGGCATATAC
N)fi)disable_auto_names)z
#1_usercol	2_usercol	3_usercol4_pct_at5_pct_gc6_num_A7_num_C8_num_G9_num_T10_num_N
11_num_oth
12_seq_len)	r   r+   r   r   r   nucleotide_contentr   r.  columns)r=   r   r   r>   r   s        r   test_issue_258rS    s!   
 		 	 	 	A 

!
!
#
#C	c3 U4

STTTU U U U U U U U U U U U U U U	$$A	
4	0	0B
            s   A''A+.A+c            
         t          j        g ddd          } t          | j                  } t	          |            g }t
          j        j        }dt
          j        _        t          |           D ]B}|	                    t          j
        d                    ||dz             d                     C|t
          j        _        t          j        d          }|                    |dd	          }d
D ]}|| k    rt	          d| d            nld |d |         D             }	 |                    |          }F# t
          j        j        t           f$ r# t#          d                    |                    w xY wt%          j        t
          j        j                  5  |                    d |D                       }d d d            d S # 1 swxY w Y   d S )N)z	/bin/bashz-cz	ulimit -nT)capture_outputuniversal_newlinesz/tmp/pzchr1	{0}	{1}	b{0}r   r]   r0   )wao	filenames)@      i  z	ulimit ofzreached; stoppingc                     g | ]	}|j         
S r   r   r   r"   s     r   r   z"test_issue_303.<locals>.<listcomp>  s    """qad"""r   zHit a limit at {0} filesc                     g | ]	}|j         
S r   r\  r]  s     r   r   z"test_issue_303.<locals>.<listcomp>  s    )))!)))r   )
subprocessrunr   stdoutrX   r   settingstempfile_prefixr8   appendr+   r   r7   r9   helpersBEDToolsErrorr$  r   rf   rg   )	ulimitr>   current_prefixr"   r=   r    nb2rb   s	            r   test_issue_303rk    s>    ^(((RV  F F	&MMM
A(8N*2J'6]] 
 
	&--aQ77T  	
 	
 	
 	

 +9J'"7++A 	
A4400A  C C;;+v':;;;E""AbqbE"""	CBAA "0': 	C 	C 	C7>>qAABBB	C
 
z)7	8	8 + +KK))q)))**+ + + + + + + + + + + + + + + + + +s   "D88>E6 G		GGc                  8   d} t          j        | d          }t           j                                        dz   }t          j        |d          5 }|                    |            d d d            n# 1 swxY w Y   t          j        |          }||k    sJ t           j                                        }|                    |          }|                    |dz             }|                    |dz             }||cxk    r|cxk    r|cxk    r|k    sn J d S )Nzchr1	10	100
Tr]   z.gzwtzx.gz)r   r+   r   r   r   r   rz   )	r!   r=   tmpgzr   r>   prefixr?   des	            r   test_issue_291rr    sc   A1$///A ##%%-E	5$		 4

1              5!!A6666$$&&F 	
A 	
%  A 	
&!!A    Q    !    q        s   A11A58A5c                  f   t           j                            t          dd          } t           j                            t          dd          }t           j                            t          dd          }t	          j        |                               |ddd                              |          }d S )Ndatazissue319.vcf.gzzissue319.bedzissue319.out.bedT)r   r   r   )r   r	   r   testdirr   r+   r9   rz   )vrn_file
spliceslop
output_bedbts       r   test_issue_319rz  /  s    w||GV->??Hgv~>>Jgv/ABBJ		H	%	%	/	/
tDTX	/	Y	Y	`	`ak	l	lBBBr   c                      t           j                                        } t          | d          5 }	 d d d            n# 1 swxY w Y   t          j        |           }|                                 d S )Nr*   )r   r+   r   r   r   )r   r   r=   s      r   test_issue_333r|  6  s    


!
!
#
#C	c3 4              3A NNs   =AAc                      d } t          j        d          }|                    | d                                                                           d S )Nc                 F    | xj         |z  c_         | xj        |z  c_        | S rM   )rO   r  )r   shifts     r   	shift_bedz!test_issue_343.<locals>.shift_bedA  s&    	5	%r   r0   i8)r   r7   ry   remove_invalidr"  )r  r=   s     r   test_issue_343r  @  sQ      
 	"7++A
 	
	i						r   c                  8   t          j        d          } t          j        d          }t          j        d          }|                     |j        |j        gdd          }d                    |j                  d| j         d|j         d|j         d	k    sJ d S )
Nr0   r1   r   T)r>   r   rX   zintersectBed -a z -filenames -b z -C)r   r7   r9   r   r   _cmds)r=   r>   r?   rc   s       r   test_issue_345r  R  s    "7++A"7++A"7++A	qtADkTT::A 88AG X14 X X X Xqt X X XXXXXXXr   c            	      >    t          j        dddddddg          } d S )Nr&   r   r2   r  .f1)otherfields)r   r|   )r"   s    r   test_issue_348r  \  s'    FAsJStfUUUAAAr   c                      t          j        d          } t          | j                  D ]}|                    d          s n|                    d          d         dk    sJ | d         j        dk    sJ d S )Nzv.vcfr   r   r   14r   rE   )r   r7   r   r   r   r   rO   )r   r   s     r   test_issue_355r  `  s    

$W
-
-CSV  s## 	E	::dA$&&&&q6<2r   c                      dddd} t          j        dd          }|                    |           }|t          d          k    s
J |            d S )Nr'   )r&   chr9chr12zn
        chr9 300 400
        chr1 100 200
        chr1 1 50
        chr12 1 100
        chr9 500 600
        Tr]   r  zn
        chr1	1	50
        chr1	100	200
        chr9	300	400
        chr9	500	600
        chr12	1	100
        )r   r+   r"  r$   )r)   r   r-   s      r   test_genome_dict_sortr  i  s     F 
	 	 	 	C XXVX$$FS	         r   c                  >    t          j        d          } | d          d S )Nzexample.narrowPeakr   r  r  s    r   test_issue_365r    s"     	"#788AaDDDDr   c                      dd l } t          j        d|                     d          |                     d          gg           d S )Nr   r&   r   r   )r<  r   r+   int64)rA  s    r   test_issue_390r    sE     !bhhqkk:;<<<<<r   c                      t          t          j        d                    } t          t          j        d                    }t          j        |           } |                     |           d S )Nr0   r1   )r   r   r   r+   r`   )r=   r>   s     r   test_issue_405r    sU    Z(1122AZ(1122A1AEE!HHHHHr   )Ar   r   r   r_  r   textwrapr   pathlibr   rf   r3   r	   dirname__file__ru  r   abspathr   r   r   r   r$   r.   rA   r[   rd   rk   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r(  r/  r1  r5  r8  rB  rS  rk  rr  rz  r|  r  r  r  r  r  r  r  r  r   r   r   <module>r     sy        				     



               '//(
#
#
',,rww//
7
7$ $ $    *  &	! 	! 	!4 4 4&. . .b
 
 
6  &2 2 2,  6       
     08 8 8v"+ "+ "+J         + + +  <  2) ) )> > >' ' '
,  ,  , ^1 1 1h
/ 
/ 
/  ,  *
 
 
  &  B3+ 3+ 3+l! ! !Bm m m    $Y Y YV V V    @	 	 	= = =    r   