
    xfGE                    $   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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-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4  ejj                  ed      d	        Z6g d
Z7 ejp                  g dg dg dg dg dg dgd      Z9 ee9      Z:i Z;d Z< e<        d Z=dSdZ>	 	 	 	 	 dTdZ?d Z@d ZAdSdZB eed      d dfdZCd dd! d"ddddddddddd#d  eed      fd$ZD eDed%d&      ZE eDed%dd'      ZF eDed%dd%(      ZG eDed%ddd%)      ZH eDe.      ZI eDe(d*      xZJZK eDe4      ZL eDe&      ZM eDe#      ZN eDe"      ZO eDe%      ZP eDe$      ZQ eDe+      ZR eDe)      ZS eDe'd+      ZT eDe3d+      ZU eDe       ZV eDe!d+      ZW eDe2      ZX eDe1      ZY eDe/      ZZ G d, d-      Z[ G d. d/      Z\ G d0 d1      Z] G d2 d3      Z^ G d4 d5      Z_ G d6 d7      Z`d8 Za G d9 d:      Zbd; Zc G d< d=      Zdej                  j                  d>g d?      d@        ZgdA ZhdB ZidC ZjdD ZkdE ZldF ZmdG ZndH ZodI ZpdJ ZqdK ZrdL ZsdM ZtdN ZudO ZvdP ZwdQ ZxdR Zyy)U    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosebreak_cyclesIS_PYPY)	
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kulczynski1mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyulesession)paramsscopec                     | j                   S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    C/usr/lib/python3/dist-packages/scipy/spatial/tests/test_distance.pymetricr3   A   s    
 ==    )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         )r5   r   '        )r6   r:   r     4     )r7   r;   r>   r      e  )r8   r<   r?   rA   r     )r9   r=   r@   rB   rC   r   doubledtypec                     t         D ]  } | j                  dd      j                  dd      }t        j                  j	                  t        j                  j                  t              d|       }t        |      }t        j                  |      t        |<   |j                           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
<   y )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       r2   load_testing_filesrd   x   s     zz&"%--eR8ww||BGGOOH5vrB$Z::b>4

 !hhr*='>?BXXb);&<=B "

2.B+C DBGGB'8$9:BWWR(:%;<Br4   c                  F    t        j                  d      j                  dk  S )Nr      )rX   intpitemsize r4   r2   	_is_32bitrj      s    771:""r4   c                 |     D cg c]  }t        j                  |       c} |6 D cg c](  }|j                  dk7  rt        j                  |      n|* c} d}t	        d  D               |dk  r:t         fd D              st        d      t         d   j                        |   } |fz   S c c}w c c}w )N   r   c              3   F   K   | ]  }t        j                  |        y wN)rX   
atleast_1d.0as     r2   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s     42==#4s   !c              3   V   K   | ]   }|j                   d    j                   k(   " yw)r   N)ndim)rq   rr   arrayss     r2   rs   z _chk_asarrays.<locals>.<genexpr>   s"     <166VAY^^+<s   &)z(array ndim must be the same for neg axis)rX   
asanyarrayru   raveltupleall
ValueErrorrange)rv   axisrr   s   `  r2   _chk_asarraysr~      s    (./1bmmA/F| "# "#1"((1+!3 #4V44Fax<V<<GHHVAY^^$T*TG 0#s
   B4-B9FTc
                 b   t        |       }
|
d d |
d   c} |xr | }|s|rt        d | D              }|r`| D cg c]*  }t        j                  t        j                  |            , }}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  j                         rt        d	      |rNt        j                  dkD        d   j                  j                  k  rt        fd
| D              }    |rdk(  j                         rd | fz   S c c}w )Nr}   c              3      K   | ]=  }t         j                  j                  |      t         j                  j                  u ? y wrn   )rX   magetmasknomaskrp   s     r2   rs   z_chk_weights.<locals>.<genexpr>   s*     QQBEEMM!,BEELL@Qs   AATc              3   h   K   | ]*  \  }}|rt         j                  j                  |      n| , y wrn   )rX   r   masked_invalid)rq   rr   has_nans      r2   rs   z_chk_weights.<locals>.<genexpr>   s4      D)q' 7>255//21D Ds   02r   c              3   X   K   | ]!  }j                   |j                      fk(   # y wrn   shape)rq   rr   r}   weightss     r2   rs   z_chk_weights.<locals>.<genexpr>   s%     AQw}} 00As   '*z*weights shape must match arrays along axiszweights cannot be negativec              3   N   K   | ]  }t        j                  |         yw)r   N)rX   take)rq   rr   r}   pos_weightss     r2   rs   z_chk_weights.<locals>.<genexpr>   s!     N!2771k==Ns   "%rl   )r~   anyrX   isnansumry   ziprw   onesr   _freq_weights_weight_maskedrz   r{   nonzerosize)rv   r   r}   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedrr   has_nansr   s    ``          @r2   _chk_weightsr      s   
 &t,E":uRyLFD'=,=[Q&QQ178ABHHRVVAY'88x=K M D-0-BD DF --(	''&)//$/0$''( $7A&AAEFFgk&&(566jj1-a0gll*NvNNFk*GW\..0WdO##A 9s   /F,c                 z    | | S | j                  t              }| |k7  j                         rt        d| z        |S )Nz2frequency (integer count-type) weights required %s)astypeintr   r{   )r   int_weightss     r2   r   r      sC    ..%K;##%MPWWXXr4   c                    dt        j                  |      }| D ]  }t         j                  j                  |      }|t         j                  j                  u r?|j
                  dkD  r9t        fdt        |j
                        D              }|j                  |      }|d|j                  t              z
  z  } |S )Nr   rl   c              3   .   K   | ]  }|k7  s	|  y wrn   ri   )rq   ir}   s     r2   rs   z!_weight_masked.<locals>.<genexpr>   s     C1dQCs   
r   )rX   rw   r   r   r   ru   ry   r|   r   r   r   )rv   r   r}   rr   	axis_masknot_axess     `   r2   r   r      s    |mmG$G -EEMM!$	$66A:CaffCCH!84I1y'',,,- Nr4   c                    | D cg c]Q  }t        j                  |j                  t         j                        r|j	                  t         j
                        n|S } }t        j                  |t         j
                        }t         j                  j                  |      }d }| d   j                     t        fd| D              sJ d       t        t        |      z        D ]}  }|j                  |z         }	||	   }
|j                         }||
z  ||	<   t        j                  |d|z
  |
z        }| D cg c]#  }t        j                  | |||	            % } } | |fS c c}w c c}w )NrE   c                     t        j                  t        j                  | ||            }|j                  t	        | j
                        D cg c]  }||k7  r| j                  |   nd c}      S c c}w )Nr   rl   )rX   rw   r   reshaper|   ru   r   )rr   ixr}   recordr   s        r2   mytakez_rand_split.<locals>.mytake   sd    rwwq"489~~(-aff7#$ ./$YqwwqzA= 7 8 	8 7s   A2r   c              3   B   K   | ]  }|j                      k(    y wrn   r   )rq   rr   r}   n_obss     r2   rs   z_rand_split.<locals>.<genexpr>   s     6!qwwt}%6s   z#data must be aligned on sample axis      ?r   )rX   
issubdtyperF   integerr   float64arrayrandomRandomStater   rz   r|   r   randintrandappend)rv   r   r}   	split_perseedarrseeded_randr   r   split_ixprev_wqrr   r   s     `          @r2   _rand_splitr      se    #)* )+cii(Lcjj$ *F * hhwbjj1G))''-K8
 1IOOD!E6v66]8]]63y>E)* 8&&uqy1"J))Gb1f%67068+, ))Ava=!%' 8 88 7?-*(8s   AE/?(E4h㈵>atolc                     | S rn   ri   xs    r2   <lambda>r      s     r4   c                     ||       } ||      }	 t        j                  ||k7        j                         r
 |||       y y # t        $ r  |||       Y y t        t
        f$ r% t        ||      D ]  \  }}t        |||        Y y w xY w)N)compare_assert)rX   r   r   AttributeError	TypeErrorr{   r   _rough_check)	rr   br   keywcheck_acheck_ba_ib_is	            r2   r   r      s    !fG!fGB88Gw&'++-7G, . )w(z" BGW- 	BHCc.A	BBs   /A B
0B
	B
   c                     | S rn   ri   r   s    r2   r   r     s    1 r4   r   r   c                 n    	
 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  }|j                  $d       }|j                  d      }t        |||dd      }|d d |d   |d   }}}#r0|D cg c]%  }t        j                  |j	                               ' }}	 t        |      |z   } r||$<   t        | | i |       r9|dz  |$<   t        | | i |       |dz  |$<   	 t        | | i |       rt        |||!	      \  }
}||d |j                   d
||j                  d  t        |
      |z   }||$<   t        | |i |       |
D ]J  }t        d       g|j                  z  }t        |j                  d       ||<   t        |      }||   dz  ||<   L t        |
      |z   }t        | |i |       |
D ]X  }t        d       g|j                  z  }t        |j                  d       ||<   t        |      }||   t        j                  z  ||<   Z |j                  dd       dk(  r$r"t        |
      |z   }t        | |i |       ri|
