
     hG                       d dl Z d dlZd dlmZmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZmZmZmZmZmZmZm Z m!Z! d dl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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 g dZ8 ej9        g d	g d
g dg dg dg dgd          Z: ee:          Z;i Z<d Z= e=             d Z>dPdZ?	 	 	 	 	 dQdZ@d ZAd ZBdPdZC eed          d dfdZDddd d ddddddddddd!d  eed          fd"ZE eEed#d$          ZF eEed#dd%          ZG eEed#dd#&          ZH eEed#ddd#'          ZI eEe1          ZJ eEe*d(          xZKZL eEe7          ZM eEe(          ZN eEe%          ZO eEe$          ZP eEe'          ZQ eEe&          ZR eEe-          ZS eEe.          ZT eEe+          ZU eEe)d)          ZV eEe6d)          ZW eEe"          ZX eEe#d)          ZY eEe5          ZZ eEe4          Z[ eEe2          Z\ G d* d+          Z] G d, d-          Z^ G d. d/          Z_ G d0 d1          Z` G d2 d3          Za G d4 d5          Zbd6 Zc G d7 d8          Zdd9 Ze G d: d;          Zfejg        h                    d<g d=          d>             Zid? Zjd@ ZkdA ZldB ZmdC ZndD ZodE ZpdF ZqdG ZrdH ZsdI ZtdJ ZudK ZvdL ZwdM ZxdN ZydO ZzdS )R    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosebreak_cyclesIS_PYPY)raises)	
squareformpdistcdist	num_obs_y
num_obs_dmis_valid_dm
is_valid_y_validate_vector_METRICS_NAMES)
braycurtiscanberra	chebyshev	cityblockcorrelationcosinedice	euclideanhammingjaccardjensenshannon	kulsinskikulczynski1mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyule)zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r.   r   '        )r/   r3   r     4     )r0   r4   r7   r      e  )r1   r5   r8   r:   r     )r2   r6   r9   r;   r<   r   doubledtypec                     t           D ]} |                     dd                              dd          }t          j                            t          j                            t                    d|           }t          |          }t          j	        |          t          |<   |                                 t          j        t          d                   t          d<   t          j        t          d                   t          d<   t          j        t          d                   t          d<   t          j        t          d	                   t          d	<   t          j        t          d
                   t          d
<   d S )Nz.txt z-mldatapdist-boolean-inprandom-bool-datarandom-double-datarandom-float32-datarandom-int-datarandom-uint-data)
_filenamesreplaceospathjoindirname__file__opennploadtxteoclosebool_float32int_uint)fnnamefqfnfps       ]/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_distance.pyload_testing_filesr^   p   s     zz&"%%--eR88w||BGOOH55vrBB$ZZ:b>>4




 hr*='>??BXb);&<==B "
2.B+C D DBGB'8$9::BWR(:%;<<B    c                  <    t          j        d          j        dk     S )Nr      )rQ   intpitemsize r_   r]   	_is_32bitre      s    71::""r_   c                     d  D              |d  D              d}t          d  D                        |dk     rJt           fd D                       st          d          t           d         j                  |         } |fz   S )Nc                 6    g | ]}t          j        |          S rd   )rQ   
asanyarray.0as     r]   
<listcomp>z!_chk_asarrays.<locals>.<listcomp>   s"    ///1bmA///r_   c                 P    g | ]#}|j         d k    rt          j        |          n|$S    )ndimrQ   ravelri   s     r]   rl   z!_chk_asarrays.<locals>.<listcomp>   s>     # # # "#1"(1+++! # # #r_   r   c              3   >   K   | ]}t          j        |          V  d S N)rQ   
atleast_1dri   s     r]   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s,      442=##444444r_   c              3   D   K   | ]}|j         d          j         k    V  dS )r   N)rp   )rj   rk   arrayss     r]   ru   z _chk_asarrays.<locals>.<genexpr>   s0      <<16VAY^+<<<<<<r_   z(array ndim must be the same for neg axis)tupleall
ValueErrorrangerp   )rw   axiss   ` r]   _chk_asarraysr}      s    /////F|# #!# # #44V44444Faxx<<<<V<<<<< 	IGHHHVAY^$$T*TGr_   FTc
                    t          |           }
|
d d         |
d         c} |o| }|s|rt          d | D                       }|rFd | D             }t          |          r+d}d}t          d t          | |          D                       } t	          j                  n/|r&t	          j        | d         j                           n| fz   S |	rt                    |rt          |           t          fd| D                       st          d	          |r'dk                                     rt          d
          |rRt	          j        dk              d         j        j        k     r$t          fd| D                       }          |rdk    
                                rd | fz   S )Nr|   c              3   v   K   | ]4}t           j                            |          t           j        j        uV  5d S rs   )rQ   magetmasknomaskri   s     r]   ru   z_chk_weights.<locals>.<genexpr>   s9      QQQBEMM!,,BEL@QQQQQQr_   c                 Z    g | ](}t          j        t          j        |                    )S rd   )rQ   isnansumri   s     r]   rl   z _chk_weights.<locals>.<listcomp>   s*    888ABHRVAYY''888r_   Tc              3   b   K   | ]*\  }}|rt           j                            |          n|V  +d S rs   rQ   r   masked_invalid)rj   rk   has_nans      r]   ru   z_chk_weights.<locals>.<genexpr>   s\       D D)q' 7>D25//2221 D D D D D Dr_   r   c              3   F   K   | ]}j         |j                  fk    V  d S rs   shape)rj   rk   r|   weightss     r]   ru   z_chk_weights.<locals>.<genexpr>   s3      AAQw} 00AAAAAAr_   z*weights shape must match arrays along axiszweights cannot be negativec              3   F   K   | ]}t          j        |           V  dS )r   N)rQ   take)rj   rk   r|   pos_weightss     r]   ru   z_chk_weights.<locals>.<genexpr>   s4      NN!271k===NNNNNNr_   ro   )r}   anyrx   ziprQ   rh   onesr   _freq_weights_weight_maskedry   rz   nonzerosize)rw   r   r|   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedhas_nansr   s    ``         @r]   _chk_weightsr      sN   
 &t,,,E":uRyLFD'=,= R[ RQQ&QQQQQ D88888x== 	DK M D D-0-B-BD D D D DF -((	 ('&)/$/00$'' )(( 8 $77AAAAA&AAAAA GEFFF 7gk&&(( 75666 +j1--a0gl**NNNNNvNNNNNFk*G W\..00 WdO##r_   c                     | | S |                      t                    }| |k                                    rt          d| z            |S )Nz2frequency (integer count-type) weights required %s)astypeintr   rz   )r   int_weightss     r]   r   r      sR    ..%%K;##%% YMPWWXXXr_   c                    dt          j        |          }| D ]}t           j                            |          }|t           j        j        u r5|j        dk    rCt          fdt          |j                  D                       }|                    |          }|d|	                    t                    z
  z  }|S )Nr   ro   c              3   (   K   | ]}|k    |V  d S rs   rd   )rj   ir|   s     r]   ru   z!_weight_masked.<locals>.<genexpr>   s'      CC1dQCCr_   r   )rQ   rh   r   r   r   rp   rx   r{   r   r   r   )rw   r   r|   rk   	axis_masknot_axess     `   r]   r   r      s    |mG$$G - -EMM!$$	$$6A::CCCCafCCCCCH!844I1y'',,,,Nr_   c                 2  	
 d | D             } t          j        |t           j                  }t           j                            |          }d 	| d         j                 
t          
fd| D                       s
J d            t          t          |          
z            D ]i}|	                    
|z             |         }|
                                }||z  |<   t          j        |d|z
  |z            }	fd| D             } j| |fS )	Nc                     g | ]G}t          j        |j        t           j                  r|                    t           j                  n|HS rd   )rQ   
issubdtyper?   integerr   float64)rj   arrs     r]   rl   z_rand_split.<locals>.<listcomp>   sS     * * * )+ci(L(L cjj$$$* * *r_   r>   c                      t          j        t          j         |                    }|                     fdt	           j                  D                       S )Nr   c                 :    g | ]}|k    rj         |         nd S rn   r   )rj   r   rk   r|   s     r]   rl   z/_rand_split.<locals>.mytake.<locals>.<listcomp>   s;     7 7 7#$ ./$YYqwqzzA 7 7 7r_   )rQ   rh   r   reshaper{   rp   )rk   ixr|   records   ` ` r]   mytakez_rand_split.<locals>.mytake   sm    rwq"488899~~ 7 7 7 7 7(-af7 7 7 8 8 	8r_   r   c              3   :   K   | ]}|j                  k    V  d S rs   r   )rj   rk   r|   n_obss     r]   ru   z_rand_split.<locals>.<genexpr>   s.      66!qwt}%666666r_   z#data must be aligned on sample axis      ?c           
      V    g | ]%}t          j        | |                      &S r   rQ   append)rj   rk   r|   r   split_ixs     r]   rl   z_rand_split.<locals>.<listcomp>   sR     8 8 8+, )Avva===!%' ' ' 8 8 8r_   )rQ   arrayr   randomRandomStater   ry   r{   r   randintrandr   )rw   r   r|   	split_perseedseeded_randr   prev_wqr   r   r   s     `      @@@r]   _rand_splitr      sa   * *"(* * *F hwbj111G)''--K8 8 8
 1IOD!E66666v66666]]8]]]63y>>E)** 8 8&&uqy11"J)Gb1f%6778 8 8 8 8 8068 8 87?r_   h㈵>atolc                     | S rs   rd   xs    r]   <lambda>r      s     r_   c                 T    ||           } ||          }	 t          j        ||k                                              r |||           d S d S # t          $ r  |||           Y d S t          t
          f$ r, t          ||          D ]\  }}t          |||           Y d S w xY w)N)compare_assert)rQ   r   r   AttributeError	TypeErrorrz   r   _rough_check)	rk   br   keywcheck_acheck_ba_ib_is	            r]   r   r      s   c!ffGc!ffGB8Gw&''++-- 	-N7G,,,,,	- 	- ) ) )w((((((z" B B BGW-- 	B 	BHCc.AAAAA	B 	B 	BBs   6A B'+8B'&B'   c                     | S rs   rd   r   s    r]   r   r     s    1 r_   r   r   c                 |    	
 t                     	 
fd            }|S )zruns fn on its arguments 2 or 3 ways, checks that the results are the same,
       then returns the same thing it would have returned beforec                      | i |}| d          }| d          }|                     $d           }|                     d          t          ||dd          }|d d         |d         |d         c}}#rd |D             }	 t          |          |z   } r||$<   t          | | i |           rp|dz  |$<   t          | | i |           |d	z  |$<   	 t          | | i |           n.# t          $ r!} t          |          |||f          |d }~ww xY wrt          ||!
          \  }}	||	d |j        <   d|	|j        d <   t          |          |z   }
