`L iddlZddlmZddlZddlZddlmZddlmZddl m Z m Z m Z m Z mZmZddlmZddlmZddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1dd l2m3Z3dd l4m5Z5m6Z6m7Z7m8Z8dd l9m:Z:m;Z;mZ>dd l?m@Z@mAZAd ZBejjde;ejjde<ejjde:ejjde=dZEe8eFejjdedZGdZHejjde*e.gdZIdZJejddjddddZMd ZNejjd!e*d"ife*e eMfe*d#eMfe.d$d%dife.eNd&d'ifgejjd(ejejeQgd)ZRd*ZSejjdgd+ejjde=d,ZTd-ZUd.ZVejjd/ejejjde=d0ZXd1ZYejjd2e>ejjde=d3ZZd4Z[d5Z\d6Z]ejjd7d8d9d:ge=Dcgc]}|fd; c}ze>Dcgc]}|fd< c}zd=Z^ejjd>d?e_d@fdAe_dBfdCe_dDfdEe`dFfdGe`dHfdIe`dJfgdKZaddLZbejjddMdNZcejjddMdOZdejjdPdQZfejjdRejge=zdSge=Dcgc]}|jc}zTejjdUejge=zdSge=Dcgc]}|jc}zTdVZiejjdUejge=zdSge=Dcgc]}|jc}zTdWZjejjdXdYdgdZZkd[ZlejjdRejge=zdSge=Dcgc]}|jc}zTejjdUejge=zdSge=Dcgc]}|jc}zTd\ZmejjdRejge=zdSge=Dcgc]}|jc}zTd]Znejjd^gd_ejjdRejge=zdSge=Dcgc]}|jc}zTejjdUejge=zdSge=Dcgc]}|jc}zTd`Zoejjd^gd_ejjdRejge=zdSge=Dcgc]}|jc}zTdaZpejjdbejdcddfejejdedfejjdghigejjdjddkgdlZsejjdmdYdgdnZtejjdoejejdggejdej gggejjdpejejdggejdej ggdgdqZvejjdrejddgddggejdsejfejddgdejggejdsejfejejdgdejggejejfejejdgejdggejdsejfejdejgdejggejdsejfejddgddggejdsdtfejddgddtggejdsdtfejdtdgddtggejdtfejdtdgdtdggejdsdtfejddtgddtggejdsdtfg duZyejjdvejdtgdwZzejjdvejdtgdxZ{ejjdvejdtgdyZ|dzZ}d{Z~d|Zd}Zd~ZdZejjde#e/e0e"e1efdZejjde#e/e0e"e1efejjde=dZdZdZdZejjdde#fdefgejjde=dZejjde=dZdZdZdZdZejjde=dZdZdZdZejjdddsgejjdddgejjde*e-gdZejjdddgdZejjdgdejjddYdgddgTdZejjde*e+e,gdZdZejjdgddgdgdgdgfgdddgddgddgddggfgdZdZejjde=dZdZycc}wcc}wcc}wcc}wcc}wcc}wcc}wcc}wcc}wcc}wcc}w)N) GeneratorType)linalg)issparse)cdist cityblockcosine minkowskipdist squareform)config_context)DataConversionWarning)PAIRED_DISTANCESPAIRWISE_BOOLEAN_FUNCTIONSPAIRWISE_DISTANCE_FUNCTIONSPAIRWISE_KERNEL_FUNCTIONS_euclidean_distances_upcastadditive_chi2_kernelcheck_paired_arrayscheck_pairwise_arrays chi2_kernelcosine_distancescosine_similarityeuclidean_distanceshaversine_distanceslaplacian_kernel linear_kernelmanhattan_distancesnan_euclidean_distancespaired_cosine_distancespaired_distancespaired_euclidean_distancespaired_manhattan_distancespairwise_distancespairwise_distances_argminpairwise_distances_argmin_minpairwise_distances_chunkedpairwise_kernelspolynomial_kernel rbf_kernelsigmoid_kernel) normalize)assert_allcloseassert_almost_equalassert_array_equalignore_warnings)BSR_CONTAINERSCOO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERS)Paralleldelayedc  tjjd}|jdj |d}t |d}t |}t|||j|jcxk(r|k(sJJ|jdj |d}t ||d}t ||}t|||j|jcxk(r|k(sJJ|jdj |d}|jdj |d}tj|d<tj|d<t ||d }t||} t|| |j| jcxk(r|k(sJJt|D cgc]} t| D cgc]} | c} c} } } t|D cgc]} t| D cgc]} | c} c} } } t | | d}t|||j|jcxk(r|k(sJJ|jd j |d}|dddfd z d ztjzd z |dddf<|ddd fd z d ztjz|ddd f<t |d}t|}t|||jdj |d}|dddfd z d ztjzd z |dddf<|ddd fd z d ztjz|ddd f<t ||d}t||}t||t |d}t |t}|jd|jd k(sJ|jd|jdk(sJt||t ||d}t ||t}|jd|jdk(sJ|jd |jdk(sJt||t ||d}t ||t }|jd|jdk(sJ|jd |jdk(sJt||ycc} wcc} } wcc} wcc} } w)NrFcopy euclideanmetricr:rr nan_euclideanr9rA?rA haversine)rArAr manhattanr)nprandom RandomState random_sampleastyper#rr,dtypenanrtuplepirrshaper) global_dtyperngXSS2YX_maskedY_maskedS_masked S2_maskedrowvX_tuplesY_tupless i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_pairwise.py&test_pairwise_distances_for_dense_datarbCsk ))   "C &!((E(BA1[1A Q BAr 77bhh ., .. .. . &!((E(BA1a 4A Q "BAr 77bhh ., .. .. .  (// 5/IH  (// 5/IHVVHTNVVHTN!(H_MH'(;IHi( >>Y__ < << << <;#e,1Q,-;rrHp@r?r )rIrJrKrLrMr#rr,rNrrfloat64pytestraisesAssertionErrorr TypeError) rcrdrerfrSrTrUrXX_sparseY_sparserVrWkwdss ra'test_pairwise_distances_for_sparse_datarrs ))   "C &!((E(BA &!((E(BAQHQH8XkBA Xx 0BAr 77bhh ., .. .. .8Xh?A (H -BAr 77bhh ., .. .. .8]1%5kJA ]1-}Q/? @BArrzz!ww"((2l22222 ]]> * 777bhh6,6 66 66 7 Q "BArrzz!ww"((2l22222 ]]> * 777bhh6,6 66 66 7 :D1a< L;L #L,/L8;Mcategoryr?c ptjjd}|jdd}|j }d|dz |d<t t 5|dfD]G}t|||}tj|dddd tj|dk7dk(rGJ dddd |z}tjt | 5t||dddtjt | 5t|jt|| dddtj5tj d t t|jt|dddy#1swYxYw#1swYxYw#1swYyxYw#1swYyxYw)Nrr9r:rFrBrsr>F)rOposinfneginfr<z+Data was converted to boolean for metric %smatchrXr?error)rIrJrKrandnr<r/r r# nan_to_numsumrkwarnsrMboolwarningscatch_warnings simplefilter)r?rTrUrXZresmsgs ratest_pairwise_boolean_distancersr ))   "C !QA A!D'kAdG "7 8)T )A$Q&9C MM#1Qqu E66#(#q( (( )) 8& @C +3 7-1V,- +3 7?188D>Qv>?  ":g'<=188D>&9::#))--??::s7A F)FF"F ;F,FF F),F5ctjjd}|jdd}t j 5t j dtt|ddddy#1swYyxYw)Nrr9r:r{r r>) rIrJrKr|rrrr r#)rTrUs ratest_no_data_conversion_warningrsa ))   "C !QA  "2g'<=1[1222s (A77Bfuncctjtd5|tjdddddtjtd5|tjdtjdddddtjtd5|tjdtjdddddtjd}||d}||usJtjd}||tjd d}||usJ|tj d ggd d}d |j jk(sJ|dggd}t|tjsJy#1swYwxYw#1swY/xYw#1swYxYw)Nz .* shape .*rx)r9 precomputedr>)r:r:)r:rr9r9)rrrFintrNf?) rkrl ValueErrorrIzerosarrayrNkind isinstancendarray)rrVrWs ratest_pairwise_precomputedrsx z 75 RXXf m45 z 7G RXXf rxx/ FG z 7G RXXf rxx/ FG A a &B 7N7 A a&!- 8B 7N7 RXXse5 )-@A !'',,   seW]+A a $$ $155GGGGs#F/2F<22G /F9<G Gctjtd5tt j ddddddy#1swYyxYw)Nz.* non-negative values.*rxrrr>)rkrlrr#rIfullra&test_pairwise_precomputed_non_negativer s? z)C DF27762.}EFFFs "AArFr9doubleFr;)wrhc ttj|tj|fi|}|jSN)r)rI atleast_2ditem)xyrqKs racallable_rbf_kernelr)s02==#R]]1%5>>A 668Orzfunc, metric, kwdsr=r polynomialdegreegamma皙?rNcztjjd}tjd|j dz|}tjd|j dz|}||f|dd|}||f|dd|}t |||||f|dd|}|||f|dd|}t ||y) Nrr9r8rrr:rFr?n_jobsrA)rIrJrKrrLr,) rr?rqrNrTrUrXrVrWs ratest_pairwise_parallelr0s( ))   "C S&&v..ez9test_pairwise_callable_nonstrict_metric..Urr>rBr9)r#rrra'test_pairwise_callable_nonstrict_metricrQs" ugn =d Cq HH Hr)rbf laplaciansigmoidrlinearchi2 additive_chi2c tjjd}|jd}|jd}t|}t ||}||}t ||t |||}|||}t ||t|D cgc]}t|D cgc]} | c} c} }} t|D cgc]}t|D cgc]} | c} c} }} t | | |}t ||||} ||} |dvryt | | |}t ||ycc} wcc} }wcc} wcc} }w)Nrr8r@r>rzrX)rr)rIrJrKrLrr'r,rP)r?rfrTrUrXfunctionK1K2r]r^r_r`rorps ratest_pairwise_kernelsrYs/ ))   "C &!A &!A(0H !F +B !BB !q 0B !q BB;#e,1Q,-;BB-;,;s0E ( D>1 E E  E # E >E E c>tjjd}|jd}|jd}t}ddi}t |f||d|}t |fd|i|}t||t |f||d|}t |fd|i|}t||y)Nrr8r@rrrzrX)rIrJrKrLrr'r)r,)rTrUrXr?rqrrs ratest_pairwise_kernels_callabler}s ))   "C &!A &!A F S>D ! 8q 84 8B A # #d #BB ! 8q 84 8B A # #d #BBrc^tjjd}|jd}|jd}t ||d}ddd}t ||fdd d |}t ||tjt5t ||fd di|dddy#1swYyxYw) Nrr8r@rrz:))rblablarT)r? filter_paramsr?) rIrJrKrLr)r'r,rkrlrn)rTrUrXrparamsrs ra"test_pairwise_kernels_filter_paramrs ))   "C &!A &!A1as#Ad +F !Q KuD KF KBAr y !7A6e6v6777s B##B,z metric, funcctjjd}|jd}|jd}t |||}|||}t |||||||}t |||t vr1t |||} tj| } t | |yy)Nrr8r>)rIrJrKrLr r,rdiag) r?rrfrTrUrXrVrWS3 distancess ratest_paired_distancesrs ))   "C &!A &!AAf-A aBAr mA a 0 1BAr ,,071= GGI&  1% -rctjjd}|jdj |d}|jdj |d}t ||d}t ||d}t |||jd}tjt5t ||dddy#1swYyxYw) Nrr8Fr;rHr>cRtj||z jdS)Nraxis)rIabsr~rs rarz0test_paired_distances_callable..s BFF1q5M4E4E14E4Mrr) rIrJrKrLrMr r,rkrlr)rSrTrUrXrVrWs ratest_paired_distances_callablers ))   "C &!((E(BA &!((E(BAAk2A !Q'M NBAr &!A z "As 7 C  C dok_containerc|tjdgdgg|}tjdgdgg|}||}|||}ddg}ddg}ddg} t||d \} } t||d } t | |t | |t | |t||d \} }t||d }t | |t ||t ||t | tj k(sJt |tj k(sJt||d \} } t||dd d i \} }t||d }t||dd d i }t | | t || t | |t | |t ||t ||t||d \} } t||d } t | |t | |t | |t||d \} }t||d }t | |t ||t ||t||tddi \} } t | |t | |t||dddi \} } t | |t | |tjjd}|jdd}|jdd}t||d }|jd}||tt|f}t||dd\}}t ||dt ||dt||d\}}t||d\}}t ||t||t||d\}}t||d\}}t ||t||t||d}t||d}t||t||d}t||d}t||t||}ttj |tj |}t||y)NrrFrrrAr:r=r> sqeuclideansquaredT)r? metric_kwargsrHrhr aor)rr?Hz>rtol)rIasarrayr%r$r,typerr rJrKr|r#argminrangelenr.asfortranarray)rrfrSrUrXXspYsp expected_idx expected_valsexpected_vals_sqidxvalsidx2idxspvalsspidxsp2vals2idx3idx4rTdist dist_orig_ind dist_orig_valdist_chunked_inddist_chunked_valargmin_0dist_0argmin_1dist_1argmin_C_contiguousargmin_F_contiguouss ra"test_pairwise_distances_argmin_minrs6 QC!:\2A RD1#;l3A  C  .Cq6LFM1v.a;GIC $Q+ >DC&D,'D-(1#s;OME6 &sC DFE<(FL)FM* ;"** $$ $ <2:: %% %.a=IIC/ 1[D0AKD% %Q- @D $ 1[D0A DD*+E+,C&D,'D,'D,'.a;GIC $Q+ >DC&D,'D-(1#s;OME6 &sC DFE<(FL)FM*. 1YsAhICC&D-(. 1[aICC&D-( ))   "C "cA #sA a; 7DKKQK'Mc-.@(AABM)F 11[*&&M#3$?M#3$?5QBHf4QBHfFF#x*4QBHf4QBHfFF#x*)AA6H(AA6Hx*(AA6H(AA6Hx*4Aq93 !b//2*,?@rc|ddddfS)Ndrrstarts ra _reduce_funcrCs 4C4=rctjjd}|jdj |d}t |ddddf}t |dtd}t|tsJt|}t|dkDsJ|dj|jk(sJttj||d y) Nr)ir:Fr;r> reduce_funcworking_memoryrFratol)rIrJrKrLrMr#r&rrrlistrrNr,vstack)rSrTrUrVS_chunkss ra&test_pairwise_distances_chunked_reducerGs ))   "C (#**.]rrr r rFc3$K|]}|du ywrr).0chunks ra z>test_pairwise_distances_chunked_reduce_none..bs3u}3s) rIrJrKrLrMr&rrrrall)rSrTrUrs ra+test_pairwise_distances_chunked_reduce_nonerXs ))   "C '")),U)CA) 45fH h .. .H~H x=1   3(3 33 3r good_reducect|SrrDrs rarrhs arc,tj|Sr)rIrr!s rarris!rc.t|t|fSrr r!s rarrjs$q'47+rc||Srr)r"rscipy_csr_types rarrms q8IrcP||tj|t|fSr)rIrr)r"rscipy_dok_types rarrqs# 1  HHQK G9 rctjdjdd}t|d|d}t |y)NrrrF@r )rIarangereshaper&next)rrUrs ra,test_pairwise_distances_chunked_reduce_validr.es:* " b!$A) 4[H Nr) bad_reduceerr_typemessagec6tj||ddgSNrrI concatenater"ss rarrsAbcF 4rzlength 11\..* input: 10\.c:|tj||ddgfSr3r4r6s rarrs!R^^Q"#K89rz!length \(10, 11\)\..* input: 10\.c|dd|fS)N rr6s rarrsq!uajrz length \(9, 10\)\..* input: 10\.cy)Nrr6s rarrrrz2returned 7\. Expected sequence\(s\) of length 10\.cy)N)r<rr6s rarrrrz9returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c0tjddfS)Nrr:)rIr+r6s rarrs"))B-+rz-, 9\)\. Expected sequence\(s\) of length 10\.ctjdjddj|d}t |d|d}t j ||5t|dddy#1swYyxYw) NrrrFFr;r*r rx)rIr+r,rMr&rkrlr-)rSr/r0r1rUrs ra.test_pairwise_distances_chunked_reduce_invalidrAsnD " b!$++Lu+EA) 4ZH xw / Xs  A22A;c:t||||}t|tsJt|}||n|}t |dzdz}|D]"}|j }|t ||dzkr"Jtj|}t|||} t|| dy)Nr r?r>g>ir>rr) r&rrrrnbytesmaxrIrr#r,) rUrXr r?genblockwise_distances min_block_mibblock memory_usedrVs ra check_pairwise_distances_chunkedrKs $Q.QW XC c= )) )s) YAAFQJ'M$Ill c.-@5HHHHI))$781a/A'6r)r=l2rc@tjjd}|jddj |d}t t |d|}t|dkDsJttjtj|dd y) Nrr _BsizescaleFr;rFrC绽|=r) rIrJrKnormalrMrr&rr,rr)r?rSrTrUchunkss ra(test_pairwise_distances_chunked_diagonalrWsz ))   "C $ /66|%6PA ,QqP QF v;??BGGBIIf-.>rctjjd}|jddj |d}t ||d}t tj|dd y) NrrNrPrQFr;rArrTr)rIrJrKrUrMr#r,r)r?rSrTrUrs ra)test_parallel_pairwise_distances_diagonalrYs[ ))   "C $ /66|%6PA"1VA>IBGGI&6rz0ignore:Could not adhere to working_memory configctjjd}|jdj |d}t |dddt ddD]}t |dd |zdt |jddd|jd j |d}t ||ddt |j|jddt ||d dt ||dd t|}t|d d}t|tsJt||usJtjt5t|dddy#1swYyxYw)Nr)r:Fr;rFr=rCirA)rr:i'rr r)rIrJrKrLrMrKrtolistr#r&rrr-rkrl StopIteration)rSrTrUpowerrXr"rFs ratest_pairwise_distances_chunkedr_sX ))   "C (#**> } % S s  E33E<x_array_constrdense)idsy_array_constrcf|dgg}|dgdgg}t||}t|ddggyNrrFrArri)rr,)r`rcrUrXr"s ra%test_euclidean_distances_known_resultrfs@ uAaSz"AAq!AAc |$rcvtjjd}|jdj |d}|jdj |d}|j tj dzj djdd }|j tj dzj djdd }||}t||}t||| }t||| } t|||| } t||t| |t| |t||tj|tj| } tjt5t| |dddy#1swYyxYw) NrrrFr;rrArFrrX_norm_squaredY_norm_squaredrlrn)rIrJrKrLrMrjr~r,rr, zeros_likerkrlrm) rSrcrTrUrX X_norm_sq Y_norm_sqD1D2D3D4wrong_Ds ra#test_euclidean_distances_with_normsrxsu ))   "C (#**r) rIrJrKrLrMrrr,rN)rSr`rcrTrUrXexpectedrs ratest_euclidean_distancesr[s ))   "C )$++Lu+EAAa#gJ (#**g:0yE>gGz?z failing due to lack of precision)reason)marksdimi@Bctjdg|zg|}tjd|zg|zg|}t||}t||}t ||dy)Nrrrr)rIrrrr,)rNepsrrrUrXrrs ra'test_euclidean_distances_extreme_valuesrs] 3%#+e,A 39+#$E2A#Aq)IQ{HIxd3rrctjjd}|jdd}|jdd}t |||}t |||}t ||y)N9rr:)rXr)rIrJrKr|rrr,)rrTrUrXnormal_distance nan_distances ra8test_nan_euclidean_distances_equal_to_euclidean_distancers\ ))   %C !QA !QA)!q'BO*17CLO\2rrUrXctjt5}t||dddd}|t j k(sJy#1swY&xYw)NrzBInput contains infinity or a value too large for dtype('float64').)rkrlrrstrvalue)rUrXexcinfoexp_msgs ra,test_nan_euclidean_distances_infinite_valuesrsP z "(gQ'(SG c'--( (( ( ((s A  AzX, X_diag, missing_valuerArc*tjd|g|dgg}t||}t||t|d|}t|dz|t|||}t||t||j |}t||y)Nrmissing_valuesTrrrA)rIrrr,r<)rUX_diag missing_valueexp_distrdist_sqdist_two dist_two_copys ra test_nan_euclidean_distances_2x2rs xx#v 45H "1] CDHd#%amTGHaK)&q!MJHHh'+Aqvvx VMHm,rrcFtj||gddgg}tjtjtjgtjdgg}t||}t ||t||j |}t ||y)NrrFr)rIrrOrr,r<)rrUrrs ra)test_nan_euclidean_distances_complete_nanrsz =-01a&9:Axx"&&"&&)BFFA;78H "1] CDHd# "1affh} MDHd#rc tjd|dddg|ddd|gd|||dgg}tj|dd|dg||dddg|||ddgg}t|||}t|||}t||jt t|dd |dd d | d ggt t|d d |d d d| tj dggt||}t|||}t||j|}t ||t ||t||d }t||d} t || y)Nrg@g@rig@g@g@rrFTrgD@rAFg9@r;)rIrrr-Tr,rr<) rrUrXrsrtrurvD5D6D7s ra'test_nan_euclidean_distances_not_trivalr"s  -c3 / Cc= 9 - s C  A  CmS 9 M3S 9 M=#s C  A !Am DB Am DBBDD! bqE1Ra5$}  4 45  aFAaFE-  ''; < =>  != AB Am DB AFFH] KBBB !AD 1B AE 2BBrctjdd|dgd|d|gg}t||d}tj|dk\sJt||d}t |d y) NgzG^g@@gB@g|ï@T)rrrFr)rIrrrr,)rrU dist_squaredrs ra7test_nan_euclidean_distances_one_feature_match_positiverWss  e]E 2 mZ ?  A+ -L 66,!# $$ $ "1]E RDD#rctjjd}tj|j d}tj ||g}t |}t|ddgddggdtj|dk\sJtj|dksJt|tj|ddgtj || g}t |}tj|dk\sJtj|dksJt|ddgddggtj|j dd}t |}t|tj|dg|jd ztj|dk\sJtj|dksJy) NrirrTrrirOir) rIrJrKrrandrrr,rdiag_indices_fromrR)rTrXAr"XBrtrUs ratest_cosine_distancesrls ))   %C sxx}A Aq6 BAAc S#J/e< 66!s(   66!s(  Ab**1-.c ; Ar7 B " B 66")   66")  B#sc3Z01 sxxd#$AAAb**1-. 0BC 66!s(   66!s(  rc d}tjjd}|jd}|jd}tj|Dcgc]}|Dcgc] }||| c}c}}}t ||}t |||jd}d}tjt|5t |dddycc}wcc}}w#1swYyxYw)NcZ|d|dz }|d|dz }tj|dz dztj|dtj|dztj|dz dzzz}dtjtj|z}|S)NrrFrA)rIsincosarcsinr)rrdiff_latdiff_lonacs raslow_haversine_distancesz:test_haversine_distances..slow_haversine_distancessQ4!A$;Q4!A$; FF8a< A % FF1Q4L266!A$< '"&&A*>!*C C   "''!*% %rrrD)rrA)rrz-Haversine distance only valid in 2 dimensionsrx) rIrJrKrLrrr,rkrlr) rrTrUrXrrrsrterr_msgs ratest_haversine_distancesrs ))   "C &!A '"A J1A>q,Q2>J KB Q "BB '"A=G z 1A ?J s$ C "C2C  C%C %C.cPdgdgg}dgdgg}t||}t|ddgyre)r!r,rUrXr"s ratest_paired_euclidean_distancesr6 qc A qc A"1a(AASz"rcPdgdgg}dgdgg}t||}t|ddgyre)r"r,rs ratest_paired_manhattan_distancesrrrcPdgdgg}dgdgg}t||}t|ddgy)NrrFrArE)rr,rs ratest_paired_cosine_distancesrs6 qc A qc A1%AASz"rcTtjjd}|jd}|jd}t ||}d}t |||}|j tk(sJt|D]t\}}t|D]a\}} tj|| z dz|| zz  } tj|| z} t|||f| t|||f| cvt |}ttj|dtj|dkDsJtj|tjtj|z dksJ|jdjtj }|jdjtj }t ||}|j tj k(sJ|jdjtj"}t ||}tj$|jsJ|j tk(sJdd gd dgg}ddgd dgg}t ||}|d |d kDsJ|d|dkDsJt'j(t*5t ddggdddt'j(t*5t ddggddggdddt'j(t*5t ddggddggdddt'j(t*5t ddgggdgdddy#1swYxYw#1swY~xYw#1swYVxYw#1swYyxYw)Nrr8rrrrArFg333333?gffffff?rg?rB)rrF)rFrF)rFrr)皙?rg333333?)rIrJrKrLrrrNfloat enumerater~expr-r.rrrMr{int32isfiniterkrlr) rTrUrXK_addrrirjrrchi2_exps ratest_chi_square_kernelrs< ))   "C &!A '"A A &E EAq&A 77e  ! 31aL 3DAqFFAEa<1q5122Dvvedl+H ad T 2 !Q$ 2  33 AArwwqz1% 66!a%== 66!bggbggaj))A- .. . &!((4A '"))"**5AAqA 77bjj   '"))"((3AAqA ;;q>     77e   sc1XA Q#sAAqA T7QtW   T7QtW   z "aWI z "+aWIRz*+ z "*aVHBxj)* z "1aVH/011++**11s0M:6N*NN:NNNN'kernelctjjd}|jd}|||}t ||j dy)Nrr8)rIrJrKrLr,r)rrTrUrs ratest_kernel_symmetryrsC ))   "C &!Aq! AAqssBrctjjd}|jd}||}|||}|||}t ||yNrr8)rIrJrKrLr,)rrfrTrUrorrs ratest_kernel_sparsersS ))   "C &!AQHq! A ( #BArrc tjjd}|jd}t ||}t |j ddd|Dcgc]}tj|dzc}ycc}w)Nrr8rA) rIrJrKrLrr,flatrnorm)rTrUrrs ratest_linear_kernelrsc ))   "C &!AaAAFF3Q3Kq!A!&++a.A"5!AB!AsA> ctjjd}|jd}t ||}t |j dddtjdy)Nrr8rr9)rIrJrKrLr)r,ronesrTrUrs ratest_rbf_kernelr#sP ))   "C &!A1aAAFF3Q3K,rctjjd}|jd}t ||}t tj |tjdtj|dkDsJtj|tj tj |z dksJy)Nrr8r9rF) rIrJrKrLrr,rrrrs ratest_laplacian_kernelr+s ))   "C &!AAABGGAJ + 66!a%== 66!bggbggaj))A- .. .rzmetric, pairwise_funcrrctjjd}|jd}|jd}||}||}|||d}t |sJ|||d} t | rJt |j | t|||} t |j | y)Nrr8rF) dense_outputTrz)rIrJrKrLrr,toarrayr') r? pairwise_funcrfrTrUrXXcsrYcsrrrK3s ra&test_pairwise_similarity_sparse_outputr7s ))   "C &!A &!A  D  D tT 6B B<< q!$ /B| BJJL"% !q 0BBJJL"%rcRtjjd}|jd}|jd}||}||}|df||f|df||ffD]E\}}t ||d}t |}| t |}t ||d} t || Gy)Nrr8rrrzr)rIrJrKrLr'r+r,) rfrTrUrXrrX_Y_rrs ratest_cosine_similarityrQs ))   "C &!A &!A  D  Dt9q!ftTlT4LA BbBx 8 r] >2B bBx 8B rctjtjdd}t|d\}}||usJt ||yN(r9r>)rIresizer+rr.)r XA_checked XB_checkeds ratest_check_dense_matricesrfsE 299R=& )B22t<J  ## #r:&rctjtjdd}tjtjdd}t||\}}t ||t ||tjtjdd}t ||\}}t ||t ||y)Nrr r:r>)rIrr+rr.rrrrrs ratest_check_XB_returnedr os 299R=& )B 299R=& )B22r:J r:&r:& 299R=& )B0R8J r:&r:&rctjtjdd}tjtjdd}tjt 5t ||dddtjtjdd}tjt 5t||dddy#1swYaxYw#1swYyxYw)N-)r9r:rr$)r:r:)rIrr+rkrlrrrrrs ratest_check_different_dimensionsrs 299R=& )B 299R=& )B z "&b"%& 299U#V ,B z "$B#$$ &&$$s, C C%C"%C.ctjdjdd}tjdjdd}tjt 5t ||dddtjdjdd}tjdjdd}tjt 5t ||dddy#1swYxYw#1swYyxYw)Nr r:r9rr:r>)rIr+r,rkrlrrrs ratest_check_invalid_dimensionsrs 2  q! $B 2  q! $B z "&b"%& 2  q! $B 2  q! $B z "&b"%&& &&&&s$ C2 C>2C;>DcRtjjd}|jd}||}|jd}||}t ||\}}t |sJt ||z jdk(sJt |sJt ||z jdk(sJt ||\}}t |sJt ||z jdk(sJt |sJt ||z jdk(sJyr)rIrJrKrLrrrr~) rfrTr XA_sparser XB_sparserr XA_2_checkeds ratest_check_sparse_arraysrs, ))   "C  6 "Bb!I  6 "Bb!I29iHJ  J   y:% & * * , 11 1 J   y:% & * * , 11 14Y JJ J   y:% & * * , 11 1 L !! ! |j( ) - - /1 44 4rc~|j}t|dkDrtd|DStd|DS)NrFc32K|]}t|ywr)tuplify)rr]s rarztuplify..s/cWS\/sc3 K|]}|ywrr)rrs rarztuplify..sN1QNs )rRrrP)rUr7s rarrs8 A 1vz/Q///NN""rctjjd}|jd}t |}|jd}t |}t ||\}}t ||t ||yr)rIrJrKrLrrr.)rTr XA_tuplesr XB_tuplesrrs ratest_check_tuple_inputrsm ))   "C  6 "B I  6 "B I29iHJ y*-y*-rcBtjtjddjtj}tjtjddjtj}t |d\}}|j tjk(sJt ||\}}|j tjk(sJ|j tjk(sJt |jt|\}}|j tk(sJ|j tk(sJt ||jt\}}|j tk(sJ|j tk(sJyr)rIrr+rMr{rrNrr s ratest_check_preserve_typer!sD 299R=& ) 0 0 r) r rIrJrKrLr r rrPr,)rr?r$rTrU expected_distrs ra+test_pairwise_distances_data_derived_paramsr's| s +-ii##A&   i ("56#:; yy}QvfMNOm,---s A:BBc tjjd}|jd}|jd}t j t d|d5t|||dddy#1swYyxYw)Nrrz+The '(V|VI)' parameter is required for the z metricrxr>)rIrJrKrLrkrlrr#)r?rTrUrXs ra1test_pairwise_distances_data_derived_params_errorr)sv ))   "C )$A )$A r"VrF)rddofrNr#VIr?)rIrJrKrLrMr r rvarrrjrinvcovrr#r,) r?rSr/rTrUrrXr&rs ra)test_numeric_pairwise_distances_datatypesr7s6 ))   "C &!((E(BA F "56#:;   f % , ,\ , Fa62 \ !266"))QF"3!!2::VWF } $BIIMM"&&Aq61B1D1D*EFHHIF a <6 N)rIrOisnanany)r8rUoutputs ratest_nan_euclidean_supportr=1sR Q!RVVq!fq!f-A $Q/ BFxx##%% %%rc(tjtjgtjtjgtjtjgg}t||d}ddgddgddgg}t||d}t||y)zyCheck that the behavior of constant input is the same in the case of full of nan vector and full of zero vector. rCr>rN)rIrOr$r,)X_nan argmin_nanX_const argmin_consts ra(test_nan_euclidean_constant_input_argminrC>su ffbff /"&&"&&1A BE*5%PJ1v1v1v&G,WgoVLJ -rzX,Y,expected_distance)rababc)rrri)rrr)rirrrrDrrric>d}t|||}t||y)z8Check pairwise_distances with lists of strings as input.cVtjt|t|z Sr)rIrrrs radummy_string_similarityzLtest_pairwise_dist_custom_metric_for_string..dummy_string_similarity^svvc!fs1vo&&r)rUrXr?N)r#r,)rUrXexpected_distancerHactual_distances ra+test_pairwise_dist_custom_metric_for_stringrKLs#$')1:QROO%67rcd}tjgdgdgdgt}tjgdgdgdg}t|| }t ||y ) zjCheck that pairwise_distances does not convert boolean input to float when using a custom metric. cVd||zj||zjz z S)NrF)r~)v1v2s radummy_bool_distzBtest_pairwise_dist_custom_metric_for_bool..dummy_bool_distjs&BG==?b2g]]_444r)rFrrr)rFrrFr)rFrFrFrFr)rrE?)rErrE)rQrEr)rUr?N)rIrrr#r,)rPrUrIrJs ra)test_pairwise_dist_custom_metric_for_boolrResV 5 , l;4HA    )1_EOO%67rc|tjdg}|tjdg}tdddt||Dy)NrrAr)r max_nbytesc3NK|]\}}tt||ywr)r6r)rm1m2s rarz9test_sparse_manhattan_readonly_dataset..s)%17R$#$R,%s#%)rIrr5zip)rf matrices1 matrices2s ra&test_sparse_manhattan_readonly_datasetr[|sUrwwv/0Irwwv/0I%HA!$%;>y);T%rctjjd}tjjd}d}tjt |5t ||ddddtjt |5t||ddddy#1swYrws. !#4>, 5L^.9.9.9.9><::::>:?.:<2"46F!GH%I%:F " !Q..xe.D1M ["-       <(A7 .#?$2::rzz3"?@ A%& I T.9:  >& 7)?)9)?)?)AB.9&:C&*(.9.9vA::vAr7" 4 $+- )7I -   )7 ()() 5  ( :  0 !*.QR   A  H ,  < ->?> 7 #EF?G?#EF7G7NO!P!HXXJ  HIY''HH XXJ  HIY''HH %  %XXJ  HIY''HH %  %@tUm4 5  EDXXJ  HIY''HH XXJ  HIY''HH +  +*XXJ  HIY''HH +  +$'89XXJ  HIY''HH XXJ  HIY''HH 4  :4('89XXJ  HIY''HH 4 : 4" T4  JJ  ++##+M#N   G - 4.  4T5M2333xrxx"&&! 61rvvg,8PQRxrxx"&&! 61rvvg,8PRVWX)YS) Aq6Aq6" #WRWWQZ8 Aq6Arvv;' ('"''!*bff= BFFA;BFF , -rvvrvv> BFFA; , -wrwwqz266B Arvv;BFF , -wrwwqz266B Aq6Aq6" #WRWWQZ4 Aq6Ar7# $gbggaj"5 B7QG$ %rvvr2 B7RG$ %wrwwqz26 Ar7QG$ %wrwwqz26  - - 2662,7 $8 $2662,7181h2662,78(<6###31l         .9: C- / +< =>.9&:  &*.9 : (' ' $ &.95:5,# .%0Aq6*L-#@A(*DE -B+ -L-#@A 0B 0  "D%=x6NO)P#$)>24QR& & .   o ?  $K3Z#sc3Z 0 888..9: 8{ HI IIpI I4I0I I4IsB w 3 w "w)w;w0w$7w) w.4w3;w8.w=