D cg c]!  }t        j                  j                  |      # }
}t        |
      |z   }t        | |i |       rd |$<   t        | |i |       ~
~~rh|D cg c]  }t        j                   |||       }}t        j                   ||      dz  }t        |      |z   }||$<   t        | |i |       ~~~"r?!d
kD  r:t        |||!	      \  }}t        |      |z   }||$<   t        | |i |       |S c c}w # t        $ r}	 t        |	      |	||f      |	d }	~	ww xY wc c}w c c}w # t"        $ r1}	 s$t%        j&                  j(                   d|	        Y d }	~	|S d }	~	ww xY w)Nr}   T)r   r}   r   r   r   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitr          @z NotImplemented weights: )getr   rX   ro   squeezery   r   	Exceptiontyper   r   sliceru   nanr   r   r   NotImplementedErrorwarningswarn__name__)%argskwargsresultrv   restr   r}   r   rr   e
dud_arraysdud_weightsdud_argsindexer
dup_arraysdup_weightsdup_argssplit_arrayssplit_weights
split_args
const_testdefault_axisdud_testdup_testr`   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args%                       r2   wrappedz _weight_checked.<locals>.wrapped  sR   T$V$gvFG}**Z.zz&,/VW4taef %cr
E"IuRy:@AQbmmAIIK0AFAF	L=4'D%,z"VR%8%8cB%,u_z"VR%8%8cB%,u_z"? T)<V)<#F
 *5fgtW`gk*l'
K-4MW\\*-.GLLM* ,t3%0z"VR%<V%<#F# 2A$T{maff4G$)',,$=GDM#GnG!"7c!1AgJ	2
 !,t3VR%<V%<#F# 5A$T{maff4G$)',,$=GDM#GnG!"7bff!4AgJ	5
 ::lD1V;$Z047H X)@)@cJCM!Na"%%"6"6q"9!NJ!N$Z047H X)@)@cJ#-1z*$VR-DV-D#N+ BHIQbii148I
I ii9C? ,t3%0z"VR%<V%<#Fj+ i!m.9&'4[dko.p+m"<047
%2z"VR%>v%>CH S B ! ?!$q'1fg"67Q>?> "O J # 	L -FqcJK	Ls^   *M+
AN  M0 .E(N  &N<AN  N#BN  0	N9NNN   	O)&OO)r   )r`   r  r   r   r  r   r  r  r   r   r  r   r   r   r  r   r   r   r  s   `````````````````  r2   _weight_checkedr    s3     2YT T T Tj Nr4   rl   )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d Zej                  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y)	TestCdistc                 Z   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| _        y N)rM   rN   rO   rL   rK   )boolr_   r   r]   rnd_eo_namesrX   r_   r^   r]   rD   valid_upcastsselfs    r2   setup_methodzTestCdist.setup_method  c    1 (*wwRYY&O')ww

BII&F&(jj"))%<*,))6r4   c                    g dg dg dg}g dg dg dg}dt        j                  d      d	}dgd
z  }t        j                  t              5  t        ||fd|i| d d d        t        j                  t              5  t        ||fdt        |      i| d d d        t        j                  t              5  t        ||fdd|z   i| d d d        t        j                  t              5  t        ||g|d|i d d d        t        j                  t              5  t        ||g|dt        |      i d d d        t        j                  t              5  t        ||g|dd|z   i d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nr   r         @333333?ffffff@333333@皙@r  皙@g      @      @g       @g      @333333@g @g      @r"  r  Q	@   N0tV4l1D_p4raMr      r3   test_)rX   arangepytestraisesr   r   eval)r  r3   X1X2r   r   s         r2   test_cdist_extra_argszTestCdist.test_cdist_extra_args  s    O_=O_=$(ryy|<v|]]9% 	3"b2262	3]]9% 	9"b8f88	9]]9% 	="b<6!1<V<	=]]9% 	0"b/$//	0]]9% 	6"b55f5	6]]9% 	:"b9D96!19	: 	:	3 	3	9 	9	= 	=	0 	0	6 	6	: 	:sH   E7?F9F-FF(F47FFFF%(F14F=c           	         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        j                  t              5  t        |||       d d d        t        j                  t              5  t        |||g|  d d d        t        j                  t              5  t        |||fi | d d d        t        j                  t              5  t        |||dd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||ddd       d d d        t        j                  t              5  t        |||dd       d d d        t        j                  t              5  t        |||d       d d d        t        j                  t              5  t        |||ddd       d d d        t        t        |||dd      d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   RxY w# 1 sw Y   ,xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrl   r   c                     ||z   |z   S rn   ri   r   yargkwargkwarg2s        r2   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r4   r  r  r  r  r!  r#  r$  r%  r&  r(  r  ffffff
@r6  r7  r6  皙?r3   r5  r7  皙@rl   r   )rX   r*  r+  r,  r   r   r   )r  r8  r.  r/  r   r   s         r2   test_cdist_extra_args_customz&TestCdist.test_cdist_extra_args_custom  sO   	( O_=O_=$(ryy|<v|]]9% 	&"b*%	&]]9% 	-"b*,t,	-]]9% 	0"b*//	0]]9% 	="b*C<	=]]9% 	7"b*a#6	7]]9% 	7"b*a#6	7]]9% 	5"b*c34	5]]9% 	0"b*c3/	0]]9% 	+"b*c*	+]]9% 	B"b*cSA	B 	b"Z"%c347	9-	& 	&	- 	-	0 	0	= 	=	7 	7	7 	7	5 	5	0 	0	+ 	+	B 	Bsx   II1I!I(I5J9J+JJ(J4III%(I25I?JJJ%(J14J=c                     d}t         d   }t         d   }t        ||d      }t        ||d      }t        |||t        dkD         y )NV瞯<cdist-X1cdist-X2r   test_euclideanr   rtolr   rZ   wcdist_no_constr   r   )r  epsr.  r/  Y1Y2s         r2   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  sH    
^
^R[1R%56BS'A+>r4   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t         d   }t         d   }t        ||d|      }t        ||d|      }t        ||d|t        dkD  	       y )
NvIh%<=rD  rE  r$   rO  test_minkowskir   r   )r   rH  r   rI  )r  rO  rK  r.  r/  rL  rM  s          r2   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sP     
^
^R[A6R%5;BQS'A+Fr4   c                     d}t         d   }t         d   }t        ||d      }d }dt        j                  | ||      z  | ||      z  j                        z
  }t        |||t        dkD         y )	N+=rD  rE  r   c                 d    t         j                  j                  | d      j                  dd      S )Nrl   r   r   )rX   linalgr   r   )Xs    r2   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s&    99>>!!>,44R;;r4   rl   r   rG  )rZ   wcdistrX   dotTr   r   )r  rK  r.  r/  rL  r]  rM  s          r2   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  sk    
^
^BH%	< eBi2b	>*<*<==BS'A+>r4   c                    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        j                  t              5  t        d	dggddggd       d d d        y # 1 sw Y   y xY w)Nr   r%     r#   r3                 @      ?r   r   rl   r   )rX   r   r   r   sqrtr+  r,  r{   )r  x1x2distrt2s        r2   test_cdist_mahalanobisz TestCdist.test_cdist_mahalanobis  s    XXsQCj!XXsQCj!RM2RWWS\2RWWS\2771:4NOP XX1vAw'(XX1v1v2w/0RM2ggajS#AGQ@A ]]:& 	<Aq6(aVH];	< 	< 	<s   D66D?c                      G d d      fd}t        j                          ggt              }t        |||      }d}t	        ||t
        dkD         y )	Nc                       e Zd Zy)6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   
__module____qualname__ri   r4   r2   myclassrp        r4   rt  c                 X    t        | d         rt        |d         st        d      yNr   zType has been changed+?
isinstancer{   r   r4  rt  s     r2   r8  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric   -    adG,JqtW4M !899r4   rE   rd  rx  r   r   )rX   r   objectr   r	   r   )r  r8  rI   cdist_yright_yrt  s        @r2   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble  sM    	 		 xx')V4d:6Wgw{;r4   c           	         	 t        ||fd|i|}t        ||fdt        |      i|}t        ||fdd|z   i|}t        |||t        dkD         t        |||t        dkD         y # t        $ r}	|	j
                  }
t        dkD  r t        |
j                         t        |	       t        j                  |
      5  t        ||fd|i| d d d        n# 1 sw Y   nxY wt        j                  |
      5  t        ||fdt        |      i| d d d        n# 1 sw Y   nxY wt        j                  |
      5  t        ||fdd|z   i| d d d        n# 1 sw Y   nxY wY d }	~	y Y d }	~	y d }	~	ww xY wNr3   r)  r   rG  )