|	|$<   t          | |
i |           |D ]O}t          d           g|j	        z  }t          |j        d           |<   t          |          }||         dz  ||<   Pt          |          |z   }
t          | |
i |           |D ]Y}t          d           g|j	        z  }t          |j        d           |<   t          |          }||         t          j        z  ||<   Z|                     dd           dk    r,r*t          |          |z   }
t          | |
i |           rUd |D             }t          |          |z   }
t          | |
i |           rd |$<   t          | |
i |           ~~
~	rXfd|D             }t          j        ||          dz  }t          |          |z   }||$<   t          | |i |           ~~~"rL!dk    rFt          ||!
          \  }}t          |          |z   }||$<   t          | |i |           n7# t          $ r*} st          j        j        d|           Y d }~nd }~ww xY w|S )Nr|   T)r   r|   r   r   r   c                 Z    g | ](}t          j        |                                          )S rd   )rQ   rt   squeezeri   s     r]   rl   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>  s*    AAAQbmAIIKK00AAAr_   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitc                 L    g | ]!}t           j                            |          "S rd   r   ri   s     r]   rl   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>G  s(    !N!N!Na"%"6"6q"9"9!N!N!Nr_   c                 >    g | ]}t          j        ||           S r   r   )rj   rk   r|   s     r]   rl   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>Q  s*    IIIQbi14888IIIr_          @z NotImplemented weights: )getr   rx   r   	Exceptiontyper   r   slicerp   rQ   nanr   NotImplementedErrorwarningswarn__name__)%argskwargsresultrw   restr   r   e
dud_arraysdud_weightsdud_argsrk   indexer
dup_arraysdup_weightsdup_argssplit_arrayssplit_weights
split_argsr|   
const_testdefault_axisdud_testdup_testrY   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args%                      @r]   wrappedz _weight_checked.<locals>.wrapped  sJ   T$V$$gvgFGG}**Z..zz&,//VW4taefff %crc
E"IuRy 	BAA&AAAFF	R==4'D C%,z"VRR%8%8%8cBBBB ?%,u_z"VRR%8%8%8cBBBB%,u_z"? T)<V)<)<#FFFFF  ? ? ?!$q''1fg"677Q>?  !6*5fgtW`gk*l*l*l'
K-4MW\M*-.GLMM* ,,t3%0z"VRR%<V%<%<#FFFF# 2 2A$T{{maf4G$)',$=$=GDM#GnnG!"7c!1AgJJ ,,t3VRR%<V%<%<#FFFF# 5 5A$T{{maf4G$)',$=$=GDM#GnnG!"7bf!4AgJJ::lD11V;;;$Z0047H X)@)@)@cJJJJ O!N!N:!N!N!NJ$Z0047H X)@)@)@cJJJJ# O-1z*$VRR-DV-D-D#NNNN+  6IIII&III
 i99C? ,,t3%0z"VRR%<V%<%<#FFFFj+  Ii!mm.9&'4[dko.p.p.p+m"<0047
%2z"VRR%>v%>%>CHHHH" 	R 	R 	R  RaaPQQQ		R
 s>   	AN. %C> =N. >
