L iddlZddlmZmZmZmZmZmZddlm Z ddlZddl m Z ddl ZddlmZmZmZmZddlmZddlmZddlZej0eegd Zd Zd ZGd d ZeGddeZeGddeZeGddeZeGddeZ GddZ!GddZ"GddZ#eGdde#Z$eGdde#Z%eGd d!e#Z&eGd"d#e$Z'eGd$d%e$Z(eGd&d'e$Z)eGd(d)e%Z*eGd*d+e$Z+eGd,d-e$Z,d.Z-ej\j_d/d0Z0Gd1d2Z1eGd3d4e1Z2eGd5d6e1Z3eGd7d8e2Z4eGd9d:e3Z5eGd;de3Z7Gd?d@Z8dAZ9dBZ:dCZ;dDZ<GdEdFZ=eGdGdHe=Z>GdIdJZ?eGdKdLe?Z@dMZAdNZBdOZCdPZDdQZEdRZFdSZGdTZHdUZIdVZJdWZKdXZLdYZMdZZNd[ZOd\ZPej\j_d]d^ZQd_ZRd`ZSdaZTdbZUej\je dck(ddedfZWdgZXej\j_d]dhZYdiZZdjZ[dkZ\dlZ]dmZ^dnZ_doZ`ej\jdpgdqdrZbeGdsdtZcduZddvZedwZfej\jdxeegdyZgdzZhd{Ziej\jd|eegd}Zjy)~N) assert_equalassert_array_equalassert_assert_almost_equalassert_array_almost_equalassert_allclose)raises)python_implementation)KDTree Rectangledistance_matrixcKDTree) cKDTreeNodeminkowski_distance)paramsc|jSN)param)requests e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/spatial/tests/test_kdtree.py kdtree_typers ==c |jjds tdttfD]X}|jdddz|jz}|t vrtd|zt ||fd|i}|t |<Z|S)zClass decorator to create test cases for KDTree and cKDTree Tests use the class variable ``kdtree_type`` as the tree constructor. _Testz)Expected a class name starting with _TestN_zDuplicated test name: r)__name__ startswith RuntimeErrorr rglobalstype)klstree test_name test_cases r KDTreeTestr's << " "7 +FGG!)LL$s*T]]:  !7)CD DSF]D,AB ( )) Jrcv||z }||d|zkDxx|zcc<||d|zkxx|z cc<t|d|}|S)N?grr)abpboxsizediffds r distance_boxr0+sP q5Dg ')w 7*4A&A Hrc6eZdZdZdZdZdZdZdZdZ y) ConsistencyTestsct|||Srrselfr*r+r,s rdistancezConsistencyTests.distance3!!Q**rc |j}|jj|d\}}t|dzt j ||j |z dzd}tt jt j |j |tjddfz dzd|dz|z kDy)Nr:0yE>axis) xkdtreequeryrnpsumdatarallnewaxis)r5r=r/iepss r test_nearestzConsistencyTests.test_nearest6s FF{{  A&1AqD"&&!DIIaL.1)<"=>rvvtyy2::q=)99A=AFAcQRSrc |j}|j}|jj||\}}t j |}|t j |}t|dzt j||j|z dzd}tt jt j|j|tjddfz dzd|dz|zk|y)Nr9r:rr;) r=mr>r?r@amaxargmaxrrArBrrD)r5r=rIddiir/rErFs rtest_m_nearestzConsistencyTests.test_m_nearest=s FF FF""1a(B GGBK ryy} AqD"&&!DIIaL.1)<"=> FF266499Qrzz1}%559BQT#XM N  rc $|j}|j}|jj||jj|\}}d}d}t ||D]m\}}|t jk(r|dz }t|dzt j||j|z dzt|||zkd|dd|dott j|j|j|d|dz|zk|y) Nkdistance_upper_boundr:rrr9near_d=g should be less than )r=r/r>r?nzipr@infrrArBrrr6 r5r=r/rLrMrFhitsnear_dnear_is rtest_points_nearz!ConsistencyTests.test_points_nearJs FF FF""1 A"NB!"bk TNFF AID  2661TYYv5F3F2J+K L FQsUNgfQZ7LQqE$R S  T RVVDMM$))Q:QT#XEFMrc  |j}|j}|jj||jjd|\}}d}d}t ||D]b\}}|t jk(r|dz }t||j||j|dt|||zkd|dd|ddtt j|j|j|d||zk|y)NrrQr,rRr:rrSrTrU)r=r/r>r?rVrWr@rXrr6rBrrrArYs rtest_points_near_l1z$ConsistencyTests.test_points_near_l1Xs FF FF""1 QR"SB!"bk TNFF AID  a69JA(N O FQsUNgfQZ7LQqE$R S  T RVVDMM$))Q:QsUBCTJrc ^|j}|j}|jj||jjt j |\}}d}d}t||D]p\}}|t j k(r|dz }t||j||j|t j t|||zkd|dd|drtt j|j|j|t j ||zk|y)Nr_r:rrrSrTrU)r=r/r>r?rVr@rXrWrr6rBrrrArYs rtest_points_near_linfz&ConsistencyTests.test_points_near_linffs FF FF""1 VW"XB!"bk TNFF AID  a69JBFF(S T FQsUNgfQZ7LQqE$R S  T RVVDMM$))Q?!C%GH$Orc|j}|j}d}|jj||\}}|jj|||\}}t t j ||d|zzky)N皙?)rFr)r=rQr>r?rr@rC)r5r=rQrFd_reali_realr/rEs r test_approxzConsistencyTests.test_approxtsp FF FF**1a0{{  A3 /1qFAcEN*+,rN) r __module__ __qualname__r6rGrNr]r`rbrgrrr2r22s)+T   N K P-rr2ceZdZdZy) _Test_randomcd|_d|_tjj dtjj |j|j|_|j|j d|_tjj |j|_ d|_ d|_ y)Ndr9leafsize皙? ) rVrIr@randomseedrandnrBrr>r=r/rQr5s r setup_methodz_Test_random.setup_methods tIIOODFFDFF3 &&tyy1&= (rNrrhriryrjrrrlrl}srrlceZdZfdZxZS)_Test_random_farct|tjj |j dz|_y)Nrt)superryr@rurwrIr=r5 __class__s rryz_Test_random_far.setup_methods+ (+rrrhriry __classcell__rs@rr|r|s ,,rr|ceZdZdZdZdZy) _Test_smallc tjgdgdgdgdgdgdgdgdg|_|j|j|_|jj |_|jj |_tjjd tjjd |_ d |_ d |_ y) Nrrrrrrrrrrrrrrrrrrrrrrrrrpr)ro) r@arrayrBrr>rVrIrurvrwr=r/rQrxs rryz_Test_small.setup_methodsHHi''''''')* &&tyy1  t#rcPt|jjdddy)Nrrrdr)rdrrr>r?rxs rrGz_Test_small.test_nearests! !!+q1 rc\t|jjddddgddgfy)Nrr9rdg?rrrrxs rtest_nearest_twoz_Test_small.test_nearest_twos. !!+q1saV$ &rN)rrhriryrGrrjrrrrs" &rrceZdZfdZxZS)_Test_small_nonleafcft||j|jd|_y)Nrrq)r~ryrrBr>rs rryz _Test_small_nonleaf.setup_methods) &&tyy1&= rrrs@rrrs >>rrc0eZdZdZdZdZdZdZdZy)Test_vectorization_KDTreec tjgdgdgdgdgdgdgdgdg|_t|j|_y Nrrrrrrrr)r@rrBr r>rxs rryz&Test_vectorization_KDTree.setup_methods@HHi''''''')* TYY' rc|jjtjgd\}}t t |t t tj|tjyNr) r>r?r@rr isinstancefloat issubdtype signedintegerr5r/rEs rtest_single_queryz+Test_vectorization_KDTree.test_single_querysK{{  )!451 1e$% a!1!123rc|jjtjd\}}t tj |dt tj |dyNr9ror)r9ror>r?r@zerosrshapers rtest_vectorized_queryz/Test_vectorization_KDTree.test_vectorized_queryG{{  )!451RXXa[&)RXXa[&)rc d}|jj|z}|jjtjgd|\}}t tj ||ft tj ||fttjtj|| dttj|| d|jjk(yNrrQ) r>rVr?r@rrrrrCisfiniter5skkr/rEs r$test_single_query_multiple_neighborsz>Test_vectorization_KDTree.test_single_query_multiple_neighborss  [[]]1_{{  )!4 ;1RXXa[2%(RXXa[2%( AqbcF++,-q!v./0rc *d}|jj|z}|jjtjd|\}}t tj |dd|ft tj |dd|fttjtj|dddd| dfttj|dddd| df|jjk(yNrrrr9ro r>rVr?r@rrrrrCrrs r(test_vectorized_query_multiple_neighborszBTest_vectorization_KDTree.test_vectorized_query_multiple_neighbors  [[]]1_{{  )!4 ;1RXXa[1a*-RXXa[1a*- AaQBCiL1123qArs|t{{}}456rcd}tjtd5|jj |ddddy#1swYyxYw)N?zk must be an integer or*matchr)pytestr ValueErrorr>r?)r5r=s rtest_query_raises_for_k_nonez6Test_vectorization_KDTree.test_query_raises_for_k_nonesB  ]]:-G H ) KK  a4  ( ) ) )s AAN) rrhriryrrrrrrjrrrrs  (4 * 17)rrc0eZdZdZdZdZdZdZdZy)Test_vectorization_cKDTreec tjgdgdgdgdgdgdgdgdg|_t|j|_yr)r@rrBrr>rxs rryz'Test_vectorization_cKDTree.setup_methods@HHi''''''')* dii( rc|jjgd\}}tt|ttt|t yr)r>r?rrrintrs rrz,Test_vectorization_cKDTree.test_single_querys8{{  +1 1e$% 1c"#rc|jjtjd\}}t tj |dt tj |dyrrrs rrz0Test_vectorization_cKDTree.test_vectorized_queryrrcLtjjdtjjddj}|j j |\}}t|||D]-\}}}t|j j |||f/y)Nrpr) r@rurvrwTr>r?rWr)r5qsdsi_sqr/rEs r*test_vectorized_query_noncontiguous_valueszETest_vectorization_cKDTree.test_vectorized_query_noncontiguous_valuess t YY__Q % ' '++##B'C2r3' 7GAq! **1-1v 6 7rc d}|jj|z}|jjgd|\}}tt j ||ftt j ||ft t jt j|| dt t j|| d|jjk(yr) r>rVr?rr@rrrCrrs rrz?Test_vectorization_cKDTree.test_single_query_multiple_neighborss  [[]]1_{{  b 11RXXa[2%(RXXa[2%( AqbcF++,-q!v./0rc *d}|jj|z}|jjtjd|\}}t tj |dd|ft tj |dd|fttjtj|dddd| dfttj|dddd| df|jjk(yrrrs rrzCTest_vectorization_cKDTree.test_vectorized_query_multiple_neighbors rrN) rrhriryrrrrrrjrrrrs  )$ * 717rrc"eZdZdZdZdZdZy)ball_consistencyc(t|dz|dz|SNrrr4s rr6zball_consistency.distances!!c'1s7A66rctj|j}tj|j|j dd}|j j||j|j|j}t|D]\}}|j|j||||j||d|jzzz }|j|j||||j||d|jzzz}t||j|zkdy)Nr,rFrT)r@ atleast_2dr= broadcast_tor/rrquery_ball_pointr,rF enumerater6rBrtol)r5r=r/lrEinddistnorms r test_in_ballzball_consistency.test_in_balls MM$&& ! OODFFAGGCRL 1 FF # #AtvvTXX # Fl =FAs==31tvv>1r$(({ASSD==31tvv>1r$(({ASSD tdhho5t < =rctj|j}tj|j|j dd}|j j||j|j|j}t|D]\}}tj|j jt}d||<|j|j||||j||d|jzz z }|j|j||||j||d|jzz z}t!||j" |zkDdy)NrrdtypeFrT)r@rr=rr/rrrr,rFronesrVboolr6rBrr) r5r=r/rrErcrrs rtest_found_allzball_consistency.test_found_all!s MM$&& ! OODFFAGGCRL 1 FF # #AtvvTXX # Fl >FAs-AAcF==1qtTVVrN)rrhrirr6rrrjrrrrs C7= >rrceZdZdZy)_Test_random_ballcJd}d}tjjdtjj|||_|j |jd|_tjj||_d|_d|_ d|_ y) Nrnrorpr9rq@rrs) r@rurvrwrBrrr=r,rFr/r5rVrIs rryz_Test_random_ball.setup_method.sv   tIIOOAq) !!$))a!8#rNrzrjrrrr,s rrc$eZdZdZdZdZdZy)_Test_random_ball_periodicct|||dSrr0r4s rr6z#_Test_random_ball_periodic.distance<Aq!S))rc>d}d}tjjdtjj||f|_|j |jdd|_tj|d|_d |_ d |_ d |_ y) Ni'rorpsizer9rrrr-rdrrrs) r@rurvuniformrBrrfullr=r,rFr/rs rryz'_Test_random_ball_periodic.setup_method?s|   tII%%Aq6%2 !!$))a!CCrc|jj|jdz|j|j|j }|D]\}t |j|j||j|j|jd|j zzk^|jj|jdz |j|j|j }|D]\}t |j|j||j|j|jd|j zzk^y)Nrr) rrr=r/r,rFrr6rB)r5rrEs rtest_in_ball_outsidez/_Test_random_ball_periodic.test_in_ball_outsideJs FF # #DFFSL$&&DFF # Q YA DMM$))A,?4662dhh;CWW X Y FF # #DFFSL$&&DFF # Q YA DMM$))A,?4662dhh;CWW X Yrc6tj|jjt}|jj |j dz|j|j|j}d||<tj|j|j||j |j|jd|jzz k\sJ|jj |j dz |j|j|j}d||<tj|j|j||j |j|jd|jzz k\sJy)NrrrF) r@rrrVrrr=r/r,rFrCr6rB)r5rrs rtest_found_all_outsidez1_Test_random_ball_periodic.test_found_all_outsideRs( GGDFFHHD ) FF # #DFFSL$&&DFF # Q!vv MM$))A, 74662dhh;;O O    FF # #DFFSL$&&DFF # Q!vv MM$))A, 74662dhh;;O O   rN)rrhrir6ryrrrjrrrr:s* Y  rrceZdZdZdZy)"_Test_random_ball_largep_issue9890gvIh%<=c(d}d}tjjdtjjdd||f|_|j |j|_|j|_d|_d|_ d|_ y)Nrr9{rnrrrt) r@rurvrandintrBrrr=r,rFr/rs rryz/_Test_random_ball_largep_issue9890.setup_methodgss   sII%%c4q!f%= !!$)),rN)rrhrirryrjrrrras C rrceZdZfdZxZS)_Test_random_ball_approxc0t|d|_yNrdr~ryrFrs rryz%_Test_random_ball_approx.setup_methodv rrrs@rrrs rrceZdZfdZxZS)!_Test_random_ball_approx_periodicc0t|d|_yrrrs rryz._Test_random_ball_approx_periodic.setup_method~r rrrs@rr r {r rr ceZdZfdZxZS)_Test_random_ball_farc0t|d|_yNrr~ryr/rs rryz"_Test_random_ball_far.setup_method rrrs@rrr rrceZdZfdZxZS)_Test_random_ball_far_periodicc0t|d|_yrrrs rryz+_Test_random_ball_far_periodic.setup_methodrrrrs@rrrrrrceZdZfdZxZS)_Test_random_ball_l1c0t|d|_y)Nr)r~ryr,rs rryz!_Test_random_ball_l1.setup_method rrrs@rrr rrceZdZfdZxZS)_Test_random_ball_linfcLt|tj|_yrr~ryr@rXr,rs rryz#_Test_random_ball_linf.setup_method rrrs@rrr rrc\d}d}tjjd|tjj||}|j tjjdd|d}t |j dtt|dty) Nrpr9rrr9rrr) r@rurvrwrrrrrlist)rrVrIrrs rtest_random_ball_vectorizedr*sy A AIINN4BIIOOAq)*A 299??1a3Q7A&! Jqw %&rr%ctjjdd}d}tjj||}||}|j |dd}|j |dd}|j |dd}t |D]}||s||st ||||!t |D]}||s||st ||||!y) Nrr9g~jth?rworkers@r)r@rurvrwrranger) rrVrQpointsrl1l2l3rEs r$test_query_ball_point_multithreadingr5sIINN1 A A YY__Q "FFA  FE1  5B  FE2  6B  FE2  6B 1X- a5BqE r!ube ,-1X- a5BqE r!ube ,-rceZdZdZdZdZy)two_trees_consistencyct|||Srrr4s rr6ztwo_trees_consistency.distancer7rcr|jj|j|j|j|j }t |D]b\}}|D]X}|j|j||j||j|jd|j zzkrXJdy)Nrr) T1query_ball_treeT2r/r,rFrr6data1data2)r5r)rErjs rtest_all_in_ballz&two_trees_consistency.test_all_in_balls GG # #DGGTVVtvv488 # LaL 1DAq 1 djjmTZZ]DFFK662dhh;/010 1 1rc|jj|j|j|j|j }t |D]\}}tj|jjt}d||<tj|j|j||j||j|jd|j zz k\rJy)NrrFr)r:r;r<r/r,rFrr@rrVrrCr6r>r=)r5r)rErrs rrz$two_trees_consistency.test_found_alls GG # #DGGTVVtvv488 # LaL 3DAq .AAaD66$-- 1 tzz!}dffM!VVR[123 33 3rN)rrhrir6r@rrjrrr7r7s+13rr7ceZdZdZy)_Test_two_random_treescd}d}tjjdtjj|||_|j |jd|_tjj|||_|j |jd|_d|_ d|_ d|_ y) N2rorpr9rqrrrs) r@rurvrwr=rr:r>r<r,rFr/rs rryz#_Test_two_random_trees.setup_methods   tYY__Q* ""4::":YY__Q* ""4::":rNrzrjrrrCrCs rrCceZdZdZdZy)_Test_two_random_trees_periodicct|||dSrrr4s rr6z(_Test_two_random_trees_periodic.distancerrcd}d}tjjdtjj||f|_|j |jdd|_tjj||f|_|j |jdd|_d|_ d |_ d |_ y) NrErorprr9rrrrrs) r@rurvrr=rr:r>r<r,rFr/rs rryz,_Test_two_random_trees_periodic.setup_methods   tYY&&QF&3 ""4::3"GYY&&QF&3 ""4::3"GrN)rrhrir6ryrjrrrGrGs * rrGceZdZfdZxZS)_Test_two_random_trees_farc0t|d|_yNr9rrs rryz'_Test_two_random_trees_far.setup_methodrrrrs@rrKrKrrrKceZdZfdZxZS)#_Test_two_random_trees_far_periodicc0t|d|_yrMrrs rryz0_Test_two_random_trees_far_periodic.setup_methodrrrrs@rrOrOrrrOceZdZfdZxZS)_Test_two_random_trees_linfcLt|tj|_yrr rs rryz(_Test_two_random_trees_linf.setup_method r!rrrs@rrRrRr"rrRceZdZfdZxZS)$_Test_two_random_trees_linf_periodiccLt|tj|_yrr rs rryz1_Test_two_random_trees_linf_periodic.setup_methodr!rrrs@rrUrUr"rrUc<eZdZdZdZdZdZdZdZdZ dZ y ) Test_rectanglec.tddgddg|_yNrr)r rectrxs rryzTest_rectangle.setup_methodsq!fq!f- rcRt|jjddgdy)Nr)rrr[min_distance_pointrxs rtest_min_insidezTest_rectangle.test_min_insidesDII88#sDaHrcRt|jjddgdyNr)g?r]rxs rtest_min_one_sidez Test_rectangle.test_min_one_side sDII88#sDcJrcxt|jjddgtjdyrM)rr[r^r@sqrtrxs rtest_min_two_sidesz!Test_rectangle.test_min_two_sides#s'DII88!Q@"''!*Mrc~t|jjddgdtjdz y)Nr)rr9rr[max_distance_pointr@rdrxs rtest_max_insidezTest_rectangle.test_max_inside&s,DII88#sDaPQ lSrczt|jjddgtjddyra)rr[rhr@hypotrxs rtest_max_one_sidez Test_rectangle.test_max_one_side)s-DII88#sDHHS#. 0rc~t|jjddgdtjdzyrMrgrxs rtest_max_two_sidesz!Test_rectangle.test_max_two_sides-s+DII88!Q@!BGGAJ,Orc|jjdd\}}t|jddgt|jddgt|jddgt|jddgy)Nrrdr)r[splitrmaxesmins)r5lessgreaters r test_splitzTest_rectangle.test_split0sb 3/ g4::Qx0499q!f-7==1a&17<<#q2rN) rrhriryr_rbrerirlrnrurjrrrXrXs/.IKNT0P3rrXc`ttddgddgdtjdyNrrr9)rrr@rdrjrrtest_distance_l2rx8s&*Aq6Aq61=rwwqzJrc:ttddgddgddyrw)rrrjrrtest_distance_l1rz<s*Aq6Aq61=qArcVttddgddgtjdyrZ)rrr@rXrjrrtest_distance_linfr|@s"*Aq6Aq6266BAFrctjjdtjjddd}tjjddd}t t ||j dy)Nrprtrr)rtr~)r@rurvrwrrr)r=ys rtest_distance_vectorizationrDsVIINN4 Aq!A 1a A#Aq)//9rceZdZdZdZdZy)count_neighbors_consistencyc d}t|jj|j|t j |jj |j|Dcgc] }t|c}ycc}w)Nrsrr:count_neighborsr<r@rAr;lenr5r)rs rtest_one_radiusz+count_neighbors_consistency.test_one_radiusLsZ TWW,,TWWa8(?(?(KL1ALM OL$Bc d}t|jj|j|t j |jj |j|Dcgc] }t|c}ycc}w)Nrrrs rtest_large_radiusz-count_neighbors_consistency.test_large_radiusQsZ TWW,,TWWa8(?(?(KL1ALM OLrctjtjtjdtjdd}|jj |j |}ttjtj|dk\t||D]5\}}t|jj |j ||7y)N{Gz?rtrr) r@explinspacelogr:rr<rrCr.rWr)r5rsresultsr)results rtest_multiple_radiusz0count_neighbors_consistency.test_multiple_radiusVs VVBKKt bffRj!< =''))$''26rwww'1,-.R) FIAv 00!&'DFF"#!"**,"ErcLtjjdtjtjj ddt }|j |dd}|j|dj}t||jd y) Nrr9rF balanced_tree compact_nodesrrr) r@rurvrrwrrrrrr)r5too_manyr$r/s r#test_against_logic_error_regressionzFsparse_distance_matrix_consistency.test_against_logic_error_regressionsy q88BIIOOB2#> E @  ' 'a 0 8 8 :!!QSS"5rc8tj|j|jf}t|jD]^}t|jD]D}|j|ddf|j |ddfz }tj |||||f<F`tj|}d|||jkD<tj|j|jf}|jj|j|jd}|jD]\}}|||f|||f<t||dtj|j|jf}|jj|j|jd}t|jdD]!}|d|}|d |}|d |}||||f<#t||d|jj|j|jd }t||jd|jj|j|jd }t||jdy) Nrdict output_typerrndarrayrrEr?v dok_matrix coo_matrix)r@rrVr0r=r>dotrdr)r:rr<keysrrr)r5refrEr?rrr)rQs rtest_ckdtree_return_typeszrVrI)r5rVrIr=r>s rryz)_Test_sparse_distance_matrix.setup_methods   t 1% 1%""51"5""51"5  rNrzrjrrrrs rrc d}d}d}tjjdtjj||}tjj||}t ||}t |j ||ft|D]3}t|D]#}tt|||||||f%5y)Nrt rorp) r@rurvrwr rrr0rr)rIrVrQxsysrrEr?s rtest_distance_matrixrs A A AIINN4 A B A B R BAq6" 1XLq LA  22a5"Q% @"QT( K LLrcd}d}d}tjjdtjj||}tjj||}t ||}t ||d}t ||y)Nrtrrorpr) threshold)r@rurvrwr r)rIrVrQrrrdsls rtest_distance_matrix_loopingrsm A A AIINN4 A B A B R B "bA .CSrc|j||}t}t|D]%\}}|D]}||ks |j||f't ||j |k(yr)r;setraddr query_pairs)rr/r)rrErr?s rcheck_onetree_queryrso !QA A! 1 A1uq!f    Aq! !"rctjjdd}d}tjj||}||}t |dtjjd|z|}|d|xxxdzccc||d|zxxxdz ccc||}t |dt |dt |dt |d y) NrrErordrgMbP?r9gh㈵>gư>)r@rurvrwr)rrVrQr1rs rtest_onetree_queryrsIINN1 A A YY__Q "FFA3 YY__QqS! $F 2AJ%J 1QqSMQMFA35!7#4 rc`|ddgg}t|jdty)Nrrr))rrr)rr$s rtest_query_pairs_single_noders) Ax D!!#&.rc >tjjdd}d}d}|dz}tjj||}||}t }t |D]V}t |dz|D]B} ||ddf|| ddfz } tj | | |ks0|j|| fDXt|} |j|} t| } t| | |j|d} t| } t| | t } |j|d}t |jdD]1}| jt||dft||dff3t| }t| |y) NrrEr9rdrrrr) r@rurvrwrr0rrsortedrrrr)rrVrQr)r2r1rbruterEr?rl0rr2arrr3s rtest_kdtree_query_pairsrsyIINN1 A A A AB YY__Q "FFA EE 1X"qsA "Aq!t vad|+Avva|r! 1a&! "" B aA Br2 aU +A Br2 A --y- 1C 399Q< 0 s3q!t9~s3q!t9~./0 Br2rcNtjd}tjdd|zd}tjdd|zd}|Dcgc] }|D]}||f}}}||}|j|d}|j|dz} t | |ycc}}w) Nr9rrrord)r)rF)\(?r))r@rdrrr) rspacingx_rangey_rangexiyixy_arrayr$ pairs_epspairss rtest_query_pairs_epsrsggajGkk!Q[!,Gkk!Q[!,G#*=RW=rR==H= x D  7 3I   w~  .E " >sB!c tjddddf\}}tt|j |j }||}t t gdt |jddtj|t}||}t t gdt |jddy)Nrro)ro )r9rrr) r@mgridr(rWravelrrrasarrayr)rr=rr1r$s rtest_ball_point_intsr,s 88AaC1H DAq #aggi+ ,F v D &--fa89; ZZe ,F v D &--fa89;rc tdDcgc]}tj}}tt |t |dddycc}w)Nrr)r0r noderr)rnodess rtest_kdtree_comparisonsr9s?$)!H -qV[[] -E -uTrT{ 34 .sActjjdd}d}tjj||}||j |dd}||dj |dd}||d j |dd}||dd j |dd}t ||t ||t ||y) Nrr,ror%rrF)r)r)rr)r@rurvrwr?r)rrVrQr1r:r<T3T4s rtest_kdtree_build_modesr?sIINN1 A A YY__Q "F V  " "6Q " / 3B V5 1 7 7! 7 DR HB V5 1 7 7! 7 DR HB V5#( **/%!%*z'test_ckdtree_parallel..srzCannot determine therrr-) r@rurvrwr?rsetattrosrr NotImplementedError) r monkeypatchrVrQr1rr:r<rs rtest_ckdtree_parallelr ysIINN1 A A YY__Q "FFA 1b )" -B 1b )" -B 1 b !Br2r2K6 *2H I' 2&'''s C99Dctjjdd}d}tjj||}t |fdj j }t tj|jtdt j|jddf|jy)NrrnrocJtt|t|jdk(r^t|jdut|j dut|j jdjky|j|j |jjdd|jf}|j jdd|jf}t|j|jky)Nrr) rrr split_dimlesserrtindicesrrr data_pointsmaxmin)rVr=rr> recurse_trees rrz'test_ckdtree_view..recurse_trees 1k*+ ;;"  AHH$ % AII% & AIIOOA&&//9 :  "  #$$Q ^4A %%an5A AEEGaeeg% &r) r@rurvrwrr$rsortrr0rBr)rVrQr1r>rs @@rtest_ckdtree_viewrsIINN1 A A YY__Q "F V_F ' Arwwqyy)5:6v{{199a<0!--@rcVd}d}gd}d}tjjdtjj||f}||d}|j ||\}}|j ||\} } t || t || tj ddg}d}|j ||\}}|j ||\} } t | |d |dz ft | |d |dz f|j |d\}}|j |dg\} } t t|jdt t| jdt |tj| t |tj| y) Nr9)rr9rrrprrrq.) r@rurvrr?rrrrr) rrVrIklistkintrBr>rLrMdd1ii1s rtest_kdtree_list_krsn A A E DIINN4 99  1a&  )D  *F\\$ &FB||D$'HCSS HHaV E D \\$ %FB||D%(HCbeai()beai()\\$ "FB||D1#&HCRXX"SYY#RXXc]#RXXc]#rrtc:d}d}d}tjjdtjj||f}||dd}||d}dd d tjfD]}|j ||| \}} |j |dz|| \} } t || t| | |j |dz || \} } t || t| | t|||d| \} } t || t| | y) Nrrprrrrrqr9g@r,)r-r,) r@rurvrrXr?rrsimulate_periodic_box)rrVrIrQrBr>kdtree2r,rLrMrrdd2ii2s rtest_kdtree_boxr$s A A AIINN4 99  1a&  )D 3 7F$+GC dA+B<<s A<3SB$R<<s A<3SB$R($3!LSB$R rcxd}d}d}tjjdtjj||f}||dd}||d }ddtjfD]H}|j ||| \}} |j ||| \} } t || t| | Jy) Nrr9rrprrrrrqr)r@rurvrrXr?rr) rrVrIrQrBr>r!r,rLrMrrs rtest_kdtree_box_0boxsizer&s A A AIINN4 99  1a&  )D 3 7F$+GBFF^dA+B==qA=.SB$R rcntjdddjdd}|dddfxxdz cc<tjt 5||dddddtjt 5||ddddd||dd y#1swYBxYw#1swY!xYw) Nrr9rtrrrr)rr)rr)r@rreshaperr rrrBs rtest_kdtree_box_upper_boundsr*s ;;q!R ( (Q /DAJ"J z "3D1c23 z ":D1j9:q*5 33::s B? B+B(+B4cZtjddd}tt||ddy)Nrrrtrr)r@r assert_raisesrr)s rtest_kdtree_box_lower_boundsr-s$ ;;r1b !D*k4!SIrcg}g}tjd|jdz}tjtj|dg|jdzj }|dz }|D]j} || dz|zz} |j | ||\} } | jd|} | jd|} |j| |j| ltj|d}tj|d}tjt|t||zgddg } || d dd|| d dd| jd | d ddd|f| d ddd|ffS) Nrrrrrr;)rMi8)rLf8rrMrL)order) r@arangerr unravel_indexrr?r(append concatenateemptyrr)r>rBrQr-r,rLrMr=nnrVimager"r#rs rr r  su B B !tzz!}$%A """1qcDJJqM&9: ; = =B cB q3w((<<qA<.Skk"a kk"a  # #   $B  $B XXs4y#b'A+.  7FF4LOF4LO KKdK $<2A2 t QU 3 33rPyPyz Fails on PyPy CI runs. See #9507)reasonc ddl}d\}}tjt dd|z|t dd|z|f\}}tj |dztj d||zztj |zz}tj|}||ddd}tjjd|jtjjddz}||j|<tjtj||k7j} tjtj||k(j} |j|j j"} t%dD] } t'| } d}t%dD]y} |j|j j"} t'| } | j)| d d \}}|j|j j"}|| kDsu|dz }{t+|dky#t$rYywxYw) Nr)皙?r<rr%rtgX@rErnror9)rQr,)resource ImportErrorr@rslicesincos empty_likerurrflatvstacknonzeror getrusage RUSAGE_SELF ru_maxrssr0rr?r)r=dxdyrr=zz_copyFILLVALmaskigoodibadmem_userEr$ num_leaksriquery new_mem_uses rtest_ckdtree_memuserU%s FB 88E!QVR(!QVR() *DAq q 2 rAaCx(266!944A ]]1 FF1IG 99  Q (9(9"(=(A BDFKK IIbjjg. / 1 1E 99RZZW - . 0 0D  !5!56@@G 2Yu~I 3Z$$X%9%9:DDu~zz$!qz1 f(()=)=>HH  NI  IN? sI I  I c tjdddjdd}||d}tjt |d}|j |}t |gdtt|j |ddtd D]}|j|tjdd |}|j|tjdd |||f }|j|tjdd ||df }|j|tjdd |d|f } |j|tjdd || t ||t ||t || tt |D]}|j} d| |<|| dk7} || } |j|tjdd d | | f }| j| tjdd d }t ||tt|j| tjdd d | y) Nrrrorrqf4r)ror9rrr9rrrt)weightsrn) r@rr(rr_build_weightsrr,rr0rr) rrBtree1rXnwrEc1c2c3c4w1r>tree2s rtest_kdtree_weightsrbPs: ;;q!Q  ' 'A .D q )Eggc$it,G   g &Br01*e22GCRLA 2Y#  " "5"++aQ*? @  " "5"++aQ*? '*#,  " "5"++aQ*? $#)  " "5"++aQ*?w#) eR[[B%:  ! 2r"2r"2r"# 3t9 8 \\^1R1W E"  " "5"++aS*AR#" " "5"++aS*A B2r" j%"7"7 2;;q"c*B 8!8rc.d}d}tjjdtjj||f}||d}gd}tjt |}|j ||}|j ||d }t||jttj|tj|D]/\} } |j || }t||t| 1y) Nrr9rprrrq)rrrg{Gz?r<F cumulative)r@rurvnormalr2rrrcumsumrW itertools permutationsrr() rrVrIrBr>r0i0n0nncrEr)s r&test_kdtree_count_neighbous_multiple_rrn~s A AIINN4 99  !Q  (D  *F $B 3r7 B    +B   >CSZZ\"I**2.**2.0+1  " "61 -1bak* +rctjjd}|jdd}|jdd}||}|j ddgd\}}|j ddgd|z}t |g|j |d\}}|j}|j |d|z}tjdt } | jgt | |||} |j| d|z} t dggz| |j| d|z} t| d k(|j| d|zd } t | tjd k(d|j| d|zd } t | tjd k(d|j| d|zd } t!| i|j| d|zd } dtj"fdtj"fdtj$fg} tj&| d} tjd| }t | ||j |d\}}|dddfj}|j)d|zd } t!| t+|j)d|zd } tjdtj" }t | |y)Nrprtr9r)rrrd)rt)rrrrr)rtrtTrrrrEr?r)align)rrr)rr9)r@ru RandomStaterandr?rrrr6objectfillr;rrrrrintpfloat64rrr) rrngXYr$r/rErKmindrother_dtype res_dtypes rtest_len0_arraysr~s ))   %C QA QA q>D ::r2h!: $DAq r2hA.Aq" ::a1: DAq 557D aT*A vV,AFF2Jq! NE UCH-Ar2$w" UCH-A AFO ##E3t8#NAqBHHX..5 ##E3t8#NAqBHHX..5 ##E3t8#HAB ##E3t8#KABGGnsBGGnsBJJ.? @Ft,I uI.Aq! ::a1: DAq QU8<<>D Tu5ACE Ty9A vRWW-Aq!rc `d}tddD]}tj||f}d||dzdtjddD]\}}||||d}|j dk(sJ|t ur |jn|jj}ttj|jjtjd |dzttj|jjtj|dz|y) Nirrr9FT)repeat)rrrrrr)r0r@rrhproductrrr$_noderrrrr2rt)rrVrIrBbalancedcompactr>r$s rtest_kdtree_duplicated_inputsrs A 1a[&ww1vQTU !*!2!2=!K & Hg X/6DF;;!# ###.'#9FKKKK%%   ++, !Q!V$ &  ,,- !q&!$ & & &rc\|dggd}tt|j|ddgdy)NrrrqrdFrd)r,rr)rr>s r'test_kdtree_noncumulative_nondecreasingrs1 1# +F*f44aU,rc ptjgdgdgdgdgdgdgd}||}|j|d d \}}t|d tjtjtjgd d tjtjgd d tjtjgd d tjtjgd d tjtjgd tjtjtjggy)N)rrr)rrr)rrr)rrr)rrr)rrrrvrrorsrPrr)r@rr?rrX)rxyzckdtdeqieqs rtest_short_knnrs ((   C s Dzz#z=HCc"&&"&&"&& ) rvvrvv & rvvrvv & rvvrvv & rvvrvv &  (  *+rctjjdtjjd}tjjd}||}tjj ddt |}|j ||}t||Dcgc]\}}|j ||}}}t||D]#\} } tt| t| %ycc}}w)Nrprnrrr333333?) r@rurvrfrrrrWrr) rrBr?r$r/rvectorqidirscalarr*r+s rtest_query_ball_point_vector_rrsIINN4 99    *D II  (  +E t D !Ss5z2A##E1-G;>ua=IRt$$R,IGIGW%116!9fQi01Js4Dc Jtjjdtjjd}tjjd}||}d}|j ||d}|j ||dDcgc] }t |}}|Dcgc]}t |j ||} }|Dcgc]}|j ||d} }t ||t || t || ycc}wcc}wcc}w)NrprrrT return_lengthF)r@rurvrfrrr) rrBr?r$r/lengthrlength2rlength3length4s rtest_query_ball_point_lengthrsIINN4 99    *D II  (  +E t D A  " "5!4 " @F#'#8#8QV#8#WXCs3xXGX;@ARs4((Q/0AGAJOPBt$$R$$?PGPvw'vw'vw' YAPsD,"DD c2tjjdtjjd}tjddz}tj tjdddddzddd}tjjd}tj |j j }|jd|jdk7sJ|jd|jdk7sJ||}|j||d}|j||d}t|||j|d \} } |j|d \} } t| | t| | y) Nrprrrng{Gz?rTrr) r@rurvrfr2ascontiguousarrayrstridesrrr?) rrB d_contiguousd_discontiguousquery_contiguousquery_discontiguousr$length1rd1i1d2i2s rtest_discontiguousrsIINN4 99    *D99S>D(L**))C.2.577;t=Oyy''X'6../?/A/ABDD  & &r *.>.F.Fr.J JJ J  " "2 &,*>*>r*B BB B t D##$4$0$FG##$7$34$IGw( ZZ(! ,FB ZZ+Q /FBr2r2rzbalanced_tree, compact_nodes))TF)TT)FFrcTtjjdtjd}tjd}tjd}||||}|j |dd }|d k(sJ|j |d \}} | jd k(sJ|jd k(sJtj|jsJ|j|d d g} t| d d g|j|d} | jdk(sJy)Nrp)rr)r)rrr&rrTrrr9)r9r9rr') r@rurvr6rrr?risinfrCrrr) rrrempty_v3query_v3query_v2r$rrLrMNrs rtest_kdtree_empty_inputr2s IINN4xxf%HwwV$HwwV$H x}%2 4D  " "8S " EF Q;; ZZ! $FB 88v   88v   88B<     TAq6*Aq1a&! ##D#.A 77f  rceZdZdZdZdZy)_Test_sorted_query_ball_pointctjjdtjjdd|_|j |j|_y)Nrprnr)r@rurvrwr=rrrxs rryz*_Test_sorted_query_ball_point.setup_methodPs> ta($$TVV, rc|jj|jdd}|D]}t|t ||jD]5}|jj|dd}t|t |7y)NrT return_sorted)rrr=rr)r5 idxs_listidxsrs rtest_return_sorted_Truez5_Test_sorted_query_ball_point.test_return_sorted_TrueUs|II..tvvr.N  3D tVD\ 2 3&& 3B99--b"D-ID tVD\ 2 3rc|jj|jd}|D]}t|t ||jDcgc]}|jj|d }}|jj|jdd}t ||D]\}}t||ycc}w)zPrevious behavior was to sort the returned indices if there were multiple points per query but not sort them if there was a single point per query.rFrN)rrr=rrrW)r5rrridxs_list_singleidxs_list_Falseidxs0idxs1s rtest_return_sorted_Nonez5_Test_sorted_query_ball_point.test_return_sorted_None^sII..tvvr:  3D tVD\ 2 3JNP2DII66r2>PP))44TVVRu4U1AB -LE5 ue , -Qs#B?N)rrhriryrrrjrrrrNs- 3 -rrctjjddjt}t j td5t|}dddt|j}t j td5|j|dddt j td5|j|ddddy#1swYxYw#1swYMxYw#1swYyxYw)Nrtr9z complex datarrr) r@rurrviewcomplexrr TypeErrorr realr?rr1ts rtest_kdtree_complex_datarls YY^^B " ' ' 0F y 7 6N v{{A y 7  y 7( 6Q'(( ((s$ C%C1C=%C.1C:=Dcztjjdtjjdd}t |}|j }t |tjsJ|j|jdk(sJ|g}|r|jd}t |tjrot |jtsJ|jt|jk(sJt||j|j j"nt |tjsJt |j$tsJd|j$cxkr|j&ksJJt |j(t*sJt |jtsJ|j|j,j|j.jzk(sJ|j1|j.|j1|j,|ryy)Nrprnrorr)r@rurvrrr r$r innernodechildrenrpopleafnoderridxrrrr rIrprrsrtr4)r1rrootrrVs rtest_kdtree_tree_accessr|sIINN4 YY^^C #FvA 66D dF,, -- - ==FLLO ++ +FE  IIbM a )ajj#. ..::QUU+ ++ vaee}agg.A.A Ba!1!12 22akk3/ // )acc) )) ))aggu- --ajj#. ..::1993E3E!EE EE LL # LL  rctjjdtjjdd}t |}t |j tsJ|j|jdk(sJt |jtsJ|j |jdk(sJt |jtsJ|jdk(sJt|jtj|dt|jtj|d|j |usJy)Nrprnrorrrtr;)r@rurvrrr rrIrrVrrrrrqrJrraminrBrs rtest_kdtree_attributesrsIINN4 YY^^C #FvA acc3   33&,,q/ !! ! acc3   33&,,q/ !! ! ajj# && & ::  qwwQ 78qvvrwwvA67 66V  r kdtree_classc tjjd}tjddd}|jdj d}|jdj d}|jd}|jd }||}||}|j ||d ||f } |dddf|dddfz} tj j|dddddf|dddddfz d } ttjdg|dd |D cgc]&\} } tj| | | k| | kz(}} } t| |ycc} } w)Nrpr<r)r~r-)rr~rF)rerXrr;r) r@rurqr2r(rlinalgrrWrhchainrAr)rrwr)ABwAwBkdAkdBnABrXr prev_radiusradiusexpects r$test_kdtree_count_neighbors_weightedrsV ))   %C $4 A 2u%A 2v&A AB BB q/C q/C  c1B  HCqkBq$wK'G 99>>!D!QJ-!AtQJ-7b> AD),Y__aS!CR&-I1)MO%+vffWkD0TV^DEFOFOC Os2+E-cgd}t|}tj|tj|tjgdddf}t j td5t|dddy#1swYyxYw)N) rr%ir~iirimust be finiter) rr@r5rnanrr rr )valsrVrBs rtest_kdtree_nanrsf 1D D A >>4BFF!34 5ag >D z)9 :t s + BB ctjjd}|jddd}t |dd}t dDcgc]}tj }}tjtd 5|j|dddtjtd 5|j|d dddtj |d ddf<tjtd 5t |d ddddtjtd 5t |dd dddtjtd 5t |d d dddtjtd 5t |dddddycc}w#1swY%xYw#1swYxYw#1swYxYw#1swYxYw#1swYrxYw#1swYyxYw)Ni90rrrd)rlowhighFrrrrrrT) r@ru default_rngrr r0rrr rr?r)rwcoordsrr bad_coords rtest_nonfinite_inputs_gh_18223rs ))   &C [[hCc[ :FvU%@A!&q*A*I* z)9 :   z)9 :) 9a()66F1a4L z)9 :@vT?@ z)9 :@vU$?@ z)9 :?vT>? z)9 :AvU%@AA+))@@@@??AAsNF3F88GG7G)G)G58GGGG&)G25G> incantationcGddtj}ddgddgddgg}tj|}||}||d }|j|d |j |d y) NceZdZdZdZy)test_gh_18800..ArrLikec\tj|j|}d|_|Sr)r@rrrC)cls input_arrayobjs r__new__z&test_gh_18800..ArrLike.__new__s)**[)..s3CCGJrc.|yt|dd|_y)NrC)getattrrC)r5rs r__array_finalize__z1test_gh_18800..ArrLike.__array_finalize__s{sE40DHrN)rrhrirrrjrrArrLikers   1rrgGzP@gQE@@gQ6@gp= c6@g(\?@g= ףpMT@rtrr)r@rrr?r)rrr1rarr_liker$s r test_gh_18800rss 1"** 1    F ((6 Cs|H vr "DJJx(C(r)kr numpy.testingrrrrrrrr r,platformr numpyr@ scipy.spatialr r r rscipy.spatial._ckdtreerrrhfixturerr'r0r2rlr|rrrrrrrrrr rrrrr*mark fail_slowr5r7rCrGrKrOrRrUrXrxrzr|rrrrrrrrrrrrrrrrrrr rrr$r&r*r-r skipifrUrbrnr~rrrrrr parametrizerrrrrrrrrrjrrrs  ,,+ *EE.,()*( H-H-V  #    ,|, ,  &"& &: >+> > +)+)Z-7-7^>>4  (    # !1#  # L )9 " 0  (9  -   %?  ,  . 'q--&33*  2    &; " !7  *I  "8  +J 33@KBG:FF$ F7F FF@F@R #E " L #!$/ B # ;5    '$AD $Dr6&6J42)+v5=?'?'R,8\r++$,\&.,+2 1( 87   . -- -: ( !<(&'):;!<!.A,&(9:);)r