r   r-  r   r   r   	__class__printr   r+  r,  )r  r.  r/  r3   rK  r   y1y2y3r   e_clss              r2   _check_calling_conventionsz$TestCdist._check_calling_conventions	  sh   	Cr27f77Br2=d6l=f=Br2Ag&6A&AB BgkBBgkB  
	AKKE{enn%au% 7b"6V6v67 7 7u% =b"<T&\<V<= = =u% Ab"@Wv%5@@A A A A A
	As`   9A( (	E/1A
E*;C	E*C	E*5D	E*D 	E*8E	E*E	E**E/c                 (   | j                   D ]  }t        |   d d dd d df   }t        |   dd dd d df   }t        dkD  rt        d|d|       |dv rd|vrL| j	                  |||       |d	k(  rbt        j                  ||g      j                  t
        j                        }t        j                  |d
d      }| j	                  ||||       |dk(  st        j                  ||g      j                  t
        j                        }t        j                  t        j                  |j                              }t        j                  t
        j                  j                  |      j                        }| j	                  ||||        y )Nrc  r   rl   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r  r'   r   r}   r   Vr#   VI)r  rZ   r   r  r  rX   vstackr   rD   var
atleast_2dcovr`  r   r[  inv)r  r3   eo_namer.  r/  X12r  r  s           r2   test_cdist_calling_conventionsz(TestCdist.test_cdist_calling_conventions  sc    (( 	GG GSqS$B$Y'BGQTT3Q3Y'B{k69g> ) ) .47-B++BF; %iiR)00;FF3QQ///B!/D=(iiR)00;MM"&&-0XXbiimmA.001//B2/F3	Gr4   c           	         d}t         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d	   fg}|D ]k  }|d
   d d dd d df   }|d
   dd dd d df   }	 t        |||      }|d   D ]2  }t         ||       ||      |      }	t        ||	|t        dkD         4 m y # t
        $ r}
|
j                  }t        dkD  r t        |j                         t        |
       |d   D ]J  } ||      } ||      }t        j                  |      5  t        |||       d d d        @# 1 sw Y   IxY w Y d }
~
d }
~
ww xY w)NHz>rK   r  rO   r_   rN   r   rM   r]   r   rc  r   rl   r   rd  rG  )rZ   r  r   r   r   r   r  r  r   r+  r,  )r  r3   rK  teststestr.  r/  r  new_typer  r   r  X1newX2news                 r2   test_cdist_dtype_equivalencez&TestCdist.test_cdist_dtype_equivalence=  s   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM  	KDa1dd#BaAss#BK2r&1 !%Q KHx|Xb\&IB#BgkJK!	K
  	;Q;%..)!H $Q ;H$RLE$RLEu- ;eU6:; ; ;;	;s1   C	E-A"E(=E		E(EE((E-c                    d}t         d   }t         d   }|j                  d   |j                  d   }}t               }|dk(  rd|d<   t        j                  ||ft        j
                        }t        |||fi |}	t        |||fd	|i|}
t        |	|
|t        d
kD         t        |
|u        t        j                  |dz
  |dz   ft        j
                        }t        j                  t              5  t        |||fd	|i| d d d        t        j                  d
|z  d
|z  ft        j
                        d d d
d d d
f   }t        j                  ||ft        j
                  d      }t        j                  t              5  t        |||fd	|i| d d d        t        j                  t              5  t        |||fd	|i| d d d        t        j                  ||ft        j                        }t        j                  t              5  t        |||fd	|i| d d d        y # 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   y xY w)NrC  rD  rE  r   r$   rR  rO  rE   outr   rG  rl   F)rF   order)rZ   r   dictrX   emptyrD   r   r   r   r   r+  r,  r{   int64)r  r3   rK  r.  r/  out_rout_cr   out1rL  rM  out2out3out4out5s                  r2   test_cdist_outzTestCdist.test_cdist_outX  s!   
^
^xx{BHHQKu[ F3Kxxbii82r6,V,2r66t6v6 	BS'A+> 	d
 xxq%'*"))<]]:& 	6"b&5d5f5	6 xxYE	""))558qS#A#X?xxbiisC]]:& 	6"b&5d5f5	6]]:& 	6"b&5d5f5	6 xxbhh7]]:& 	6"b&5d5f5	6 	6	6 	6	6 	6	6 	6
	6 	6s0   5H,H99II,H69IIIc                 P   d}t         d   d d dd d df   }t         d   d d dd d df   }|j                         }|j                         }t        ||       t        ||       t        |j                  j
                          t        |j                  j
                          t        |j                  j
                         t        |j                  j
                         t               }|dk(  rd|d<   t        |||fi |}t        |||fi |}	t        ||	|t        dkD         y )	NrC  rD  r   rE  r$   rR  rO  rG  )
rZ   copyr	   r   flagsc_contiguousr  r   r   r   )
r  r3   rK  r.  r/  X1_copyX2_copyr   rL  rM  s
             r2   test_stridingzTestCdist.test_striding  s    
^CaC1H%
^CaC1H%'')'') 	R!R!BHH)))*BHH)))***+**+[ F3K2r6,V,7GV6v6BS'A+>r4   c                 l   t         j                  j                  dd      }t         j                  j                  dd      }t               }|dk(  rd|d<   t	        ||fd|i|}|||fD cg c]  }t        j                  |       }}~~~t        r
t                t        d |D              sJ y c c}w )N
   r$   rR  rO  r3   c              3   .   K   | ]  } |       d u   y wrn   ri   )rq   weak_refs     r2   rs   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s     @(8:%@s   )
rX   r   r   r  r   weakrefrefr   r   rz   )r  r3   ri  rj  r   r  v	weak_refss           r2   test_cdist_refcountzTestCdist.test_cdist_refcount  s    YY^^B#YY^^B#[ F3KB464V4 /1"c];W[[^;	;CN@i@@@@ <s   +B1Nr  )r   rr  rs  r  r0  rA  rN  r+  markparametrizerX   infrW  ra  rm  r  r  r  r  r  r  r  ri   r4   r2   r
  r
    s    6:*"9H? [[S3c4#&S"&&#: ;G;G?<$<C*G>K6%6N?4Ar4   r
  c            	       V   e 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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                  jS                  d$d%d&d'd(d)e*jV                  g      d*        Z,d+ Z-d, Z.d- Z/e
j                  j                  d.        Z0e
j                  j                  d/        Z1e
j                  j                  d0        Z2e
j                  j                  d1        Z3e
j                  j                  d2        Z4e
j                  j                  d3        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]d\ Z^e
j                  j                  d]        Z_d^ Z`d_ Zadfd`Zbda Zcdb Zddc Zedd Zfye)g	TestPdistc                 Z   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| _        y r  r  r  s    r2   r  zTestPdist.setup_method  r  r4   c                 ^   ddgddgddgg}dt        j                  d      d}dgd	z  }t        j                  t              5  t        |fd
|i| d d d        t        j                  t              5  t        |fd
t        |      i| d d d        t        j                  t              5  t        |fd
d|z   i| d d d        t        j                  t              5  t        |g|d
|i d d d        t        j                  t              5  t        |g|d
t        |      i d d d        t        j                  t              5  t        |g|d
d|z   i d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   y xY w)Nr   r   r  r  r  r$  r   r&  r(  r3   r)  )rX   r*  r+  r,  r   r   r-  )r  r3   r.  r   r   s        r2   test_pdist_extra_argszTestPdist.test_pdist_extra_args  s   2hc
S#J/$(ryy|<v|]]9% 	/".V.v.	/]]9% 	5"4T&\4V4	5]]9% 	9"8Wv-88	9]]9% 	,"+d+V+	,]]9% 	2"1D1T&\1	2]]9% 	6"55Wv-5	6 	6	/ 	/	5 	5	9 	9	, 	,	2 	2	6 	6sH   E&3E3,E?FF
F#&E03E<?FFF #F,c                 T   dd}ddgddgddgg}d	t        j                  d      d
}d	gdz  }t        j                  t              5  t        ||       d d d        t        j                  t              5  t        ||g|  d d d        t        j                  t              5  t        ||fi | d d d        t        j                  t              5  t        ||dd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||ddd       d d d        t        j                  t              5  t        ||dd       d d d        t        j                  t              5  t        ||d       d d d        t        j                  t              5  t        ||ddd       d d d        t        t        ||dd      d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   LxY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nrl   r   c                     ||z   |z   S rn   ri   r3  s        r2   r8  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  r9  r4   r   r   r  r  r  r$  r&  r(  r:  r;  r<  r=  r>  r?  r@  )rX   r*  r+  r,  r   r   r   )r  r8  r.  r   r   s        r2   test_pdist_extra_args_customz&TestPdist.test_pdist_extra_args_custom  s5   	( 2hc
S#J/$(ryy|<v|]]9% 	""j!	"]]9% 	)"j(4(	)]]9% 	,"j+F+	,]]9% 	9"jC8	9]]9% 	3"j!Qc2	3]]9% 	3"j!Qc2	3]]9% 	1"j#sC0	1]]9% 	,"j#s+	,]]9% 	'"j#&	']]9% 	>"j#S=	> 	b"%c347	9-	" 	"	) 	)	, 	,	9 	9	3 	3	3 	3	1 	1	, 	,	' 	'	> 	>sx   H+5H8$III6I,(I9J	J8J+H58IIII),I69JJJJ'c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  pdist-double-inppdist-euclideanr   rH  rZ   wpdist_no_constr   r  rK  r\  Y_rightY_test1s        r2   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random  5    !"&'!![1s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y r  r  r  s        r2   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u  r  r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rX   r]   rZ   r  r   r  s        r2   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32  s>    JJr,-.&'!![1s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rF  r  r  r  rK  r\  r  Y_test2s        r2    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC  s6    !"&'!!%56s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  irispdist-euclidean-irisr   r  r  r  s        r2    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double
  s3    vJ+,!![1s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   rG  rX   r]   rZ   r  r   r   r  s        r2   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32  B    JJr&z"+,!![1sGaKHr4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  rF  r  r  r  s        r2   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonC  s6     vJ+,!!%56s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclideanr'   r  rZ   r   r   r  s        r2   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_random$  s5    !"'(<(s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       t        j
                  |dd      }t        |d|	      }t	        |||       y )