D)D$$D))JN. .
O"8 OO")r   )rY   r
  r  r   r  r   r  r  r  r  r  r  r  r	  r  r   r   r   r  s   `````````````````  r]   _weight_checkedr    s     2YYT T T T T T T T T T T T T T T T T T T T YTj Nr_   ro   )r  r   )r  r   r  )r  r   r
  )r  r   r  r
  )r  )r  c                       e Zd Zd Zd Zd Zej                            dddddd	d
de	j
        g          d             Zd Zd Zd ZddZd Zd Zd Zd Zd ZdS )	TestCdistc                    g d| _         t          j        t          j        t          j        t          j        gt          j        t          j        t          j        gt          j        t          j        gt          j        gd| _        d S N)rF   rG   rH   rE   rD   )boolrX   r   rV   rnd_eo_namesrQ   rX   rW   rV   r=   valid_upcastsselfs    r]   setup_methodzTestCdist.setup_method  d    1 1 1 (*wRY&O')w
BI&F&(j")%<*,)6 6r_   c           
      8   dd}g dg dg dg}g dg dg d	g}d
t          j        d          d}d
gdz  }t          D ]%}t           j                                        5 }|dk    r|                    t          d           t          t          t          ||fd|i| t          t          t          ||fdt          |          i| t          t          t          ||fdd|z   i| t          t          t          ||g|R d|i t          t          t          ||g|R dt          |          i t          t          t          ||g|R dd|z   i d d d            n# 1 swxY w Y   't          t          t          |||           t          t          t          |||g|R   t          t          t          |||fi | t          t          t          |||dd           t          t          t          |||ddd           t          t          t          |||ddd           t          t          t          |||dd           t          t          t          |||d           t          t          t          |||ddd           t          t          |||dd          d           d S )Nro   r   c                     ||z   |z   S rs   rd   r   yargkwargkwarg2s        r]   
_my_metricz3TestCdist.test_cdist_extra_args.<locals>._my_metric      ;''r_   r   r         @333333?ffffff@333333@皙@r+  皙@)g      @      @g       @)g      @333333@g @)g      @r1  r/  Q	@   N0tV4l1D_p4raMr      r#   "Kulsinski has been deprecated frommetrictest_r.  ffffff
@r#  r$  r#  皙?r8  r"  r$  皙@ro   r   )rQ   aranger   testingsuppress_warningsfilterDeprecationWarningassert_raisesr   r   evalr   )r  r%  X1X2r   r   r8  sups           r]   test_cdist_extra_argszTestCdist.test_cdist_extra_args  s   	( 	( 	( 	( llOOO___=llOOO___=$(bill;;v|$ 	> 	>F--// >3[((JJ1CE E EiB 7 7%+7/57 7 7iB = =%)&\\=5;= = =iB A A%,v%5A9?A A AiB 4.24 4 4%+4 4 4iB :48: : :%)&\\: : :iB >8<> > >%,v%5> > >> > > > > > > > > > > > > > >" 	iB
;;;iB
BTBBBBiB
EEfEEEiB
	- 	- 	- 	-iB
AqLLLLiB
CcJJJiB
CEEEiB
C@@@iB
C	- 	- 	- 	- 	b"Z"%c3 3 347	9 	9 	9 	9 	9s    C-EE	 E	c                     d}t           d         }t           d         }t          ||d          }t          ||d          }t          |||t          dk               d S )NV瞯<cdist-X1cdist-X2r   test_euclideanr   rtolr   rS   wcdist_no_constr   r   )r  epsrH  rI  Y1Y2s         r]   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  s]    
^
^R[11R%566BS'A+>>>>>>r_   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t           d         }t           d         }t          ||d|          }t          ||d|          }t          ||d|t          dk    	           d S )
NvIh%<=rN  rO  r&   rY  test_minkowskir   r   )r   rR  r   rS  )r  rY  rU  rH  rI  rV  rW  s          r]   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sk     
^
^R[A666R%5;;;BQS'A+FFFFFFr_   c                    d}t           d         }t           d         }t          ||d          }d }dt          j        | ||          z  | ||          z  j                  z
  }t          |||t          dk               d S )	N+=rN  rO  r   c                 l    t           j                            | d                              dd          S )Nro   r   r   )rQ   linalgr   r   )Xs    r]   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s*    9>>!!>,,44R;;;r_   ro   r   rQ  )rS   wcdistrQ   dotTr   r   )r  rU  rH  rI  rV  rg  rW  s          r]   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  s    
^
^BH%%	< 	< 	< eeBii2b		>*<===BS'A+>>>>>>r_   c                 Z   t          j        dgdgg          }t          j        dgdgg          }t          ||d          }t          |dt          j        d          gt          j        d          t          j        d          gg           t          j        d	d	gd
d	gg          }t          j        d	dgdd	gd	dgg          }t          ||d          }t          j        d          }t          ||||gdd|z  dgg           t          t          t          d	dggddggd           d S )Nr   r3     r%   r8                @      ?r   r   ro   r   )rQ   r   r   r   sqrtrF  rz   )r  x1x2distrt2s        r]   test_cdist_mahalanobisz TestCdist.test_cdist_mahalanobis  sA   XsQCj!!XsQCj!!RM222RWS\\2RWS\\271::4NOPPP X1vAw'((X1v1v2w/00RM222gajjS#AGQ@AAA 	jq!fXAx	G 	G 	G 	G 	G 	Gr_   c                      G d d          fd}t          j                     ggt                    }t          |||          }d}t	          ||t
          dk               d S )	Nc                       e Zd ZdS )6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   
__module____qualname__rd   r_   r]   myclassrz            Dr_   r~  c                 ~    t          | d                   rt          |d                   st          d          dS Nr   zType has been changed+?
isinstancerz   r   r!  r~  s     r]   r%  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric  B    adG,, :JqtW4M4M : !89995r_   r>   rn  r  r   r   )rQ   r   objectr   r	   r   )r  r%  rB   cdist_yright_yr~  s        @r]   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))V444d:666Wgw{;;;;;;r_   Hz>c                 <   	 t          ||fd|i|}t          ||fdt          |          i|}t          ||fdd|z   i|}t          |||t          dk               t          |||t          dk               d S # t          $ r}	|	j        }
t          dk    r#t          |
j                   t          |	           t          |
t           ||fd|i| t          |
t           ||fdt          |          i| t          |
t           ||fdd|z   i| Y d }	~	d S d }	~	ww xY wNr8  r9  r   rQ  )	r   rG  r   r   r   	__class__printr   rF  )r  rH  rI  r8  rU  r   y1y2y3r   e_clss              r]   _check_calling_conventionsz$TestCdist._check_calling_conventions  su   	Cr277f777Br2==d6ll=f==Br2AAg&6A&AAB BgkBBBBBgkBBBBBB  	S 	S 	SKE{{en%%%a%BHHvHHHH%BNNtF||NvNNN%BRRw7GR6RRRRRRRRR	Ss   A A< <
DB
DDc                    | j         D ]}t          |         d d dd d df         }t          |         dd dd d df         }t          D ]}t          dk    rt	          d|d|           |dv rd|vr)t
          j                                        5 }|d	k    r|                    t          d
           | 
                    |||           d d d            n# 1 swxY w Y   |dk    ret          j        ||g                              t
          j                  }t          j        |dd          }| 
                    ||||           |dk    rt          j        ||g                              t
          j                  }t          j        t          j        |j                            }t          j        t
          j                            |          j                  }| 
                    ||||           d S )Nrm  r   ro   r   	testing:  with: >   r   r-   r#   r(   r$   r+   r*   r'   r  r#   r7  r)   r   r|   r   Vr%   VI)r  rS   r   r   r  rQ   rB  rC  rD  rE  r  vstackr   r=   var
atleast_2dcovrj  r   re  inv)	r  eo_namerH  rI  r8  rJ  X12r  r  s	            r]   test_cdist_calling_conventionsz(TestCdist.test_cdist_calling_conventions  s[    ( 	K 	KG GSSqS$$B$Y'BGQTT33Q3Y'B( K KQ;;+vy'BBB - - - 28w1F1FZ1133 Ds,,

#5#GI I I33BFCCC	D D D D D D D D D D D D D D D \)))RH--44RY??Cs333A33BFa3HHHH},,)RH--44RY??CbfSUmm44A")--"2"2"455B33BFr3JJJ3K	K 	Ks   9CCCc                    d}t           d         | j        d         ft           d         | j        d         ft           d         | j        d         ft           d         | j        d	         fg}t          D ]}|D ]}|d
         d d dd d df         }|d
         dd dd d df         }	 t          |||          }|d         D ]B}t           ||           ||          |          }	t	          ||	|t
          dk               C# t          $ rz}
|
j        }t
          dk    r#t          |j	                   t          |
           |d         D ]1} ||          } ||          }t          |t          |||           2Y d }
~
d }
~
ww xY wd S )Nr  rD   r  rH   rX   rG   r   rF   rV   r   rm  r   ro   r   rn  rQ  )rS   r  r   r   r   r   r   r  r  r   rF  )r  rU  testsr8  testrH  rI  r  new_typer  r   r  X1newX2news                 r]   test_cdist_dtype_equivalencez&TestCdist.test_cdist_dtype_equivalence+  s   '($*<V*DE'($*<V*DE&');E)BC*+T-?	-JKM % 	O 	OF O O!WSSqS$$B$Y'!WQTT33Q3Y'Or2f555B %)G O O"88B<<"fMMM'BS'A+NNNNNO ! Q Q QKE{{en---a$(G Q Q ( (%eUE5PPPPPQ Q Q Q QQO	O 	Os   %D
FA/FFc                    d}t           d         }t           d         }|j        d         |j        d         }}t          D ]}t                      }|dk    rd|d<   t	          j        ||ft          j                  }t          |||fi |}	t          |||fd	|i|}
t          |	|
|t          d
k               t          |
|u            t	          j        |dz
  |dz   ft          j                  }t          t          t          |||fd	|i| t	          j        d
|z  d
|z  ft          j                  d d d
d d d
f         }t	          j        ||ft          j        d          }t          t          t          |||fd	|i| t          t          t          |||fd	|i| t	          j        ||ft          j                  }t          t          t          |||fd	|i| d S )NrM  rN  rO  r   r&   r\  rY  r>   outr   rQ  ro   F)r?   order)rS   r   r   dictrQ   emptyr=   r   r   r   r   rF  rz   int64)r  rU  rH  rI  out_rout_cr8  r   out1rV  rW  out2out3out4out5s                  r]   test_cdist_outzTestCdist.test_cdist_outF  sl   
^
^x{BHQKu$ 	E 	EFVVF$$"s8UEN")<<<Dr2v0000Br2v::4:6::BBgkBBBBB$J8U1WeAg.bi@@@D*RE E59E=CE E E 8UAI&bi9 9 99<1cccCD8UEN")3GGGD*RE E59E=CE E E*RE E59E=CE E E 8UEN"(;;;D*RE E59E=CE E E E5	E 	Er_   c                    d}t           d         d d dd d df         }t           d         d d dd d df         }|                                }|                                }t          ||           t          ||           t          |j        j                    t          |j        j                    t          |j        j                   t          |j        j                   t          D ]U}t                      }|dk    rd|d<   t          |||fi |}t          |||fi |}	t          ||	|t          dk               Vd S )	NrM  rN  r   rO  r&   r\  rY  rQ  )rS   copyr	   r   flagsc_contiguousr   r  r   r   r   )
r  rU  rH  rI  X1_copyX2_copyr8  r   rV  rW  s
             r]   test_stridingzTestCdist.test_stridingj  s]    
^CCaC1H%
^CCaC1H%''))'')) 	R!!!R!!!BH))***BH))****+++*+++$ 	C 	CFVVF$$"sr2v0000Bw::6::BBgkBBBBB	C 	Cr_   c                 p   t           D ]}t          j                            dd          }t          j                            dd          }t	                      }|dk    rd|d<   t          ||fd|i|}d |||fD             }~~~t          rt                       t          d |D                       sJ d S )N
   r&   r\  rY  r8  c                 6    g | ]}t          j        |          S rd   )weakrefref)rj   vs     r]   rl   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>  s     ???AQ???r_   c              3   .   K   | ]} |            d u V  d S rs   rd   )rj   weak_refs     r]   ru   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s-      DDhxxzzT)DDDDDDr_   )	r   rQ   r   r   r  r   r   r   ry   )r  r8  rs  rt  r   r  	weak_refss          r]   test_cdist_refcountzTestCdist.test_cdist_refcount  s    $ 	E 	EFB''BB''BVVF$$"sB88v888C @?"b#???IB DD)DDDDDDDDD#	E 	Er_   Nr  )r   r|  r}  r  rK  rX  pytestmarkparametrizerQ   infra  rk  rw  r  r  r  r  r  r  r  rd   r_   r]   r  r    s5       6 6 6*9 *9 *9X? ? ? [S3c4#&S"&#: ; ;G G; ;G? ? ?G G G$< < <C C C C$"K "K "KHO O O6"E "E "EHC C C6E E E E Er_   r  c            	       B   e Zd Zd Zd Zd Zd Zd Zd Ze	j
        j        d             Ze	j
        j        d             Ze	j
        j        d	             Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Ze	j
        j        d             Ze	j
        j        d             Ze	j
        j        d             Zd Zd Zd Zd Ze	j
        j        d             Ze	j
        j        d             Z e	j
        j        d             Z!d Z"d Z#d Z$e	j
        j        d              Z%e	j
        j        d!             Z&e	j
        j        d"             Z'e	j
        (                    d#d$d%d&d'd(e)j*        g          d)             Z+d* Z,d+ Z-d, Z.e	j
        j        d-             Z/e	j
        j        d.             Z0e	j
        j        d/             Z1e	j
        j        d0             Z2e	j
        j        d1             Z3e	j
        j        d2             Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]e	j
        j        d\             Z^d] Z_d^ Z`dfd`Zada Zbdb Zcdc Zddd ZedeS )g	TestPdistc                    g d| _         t          j        t          j        t          j        t          j        gt          j        t          j        t          j        gt          j        t          j        gt          j        gd| _        d S r  r  r  s    r]   r  zTestPdist.setup_method  r  r_   c           	         dd}ddgddgddgg}d	t          j        d          d
}d	gdz  }t          D ]}t           j                                        5 }|dk    r|                    t          d           t          t          t          |fd|i| t          t          t          |fdt          |          i| t          t          t          |fdd|z   i| t          t          t          |g|R d|i t          t          t          |g|R dt          |          i t          t          t          |g|R dd|z   i d d d            n# 1 swxY w Y   !t          t          t          ||           t          t          t          ||g|R   t          t          t          ||fi | t          t          t          ||dd           t          t          t          ||ddd           t          t          t          ||ddd           t          t          t          ||dd           t          t          t          ||d           t          t          t          ||ddd           t          t          ||dd          d           d S )Nro   r   c                     ||z   |z   S rs   rd   r   s        r]   r%  z3TestPdist.test_pdist_extra_args.<locals>._my_metric  r&  r_   r   r   r*  r+  r.  r2  r4  r6  r#   r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  )rQ   rA  r   rB  rC  rD  rE  rF  r   r   rG  r   )r  r%  rH  r   r   r8  rJ  s          r]   test_pdist_extra_argszTestPdist.test_pdist_extra_args  s3   	( 	( 	( 	( 2hc
S#J/$(bill;;v|$ 	> 	>F--// >3[((JJ1CE E EiLL6LVLLLi = =%)&\\=5;= = =i A A%,v%5A9?A A AiIDIII6IIIiO$OOO4<<OOOi >8<> > >%,v%5> > >> > > > > > > > > > > > > > > 	iJ777iJ>>>>>iJAA&AAAiJ	- 	- 	- 	-iJ1CHHHHiJS#FFFiJSAAAiJ<<<iJ	- 	- 	- 	- 	b"%c3 3 347	9 	9 	9 	9 	9s   C'EE	E	c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  pdist-double-inppdist-euclideanr   rR  rS   wpdist_no_constr   r  rU  rf  Y_rightY_test1s        r]   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random  G    !"&'!![11s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S r  r  r  s        r]   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u  r  r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  rQ   rV   rS   r  r   r  s        r]   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32  sQ    Jr,-..&'!![11s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  rP  r  r  r  rU  rf  r  Y_test2s        r]    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC  sH    !"&'!!%566s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  irispdist-euclidean-irisr   r  r  r  s        r]    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double  sE    vJ+,!![11s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r  r   r   rQ  rQ   rV   rS   r  r   r   r  s        r]   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32  U    Jr&z""+,!![11sGaKHHHHHHr_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  rP  r  r  r  s        r]   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonC  sH     vJ+,!!%566s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclideanr)   r  rS   r   r   r  s        r]   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_random  sG    !"'(<((s333333r_   c                    d}t          j        t          d                   }t          d         }t          |d          }t	          |||           t          j        |dd          }t          |d|	          }t	          |||           d S )
Nr  r  r  r)   r  r   ro   r  r  )rQ   rV   rS   r   r   r  )r  rU  rf  r  r  r  r  s          r]   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float32
  s    Jr,-..'(<((s3333 F111%%%<1---s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_seuclideanr  r  r  s        r]   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonC  sH    !"'(,--s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclidean-irisr)   r  r  r  s        r]   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_iris  sE    vJ,-<((s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S )Nr   r  r  r)   r  )rQ   rV   rS   r   r   r  s        r]   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32%  sO    Jr&z"",-<((s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  r  r  r  r  s        r]   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonC-  sH     vJ,-,--s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cosiner   r  rS   wpdistr   r  s        r]   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_random6  sF    !"^$H%%s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  rQ   rV   rS   r  r   r  s        r]    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32=  sP    Jr,-..^$H%%s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r	  test_cosiner  r
  r  s        r]   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonCD  sF    !"^$M**s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  pdist-cosine-irisr   r   r
  r  s        r]   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_irisL  sE    vJ()H%%s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r  r   r   r   r   )rQ   rV   rS   r  r   r   r  s        r]   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32T  sU    Jr&z""()H%%sGaKHHHHHHr_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  r  r  r   r
  r  s        r]   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC\  sE    vJ()M**s333333r_   c                    t          j        t           j                            d                              d                    }t          j        ||g          }t          t          |d          d         dk    d           d S )Ni9  [   r   r   z&cosine distance should be non-negativemsg)rQ   absr   r   r   r  r   r  )r  r   rf  s      r]   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_boundsd  s~     F29((..33B7788Iq!fq(##A&!+<	> 	> 	> 	> 	> 	>r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cityblockr   r  r  r  s        r]   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_randomm  sG    !"&'!![11s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r"  r  r  s        r]   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32t  sQ    Jr,-..&'!![11s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r#  test_cityblockr  r  r  s        r]    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC{  sH    !"&'!!%566s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrc  r  pdist-cityblock-irisr   r  r  r  s        r]   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  sE    vJ+,!![11s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r+  r   r   rQ  r  r  s        r]   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrc  r  r+  r(  r  r  r  s        r]   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  sH     vJ+,!!%566s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-correlationr   r  r
  r  s        r]   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  sG    !"()M**s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r2  r  r  s        r]   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  sQ    Jr,-..()M**s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r3  test_correlationr  r
  r  s        r]   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  sH    !"().//s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-correlation-irisr   r  r
  r  s        r]   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  sE    vJ-.M**s333333r_   c                     d}t           d         }t          j        t           d                   }t          |d          }t	          |||t
          dk               d S )Nr  r  r;  r   r   rQ  )rS   rQ   rV   r  r   r   r  s        r]   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sU    vJ*R 89::M**sGaKHHHHHHr_   c                     t           j        dk    rd}nt          j        d           t          d         }t          d         }t          |d          }t          |||           d S )Nl        r  zsee gh-16456r  r;  r8  r  )sysmaxsizer  skiprS   r  r   r  s        r]    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  se    ;CCK'''vJ-..//s333333r_   rY  rZ  r[  r   r   皙	@c                     d}t           d         }t          |d|          }t          |d|          }t          ||d|           d S )Nr^  r  r&   r_  r`  r   )r   rR  r  )r  rY  rU  rf  rV  rW  s         r]   test_pdist_minkowski_random_pz'TestPdist.test_pdist_minkowski_random_p  sX    !"Qq111Q 0A666BQS111111r_   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S Nr  r  pdist-minkowski-3.2r&   rD  r_  r  r  r  s        r]   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random  sL    !"*+!![C888s333333r_   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S rH  r  r  s        r]   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32  sV    Jr,-..*+!![C888s333333r_   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rI  r`  rD  r_  r  r  r  s        r]    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC  sM    !"*+!!%5===s333333r_   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-3.2-irisr&   rD  r_  r  r  r  s        r]   test_pdist_minkowski_3_2_irisz'TestPdist.test_pdist_minkowski_3_2_iris  J    vJ/0!![C888s333333r_   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S )Nr   r  rP  r&   rD  r_  r  r  r  s        r]   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32  sT    Jr&z""/0!![C888s333333r_   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rP  r`  rD  r_  r  r  r  s        r]   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonC  K    vJ/0!!%5===s333333r_   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-5.8-irisr&   r1  r_  r  r  r  s        r]   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_iris  rR  r_   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||t
          dk               d S )	Nr   r  rY  r&   r1  r_  r   rQ  r  r  s        r]   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float32	  sZ    Jr&z""/0!![C888sGaKHHHHHHr_   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rY  r`  r1  r_  r  r  r  s        r]   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonC  rW  r_   c                 r   t          j        g d                              dd          }t          |d          }t	          |dt          j        d          t          j        d          t          j        d          t          j        d          t          j        d	          g           t          j        d