Nr  r  r  r'   r  r   rl   r  r  )rX   r]   rZ   r   r   r  )r  rK  r\  r  r  r  r  s          r2   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float32+  sl    JJr,-.'(<(s3 FF111%<1-s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_seuclideanr  r  r  s        r2   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonC7  s6    !"'(,-s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-seuclidean-irisr'   r  r  r  s        r2   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_iris?  s3    vJ,-<(s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y )Nr   r  r  r'   r  )rX   r]   rZ   r   r   r  s        r2   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32F  s<    JJr&z",-<(s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  r  r  r  r  s        r2   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonCN  s6     vJ,-,-s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cosiner   r  rZ   wpdistr   r  s        r2   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_randomW  s4    !"^$H%s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  rX   r]   rZ   r  r   r  s        r2    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32^  s=    JJr,-.^$H%s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cosiner  r   r  s        r2   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonCe  s4    !"^$M*s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  pdist-cosine-irisr   r   r   r  s        r2   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_irism  s3    vJ()H%s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r
  r   r   r   r   )rX   r]   rZ   r  r   r   r  s        r2   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32u  sB    JJr&z"()H%sGaKHr4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr   r  r
  r  r   r   r  s        r2   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC}  s3    vJ()M*s3r4   c                     t        j                  t         j                  j                  d      j	                  d            }t        j
                  ||g      }t        t        |d      d   dk\  d       y )Ni9  [   r   r   z&cosine distance should be non-negative)msg)rX   absr   r   r   r  r   r  )r  r   r\  s      r2   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s\     FF299((.33B78IIq!fq(#A&!+<	>r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-cityblockr   r  r  r  s        r2   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  s5    !"&'!![1s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r  r  r  s        r2   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  s>    JJr,-.&'!![1s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_cityblockr  r  r  s        r2    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  s6    !"&'!!%56s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )NrY  r  pdist-cityblock-irisr   r  r  r  s        r2   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  s3    vJ+,!![1s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r   r   r   rG  r  r  s        r2   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )NrY  r  r   r  r  r  r  s        r2   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  s6     vJ+,!!%56s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nr  r  pdist-correlationr   r  r   r  s        r2   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  s5    !"()M*s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r'  r  r  s        r2   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  s>    JJr,-.()M*s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r(  test_correlationr  r   r  s        r2   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  s6    !"()./s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  pdist-correlation-irisr   r  r   r  s        r2   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  s3    vJ-.M*s3r4   c                     d}t         d   }t        j                  t         d         }t        |d      }t	        |||t
        dkD         y )Nr  r  r0  r   r   rG  )rZ   rX   r]   r  r   r   r  s        r2   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sB    vJ**R 89:M*sGaKHr4   c                     t         j                  dkD  rd}nt        j                  d       t        d   }t        d   }t        |d      }t        ||       y )Nl        r  zsee gh-16456r  r0  r-  r  )sysmaxsizer+  skiprZ   r  r   r  s        r2    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  sL    ;;CKK'vJ-../s3r4   rO  rP  rQ  r   r   皙	@c                 p    d}t         d   }t        |d|      }t        |d|      }t        ||d|       y )NrT  r  r$   rU  rV  r   )r   rH  r  )r  rO  rK  r\  rL  rM  s         r2   test_pdist_minkowski_random_pz'TestPdist.test_pdist_minkowski_random_p  s=    !"Qq1Q 0A6BQS1r4   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y Nr  r  pdist-minkowski-3.2r$   r9  rU  r  r  r  s        r2   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random  s7    !"*+!![C8s3r4   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y r=  r  r  s        r2   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32  s@    JJr,-.*+!![C8s3r4   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  r>  rV  r9  rU  r  r  r  s        r2    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC  s8    !"*+!!%5=s3r4   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-3.2-irisr$   r9  rU  r  r  r  s        r2   test_pdist_minkowski_3_2_irisz'TestPdist.test_pdist_minkowski_3_2_iris
  5    vJ/0!![C8s3r4   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||       y )Nr   r  rE  r$   r9  rU  r  r  r  s        r2   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32  s>    JJr&z"/0!![C8s3r4   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rE  rV  r9  rU  r  r  r  s        r2   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonC  6    vJ/0!!%5=s3r4   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  pdist-minkowski-5.8-irisr$   r"  rU  r  r  r  s        r2   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_iris"  rG  r4   c                     d}t        j                  t        d         }t        d   }t        |dd      }t	        |||t
        dkD         y )	Nr   r  rN  r$   r"  rU  r   rG  r  r  s        r2   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float32*  sD    JJr&z"/0!![C8sGaKHr4   c                 d    d}t         d   }t         d   }t        |dd      }t        |||       y )Nr  r  rN  rV  r"  rU  r  r  r  s        r2   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonC2  rL  r4   c                    t        j                  g d      j                  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        j                  t              5  t        d
dgddggd       d d d        y # 1 sw Y   y xY w)N)r   r   r  r   r   rl   r#   rd  re  rg  rf  r   r   r   r   r%  )
rX   r   r   r   r   rh  r+  r,  r{   r  )r  r   rk  rl  s       r2   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobis:  s   HH)*222q9Q}-sBGGCL"''#,!wws|RWWS\2773<I 	J HHq!fr1g1v1v2w?@Q}-ggajsCc1a#gq!QWaPQ ]]:& 	;QFQF#M:	; 	; 	;s   !D>>Ec                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrC  rJ   pdist-hammingr   r  r   r  s        r2   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_randomK  s4    "#_%I&s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rW  r  r  s        r2   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32R  =    JJr-./_%I&s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y NrC  rJ   rX  test_hammingr  r   r  s        r2   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonCY  s4    "#_%N+s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rW  rX   r   rZ   r  r   r  s        r2   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_random`  r\  r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rW  r  r  s        r2   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32g  r\  r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y r^  rb  r  s        r2   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonCn  s=    JJr-./_%N+s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y N:0yE>rJ   pdist-jaccardr    r  r   r  s        r2   test_pdist_jaccard_randomz#TestPdist.test_pdist_jaccard_randomu  s4    "#_%I&s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y ri  r  r  s        r2   !test_pdist_jaccard_random_float32z+TestPdist.test_pdist_jaccard_random_float32|  =    JJr-./_%I&s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y Nrj  rJ   rk  test_jaccardr  r   r  s        r2   test_pdist_jaccard_random_nonCz(TestPdist.test_pdist_jaccard_random_nonC  s4    "#_%N+s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y ri  rb  r  s        r2   test_pdist_djaccard_randomz$TestPdist.test_pdist_djaccard_random  ro  r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y ri  r  r  s        r2   "test_pdist_djaccard_random_float32z,TestPdist.test_pdist_djaccard_random_float32  ro  r4   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrC  rc  r%  r    r  r  r   rX   zerosr   r  rK  Ys      r2   test_pdist_djaccard_allzerosz&TestPdist.test_pdist_djaccard_allzeros  s0    "((6"I.ac2r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||       y rq  rb  r  s        r2   test_pdist_djaccard_random_nonCz)TestPdist.test_pdist_djaccard_random_nonC  s=    JJr-./_%N+s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r2   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  s5    !"*+?+s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nrj  r  r  r!   r   rG  rX   r]   rZ   r   r   r   r  s        r2   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sD    JJr,-.*+?+sGaKHr4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nr  r  r  test_jensenshannonr  r  r  s        r2   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  s6    !"*+/0s3r4   c                 z    t               rd}nd}t        d   }t        d   }t        |d      }t        |||       y )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )rj   rZ   r   r   r  s        r2   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  s=    ;CCvJ/0?+s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Ngư>r  r  r!   r   r  r  r  s        r2   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sB    JJr&z"/0?+sGaKHr4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Ng-C6
?r  r  r  r  r  r  s        r2   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  s4    vJ/0/0s3r4   c                     d}t        t        j                  d      d      }t        t        j                  d      ||       y )NrC  ry  rr  r  r  rz  r|  s      r2   !test_pdist_djaccard_allzeros_nonCz+TestPdist.test_pdist_djaccard_allzeros_nonC  s0    "((6"N3ac2r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrj  r  pdist-chebyshevr   r  r  r  s        r2   test_pdist_chebyshev_randomz%TestPdist.test_pdist_chebyshev_random  s5    !"&';'s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr  r  r  r   r   rG  r  r  s        r2   #test_pdist_chebyshev_random_float32z-TestPdist.test_pdist_chebyshev_random_float32  sD    JJr,-.&';'sGaKHr4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )Nrj  r  r  test_chebyshevr  r  r  s        r2    test_pdist_chebyshev_random_nonCz*TestPdist.test_pdist_chebyshev_random_nonC  s6    !"&'+,s3r4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )NrY  r  pdist-chebyshev-irisr   r  r  r  s        r2   test_pdist_chebyshev_irisz#TestPdist.test_pdist_chebyshev_iris  s3    vJ+,;'s3r4   c                     d}t        j                  t        d         }t        d   }t        |d      }t	        |||t
        dkD         y )Nr   r  r  r   r   rG  r  r  s        r2   !test_pdist_chebyshev_iris_float32z+TestPdist.test_pdist_chebyshev_iris_float32  sB    JJr&z"+,;'sGaKHr4   c                 `    d}t         d   }t         d   }t        |d      }t        |||       y )NrY  r  r  r  r  r  r  s        r2   test_pdist_chebyshev_iris_nonCz(TestPdist.test_pdist_chebyshev_iris_nonC  s4    vJ+,+,s3r4   c                 0   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       y Nrl   r   rl   rl   r   rl   rl   r   rl   rl   rE   333333?r   绽|=rH  r   	wmatchingrX   r   r  r   r  mm2s      r2   test_pdist_matching_mtica1z$TestPdist.test_pdist_matching_mtica1  sd    bhh/hh/1rxxt<xxt<>3QU3Cae4r4   c                 0   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       y Nrl   r   rl   rl   rl   r   rE   UUUUUU?r   r  r  r  r  s      r2   test_pdist_matching_mtica2z$TestPdist.test_pdist_matching_mtica2  sd    bhhy)XXi(*rxx	6hhy575qu5E6r4   c                 0   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       y r  wjaccardrX   r   r  r   r  s      r2   test_pdist_jaccard_mtica1z#TestPdist.test_pdist_jaccard_mtica1  sd    RXXo.XXo.0bhhd;hhd;=3QU3Cae4r4   c                 0   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       y r  r  r  s      r2   test_pdist_jaccard_mtica2z#TestPdist.test_pdist_jaccard_mtica2  sd    RXXi(XXi(*bhhy5hhy575qu5E6r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )Nr  r  rE   r   r   r  r  wyulerX   r   r  r   r  r   r  s      r2   test_pdist_yule_mtica1z TestPdist.test_pdist_yule_mtica1$  sr    "((?+((?+-288O4888O48:Q;!H1151AAE2r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )Nr  r  rE   r   r   r  r  r  r  s      r2   test_pdist_yule_mtica2z TestPdist.test_pdist_yule_mtica2.  sr    "((9%((9%'288IT288IT24Q;!H1151AAE2r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rE   r   g۶m۶m?r   r  r  wdicerX   r   r  r   r  r   r  s      r2   test_pdist_dice_mtica1z TestPdist.test_pdist_dice_mtica18  sr    "((?+((?+-288O4888O48:Q;!H5qu5E6r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rE   r   rg  r   r  r  r  r  s      r2   test_pdist_dice_mtica2z TestPdist.test_pdist_dice_mtica2B  sr    "((9%((9%'288IT288IT24Q;!H3QU3Cae4r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y 	Nr  r  rE   r   g      ?r   r  r  )r)   rX   r   r  r   r  r   r  s      r2   test_pdist_sokalsneath_mtica1z'TestPdist.test_pdist_sokalsneath_mtica1L  s    113/>/>@Q;!H5qu5E6r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y 	Nr  r  rE   r   g?r   r  r  )wsokalsneathrX   r   r  r   r  r   r  s      r2   test_pdist_sokalsneath_mtica2z'TestPdist.test_pdist_sokalsneath_mtica2V  sr    ),),."((9D9((9D9;Q;!H5qu5E6r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y r  wrogerstanimotorX   r   r  r   r  r   r  s      r2    test_pdist_rogerstanimoto_mtica1z*TestPdist.test_pdist_rogerstanimoto_mtica1`  ss    BHH_5HH_57RXXoTBXXoTBDQ;!H5qu5E6r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y r  r  r  s      r2    test_pdist_rogerstanimoto_mtica2z*TestPdist.test_pdist_rogerstanimoto_mtica2j  sr    BHHY/HHY/1RXXit<XXit<>Q;!H5qu5E6r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rE   r   r  r   r  r  wrussellraorX   r   r  r   r  r   r  s      r2   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica1t  r  r4   c                 X   t        t        j                  g d      t        j                  g d            }t        t        j                  g dt              t        j                  g dt                    }t        dkD  rt        |       t        |ddd       t        |ddd       y )	Nr  r  rE   r   r  r   r  r  r  r  s      r2   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2~  sr    ++-)48)48:Q;!H5qu5E6r4   c                     t         d   }t        dkD  r t        |j                  |j                         d}t        |d      }t        |d      }t        |||t        dkD         y )Nr  r   rC  r   test_canberrarG  )rZ   r   r  r   rF   r  r   )r  DrK  r  r  s        r2   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_match  sS    vJQ;!''177#Q
+Q0BS'A+>r4   c                 X    d}t        dgdgfd      }d}t        |||t        dkD         y )Nrj  r:  r  r   gd>@1?r   r  )r  r   r   )r  rK  pdist_yr  s       r2   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_711  s4     !C53%.*=sGaKHr4   c                      G d d      fd}t        j                          g        ggt              }t        ||      }d}t	        ||t
        dkD         y )	Nc                       e Zd Zy)6TestPdist.test_pdist_custom_notdouble.<locals>.myclassNrq  ri   r4   r2   rt  r    ru  r4   rt  c                 X    t        | d         rt        |d         st        d      yrw  ry  r{  s     r2   r8  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metric  r|  r4   rE   rd  rx  r   r}  )rX   r   r~  r   r	   r   )r  r8  rI   r  r  rt  s        @r2   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble  sR    	 		 xx')wyk2&AZ0Wgw{;r4   c           	         	 t        |fd|i|}t        |fdt        |      i|}t        |fdd|z   i|}t        |||t        dkD         t        |||t        dkD         y # t        $ r}|j
                  }	t        dkD  r t        |	j                         t        |       t        j                  |	      5  t        |fd|i| d d d        n# 1 sw Y   nxY wt        j                  |	      5  t        |fdt        |      i| d d d        n# 1 sw Y   nxY wt        j                  |	      5  t        |fdd|z   i| d d d        n# 1 sw Y   nxY wY d }~y Y d }~y d }~ww xY wr  )
r   r-  r   r   r   r  r  r   r+  r,  )
r  r\  r3   rK  r   r  r  r  r   r  s
             r2   r  z$TestPdist._check_calling_conventions  sT   	Cq2262Bq8f88Bq<6!1<V<B BgkBBgkB  
	<KKE{enn%au% 2a11&12 2 2u% 8a7V778 8 8u% <a;& 0;F;< < < < <
	<s`   6A% %	E).A
E$8C	E$C	E$1D		E$D	E$3E	E$E	E$$E)c                    | j                   D ]=  }t        |   d d dd d df   }t        dkD  rt        d|d|       |dv rd|vr8| j	                  ||       |dk(  rJt        j                  |j                  t
        j                        dd	
      }| j	                  |||       |dk(  st        j                  t        j                  |j                  t
        j                        j                              }t        j                  t
        j                  j                  |      j                        }| j	                  |||       @ y )Nrc  r   r  r  >   r   r+   matchingr&   r"   r)   r(   r%   r  r'   r   rl   r  r  r#   r  )r  rZ   r   r  r  rX   r  r   rD   r  r  r`  r   r[  r  )r  r3   r  r\  r  r  s         r2   test_pdist_calling_conventionsz(TestPdist.test_pdist_calling_conventions  s   
 (( 	BG 7CaC1H%A{k69g> ) ) .47-B++Av6 %FF188BII.QQ?//6Q/?=(MM"&&")))<)>)>"?@XXbiimmA.001//6b/A+	Br4   c           	         d}t         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d   ft         d   | j                  d	   fg}|D ]S  }|d
   d d dd d df   }	 t        ||      }|d   D ]+  }t         ||      |      }t        |||t        dkD         - U y # t
        $ r}	|	j                  }
t        dkD  r t        |
j                         t        |	       |d   D ]A  } ||      }t        j                  |
      5  t        ||       d d d        7# 1 sw Y   @xY w Y d }	~	d }	~	ww xY w)Nr  rK   r  rO   r_   rN   r   rM   r]   r   rc  r   rd  rl   rG  )rZ   r  r   r   r   r   r  r  r   r+  r,  )r  r3   rK  r  r  r.  r  r  r  r   r  r/  s               r2   test_pdist_dtype_equivalencez&TestPdist.test_pdist_dtype_equivalence  sg   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM  	KDa1cc"BK2f- !%Q KHx|F;B#BgkJK	K  1Q;%..)!H $Q 1H!"Bu- 1b01 1 111s1   7B::	EAED4	+	E4D=9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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        j                  t              5  t        ||fd|	i| d d d        t	        j
                  d|z  t        j                  
      d d d   }