d
gdd
gd
dgdd
gd
dgg          }t          |d          }t          j        d          }t	          |||||dd|z  ddd|z  dg
           t          t          t          d
dgddggd           d S )N)r   r   r(  r0  r   ro   r%   rn  ro  rq  rp  r   r   r   r   r3  )	rQ   r   r   r   r   rr  rF  rz   r  )r  r   ru  rv  s       r]   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobis  sG   H)))**222q99Q}---sBGCLL"'#,,!ws||RWS\\273<<I 	J 	J 	J Hq!fr1g1v1v2w?@@Q}---gajjsCc1a#gq!QWaPQQQ 	j1v1v.}	F 	F 	F 	F 	F 	Fr_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S NrM  rC   pdist-hammingr    r  r
  r  s        r]   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_random*  sF    "#_%I&&s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rb  r  r  s        r]   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float321  P    Jr-.//_%I&&s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S NrM  rC   rc  test_hammingr  r
  r  s        r]   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonC8  sF    "#_%N++s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rb  rQ   r   rS   r  r   r  s        r]   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_random?  rg  r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rb  r  r  s        r]   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32F  rg  r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S ri  rm  r  s        r]   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonCM  sP    Jr-.//_%N++s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S N:0yE>rC   pdist-jaccardr!   r  r
  r  s        r]   test_pdist_jaccard_randomz#TestPdist.test_pdist_jaccard_randomT  sF    "#_%I&&s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rt  r  r  s        r]   !test_pdist_jaccard_random_float32z+TestPdist.test_pdist_jaccard_random_float32[  P    Jr-.//_%I&&s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nru  rC   rv  test_jaccardr  r
  r  s        r]   test_pdist_jaccard_random_nonCz(TestPdist.test_pdist_jaccard_random_nonCb  sF    "#_%N++s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rt  rm  r  s        r]   test_pdist_djaccard_randomz$TestPdist.test_pdist_djaccard_randomi  rz  r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rt  r  r  s        r]   "test_pdist_djaccard_random_float32z,TestPdist.test_pdist_djaccard_random_float32p  rz  r_   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )NrM  rm  r3  r!   r  r  r   rQ   zerosr   r  rU  Ys      r]   test_pdist_djaccard_allzerosz&TestPdist.test_pdist_djaccard_allzerosw  sC    "(6""I..ac222222r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r|  rm  r  s        r]   test_pdist_djaccard_random_nonCz)TestPdist.test_pdist_djaccard_random_nonC|  sP    Jr-.//_%N++s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ndy=r  pdist-jensenshannonr"   r  r  r  s        r]   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  sG    !"*+?++s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nru  r  r  r"   r   rQ  rQ   rV   rS   r   r   r   r  s        r]   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sW    Jr,-..*+?++sGaKHHHHHHr_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_jensenshannonr  r  r  s        r]   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  sH    !"*+/00s333333r_   c                     t                      rd}nd}t          d         }t          d         }t          |d          }t          |||           d S )Ng&.=g-q=r  pdist-jensenshannon-irisr"   r   )re   rS   r   r   r  s        r]   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  sX    ;; 	CCCvJ/0?++s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Ngư>r  r  r"   r   r  r  r  s        r]   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sU    Jr&z""/0?++sGaKHHHHHHr_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ng-C6