t        j                  t              5  t        ||fd|
i| d d d        t	        j
                  |t        j                  
      }t        j                  t              5  t        ||fd|i| d d d        y # 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   y xY w)NrC  rM   rc  r   r   rl   r$   rR  rO  rE   r  r  r%  )rZ   r   r   r  rX   r  rD   r   r   r   r+  r,  r{   r  )r  r3   rK  r\  out_sizer   r  r  r  r  r  r  s               r2   test_pdist_outzTestPdist.test_pdist_out  s   $%cc3Q3h/
aggaj1n5:;[ F3Kxx		26,V,66t6v6 	s3 	4  xx1BII6]]:& 	1!V000	1 xxHBII6ss;]]:& 	1!V000	1 xx1]]:& 	1!V000	1 	1	1 	1
	1 	1
	1 	1s$   6GG+GGGG%c                 V   d}t         d   d d dd d df   }|j                         }t        |j                  j                          t        |j                  j                         t               }|dk(  rd|d<   t        ||fi |}t        ||fi |}t        |||t        dkD         y )	NrC  rM   rc  r   r$   rR  rO  rG  )	rZ   r  r   r  r  r  r   r   r   )r  r3   rK  r\  X_copyr   rL  rM  s           r2   r  zTestPdist.test_striding  s     $%cc3Q3h/ 	AGG((()))*[ F3K1f''66,V,BS'A+>r4   Nr  )gr   rr  rs  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#  r%  r)  r+  r.  r1  r3  r8  r  rX   r  r;  r?  rA  rC  rF  rI  rK  rO  rQ  rS  rU  rY  r[  r`  rc  re  rg  rl  rn  rs  ru  rw  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  ri   r4   r2   r  r    s   66&!9F4444 [[4 4 [[I I [[4 44
44444444 [[4 4 [[I I [[4 4>444 [[4 4 [[I I [[4 4444 [[4 4 [[I I [[4 4 [[S3c3RVV"DE2 F2444 [[4 4 [[4 4 [[4 4 [[4 4 [[I I [[4 4;"444444444443
44I4
4I43
4I44I457573375777777 [[? ?I<C*B8K2 1D?r4   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestSomeDistanceFunctionsc                 t    t        j                  g d      }t        j                  g d      }||fg| _        y )Nr  r   r   r   )rX   r   cases)r  r   r4  s      r2   r  z&TestSomeDistanceFunctions.setup_method)  s+    HH_%HH_%!fX
r4   c           	         | j                   D ]m  \  }}t        ||d      }t        |d       t        ||d      }t        |d       t        ||d      }t        |d       t        ||d      }t        |d	       o t        j                  d
dg      }t        j                  ddg      }t        t        ||      t        |j                  d      |j                  d                   y )Nrl   rU  r        ?gqaz@r   gw@rQ  gR"6@i`  i  i^  i  uint16)r  r$   r
   rX   r   r	   r   )	r  r   r4  dist1dist1p5dist2dist0p25rr   r   s	            r2   rV  z(TestSomeDistanceFunctions.test_minkowski0  s    JJ 	DDAqaa(Es+1,G)CDaa(Ez2 A.H*BC	D HHc3Z HHc3Z Yq!_qxx1188H3EF	Hr4   c                     | j                   D ]0  \  }}t        ||      }t        |t        j                  d             2 y )Nrc  )r  
weuclideanr
   rX   rh  r  r   r4  rk  s       r2   rF  z(TestSomeDistanceFunctions.test_euclideanC  s7    JJ 	2DAqa#Dbggaj1	2r4   c                 \    | j                   D ]  \  }}t        ||      }t        |d        y )Nr   )r  wsqeuclideanr
   r  s       r2   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclideanH  s/    JJ 	+DAq1%Dc*	+r4   c           
          | j                   D ]L  \  }}t        ||      }t        |ddt        j                  d      t        j                  d      z  z  z
         N y )Nr   g      2@      )r  wcosiner
   rX   rh  r  s       r2   r  z%TestSomeDistanceFunctions.test_cosineM  sO    JJ 	PDAq1a=DcDBGGBK"''"+4M,N&NO	Pr4   c           
         t        j                  g d      }t        j                  g d      }| j                  D ]L  \  }}t        ||      }t	        |dt        j
                  ||      t        |      t        |      z  z  z
         N y )N)      r   r   )UUUUUUr  gUUUUUU@r   )rX   r   r  wcorrelationr
   r_  r   )r  xmymr   r4  rk  s         r2   r-  z*TestSomeDistanceFunctions.test_correlationR  so    XXn%XX9:JJ 	TDAq1%DcBFF2rNd2hb>Q,R&RS	Tr4   c                     t        j                  g d      }t        j                  g d      }t        ||      }d|cxk  r4dt        j                  t         j                        j
                  z  k  sJ  J y )N)%re  re  re  re  re  re         re  re  re  r  r  r  re  r  re  r  re  re  r  r  re  r   re  re  r  re  re  r  re  r  r  r  r  r  r  re  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   re  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )rX   r   r   finfor   rK  r  s       r2   test_correlation_positivez3TestSomeDistanceFunctions.test_correlation_positiveY  sm    HH I J HH I J 1a D9B"**!5!9!9999999r4   c                    t        j                  g d      }t        j                  g d      }t        j                  g dg dg dg      }| j                  D ]1  \  }}t        |||      }t	        |t        j
                  d             3 y )Nr  r  )r   r   re  )r   r   r   )re  r   r   g      @)rX   r   r  r#   r
   rh  )r  r   r4  virk  s        r2   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobisd  sj    HH_%HH_%XXIJJJ 	4DAqq!R(Dbggcl3	4r4   N)r   rr  rs  r  rV  rF  r  r  r-  r  r  ri   r4   r2   r  r  '  s-    H&2
+
P
T	:4r4   r  c                       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y)TestSquareFormc                 H    | j                   D ]  }| j                  |        y rn   )checked_dtypescheck_squareform_matrixr  rF   s     r2   test_squareform_matrixz%TestSquareForm.test_squareform_matrixp  %    (( 	0E((/	0r4   c                 H    | j                   D ]  }| j                  |        y rn   )r  check_squareform_vectorr  s     r2   test_squareform_vectorz%TestSquareForm.test_squareform_vectort  r  r4   c                 (   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|             y )N)r   r   rE   r   rl   rl   r   g@)rl   )rX   r{  r   r	   r   rF   r   r   )r  rF   ArAs       r2   r  z&TestSquareForm.check_squareform_matrixx  s    HHV5)]RXXt$RXXu%HHV5)]RXXt$RXXu%HHq#ha)7]RXXt$RXXu%2rxxU;<r4   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|             y )Nr#  rE   r$  r   g @)r   r   )rX   r{  r   r	   r   rF   r   r   )r  rF   r  rvs       r2   r   z&TestSquareForm.check_squareform_vector  s    HHT']RXXv&RXXu%2u%HHcU%(]RXXv&RXXu%2rxx!SC8(<EJKr4   c                 H    t        dd      D ]  }| j                  |        y )Nr   rc  )r|   check_squareform_multi_matrixr  ns     r2   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrix  s%    q! 	2A..q1	2r4   c                    t         j                  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 ]I  }t        |dz   |d         D ]2  }	||	k7  rt	        |||	f   ||          |dz  }"t	        |||	f   d       4 K y )N   rl   r   r%  r   )rX   r   r   r  r	   lenr   r   r   r  r|   )
r  r,  r\  r}  r%  Yrskr   js
             r2   r*  z,TestSquareForm.check_squareform_multi_matrix  s   IINN1a AS\1%qM]GGa<!''177BHH-SVQS]A&QqT1Q4 q!A$ 	-A1q5!A$' -6 1a4!A$/FA 1a4!,-	-r4   N)r   rr  rs  rX   r   r]   int32int8r  r  r  r!  r  r   r-  r*  ri   r4   r2   r  r  m  sA    jj"**bhhFN00="L2-r4   r  c                   N    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y)TestNumObsYc                     t        dd      D ]B  }t        j                  j                  |d      }t	        |      }t        t        |      |       D y )Nr   r  r/  )r|   rX   r   r   r  r	   r   )r  r,  r\  r}  s       r2   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix  sC    q" 	*A		q!$A"A1q)	*r4   c                     t        j                  t              5  | j                  d       d d d        y # 1 sw Y   y xY wNrl   )r+  r,  r{   check_yr  s    r2   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1  s0     ]]:& 	LLO	 	 	s   5>c                 8    t        | j                  d             y Nr   r   r=  r  s    r2   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2  s     	Q r4   c                 8    t        | j                  d             y )Nr%  rA  r  s    r2   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3      Q r4   c                 8    t        | j                  d             y Nr/  rA  r  s    r2   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4  rE  r4   c                 H    t        dd      D ]  }| j                  |        y )Nrc     )r|   minit)r  r   s     r2   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10  s"    q" 	AJJqM	r4   c                    t               }t        dd      D ]  }|j                  ||dz
  z  dz          t        dd      D ]:  }||vst        j                  t
              5  | j                  |       d d d        < y # 1 sw Y   GxY wNr   rJ  rl   rc  i   setr|   addr+  r,  r{   bad_yr  rr   r,  r   s       r2   test_num_obs_y_2_100z TestNumObsY.test_num_obs_y_2_100  s     Eq" 	#AEE!q1u+/"	#q# 	"Az]]:. "JJqM" "	"" "   #B  B		c                 8    t        | j                  |             y rn   rA  r+  s     r2   rK  zTestNumObsY.minit  rE  r4   c                 V    t         j                  j                  |      }t        |      S rn   )rX   r   r   r   r  r,  r4  s      r2   rS  zTestNumObsY.bad_y  s    IINN1|r4   c                 <    t        | j                  |            |k(  S rn   )r   make_yr+  s     r2   r=  zTestNumObsY.check_y  s    Q(A--r4   c                 R    t         j                  j                  ||dz
  z  dz        S Nrl   r   rX   r   r   r+  s     r2   r[  zTestNumObsY.make_y  s"    yy~~qAE{q011r4   N)r   rr  rs  r:  r>  rB  rD  rH  rL  rU  rK  rS  r=  r[  ri   r4   r2   r8  r8    s9    *!
!!	"!.2r4   r8  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestNumObsDMc                    t        dd      D ]v  }t        j                  j                  |d      }t	        |      }t        |      }t        dk\  r t        |j                  |j                         t        t        |      |       x y )Nrl   r  r/  r%  )r|   rX   r   r   r  r   r   r  r   r	   r   )r  r,  r\  r}  r%  s        r2   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  se    q" 	+A		q!$A"A1A!|aggqww'A*	+r4   c                 8    t        | j                  d             y )Nr   r   check_Dr  s    r2   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0      Q r4   c                 8    t        | j                  d             y r<  rd  r  s    r2   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rg  r4   c                 8    t        | j                  d             y r@  rd  r  s    r2   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  rE  r4   c                 8    t        | j                  d             y r@  rd  r  s    r2   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  rE  r4   c                 8    t        | j                  d             y rG  rd  r  s    r2   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  rE  r4   c                 <    t        | j                  |            |k(  S rn   )r   make_Dr+  s     r2   re  zTestNumObsDM.check_D  s    $++a.)Q..r4   c                 B    t         j                  j                  ||      S rn   r^  r+  s     r2   rq  zTestNumObsDM.make_D  s    yy~~a##r4   N)r   rr  rs  rb  rf  ri  rk  rm  ro  re  rq  ri   r4   r2   r`  r`    s*    +!!!!!/$r4   r`  c                     t        | d      S NT)throw)r   )r  s    r2   is_valid_dm_throwrv  	  s    q%%r4   c                   Z    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y)TestIsValidDMc                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY w)Nrc  rE   rX   r{  rD   r+  r,  r{   rv  r  r  s     r2   $test_is_valid_dm_improper_shape_1D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_1D_E  s?    HHT+]]:& 	#q"	# 	# 	#   AAc                 x    t        j                  dt         j                        }t        t	        |      d       y )Nrz  rE   FrX   r{  rD   r	   r   r|  s     r2   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s$    HHT+[^U+r4   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wNr%  r%  r%  rE   r{  r|  s     r2   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s?    HHYbii0]]:& 	#q"	# 	# 	#r~  c                 x    t        j                  dt         j                        }t        t	        |      d       y Nr  rE   Fr  r|  s     r2   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s$    HHYbii0[^U+r4   c                     t         j                  j                  d      }t        |      }t	        dd      D ]	  }d|||f<    t        j                  t              5  t        |       d d d        y # 1 sw Y   y xY w)Nr  r   rc  r   )	rX   r   r   r   r|   r+  r,  r{   rv  r  r4  r  r   s       r2   #test_is_valid_dm_nonzero_diagonal_Ez1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_E!  sh    IINN2qMq! 	AAadG	]]:& 	#q"	# 	# 	#s   A11A:c                     t         j                  j                  d      }t        |      }t	        dd      D ]	  }d|||f<    t        t        |      d       y )Nr  r   rc  r   F)rX   r   r   r   r|   r	   r   r  s       r2   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F)  sM    IINN2qMq! 	AAadG	[^U+r4   c                     t         j                  j                  d      }t        |      }|d   dz   |d<   t	        j
                  t              5  t        |       d d d        y # 1 sw Y   y xY w)Nr  r%  rl   rl   rl   r%  )rX   r   r   r   r+  r,  r{   rv  r  r4  r  s      r2   test_is_valid_dm_asymmetric_Ez+TestIsValidDM.test_is_valid_dm_asymmetric_E0  sW    IINN2qMD'A+$]]:& 	#q"	# 	# 	#s   A$$A-c                     t         j                  j                  d      }t        |      }|d   dz   |d<   t	        t        |      d       y )Nr  r  rl   r  FrX   r   r   r   r	   r   r  s      r2   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F7  s<    IINN2qMD'A+$[^U+r4   c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr$  rE   Tr  r|  s     r2   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1=  s$    HHV299-[^T*r4   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nrl   Tr  r  s      r2   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2A  +    IINN1qM[^T*r4   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y Nr%  Tr  r  s      r2   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3F  r  r4   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )N   Tr  r  s      r2   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4K  r  r4   c                     t         j                  j                  d      }t        |      }t	        t        |      d       y )Nr  Tr  r  s      r2   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5P  s+    IINN2qM[^T*r4   N)r   rr  rs  r}  r  r  r  r  r  r  r  r  r  r  r  r  ri   r4   r2   rx  rx    sC    #
,#
,#,#,++
+
+
+r4   rx  c                     t        | d      S rt  )r   )r4  s    r2   is_valid_y_throwr  V  s    at$$r4   c                   N    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y)TestIsValidYc                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY w)Nr%  r%  rE   rX   r{  rD   r+  r,  r{   r  r  r4  s     r2   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E_  s?    HHWBII.]]:& 	"a!	" 	" 	"r~  c                 x    t        j                  dt         j                        }t        t	        |      d       y )Nr  rE   FrX   r{  rD   r	   r   r  s     r2   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_Fd  s$    HHWBII.Z]E*r4   c                     t        j                  dt         j                        }t        j                  t
              5  t        |       d d d        y # 1 sw Y   y xY wr  r  r  s     r2   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_Eh  s?    HHYbii0]]:& 	"a!	" 	" 	"r~  c                 x    t        j                  dt         j                        }t        t	        |      d       y r  r  r  s     r2   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_Fm  s$    HHYbii0Z]E*r4   c                 P    | j                  d      }t        t        |      d       y )Nr   Tcorrect_n_by_nr	   r   r  s     r2   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2q       "Z]D)r4   c                 P    | j                  d      }t        t        |      d       y r  r  r  s     r2   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3u  r  r4   c                 P    | j                  d      }t        t        |      d       y )Nr/  Tr  r  s     r2   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4y  r  r4   c                 P    | j                  d      }t        t        |      d       y )Nrc  Tr  r  s     r2   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5}  r  r4   c                    t               }t        dd      D ]  }|j                  ||dz
  z  dz          t        dd      D ]:  }||vst        j                  t
              5  | j                  |       d d d        < y # 1 sw Y   GxY wrN  rP  rT  s       r2   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100  s    Eq" 	#AEE!q1u+/"	#q# 	"Az]]:. "JJqM" "	"" "rV  c                 Z    t         j                  j                  |      }t        |d      S rt  )rX   r   r   r   rY  s      r2   rS  zTestIsValidY.bad_y  s!    IINN1!4((r4   c                 V    t         j                  j                  ||dz
  z  dz        }|S r]  r^  rY  s      r2   r  zTestIsValidY.correct_n_by_n  s&    IINNAQKA-.r4   N)r   rr  rs  r  r  r  r  r  r  r  r  r  rS  r  ri   r4   r2   r  r  Z  s9    
"
+"
+****")r4   r  rO  )g      $g      re  c                    t        j                  t              5  t        ddgddg|        d d d        t        j                  t              5  t        ddgddg| ddg       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nrl   r   r%  r/  )r+  r,  r{   r$   rU  s    r2   
test_bad_pr    sy     
z	" %1a&1a&!$%	z	" -1a&1a&!aV,- -% %- -s   A+A7+A47B c                      t        j                  t              5  t        g dg d       d d d        y # 1 sw Y   y xY w)N)FFF)r+  r,  r{   r)   ri   r4   r2   test_sokalsneath_all_falser    s3    	z	" B)+@AB B Bs   4=c                  l    t        t        g dg d      d       t        t        g dg d      d       y )Nrl   r   r%  r   r/  r  rl   rl   rl   r   r   rl   r   rl   r   r   )r	   	wcanberrari   r4   r2   r  r    s$    9i0!4<6:r4   c                  t    t        t        g dg d      dd       t        t        g dg d      dd       y )	Nr  r  gUUUUUU?   decimalr  r  rg  )r
   wbraycurtisri   r4   r2   test_braycurtisr    s(    Iy962NL,?bQr4   c                     t        j                  g d      } t        j                  g d      }t        t        | |      dd       t        t	        | |      t        j
                  d      d       t        j                  t        d      5  t	        | t         j                  d d f   |t         j                  d d f         t        j
                  d      f d d d        t        j                  t        d      5  t        | t         j                  d d f   |t         j                  d d f          d d d        t        j                  t        d      5  t        | d d t         j                  f   |d d t         j                  f          d d d        t        j                  d	      j                  d