?r  r  r  r  r  r  s        r]   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  sF    vJ/0/00s333333r_   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )NrM  r  r}  r  r  r  r  s      r]   !test_pdist_djaccard_allzeros_nonCz+TestPdist.test_pdist_djaccard_allzeros_nonC  sC    "(6""N33ac222222r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nru  r  pdist-chebyshevr   r  r  r  s        r]   test_pdist_chebyshev_randomz%TestPdist.test_pdist_chebyshev_random  sG    !"&';''s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr  r  r  r   r   rQ  r  r  s        r]   #test_pdist_chebyshev_random_float32z-TestPdist.test_pdist_chebyshev_random_float32  sW    Jr,-..&';''sGaKHHHHHHr_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nru  r  r  test_chebyshevr  r  r  s        r]    test_pdist_chebyshev_random_nonCz*TestPdist.test_pdist_chebyshev_random_nonC  sH    !"&'+,,s333333r_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrc  r  pdist-chebyshev-irisr   r  r  r  s        r]   test_pdist_chebyshev_irisz#TestPdist.test_pdist_chebyshev_iris  sE    vJ+,;''s333333r_   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r  r   r   rQ  r  r  s        r]   !test_pdist_chebyshev_iris_float32z+TestPdist.test_pdist_chebyshev_iris_float32  sU    Jr&z""+,;''sGaKHHHHHHr_   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrc  r  r  r  r  r  r  s        r]   test_pdist_chebyshev_iris_nonCz(TestPdist.test_pdist_chebyshev_iris_nonC  sF    vJ+,+,,s333333r_   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S Nro   r   ro   ro   r   ro   ro   r   ro   ro   r>   333333?r   绽|=rR  r   	wmatchingrQ   r   r  r   r  mm2s      r]   test_pdist_matching_mtica1z$TestPdist.test_pdist_matching_mtica1  s    bh//h//1 1rxt<<<xt<<<> >3QU3333Cae444444r_   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S Nro   r   ro   ro   ro   r   r>   UUUUUU?r   r  r  r  r  s      r]   test_pdist_matching_mtica2z$TestPdist.test_pdist_matching_mtica2  s    bhyyy))Xiii((* *rx			666hyyy5557 75qu5555E666666r_   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S r  wjaccardrQ   r   r  r   r  s      r]   test_pdist_jaccard_mtica1z#TestPdist.test_pdist_jaccard_mtica1  s    RXooo..Xooo..0 0bhd;;;hd;;;= =3QU3333Cae444444r_   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S r  r  r  s      r]   test_pdist_jaccard_mtica2z#TestPdist.test_pdist_jaccard_mtica2  s    RXiii((Xiii((* *bhyyy555hyyy5557 75qu5555E666666r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )Nr  r  r>   r   r   r  r  wyulerQ   r   r  r   r  r   r  s      r]   test_pdist_yule_mtica1z TestPdist.test_pdist_yule_mtica1  s    "(???++(???++- -28OOO48888OOO4888: :Q;;!HHH1151111AAE222222r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )Nr  r  r>   r   r   r  r  r  r  s      r]   test_pdist_yule_mtica2z TestPdist.test_pdist_yule_mtica2  s    "(999%%(999%%' '28IIIT2228IIIT2224 4Q;;!HHH1151111AAE222222r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  r>   r   g۶m۶m?r   r  r  wdicerQ   r   r  r   r  r   r  s      r]   test_pdist_dice_mtica1z TestPdist.test_pdist_dice_mtica1  s    "(???++(???++- -28OOO48888OOO4888: :Q;;!HHH5qu5555E666666r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  r>   r   rq  r   r  r  r  r  s      r]   test_pdist_dice_mtica2z TestPdist.test_pdist_dice_mtica2!  s    "(999%%(999%%' '28IIIT2228IIIT2224 4Q;;!HHH3QU3333Cae444444r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S 	Nr  r  r>   r   g      ?r   r  r  )r+   rQ   r   r  r   r  r   r  s      r]   test_pdist_sokalsneath_mtica1z'TestPdist.test_pdist_sokalsneath_mtica1+      11113 3///>>>///>>>@ @Q;;!HHH5qu5555E666666r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S 	Nr  r  r>   r   g?r   r  r  )wsokalsneathrQ   r   r  r   r  r   r  s      r]   test_pdist_sokalsneath_mtica2z'TestPdist.test_pdist_sokalsneath_mtica25  s    ))),,))),,. ."(999D999(999D999; ;Q;;!HHH5qu5555E666666r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S r  wrogerstanimotorQ   r   r  r   r  r   r  s      r]    test_pdist_rogerstanimoto_mtica1z*TestPdist.test_pdist_rogerstanimoto_mtica1?  s    BH___55H___557 7RXoooTBBBXoooTBBBD DQ;;!HHH5qu5555E666666r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S r  r  r  s      r]    test_pdist_rogerstanimoto_mtica2z*TestPdist.test_pdist_rogerstanimoto_mtica2I  s    BHYYY//HYYY//1 1RXiiit<<<Xiiit<<<> >Q;;!HHH5qu5555E666666r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  r>   r   r  r   r  r  wrussellraorQ   r   r  r   r  r   r  s      r]   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica1S  r  r_   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  r>   r   r  r   r  r  r  r  s      r]   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2]  s    ++++- -)))4888)))4888: :Q;;!HHH5qu5555E666666r_   c                     t           d         }t          dk    rt          |j        |j                   d}t          |d          }t          |d          }t          |||t          dk               d S )Nr  r   rM  r   test_canberrarQ  )rS   r   r  r   r?   r  r   )r  DrU  r  r  s        r]   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_matchg  sl    vJQ;;!'17###Q
++Q00BS'A+>>>>>>r_   c                 n    d}t          dgdgfd          }d}t          |||t          dk               d S )Nru  r:  r,  r   gd>@1?r   r  )r  r   r   )r  rU  pdist_yr  s       r]   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_711q  sF     !C53%.*==sGaKHHHHHHr_   c                      G d d          fd}t          j                     g             ggt                    }t          ||          }d}t	          ||t
          dk               d S )	Nc                       e Zd ZdS )6TestPdist.test_pdist_custom_notdouble.<locals>.myclassNr{  rd   r_   r]   r~  r  {  r  r_   r~  c                 ~    t          | d                   rt          |d                   st          d          dS r  r  r  s     r]   r%  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metric~  r  r_   r>   rn  r  r   r  )rQ   r   r  r   r	   r   )r  r%  rB   r  r  r~  s        @r]   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdoubley  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))wwyyk2&AAAZ000Wgw{;;;;;;r_   r  c                 0   	 t          |fd|i|}t          |fdt          |          i|}t          |fdd|z   i|}t          |||t          dk               t          |||t          dk               d S # t          $ r}|j        }	t          dk    r#t          |	j                   t          |           t          |	t           |fd|i| t          |	t           |fdt          |          i| t          |	t           |fdd|z   i| Y d }~d S d }~ww xY wr  )	r   rG  r   r   r   r  r  r   rF  )
r  rf  r8  rU  r   r  r  r  r   r  s
             r]   r  z$TestPdist._check_calling_conventions  si   	Cq222622Bq88f888Bq<<6!1<V<<B BgkBBBBBgkBBBBBB  	N 	N 	NKE{{en%%%a%CC&CFCCC%II$v,,I&III%MM'F2BMfMMMMMMMMM	Ns   =A9 9
DBDDc           	      p   | j         D ]}t          |         d d dd d df         }t          D ]}t          dk    rt	          d|d|           |dv rd|vr)t
          j                                        5 }|dk    r|                    t          d           | 
                    ||           d d d            n# 1 swxY w Y   |d	k    rMt          j        |                    t
          j                  d
d          }| 
                    |||           |dk    rt          j        t          j        |                    t
          j                  j                            }t          j        t
          j                            |          j                  }| 
                    |||           d S )Nrm  r   r  r  >	   r   r-   matchingr#   r(   r$   r+   r*   r'   r  r#   r7  r)   r   ro   r  r  r%   r  )r  rS   r   r   r  rQ   rB  rC  rD  rE  r  r  r   r=   r  r  rj  r   re  r  )r  r  rf  r8  rJ  r  r  s          r]   test_pdist_calling_conventionsz(TestPdist.test_pdist_calling_conventions  s    
 ( 	F 	FG 7CCaC1H%A( F FQ;;+vy'BBB - - - 28w1F1FZ1133 ?s,,

#5#GI I I33Av>>>	? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \))qxx	22CCCA33Av3CCCC},,bfQXXbi-@-@-B&C&CDDA")--"2"2"455B33Av"3EEE-F		F 	Fs   48B88B<?B<c           
         d}t           d         | j        d         ft           d         | j        d         ft           d         | j        d         ft           d         | j        d	         fg}t          D ]}|D ]}|d
         d d dd d df         }	 t          ||          }|d         D ]8}t           ||          |          }t	          |||t
          dk               9l# t          $ rm}	|	j        }
t
          dk    r#t          |
j	                   t          |	           |d         D ]%} ||          }t          |
t          ||           &Y d }	~	d }	~	ww xY wd S )Nr  rD   r  rH   rX   rG   r   rF   rV   r   rm  r   rn  ro   rQ  )rS   r  r   r   r   r   r   r  r  r   rF  )r  rU  r  r8  r  rH  r  r  r  r   r  rI  s               r]   test_pdist_dtype_equivalencez&TestPdist.test_pdist_dtype_equivalence  s   '($*<V*DE'($*<V*DE&');E)BC*+T-?	-JKM % 	O 	OF O O!WSSqS##A#X&Or&111B %)G O O"88B<<???'BS'A+NNNNNO ! G G GKE{{en---a$(G G G%Xb\\%eUBvFFFFFG G G G GG	O	O 	Os   C  
E*A#EEc                 .   d}t           d         d d dd d df         }t          |j        d         |j        d         dz
  z  dz            }t          D ]@}t	                      }|dk    rd|d	<   t          j        |t
          j        
          }t          ||fi |}t          ||fd|i|}t          |||           t          ||u            t          j        |dz   t
          j        
          }	t          t          t          ||fd|	i| t          j        d|z  t
          j        
          d d d         }
t          t          t          ||fd|
i| t          j        |t
          j        
          }t          t          t          ||fd|i| Bd S )NrM  rF   rm  r   r   ro   r&   r\  rY  r>   r  r  r3  )rS   r   r   r   r  rQ   r  r=   r   r   r   rF  rz   r  )r  rU  rf  out_sizer8  r   r  r  r  r  r  r  s               r]   test_pdist_outzTestPdist.test_pdist_out  s   $%ccc33Q3h/
agaj1n5:;;$ 	L 	LFVVF$$"s8HBI666DAv0000GAv::4:6::GGW37777GtO$$$8HqL	:::D*eQKKDKFKKK8AL	:::33Q3?D*eQKKDKFKKK8HBH555D*eQKKDKFKKKK'	L 	Lr_   c                    d}t           d         d d dd d df         }|                                }t          |j        j                    t          |j        j                   t
          D ]S}t                      }|dk    rd|d<   t          ||fi |}t          ||fi |}t          |||t          dk               Td S )	NrM  rF   rm  r   r&   r\  rY  rQ  )
rS   r  r   r  r  r   r  r   r   r   )r  rU  rf  X_copyr8  r   rV  rW  s           r]   r  zTestPdist.test_striding  s     $%ccc33Q3h/ 	AG(())))***$ 	C 	CFVVF$$"sq&++F++Bvv0000BBgkBBBBB	C 	Cr_   Nr  )fr   r|  r}  r  r  r  r  r  r  r  r  slowr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r&  r)  r,  r.  r0  r4  r6  r9  r<  r>  rC  r  rQ   r  rF  rJ  rL  rN  rQ  rT  rV  rZ  r\  r^  r`  rd  rf  rk  rn  rp  rr  rw  ry  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rd   r_   r]   r  r    sF       6 6 6&9 &9 &9P4 4 44 4 44 4 44 4 4 [4 4 4 [I I I [4 4 44 4 4
4 
4 
44 4 44 4 44 4 44 4 44 4 44 4 44 4 4 [4 4 4 [I I I [4 4 4> > >4 4 44 4 44 4 4 [4 4 4 [I I I [4 4 44 4 44 4 44 4 4 [4 4 4 [I I I [4 4 4 [S3c3RV"DEE2 2 FE24 4 44 4 44 4 4 [4 4 4 [4 4 4 [4 4 4 [4 4 4 [I I I [4 4 4F F F"4 4 44 4 44 4 44 4 44 4 44 4 44 4 44 4 44 4 44 4 44 4 43 3 3
4 4 44 4 4I I I4 4 4
4 
4 
4I I I4 4 43 3 3
4 4 4I I I4 4 44 4 4I I I4 4 45 5 57 7 75 5 57 7 73 3 33 3 37 7 75 5 57 7 77 7 77 7 77 7 77 7 77 7 7 [? ? ?I I I< < <C C C C$F F FBO O O2L L L4C C C C Cr_   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestSomeDistanceFunctionsc                 r    t          j        g d          }t          j        g d          }||fg| _        d S )Nr'  r   r   r0  )rQ   r   cases)r  r   r!  s      r]   r  z&TestSomeDistanceFunctions.setup_method  s9    H___%%H___%%!fX


r_   c           	      ,   | j         D ]\  }}t          ||d          }t          |d           t          ||d          }t          |d           t          ||d          }t          |d           t          ||d          }t          |d	           t          j        d
dg          }t          j        ddg          }t          t          ||          t          |                    d          |                    d                               d S )Nro   r_  r(        ?gqaz@r   gw@r[  gR"6@i`  i  i^  i  uint16)r  r&   r
   rQ   r   r	   r   )	r  r   r!  dist1dist1p5dist2dist0p25rk   r   s	            r]   r`  z(TestSomeDistanceFunctions.test_minkowski
  s&   J 	D 	DDAqaa(((Es+++1,,,G)CDDDaa(((Ez222 A...H*BCCCC
 Hc3Z  Hc3Z  Yq!__qxx11188H3E3EFF	H 	H 	H 	H 	Hr_   c                     | j         D ]7\  }}t          ||          }t          |t          j        d                     8d S )Nrm  )r  
weuclideanr
   rQ   rr  r  r   r!  ru  s       r]   rP  z(TestSomeDistanceFunctions.test_euclidean  sK    J 	2 	2DAqa##Dbgajj1111	2 	2r_   c                 `    | j         D ]%\  }}t          ||          }t          |d           &d S )Nr0  )r  wsqeuclideanr
   r  s       r]   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclidean"  sC    J 	+ 	+DAq1%%Dc****	+ 	+r_   c           
          | j         D ]R\  }}t          ||          }t          |ddt          j        d          t          j        d          z  z  z
             Sd S )Nr   g      2@      )r  wcosiner
   rQ   rr  r  s       r]   r  z%TestSomeDistanceFunctions.test_cosine'  sd    J 	P 	PDAq1a==DcDBGBKK"'"++4M,N&NOOOO	P 	Pr_   c           
      $   t          j        g d          }t          j        g d          }| j        D ][\  }}t          ||          }t	          |dt          j        ||          t          |          t          |          z  z  z
             \d S )N)      r   r   )UUUUUUr  gUUUUUU@r   )rQ   r   r  wcorrelationr
   ri  r   )r  xmymr   r!  ru  s         r]   r8  z*TestSomeDistanceFunctions.test_correlation,  s    Xnnn%%X999::J 	T 	TDAq1%%DcBF2rNNd2hhb>Q,R&RSSSS	T 	Tr_   c                     t          j        g d          }t          j        g d          }t          ||          }d|cxk    r*dt          j        t           j                  j        z  k    sn J d S )N)%ro  ro  ro  ro  ro  ro         ro  ro  ro  r  r  r  ro  r  ro  r  ro  ro  r  r  ro  r   ro  ro  r  ro  ro  r  ro  r  r  r  r  r  r  ro  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   ro  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )rQ   r   r   finfor   rU  r  s       r]   test_correlation_positivez3TestSomeDistanceFunctions.test_correlation_positive3  s    H I I I J J H I I I J J 1a  D9999B"*!5!5!9999999999r_   c                    t          j        g d          }t          j        g d          }t          j        g dg dg dg          }| j        D ]8\  }}t          |||          }t	          |t          j        d                     9d S )Nr'  r  )r   r   ro  )r   r   r   )ro  r   r   g      @)rQ   r   r  r%   r
   rr  )r  r   r!  viru  s        r]   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobis>  s    H___%%H___%%XIJJJ 	4 	4DAqq!R((Dbgcll3333	4 	4r_   N)r   r|  r}  r  r`  rP  r  r  r8  r  r!  rd   r_   r]   r   r     s          H H H&2 2 2
+ + +
P P P
T T T	: 	: 	:4 4 4 4 4r_   r   c                   h    e Zd Zej        ej        ej        ej        egZ	d Z
d Zd Zd Zd Zd ZdS )TestSquareFormc                 D    | j         D ]}|                     |           d S rs   )checked_dtypescheck_squareform_matrixr  r?   s     r]   test_squareform_matrixz%TestSquareForm.test_squareform_matrixJ  5    ( 	0 	0E((////	0 	0r_   c                 D    | j         D ]}|                     |           d S rs   )r%  check_squareform_vectorr'  s     r]   test_squareform_vectorz%TestSquareForm.test_squareform_vectorN  r)  r_   c                 6   t          j        d|          }t          |          }t          |j        d           t          |j        |           t          j        d|          }t          |          }t          |j        d           t          |j        |           t          j        ddgddgg|          }t          |          }t          |j        d           t          |j        |           t          |t          j        dg|                     d S )N)r   r   r>   r   ro   ro   r   g@rn   )rQ   r  r   r	   r   r?   r   r   )r  r?   ArAs       r]   r&  z&TestSquareForm.check_squareform_matrixR  s    HV5)))]]RXt$$$RXu%%%HV5)))]]RXt$$$RXu%%%Hq#ha)777]]RXt$$$RXu%%%2rxU;;;<<<<<r_   c                    t          j        d|          }t          |          }t          |j        d           t          |j        |           t          |dgg           t          j        dg|          }t          |          }t          |j        d           t          |j        |           t          |t          j        ddgddgg|                     d S )Nr.  r>   r/  r   g @)r   r   )rQ   r  r   r	   r   r?   r   r   )r  r?   r  rvs       r]   r+  z&TestSquareForm.check_squareform_vectorc  s    HT''']]RXv&&&RXu%%%2u%%%HcU%(((]]RXv&&&RXu%%%2rx!SC8(<EJJJKKKKKr_   c                 V    t          dd          D ]}|                     |           d S )Nr   rm  )r{   check_squareform_multi_matrixr  ns     r]   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrixp  s:    q! 	2 	2A..q1111	2 	2r_   c                    t           j                            |d          }t          |          }t	          t          |j                  d           t          |          }t          |          }|j        }d}t          dk    r t          |j        |j        |j                   t	          t          |          d           t	          t          |j                  d           t	          |d         |d                    t          d|d                   D ]`}t          |dz   |d                   D ]D}	||	k    r$t	          |||	f         ||                    |dz  },t	          |||	f         d           Ead S )N   ro   r   r3  r   )rQ   r   r   r  r	   lenr   r   r   r  r{   )
r  r7  rf  r  r0  Yrskr   js
             r]   r5  z,TestSquareForm.check_squareform_multi_matrixt  s[   INN1a  AS\\1%%%qMM]]Ga<<!'17BH---SVVQS]]A&&&QqT1Q4   q!A$ 	- 	-A1q5!A$'' - -66 1a4!A$///FAA 1a4!,,,,-	- 	-r_   N)r   r|  r}  rQ   r   rV   int32int8r  r%  r(  r,  r&  r+  r8  r5  rd   r_   r]   r#  r#  G  s        j"*bhFN0 0 00 0 0= = ="L L L2 2 2- - - - -r_   r#  c                   P    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S )TestNumObsYc                     t          dd          D ]N}t          j                            |d          }t	          |          }t          t          |          |           Od S )Nr   r  r:  )r{   rQ   r   r   r  r	   r   )r  r7  rf  r  s       r]   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix  s^    q" 	* 	*A	q!$$A""A1q))))	* 	*r_   c                 <    t          t          | j        d           d S Nro   )rF  rz   check_yr  s    r]   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1  s     	j$,22222r_   c                 J    t          |                     d                     d S Nr   r   rH  r  s    r]   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2  s"     	Q     r_   c                 J    t          |                     d                     d S )Nr3  rL  r  s    r]   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3       Q     r_   c                 J    t          |                     d                     d S Nr:  rL  r  s    r]   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4  rP  r_   c                 V    t          dd          D ]}|                     |           d S )Nrm     )r{   minit)r  r   s     r]   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10  s4    q" 	 	AJJqMMMM	 	r_   c                     t          g           }t          dd          D ] }|                    ||dz
  z  dz             !t          dd          D ]!}||vrt          t          | j        |           "d S Nr   rU  ro   rm  i   setr{   addrF  rz   bad_yr  rk   r7  r   s       r]   test_num_obs_y_2_100z TestNumObsY.test_num_obs_y_2_100  s     GGq" 	# 	#AEE!q1u+/""""q# 	9 	9Azzj$*a888	9 	9r_   c                 J    t          |                     |                     d S rs   rL  r6  s     r]   rV  zTestNumObsY.minit  rP  r_   c                 ^    t           j                            |          }t          |          S rs   )rQ   r   r   r   r  r7  r!  s      r]   r^  zTestNumObsY.bad_y  s!    INN1||r_   c                 N    t          |                     |                    |k    S rs   )r   make_yr6  s     r]   rH  zTestNumObsY.check_y  s    Q((A--r_   c                 R    t           j                            ||dz
  z  dz            S Nro   r   rQ   r   r   r6  s     r]   re  zTestNumObsY.make_y  s#    y~~qAE{q0111r_   N)r   r|  r}  rE  rI  rM  rO  rS  rW  r`  rV  r^  rH  re  rd   r_   r]   rC  rC    s        * * *3 3 3