d
      }t        j                  t              5  t	        ||       d d d        t        j                  t              5  t        ||       d d d        t         j                  j                  d      }|j                  d      }|j                  d      }t	        ||      }t        ||      }t        |d
z  |d       y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)rl   rl   rl   )r   r   r   r  r  r  r%  Input vector should be 1-Dmatchr/  r   iIr  )rX   r   r
   r  r  rh  r+  r,  r{   newaxisr*  r   r   r   r   )ri  rj  r   rsr4  d1d2s          r2   test_euclideansr    s   	)	B	)	B R,c2>
2r*BGGAJC 
z)E	F E2bjj!m$bQ&78"''!*DE	z)E	F ;R

A&2::q=(9:;	z)E	F ;R2::&1bjj=(9:; 			!Q"A	z	" 1a	z	" Q 
		z	*B
A
A	Aq	B	a	BAr2.)E E; ;; ;
  s=   AJ<7J7JJ(J4JJJ%(J14J=c                      g d} g d}t        j                  t              5  t        | |       d d d        y # 1 sw Y   y xY w)Nr   r   rl   r  r+  r,  r{   whammingr   r4  s     r2   test_hamming_unequal_lengthr    s6    AA	z	" A  s	   8Ac                      g d} g d}g d}d}t        j                  t        |      5  t        | ||       d d d        y # 1 sw Y   y xY w)Nr  r  z/'w' should have the same length as 'u' and 'v'.r  r  )ur  r   r  s       r2   "test_hamming_unequal_length_with_wr    sE    AAA
;C	z	- Aq  s   AA
c                      t        j                  g dd      } t        j                  g dd      }d}t        t        | |      |       y )N)eggsspamr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z|S4rE   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rX   r   r   r  )rr   r   desireds      r2   test_hamming_string_arrayr    sM    
 B 	A 	 B 	A GHQNG,r4   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       y )N)
QUUT@      Y@r  r  g      B@g      N@g     V@g     b@g      8@g      H@r$   rl   )r3   rO  r   )r3   rO  rC  r  )rX   r   r   r   r   )arr_inp0c0p1c1s        r2   test_minkowski_wr    sy    XX 223 4F 
vkQ$	7B	vvkQ$	?B	vkQ	/B	vvkQ	7BB'B'r4   c                     g d} g d}t         j                  t         j                  t         j                  t         j                  fD ]o  }t        t        j                  | |      t        j                  ||            }t        t        j                  |j                  t         j                               q t         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 ]2  }t-        t         |      s|j/                  t1        t         |             4 |D ]N  }t        t        j                  | |      t        j                  ||            }t#        |j                  |       P y )Nr  )r/  rc  r  rE   r   r   )float16float128)rX   r6  int16r5  r  r  asarrayr   r   rF   floatinguint8r  uint32uint64iinfomaxr	   r   r]   	complex64
complex128hasattrr   getattr)r   r4  rF   dumaxr  r  dtypess           r2   test_sqeuclidean_dtypesr    s    	AA''288RXXrxx8 5AU3RZZ5OPaggr{{345 ((BIIryy"))< .xx""1#rzz4&>?"**dV59A3?RRD)1,-. jj"**bllBMMBF( . 2uMM'"e,-	.  %AU3RZZ5OPQWWe$%r4   c                      g d} g d}| D cg c]  }t        |       }}|D cg c]  }t        |       }}t        | |      }t        ||      }t        ||       y c c}w c c}w )N)TTF)TFT)r   r(   r	   )rO  r   r   r   r4  r  r  s          r2   test_sokalmichenerr    sd    AAAQAAQA!QE!QE 	s
   AA#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        y )Nre  g?r   r   gX$I?rl   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?rP  r   g      4@r  )r
   r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r2   test_sokalmichener_with_weightr  )  s     C
C
C
CC#I#)a39o"=>H),Aq6Aq6aX6F&)
DB
IB $ LM"b1#68JKLr4   c                     t        j                  g dg dg dg dg      }|j                         }t        |||        t	        ||        t        ||       y )Nr  r  r  g3333336@gL7@g333333F@)rX   r  r  r   r   r   )r3   r.  r  s      r2   test_modifies_inputr  ?  sM    	\$$') 
*B ggiG	"b&	"fr7#r4   c                 v   t        j                  g dg dg dg dg      }t        j                  t              5  t        ||| d       d d d        t        j                  t              5  t        || d       d d d        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        t        j                  t              5  t        || fi | d d d         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   xY w)Nr  r  r  r  r   )rO  r  r  foor  r'   r  r#   rO  r$   )rX   r  r+  r,  r   r   r   )r3   r.  r5  r   s       r2   test_Xdist_deprecated_argsr  K  s0   	\$$') 
*B
 
y	! "b"fb!" 
y	! b&"   (uCZFl24KFm$;3J6[#8]]9% 	,"b&+F+	, ]]9% 	("f''	( 	((" " 	, 	,	( 	(s/   D+DD#2D/DD #D,	/D8	c                    t         d   d d dd d df   }t        j                  |j                  d         }|d d d    |d d d<   | dv rt	        j
                  d       | t        |       d| z   fD ]c  }t	        j                  t              5  t        |||       d d d        t	        j                  t              5  t        ||||       d d d        e y # 1 sw Y   =xY w# 1 sw Y   |xY w)	NrM   rc  r   rl   )r'   r#   r!   znot applicabler)  r  )rZ   rX   r   r   r+  r7  r-  r,  r{   r   r   )r3   r\  r   r  s       r2   test_Xdist_non_negative_weightsr  g  s    
 !#A#ss(+A

A!fWAccF??$%d6lGf$45  ]]:& 	!Q!	]]:& 	 !QQ	  	  	 		  	 s   C<C#C 	#C,	c                     g d} t        |       }t        ||        t        | t        j                        }t        ||        t	        |j
                  t        j                         dg} t        |       }t	        |j                  d       t	        ||        d} t        j                  t        d      5  t        |        d d d        t        j                  d      j                  ddd      } t        j                  t        d      5  t        |        d d d        ddgd	d
gg} t        j                  t        d      5  t        |        d d d        y # 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr  rE   rl   r  r  rc  r   r   r%  r/  )r   r   rX   r   r	   rF   ru   r+  r,  r{   r*  r   r  s     r2   test__validate_vectorr  v  s0   AAq!"**-Aq!"**%	
AAA	A	z)E	F  			!QA&A	z)E	F  Q!QA	z)E	F     s$   4E	E! E-E!E*-E6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       y )N)r   r  rE   r   re  r+   rl   )rX   r   r  r  r   r	   r   )r   r  s     r2   test_yule_all_samer    sq    
d#AadAaDA8O8aASEaeQrUF#AcUGr4   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       y )N)r   re  re  )re  r   re  r   r   re  rg  g)>d?r  r   r   rl   gД?T)r}   keepdims)rl   r   r%  r/  )rc  r     rf   )	   r        )   r  r  rJ  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   rX   r   )rr   r   s     r2   r  r    sS   oLsCj3*=+-oGMSzlc3ZLqIc
$Szlc3ZLqI"%Szlc3ZLq/358;SzlDSzlc3ZLq/358A{mE 	,!# 	$A 	"""$ 	%A a3DFa39;r4   c                  .   t        j                  g d      } t        j                  g d      }t        | |      }t        | |gd      }t	        ||       t        t        j                  |       t        j                  |      d      }t	        ||       y )N)rl   r   r   )r   r   r   r   rd  )rX   r   r   r   r   r   r  )arr_1arr_2r  r  s       r2   test_gh_17703r0    sq    HHYEHHYEE5!HE5>&1FFH%2=='=='8FFH%r4   rn   )	NNFTFFFFN)zr5  os.pathrR   	functoolsr   r   r  numpyrX   r   numpy.linalgr   numpy.testingr   r   r   r	   r
   r   r   r   r+  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+   fixturer3   rP   r   _tdist_ytdistrZ   rd   rj   r~   r   r   r   r   r   r  r^  rJ  r  r  r  r  r  r  r  
wcityblock
wchebyshevr	  r  wkulczynski1r  r  r  r  r  r  wsokalmichenerr  r
  r  r  r  r8  r`  rv  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  ri   r4   r2   <module>r>     sM  F   $    2 2 2 & & &D D D D D D ~Y7 8
@ 
/222224
 <D
E V

 =  # -17;+0/4	-$`6 '.oD&I!TB   !tQT "td#dEPU`e!'/X\:]	]@ 
Q	>!%aSXY	Qa	H!%aSXabc!.1&w? ?	HY'
Y'

&
!{+{+7#Y59
{u=j)H7	{+ /j)dA dAN	x? x?tC4 C4L@- @-F32 32l $  $F&F+ F+R%6 6r 01- 2-B;R/B-(%>	L,	$(8 4
;:&r4   