! ! !
! ! !! ! !  9 9 9! ! !  . . .2 2 2 2 2r_   rC  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestNumObsDMc                 ,   t          dd          D ]}t          j                            |d          }t	          |          }t          |          }t          dk    rt          |j        |j                   t          t          |          |           d S )Nro   r  r:  r3  )r{   rQ   r   r   r  r   r   r  r   r	   r   )r  r7  rf  r  r0  s        r]   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  s    q" 	+ 	+A	q!$$A""A1A!||agqw'''A****	+ 	+r_   c                 J    t          |                     d                     d S )Nr   r   check_Dr  s    r]   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0       Q     r_   c                 J    t          |                     d                     d S rG  rn  r  s    r]   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rq  r_   c                 J    t          |                     d                     d S rK  rn  r  s    r]   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  rP  r_   c                 J    t          |                     d                     d S rK  rn  r  s    r]   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  rP  r_   c                 J    t          |                     d                     d S rR  rn  r  s    r]   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  rP  r_   c                 N    t          |                     |                    |k    S rs   )r   make_Dr6  s     r]   ro  zTestNumObsDM.check_D  s    $++a..))Q..r_   c                 B    t           j                            ||          S rs   rh  r6  s     r]   r{  zTestNumObsDM.make_D  s    y~~a###r_   N)r   r|  r}  rl  rp  rs  ru  rw  ry  ro  r{  rd   r_   r]   rj  rj    s        + + +! ! !! ! !! ! !! ! !! ! !/ / /$ $ $ $ $r_   rj  c                 $    t          | d          S NT)throw)r   )r  s    r]   is_valid_dm_throwr    s    q%%%%r_   c                   \    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S )TestIsValidDMc                 |    t          j        dt           j                  }t          t          t
          |           d S )Nrm  r>   rQ   r  r=   rF  rz   r  r  r  s     r]   $test_is_valid_dm_improper_shape_1D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_1D_E  s1    HT+++j"3a99999r_   c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  r>   FrQ   r  r=   r	   r   r  s     r]   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s4    HT+++[^^U+++++r_   c                 |    t          j        dt           j                  }t          t          t
          |           d S Nr3  r3  r3  r>   r  r  s     r]   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s1    HYbi000j"3a99999r_   c                     t          j        dt           j                  }t          t	          |          d           d S Nr  r>   Fr  r  s     r]   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s4    HYbi000[^^U+++++r_   c                     t           j                            d          }t          |          }t	          dd          D ]	}d|||f<   
t          t          t          |           d S )Nr  r   rm  r   )rQ   r   r   r   r{   rF  rz   r  r  r!  r  r   s       r]   #test_is_valid_dm_nonzero_diagonal_Ez1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_E  s_    INN2qMMq! 	 	AAadGGj"3a99999r_   c                     t           j                            d          }t          |          }t	          dd          D ]	}d|||f<   
t          t          |          d           d S )Nr  r   rm  r   F)rQ   r   r   r   r{   r	   r   r  s       r]   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sb    INN2qMMq! 	 	AAadGG[^^U+++++r_   c                     t           j                            d          }t          |          }|d         dz   |d<   t	          t
          t          |           d S )Nr  r3  ro   ro   ro   r3  )rQ   r   r   r   rF  rz   r  r  r!  r  s      r]   test_is_valid_dm_asymmetric_Ez+TestIsValidDM.test_is_valid_dm_asymmetric_E  sJ    INN2qMMD'A+$j"3a99999r_   c                     t           j                            d          }t          |          }|d         dz   |d<   t	          t          |          d           d S )Nr  r  ro   r  FrQ   r   r   r   r	   r   r  s      r]   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F  sM    INN2qMMD'A+$[^^U+++++r_   c                     t          j        dt           j                  }t          t	          |          d           d S )Nr/  r>   Tr  r  s     r]   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s4    HV29---[^^T*****r_   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nro   Tr  r  s      r]   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2  <    INN1qMM[^^T*****r_   c                     t           j                            d          }t          |          }t	          t          |          d           d S Nr3  Tr  r  s      r]   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3  r  r_   c                     t           j                            d          }t          |          }t	          t          |          d           d S )N   Tr  r  s      r]   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4  r  r_   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nr  Tr  r  s      r]   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5$  s<    INN2qMM[^^T*****r_   N)r   r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  rd   r_   r]   r  r    s        : : :, , ,: : :, , ,: : :, , ,: : :, , ,+ + ++ + +
+ + +
+ + +
+ + + + +r_   r  c                 $    t          | d          S r~  )r   )r!  s    r]   is_valid_y_throwr  *  s    at$$$$r_   c                   P    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S )TestIsValidYc                 |    t          j        dt           j                  }t          t          t
          |           d S )Nr3  r3  r>   rQ   r  r=   rF  rz   r  r  r!  s     r]   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E3  s1    HWBI...j"2Q88888r_   c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  r>   FrQ   r  r=   r	   r   r  s     r]   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_F7  s4    HWBI...Z]]E*****r_   c                 |    t          j        dt           j                  }t          t          t
          |           d S r  r  r  s     r]   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_E;  s1    HYbi000j"2Q88888r_   c                     t          j        dt           j                  }t          t	          |          d           d S r  r  r  s     r]   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_F?  s4    HYbi000Z]]E*****r_   c                 j    |                      d          }t          t          |          d           d S )Nr   Tcorrect_n_by_nr	   r   r  s     r]   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2C  1    ""Z]]D)))))r_   c                 j    |                      d          }t          t          |          d           d S r  r  r  s     r]   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3G  r  r_   c                 j    |                      d          }t          t          |          d           d S )Nr:  Tr  r  s     r]   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4K  r  r_   c                 j    |                      d          }t          t          |          d           d S )Nrm  Tr  r  s     r]   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5O  r  r_   c                     t          g           }t          dd          D ] }|                    ||dz
  z  dz             !t          dd          D ]!}||vrt          t          | j        |           "d S rY  r[  r_  s       r]   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100S  s    GGq" 	# 	#AEE!q1u+/""""q# 	9 	9Azzj$*a888	9 	9r_   c                 b    t           j                            |          }t          |d          S r~  )rQ   r   r   r   rc  s      r]   r^  zTestIsValidY.bad_y[  s(    INN1!4((((r_   c                 V    t           j                            ||dz
  z  dz            }|S rg  rh  rc  s      r]   r  zTestIsValidY.correct_n_by_n_  s'    INNAQKA-..r_   N)r   r|  r}  r  r  r  r  r  r  r  r  r  r^  r  rd   r_   r]   r  r  .  s        
9 9 9+ + +9 9 9+ + +* * ** * ** * ** * *9 9 9) ) )    r_   r  rY  )g      $g      ro  c           	          t          t          t          ddgddg|            t          t          t          ddgddg| ddg           d S )Nro   r   r3  r:  )rF  rz   r&   r_  s    r]   
test_bad_pr  d  sL     *i!Q!Q;;;*i!Q!QQFCCCCCr_   c                  F    t          t          t          g dg d           d S )N)FFF)rF  rz   r+   rd   r_   r]   test_sokalsneath_all_falser  k  s*    *k+@+@+@BWBWBWXXXXXr_   c                      t          t          g dg d          d           t          t          g dg d          d           d S )Nro   r   r3  r   r:  r  ro   ro   ro   r   r   ro   r   ro   r   r   )r	   	wcanberrard   r_   r]   r  r  p  sL    999iii00!444<<<66:::::r_   c                      t          t          g dg d          dd           t          t          g dg d          dd           d S )	Nr  r  gUUUUUU?   decimalr  r  rq  )r
   wbraycurtisrd   r_   r]   test_braycurtisr  v  sV    IIIyyy9962NNNNLLL,,,??bQQQQQQr_   c                  J   t          j        g d          } t          j        g d          }t          t          | |          dd           t          t	          | |          t          j        d          d           t          t          d          5  t	          | t           j        d d f         |t           j        d d f                   t          j        d          f d d d            n# 1 swxY w Y   t          t          d          5  t          | t           j        d d f         |t           j        d d f                    d d d            n# 1 swxY w Y   t          t          d          5  t          | d d t           j        f         |d d t           j        f                    d d d            n# 1 swxY w Y   t          j	        d	          
                    d
d
          }t          t          t          ||           t          t          t          ||           t           j                            d          }|                    d          }|                    d          }t	          ||          }t          ||          }t          |d
z  |d           d S )N)ro   ro   ro   )r   r   r   r(  r  r  r3  Input vector should be 1-Dmatchr:  r   iIr  )rQ   r   r
   r  r  rr  rF  rz   newaxisrA  r   r   r   r   )rs  rt  r   rsr!  d1d2s          r]   test_euclideansr  |  s$   	)))		B	)))		B R,,c2>>>>
2r**BGAJJCCCC 
z9
; 
; 
; E E2bj!!!m$bQQQ&788"'!**DDE E E E E E E E E E E E E E E 
z9
; 
; 
; ; ;R
AAA&2:qqq=(9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 
z9
; 
; 
; ; ;R2:&111bj=(9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 		!Q""A*j!Q///*lAq111 
		z	*	*B
A
A	Aq		B	a		BAr2......s7   AC..C25C29EEE59F::F>F>c                  N    g d} g d}t          t          t          | |           d S )N)r   r   ro   r  )rF  rz   whammingr   r!  s     r]   test_hamming_unequal_lengthr    s.    		AA*h1-----r_   c                      t          j        g dd          } t          j        g dd          }d}t          t          | |          |           d S )N)eggsspamr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z|S4r>   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rQ   r   r   r  )rk   r   desireds      r]   test_hamming_string_arrayr    s    
 B B B 	 	 	A 	 B B B 	 	 	A GHQNNG,,,,,r_   c                     t          j        g dg dg          } t          | ddd           }t          | | ddd           }t          | dd          }t          | | dd          }t	          ||d           t	          ||d           d S )N)
QUUT@      Y@r  r  g      B@g      N@g     V@g     b@g      8@g      H@r&   ro   )r8  rY  r   )r8  rY  rM  r  )rQ   r   r   r   r   )arr_inp0c0p1c1s        r]   test_minkowski_wr    s    X 2 2 22 2 23 4 4F 
vkQ$	7	7	7B	vvkQ$	?	?	?B	vkQ	/	/	/B	vvkQ	7	7	7BB''''B''''''r_   c                  d   g d} g d}t           j        t           j        t           j        t           j        fD ]k}t          t          j        | |          t          j        ||                    }t          t          j        |j	        t           j
                             lt           j        t           j        t           j        t           j        fD ]}t          j        |          j        }t          dgt          j        |g|                    }t          t          j        |g|          dg          }t#          ||           t#          |t          j        |          dz             t           j        t           j        t           j        t           j        g}dD ]?}t-          t           |          r(|                    t1          t           |                     @|D ]O}t          t          j        | |          t          j        ||                    }t#          |j	        |           Pd S )Nr  )r:  rm  r  r>   r   r   )float16float128)rQ   rA  int16r@  r  r  asarrayr   r   r?   floatinguint8r  uint32uint64iinfomaxr	   r   rV   	complex64
complex128hasattrr   getattr)r   r!  r?   dumaxr  r  dtypess           r]   test_sqeuclidean_dtypesr    s    			A		A'28RXrx8 5 5AU333RZ5O5O5OPPagr{334444(BIry")< . .x"1#rz4&>>>??"*dV5999A3??RRD))1,----j"*blBMBF( . . 2u 	.MM'"e,,--- % %AU333RZ5O5O5OPPQWe$$$$% %r_   c                      g d} g d}d | D             }d |D             }t          | |          }t          ||          }t          ||           d S )N)TTF)TFTc                 ,    g | ]}t          |          S rd   r   rj   r   s     r]   rl   z&test_sokalmichener.<locals>.<listcomp>      AQr_   c                 ,    g | ]}t          |          S rd   r  r  s     r]   rl   z&test_sokalmichener.<locals>.<listcomp>  r  r_   )r*   r	   )rY  r   r   r!  r  r	  s         r]   test_sokalmichenerr    sr    AAAA!QE!QEr_   c                     d} d}d}d}d|| z   z  ||z   d|| z   z  z   z  }t          |d           t          ddgddgddg          }t          ||           g d	}g d
}dD ]"}t          t          |||g          d           #d S )Nro  g?r   r   gX$I?ro   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?rZ  r   g      4@r  )r
   r*   )	ntfnftnttnffexpectedactuala1a2r   s	            r]   test_sokalmichener_with_weightr    s     C
C
C
CC#I#)a39o"=>H),,,Aq6Aq6aX666F&)))
D 
D 
DB
I 
I 
IB $ L LM"b1#668JKKKKL Lr_   c                      t          j        g dg dg dg dg          } |                                 }t          D ]3}t	          | | |           t          | |           t          | |           4d S )Nr'  r)  r-  g3333336@gL7@g333333F@)rQ   r  r  r   r   r   r   )rH  r  r8  s      r]   test_modifies_inputr    s    	\\\$__$__''') 
* 
*B ggiiG  ( (b"fb&2w''''( (r_   c                     t          j        g dg dg dg dg          } t          j        d          }t          D ]5}t	          j        t                    5  t          | | |d           d d d            n# 1 swxY w Y   t	          j        t                    5  t          | |d           d d d            n# 1 swxY w Y   dD ]}|di}|d	k    r|d
k    s|dk    r|dk    s|dk    r|dk    r+t	          j        t                    5  t          | | |fi | d d d            n# 1 swxY w Y   t	          j        t                    5  t          | |fi | d d d            n# 1 swxY w Y   7d S )Nr'  r)  r-  r  r3  r   )rY  r  r  foor  r)   r  r%   rY  r&   )	rQ   r  rA  r   r  r   r   r   r   )rH  r   r8  r"  r   s        r]   test_Xdist_deprecated_argsr     s   	\\\$__$__''') 
* 
*B illG  , ,]9%% 	& 	&"b&"%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ]9%% 	" 	""fb!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" $ 	, 	,C%[F, 6 6D[[V}44CZZFk11y)) 0 0b"f/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y)) , ,b&++F+++, , , , , , , , , , , , , , ,	,, ,sH   A77A;	>A;	B99B=	 B=	
D&&D*-D*
E%%E),E)c                     t           d         d d dd d df         } t          j        | j        d                   }|d d d          |d d d<   t          D ]}|dv rt          j                                        5 }|dk    r|                    t          d           |t          |          d|z   fD ]?}t          t          t          | ||	           t          t          t          | | ||	           @	 d d d            n# 1 swxY w Y   d S )
NrF   rm  r   ro   )r)   r%   r"   r#   r7  r9  r  )rS   rQ   r   r   r   rB  rC  rD  rE  rG  rF  rz   r   r   )rf  r   r8  rJ  r  s        r]   test_Xdist_non_negative_weightsr"  .  sh   
 !##A#sss(+A

A!fWAcccF  	? 	?CCCZ))++ 	?s$$

-?A A Ad6llGf,<= ? ?j%A;;;;j%AqA>>>>>?		? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?	? 	?s   9A7C==D	D	c                  $   g d} t          |           }t          ||            t          | t          j                  }t          ||            t	          |j        t          j                   dg} t          |           }t	          |j        d           t	          ||            d} t          t          d          5  t          |            d d d            n# 1 swxY w Y   t          j	        d          
                    ddd          } t          t          d          5  t          |            d d d            n# 1 swxY w Y   ddgd	d
gg} t          t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nr  r>   ro   r  r  rm  r   r   r3  r:  )r   r   rQ   r   r	   r?   rp   rF  rz   rA  r   r  s     r]   test__validate_vectorr$  >  sV   		AAq!"*---Aq!"*%%%	
AAA	A	z9
; 
; 
;                 		!QA&&A	z9
; 
; 
;                 Q!QA	z9
; 
; 
;                   s6   =CC C#D??EE(FF	F	c                  ,   t          j        dt                    } t          | d         | d                   }|dk    sJ t	          | d          }t          |dg           t          | d d         | d d         d          }t          |dgg           d S )N)r   r  r>   r   ro  r-   ro   )rQ   r   r  r  r   r	   r   )r   r  s     r]   test_yule_all_samer&  [  s    
d###AadAaDA8888aASEaeQrrUF##AcUGr_   c                     t          t          g dg dd          d           t          t          ddgddg          d           t          t          g dg d          d           t          t          ddggddggd	
          ddg           t          t          ddggddggd
          dg           t          t          ddggddggd	d          ddgg           t          t          ddggddggdd          dgg           t          j        g dg dg dg          } t          j        g dg dg dg          }t          t          | |d	
          g d           t          t          | |d
          g d           d S )N)r   ro  ro  )ro  r   ro  r   r   ro  rq  g)>d?r  r   r   ro   gД?T)r|   keepdims)ro   r   r3  r:  )rm  r     ra   )	   r        )   r  r  rU  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r"   rQ   r   )rk   r   s     r]   r  r  h  s.   oooLL  sCj3*==+- - -oooGGMMMSzlc3ZLqIIIc
$ $ $Szlc3ZLqIII"% % %Szlc3ZLq/35 5 58;SzlD D DSzlc3ZLq/35 5 58A{mE E E 	,,,,,!//# 	$ 	$A 	"""""""""$ 	% 	%A a333DDDF F Fa333999; ; ; ; ;r_   c                      d} t          j        t          |           5  t          g g            d d d            d S # 1 swxY w Y   d S )NzKulsinski has been deprecated from scipy.spatial.distance in SciPy 1.9.0 and it will be removed in SciPy 1.11.0. It is superseded by scipy.spatial.distance.kulczynski1.r  )r  warnsrE  r#   r  s    r]   test_kulsinski_deprecationr8    s    FC 
(	4	4	4  "b                 s   <A A rs   )	NNFTFFFFN){r@  os.pathrK   	functoolsr   r   r  numpyrQ   r   numpy.linalgr   numpy.testingr   r   r   r	   r
   r   r   r   r  r   rF  scipy.spatial.distancer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   rI   r   _tdist_ytdistrS   r^   re   r}   r   r   r   r   r   r  rh  rT  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  
wkulsinskiwkulczynski1r  r  r  r  r  r  wsokalmichenerr  r  r  r   r#  rC  rj  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r$  r&  r  r8  rd   r_   r]   <module>rF     s  F 


  $ $ $ $ $ $ $ $            2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2  * * * * * *& & & & & & & & & & & & & & & & & & & & & &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  
@ 
///2222222222222224
 <D
E 
E 
E *V


 = = =     # # #    -17;+0/4	-$ -$ -$ -$`       6 '.goD&I&I&I!kTB B B B   !tQT "td#dEPU`e!''/X\:]:]:]	] ] ] ]@ 
Q	>	>	>!/%aSXYYY	Qa	H	H	H!/%aSXabccc!/.11&w??? ?	H_Y''
_Y''

/&
!
!{++_Y''
{++?7##_Y5999
{u===oj))OH777	{++ //oj))XE XE XE XE XE XE XE XEveC eC eC eC eC eC eC eCNC4 C4 C4 C4 C4 C4 C4 C4L@- @- @- @- @- @- @- @-F12 12 12 12 12 12 12 12h $  $  $  $  $  $  $  $F& & &B+ B+ B+ B+ B+ B+ B+ B+J% % %3 3 3 3 3 3 3 3l 00011D D 21DY Y Y
; ; ;R R R/ / /D. . .- - -( ( (% % %>	 	 	L L L,
( 
( 
(, , ,:? ? ?   :
 
 
; ; ;:    r_   