a
    .'aS                    @   s  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 d dlZd dlmZ d dlZd dlmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z"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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d d	lm:Z; g d
Z<ej=g dg dg dg dg dg dgddZ>ee>Z?i Z@dd ZAeA  dd ZBdrddZCdsddZDdd ZEdd  ZFd!d" ZGdtd#d$ZHdud%d&ZIeed'd(d)d* dfd+d,ZJd-dd.d* d/ddddddddddd0d eed'd(fd1d2ZKeKed3dd4ZLeKed3ddd5ZMeKed3dd3d6ZNeKed3ddd3d7ZOeKe3ZPeKe,dd8 ZQZReKe9ZSeKe*ZTeKe'ZUeKe&ZVeKe)ZWeKe(ZXeKe/ZYeKe2dd9Z:eKe-ZZeKe+dd9Z[eKe8dd9Z\eKe$Z]eKe%dd9Z^eKe7Z_eKe6Z`eKe4ZaG d:d; d;ZbG d<d= d=ZcG d>d? d?Zdd@dA Zeee  G dBdC dCZfG dDdE dEZgG dFdG dGZhdHdI ZiG dJdK dKZjdLdM ZkG dNdO dOZldPdQ ZmdRdS ZndTdU ZodVdW ZpdXdY ZqdZd[ Zrd\d] Zsd^d_ Ztd`da Zudbdc Zvddde Zwdfdg Zxdhdi Zydjdk Zzdldm Z{dndo Z|dpdq Z}dS )v    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosesuppress_warnings)raises)_distance_pybind)

squareformpdistcdist	num_obs_y
num_obs_dmis_valid_dm
is_valid_y_validate_vector_METRICS_NAMES_METRICS)
braycurtiscanberra	chebyshev	cityblockcorrelationcosinedice	euclideanhammingjaccardjensenshannon	kulsinskimahalanobismatching	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyule)
wminkowski)zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r/   r   '        )r0   r4   r     4     )r1   r5   r8   r      e  )r2   r6   r9   r;   r     )r3   r7   r:   r<   r=   r   doubledtypec                  C   s   t D ]N} | dddd}tjtjtd| }t|}t	|t
|< |  qtt
d t
d< tt
d t
d< tt
d t
d< tt
d	 t
d	< tt
d
 t
d
< d S )Nz.txt z-mldatapdist-boolean-inprandom-bool-datarandom-double-datarandom-float32-datarandom-int-datarandom-uint-data)
_filenamesreplaceospathjoindirname__file__opennpZloadtxteocloseZbool_float32int_uint)fnnameZfqfnfp rZ   @lib/python3.9/site-packages/scipy/spatial/tests/test_distance.pyload_testing_filesr   s    
r\   c                   C   s   t djdk S )Nr      )rQ   ZintpitemsizerZ   rZ   rZ   r[   	_is_32bit   s    r_   c                    s|   dd  D  |d u r(dd  D  d}t dd  D  |dk rrt fdd D s`tdt d j| } |f S )	Nc                 S   s   g | ]}t |qS rZ   )rQ   
asanyarray.0arZ   rZ   r[   
<listcomp>       z!_chk_asarrays.<locals>.<listcomp>c                 S   s$   g | ]}|j d krt|n|qS    )ndimrQ   Zravelra   rZ   rZ   r[   rd      s   r   c                 s   s   | ]}t |V  qd S N)rQ   
atleast_1dra   rZ   rZ   r[   	<genexpr>   re   z _chk_asarrays.<locals>.<genexpr>c                 3   s   | ]}|j  d  j kV  qdS )r   N)rh   ra   arraysrZ   r[   rk      re   z(array ndim must be the same for neg axis)tupleall
ValueErrorrangerh   )rm   axisrZ   rl   r[   _chk_asarrays   s    rs   FTc
                    s|  t |  d}
|
d d |
d  }  |o*| }|sF|rFtdd | D }|rdd | D }t|rd}d}tdd t| |D } d urtn&|rt| d	 j  n|  f S |	rt|rt	|  t
 fd
d| D std|rd	k  rtd|rXtd	kd	 jjk rXt fdd| D }  |rpdk
 rpd |  f S )Nrr   c                 s   s"   | ]}t j|t jjuV  qd S ri   )rQ   magetmasknomaskra   rZ   rZ   r[   rk      re   z_chk_weights.<locals>.<genexpr>c                 S   s   g | ]}t t |qS rZ   )rQ   Zisnansumra   rZ   rZ   r[   rd      re   z _chk_weights.<locals>.<listcomp>Tc                 s   s&   | ]\}}|rt j|n|V  qd S ri   rQ   rv   Zmasked_invalid)rb   rc   Zhas_nanrZ   rZ   r[   rk      s   r   c                 3   s    | ]}j |j   fkV  qd S ri   shapera   )rr   weightsrZ   r[   rk      re   z*weights shape must match arrays along axiszweights cannot be negativec                 3   s   | ]}t j| d V  qdS )rt   N)rQ   takera   )rr   pos_weightsrZ   r[   rk      re   rg   )rs   anyrn   ziprQ   r`   onesr|   _freq_weights_weight_maskedro   rp   Znonzerosize)rm   r}   rr   force_weightsZsimplify_weightsZpos_onlyZ	neg_checkZ
nan_screenmask_screenddofchkedZhas_nansrZ   )rr   r   r}   r[   _chk_weights   sD    
r   c                 C   s2   | d u r| S |  t}| |k r.td|  |S )Nz2frequency (integer count-type) weights required %s)astypeintr   rp   )r}   Zint_weightsrZ   rZ   r[   r      s    
r   c                    s    d u rd t |}| D ]b}t j|}|t jju r8q|jdkrjt fddt|jD }|j|d}|d|	t
 9 }q|S )Nr   rg   c                 3   s   | ]}| kr|V  qd S ri   rZ   rb   irt   rZ   r[   rk      re   z!_weight_masked.<locals>.<genexpr>rt   )rQ   r`   rv   rw   rx   rh   rn   rq   r   r   r   )rm   r}   rr   rc   Z	axis_maskZnot_axesrZ   rt   r[   r      s    

r   c                 C   s   t | |  |k S ri   )rQ   absmax)rc   bZtolrZ   rZ   r[   
within_tol   s    r   c                 C   s.   |rt t| |   t| |||d d S )Nrtolatol)printrQ   r   r   r
   )rc   r   r   r   verbose_rZ   rZ   r[   _assert_within_tol   s    r   c           	         s   t j|t jd}t j|}dd | d j  t fdd| D sRJ dtt| D ]X}|	| | }|
 }|| |< t |d| | } fd	d
| D } qb| |fS )Nr?   c                    s6   t t j |d}| fddt jD S )Nrt   c                    s"   g | ]}|kr j | nd qS rf   r{   r   rc   rr   rZ   r[   rd      s   z/_rand_split.<locals>.mytake.<locals>.<listcomp>)rQ   r`   r~   reshaperq   rh   )rc   Zixrr   recordrZ   r   r[   mytake   s    z_rand_split.<locals>.mytaker   c                 3   s   | ]}|j   kV  qd S ri   r{   ra   )rr   n_obsrZ   r[   rk      re   z_rand_split.<locals>.<genexpr>z#data must be aligned on sample axis      ?c              	      s&   g | ]}t j|| d  d qS rt   rQ   appendra   )rr   r   split_ixrZ   r[   rd      s   z_rand_split.<locals>.<listcomp>)rQ   arrayfloat64randomRandomStater|   ro   rq   r   Zrandintrandr   )	rm   r}   rr   	split_perseedZseeded_randr   Zprev_wqrZ   )rr   r   r   r   r[   _rand_split   s     r   h㈵>)r   c                 C   s   | S ri   rZ   xrZ   rZ   r[   <lambda>   re   r   c           	   	   C   s   || }||}z t ||k r.||| W nR tyL   ||| Y n8 ttfy   t||D ]\}}t|||d qfY n0 d S )N)compare_assert)rQ   r   r   AttributeError	TypeErrorrp   r   _rough_check)	rc   r   r   keywZcheck_aZcheck_bZa_iZb_irZ   rZ   r[   r      s    r      c                 C   s   | S ri   rZ   r   rZ   rZ   r[   r     re   r   r   c                    s8   t  	
fd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               
      s  | i |}| d 	 }| 	d  }| d }| d t|| ddd}|d d |d |d   }} rdd |D }z t|| } r||< t|| i |d rD|d	 |< t|| i |d |d
 |< zt|| i |d W n: tyB } z t||||f|W Y d }~n
d }~0 0 rt|| d\}}	||	d |j< d|	|jd < t|| }
|	|< t||
i |d |D ]>}td g|j	 }t|jd | < t|}|| d ||< qt|| }
t||
i |d |D ]@}td g|j	 }t|jd | < t|}|| t
j ||< q| dd dkr
rt|| }
t||
i |d rdd |D }t|| }
t||
i |d rd |< t||
i |d ~~
~	rP fdd|D }t
||d }t|| }||< t||i |d ~~~rdkrt|| d\}}t|| }||< t||i |d W n@ ty } z&stdj|f  W Y d }~n
d }~0 0 |S )Nrr   T)r}   rr   r   r   ru   c                 S   s   g | ]}t | qS rZ   )rQ   rj   squeezera   rZ   rZ   r[   rd   "  re   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>)r   g     @Y@gB`"۹?)r   r   r   e   Z
nan_policyZomitc                 S   s   g | ]}t j|qS rZ   rz   ra   rZ   rZ   r[   rd   O  re   c                    s   g | ]}t j|| d qS r   r   ra   rt   rZ   r[   rd   Y  re          @z%s NotImplemented weights: %s)getr   rn   r   	Exceptiontyper   r   slicerh   rQ   nanr   NotImplementedErrorwarningswarn__name__)argskwargsresultrm   restr}   r   eZ
dud_arraysZdud_weightsZdud_argsrc   ZindexerZ
dup_arraysZdup_weightsZdup_argsZsplit_arraysZsplit_weightsZ
split_args
const_testdefault_axisdud_testdup_testrW   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_argrt   r[   wrapped  s     **z _weight_checked.<locals>.wrapped)r   )rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r[   _weight_checked  s    .Ur   rg   )r   r   )r   r   r   )r   r   r   )r   r   r   r   )r   )r   c                	   @   s   e Zd Zdd Zdd Zdd Zejddd	d
dde	j
gdd Zdd Zdd Zdd Zd#ddZdd Zdd Zdd Zdd Zd d! Zd"S )$	TestCdistc                 C   sF   g d| _ tjtjtjtjgtjtjtjgtjtjgtjgd| _d S N)rF   rG   rH   rE   rD   )boolrV   r   rT   rnd_eo_namesrQ   rV   rU   rT   r>   valid_upcastsselfrZ   rZ   r[   setup_method  s    

zTestCdist.setup_methodc                 C   s  ddd}g dg dg dg}g dg d	g d
g}dt dd}dgd }t }|t tD ]}ttt||fd|i| ttt||fdt	|i| ttt||fdd| i| ttt||g|R d|i ttt||g|R dt	|i ttt||g|R dd| i qhttt||| ttt|||g|R   ttt|||fi | ttt|||ddd ttt|||dddd ttt|||ddd ttt|||dd ttt|||d ttt|||dddd t
t|||dddd W d    n1 s0    Y  d S )Nrg   r   c                 S   s   || | S ri   rZ   r   yargkwargkwarg2rZ   rZ   r[   
_my_metric  s    z3TestCdist.test_cdist_extra_args.<locals>._my_metricr   r         @333333?ffffff@333333@皙@r   皙@)g      @      @       @)g      @333333@g @)g      @r   r   Q	@   ZN0tV4l1D_p4raMr      metrictest_r   ffffff
@r   r   r   皙?r   r   r   皙@)rg   r   )rQ   aranger   filterDeprecationWarningr   assert_raisesr   r   evalr
   )r   r   X1X2r   r   r   r   rZ   rZ   r[   test_cdist_extra_args  sp    




zTestCdist.test_cdist_extra_argsc                 C   sB   d}t d }t d }t||d}t||d}t|||tdk d S )NHz>cdist-X1cdist-X2r   test_euclideanr   rR   wcdist_no_constr   r   )r   epsr  r  Y1Y2rZ   rZ   r[   #test_cdist_euclidean_random_unicode  s    z-TestCdist.test_cdist_euclidean_random_unicodepr   Gz?r   gffffff@gffffff@c                 C   sJ   d}t d }t d }t||d|d}t||d|d}t|||tdk d S )Nr  r  r	  r&   r  test_minkowskir   r  )r   r  r  r  r  r  r  rZ   rZ   r[   test_cdist_minkowski_random  s    z%TestCdist.test_cdist_minkowski_randomc                 C   s`   d}t d }t d }t||d}dd }dt||| ||| j }t|||tdk d S )	Nr  r  r	  r   c                 S   s   t jj| ddddS )Nrg   rt   ru   )rQ   linalgr   r   )XrZ   rZ   r[   norms  s    z1TestCdist.test_cdist_cosine_random.<locals>.normsrg   r   )rR   wcdistrQ   dotTr   r   )r   r  r  r  r  r  r  rZ   rZ   r[   test_cdist_cosine_random  s    "z"TestCdist.test_cdist_cosine_randomc                 C   s   t dgdgg}t dgdgg}t||dd}t|dt dgt dt dgg t d	d	gd
d	gg}t d	dgdd	gd	dgg}t||dd}t d}t||||gdd| dgg tttd	dggddggdd d S )Nr   r      r$   r                 @      ?r   ru   rg   r   )rQ   r   r   r
   sqrtr  rp   )r   x1x2distrt2rZ   rZ   r[   test_cdist_mahalanobis  s    (
z TestCdist.test_cdist_mahalanobisc                    sV   G dd d  fdd}t j  ggtd}t|||d}d}t||tdkd	 d S )
Nc                   @   s   e Zd ZdS )z6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   
__module____qualname__rZ   rZ   rZ   r[   myclass  s   r+  c                    s(   t | d  rt |d  s$tddS Nr   zType has been changed+?
isinstancerp   r   r   r+  rZ   r[   r     s    z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metricr?   r  r-  r   r   )rQ   r   objectr   r   r   )r   r   rB   Zcdist_yright_yrZ   r1  r[   test_cdist_custom_notdouble  s    z%TestCdist.test_cdist_custom_notdoubler  c              
   K   s  zNt ||fd|i|}t ||fdt|i|}t ||fdd| i|}W n ty }	 z|	j}
tdkr~t|
j t|	 t|
t ||fd|i| t|
t ||fdt|i| t|
t ||fdd| i| W Y d }	~	n2d }	~	0 0 t|||tdkd t|||tdkd d S Nr   r   r   )r   r   )	r   r  r   	__class__r   r   r   r  r   )r   r  r  r   r  r   y1y2y3r   e_clsrZ   rZ   r[   _check_calling_conventions  s    
4z$TestCdist._check_calling_conventionsc                 C   s,  | j D ]}t| d d dd d df }t| dd dd d df }tD ]}tdkrbtd|d| |dkrlqH|dv r~d	|vr~qH| ||| |d
krt||gtj	}tj
|ddd}| j||||d qH|dkrHt||gtj	}tt|j}ttj|j}| j||||d qHqd S )Nr  r   rg   r   	testing:  with: r.      r#   r+   r*   r(   r   r-   r%   r'   r   r)   r   rr   r   Vr$   VI)r   rR   r   r   r   r<  rQ   vstackr   r>   var
atleast_2dcovr  r   r  inv)r   eo_namer  r  r   ZX12rB  rD  rZ   rZ   r[   test_cdist_calling_conventions  s,    z(TestCdist.test_cdist_calling_conventionsc                 C   s\  d}t d | jd ft d | jd ft d | jd ft d | jd	 fg}tD ]}|D ]}|d
 d d dd d df }|d
 dd dd d df }zt|||d}W nv ty } z\|j}	tdkrt|	j t| |d D ]&}
|
|}|
|}t	|	t|||d qW Y d }~qVd }~0 0 |d D ].}
t|
||
||d}t
|||tdk q$qVqLd S )Nr  rD   r   rH   rV   rG   r   rF   rT   r   r  r   rg   r   r  )rR   r   r   r   r   r7  r   r   r   r  r   )r   r  testsr   testr  r  r8  r   r;  new_typeZX1newZX2newr9  rZ   rZ   r[   test_cdist_dtype_equivalence,  s0    

*z&TestCdist.test_cdist_dtype_equivalencec                 C   s  d}t d }t d }|jd |jd  }}t }|jtdd tD ]z}t }|dv r~d|d	< |d
kr~d|jdd |d< tj	||ftj
d}	t|||fi |}
t|||fd|	i|}t|
||tdk t||	u  tj	|d |d ftj
d}ttt|||fd|i| tj	d| d| ftj
dd d dd d df }tj	||ftj
dd}ttt|||fd|i| ttt|||fd|i| tj	||ftjd}ttt|||fd|i| qFW d    n1 s0    Y  d S )Nr  r  r	  r   !'wminkowski' metric is deprecatedmessager&   r.   r  r  r.   r   rt   r   r?   outr   rg   F)r@   order)rR   r|   r   r   r  r   dictstdrQ   emptyr>   r   r   r   r   r  rp   int64)r   r  r  r  Zout_rZout_csupr   r   out1r  r  out2out3Zout4out5rZ   rZ   r[   test_cdist_outG  sn    

zTestCdist.test_cdist_outc                 C   sB  d}t d d d dd d df }t d d d dd d df }| }| }t|| t|| t|jj  t|jj  t|jj t|jj t }|td t	D ]p}t
 }|dv rd|d< |d	krd
|jdd |d< t|||fi |}	t|||fi |}
t|	|
|tdk qW d    n1 s40    Y  d S )Nr  r  r   r	  rP  rS  r  r  r.   r   r   rt   r   )rR   copyr   r   flagsc_contiguousr   r   r  r   rW  rX  r   r   r   )r   r  r  r  X1_copyZX2_copyr[  r   r   r  r  rZ   rZ   r[   test_stridingo  s,    

zTestCdist.test_stridingc                 C   s   t  }|td tD ]}tjdd}tjdd}t }|dv rjd|d< |dkrjd|jdd	 |d
< t	||fd|i|}dd |||fD }~~~t
dd |D sJ qW d    n1 s0    Y  d S )NrP  
   rS  r  r  r.   r   r   rt   r   r   c                 S   s   g | ]}t |qS rZ   )weakrefref)rb   vrZ   rZ   r[   rd     re   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>c                 s   s   | ]}| d u V  qd S ri   rZ   )rb   Zweak_refrZ   rZ   r[   rk     re   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>)r   r   r  r   rQ   r   r   rW  rX  r   ro   )r   r[  r   r#  r$  r   rT  Z	weak_refsrZ   rZ   r[   test_cdist_refcount  s    zTestCdist.test_cdist_refcountN)r  )r   r)  r*  r   r  r  pytestmarkparametrizerQ   infr  r  r'  r5  r<  rK  rO  r`  re  rj  rZ   rZ   rZ   r[   r     s   	*

 (r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
jdd Ze	j
jdd Ze	j
jdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Ze	j
jd%d& Ze	j
jd'd( Ze	j
jd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Ze	j
jd3d4 Ze	j
jd5d6 Z e	j
jd7d8 Z!d9d: Z"d;d< Z#d=d> Z$e	j
jd?d@ Z%e	j
jdAdB Z&e	j
jdCdD Z'e	j
(dEdFdGdHe)j*gdIdJ Z+dKdL Z,dMdN Z-dOdP Z.e	j
jdQdR Z/e	j
jdSdT Z0e	j
jdUdV Z1e	j
jdWdX Z2e	j
jdYdZ Z3e	j
jd[d\ Z4d]d^ Z5d_d` Z6dadb Z7dcdd Z8dedf Z9dgdh Z:didj Z;dkdl Z<dmdn Z=dodp Z>dqdr Z?dsdt Z@dudv ZAdwdx ZBdydz ZCd{d| ZDd}d~ ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]e	j
jdd Z^dd Z_dd Z`dddZadd Zbdd Zcdd Zddd ZedS )	TestPdistc                 C   sF   g d| _ tjtjtjtjgtjtjtjgtjtjgtjgd| _d S r   r   r   rZ   rZ   r[   r     s    

zTestPdist.setup_methodc              
   C   s  ddd}ddgddgd	dgg}d
t dd}d
gd }t }|t tD ]}ttt|fd|i| ttt|fdt	|i| ttt|fdd| i| ttt|g|R d|i ttt|g|R dt	|i ttt|g|R dd| i qRttt|| ttt||g|R   ttt||fi | ttt||d	dd ttt||ddd	d ttt||dd	d ttt||dd	 ttt||d ttt||dd	dd t
t||dddd W d    n1 s0    Y  d S )Nrg   r   c                 S   s   || | S ri   rZ   r   rZ   rZ   r[   r     s    z3TestPdist.test_pdist_extra_args.<locals>._my_metricr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rg   r   )rQ   r   r   r   r  r   r  r   r   r  r
   )r   r   r  r   r   r   r   rZ   rZ   r[   test_pdist_extra_args  sV    





zTestPdist.test_pdist_extra_argsc                 C   s.   d}t d }t d }t|d}t||| d S Nr  pdist-double-inppdist-euclideanr   rR   wpdist_no_constr   r   r  r  Y_rightY_test1rZ   rZ   r[   test_pdist_euclidean_random  s
    
z%TestPdist.test_pdist_euclidean_randomc                 C   s.   d}t d }t d }t|d}t||| d S rq  rt  rv  rZ   rZ   r[   test_pdist_euclidean_random_u  s
    
z'TestPdist.test_pdist_euclidean_random_uc                 C   s4   d}t td }td }t|d}t||| d S rq  rQ   rT   rR   ru  r   rv  rZ   rZ   r[   #test_pdist_euclidean_random_float32  s
    
z-TestPdist.test_pdist_euclidean_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  rs  r
  rt  r   r  r  rw  Y_test2rZ   rZ   r[    test_pdist_euclidean_random_nonC  s
    
z*TestPdist.test_pdist_euclidean_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )Nr  irispdist-euclidean-irisr   rt  rv  rZ   rZ   r[    test_pdist_euclidean_iris_double  s
    
z*TestPdist.test_pdist_euclidean_iris_doublec                 C   s:   d}t td }td }t|d}t|||tdk d S )Nư>r  r  r   r   rQ   rT   rR   ru  r   r   rv  rZ   rZ   r[   !test_pdist_euclidean_iris_float32  s
    
z+TestPdist.test_pdist_euclidean_iris_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  r  r  r
  rt  r}  rZ   rZ   r[   test_pdist_euclidean_iris_nonC  s
    
z(TestPdist.test_pdist_euclidean_iris_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )Nr   rr  pdist-seuclideanr)   rR   r   r   rv  rZ   rZ   r[   test_pdist_seuclidean_random  s
    
z&TestPdist.test_pdist_seuclidean_randomc                 C   s^   d}t td }td }t|d}t||| t j|ddd}t|d|d}t||| d S )	Nr   rr  r  r)   r   rg   r@  rA  )rQ   rT   rR   r   r   rF  )r   r  r  rw  rx  rB  r~  rZ   rZ   r[   $test_pdist_seuclidean_random_float32  s    
z.TestPdist.test_pdist_seuclidean_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr   rr  r  test_seuclideanr  r}  rZ   rZ   r[   !test_pdist_seuclidean_random_nonC  s
    
z+TestPdist.test_pdist_seuclidean_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S Nr   r  pdist-seuclidean-irisr)   r  rv  rZ   rZ   r[   test_pdist_seuclidean_iris&  s
    
z$TestPdist.test_pdist_seuclidean_irisc                 C   s4   d}t td }td }t|d}t||| d S r  )rQ   rT   rR   r   r   rv  rZ   rZ   r[   "test_pdist_seuclidean_iris_float32-  s
    
z,TestPdist.test_pdist_seuclidean_iris_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr   r  r  r  r  r}  rZ   rZ   r[   test_pdist_seuclidean_iris_nonC5  s
    
z)TestPdist.test_pdist_seuclidean_iris_nonCc                 C   s.   d}t d }t d }t|d}t||| d S N:0yE>rr  pdist-cosiner   rR   wpdistr   rv  rZ   rZ   r[   test_pdist_cosine_random>  s
    
z"TestPdist.test_pdist_cosine_randomc                 C   s4   d}t td }td }t|d}t||| d S r  rQ   rT   rR   r  r   rv  rZ   rZ   r[    test_pdist_cosine_random_float32E  s
    
z*TestPdist.test_pdist_cosine_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  r  test_cosiner  r}  rZ   rZ   r[   test_pdist_cosine_random_nonCL  s
    
z'TestPdist.test_pdist_cosine_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )Nr  r  pdist-cosine-irisr   r  rv  rZ   rZ   r[   test_pdist_cosine_irisT  s
    
z TestPdist.test_pdist_cosine_irisc                 C   s:   d}t td }td }t|d}t|||tdk d S )Nr  r  r  r   r   )rQ   rT   rR   r  r   r   rv  rZ   rZ   r[   test_pdist_cosine_iris_float32\  s
    
z(TestPdist.test_pdist_cosine_iris_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  r  r  r  r  r}  rZ   rZ   r[   test_pdist_cosine_iris_nonCd  s
    
z%TestPdist.test_pdist_cosine_iris_nonCc                 C   sD   t t jdd}t ||g}tt|dd dkdd d S )Ni9  [   r   r   z&cosine distance should be non-negative)msg)rQ   r   r   r   r   rE  r   r  )r   r   r  rZ   rZ   r[   test_pdist_cosine_boundsl  s
    z"TestPdist.test_pdist_cosine_boundsc                 C   s.   d}t d }t d }t|d}t||| d S Nr  rr  pdist-cityblockr   rt  rv  rZ   rZ   r[   test_pdist_cityblock_randomu  s
    
z%TestPdist.test_pdist_cityblock_randomc                 C   s4   d}t td }td }t|d}t||| d S r  r{  rv  rZ   rZ   r[   #test_pdist_cityblock_random_float32|  s
    
z-TestPdist.test_pdist_cityblock_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  r  test_cityblockrt  r}  rZ   rZ   r[    test_pdist_cityblock_random_nonC  s
    
z*TestPdist.test_pdist_cityblock_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )N+=r  pdist-cityblock-irisr   rt  rv  rZ   rZ   r[   test_pdist_cityblock_iris  s
    
z#TestPdist.test_pdist_cityblock_irisc                 C   s:   d}t td }td }t|d}t|||tdk d S )Nr  r  r  r   r   r  rv  rZ   rZ   r[   !test_pdist_cityblock_iris_float32  s
    
z+TestPdist.test_pdist_cityblock_iris_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  r  r  r  rt  r}  rZ   rZ   r[   test_pdist_cityblock_iris_nonC  s
    
z(TestPdist.test_pdist_cityblock_iris_nonCc                 C   s.   d}t d }t d }t|d}t||| d S Nr  rr  pdist-correlationr   r  rv  rZ   rZ   r[   test_pdist_correlation_random  s
    
z'TestPdist.test_pdist_correlation_randomc                 C   s4   d}t td }td }t|d}t||| d S r  r  rv  rZ   rZ   r[   %test_pdist_correlation_random_float32  s
    
z/TestPdist.test_pdist_correlation_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  r  test_correlationr  r}  rZ   rZ   r[   "test_pdist_correlation_random_nonC  s
    
z,TestPdist.test_pdist_correlation_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )Nr  r  pdist-correlation-irisr   r  rv  rZ   rZ   r[   test_pdist_correlation_iris  s
    
z%TestPdist.test_pdist_correlation_irisc                 C   s:   d}t d }tt d }t|d}t|||tdk d S )Nr  r  r  r   r   )rR   rQ   rT   r  r   r   rv  rZ   rZ   r[   #test_pdist_correlation_iris_float32  s
    
z-TestPdist.test_pdist_correlation_iris_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  r  r  r  r  r}  rZ   rZ   r[    test_pdist_correlation_iris_nonC  s
    
z*TestPdist.test_pdist_correlation_iris_nonCr  r   r   皙	@c                 C   s8   d}t d }t|d|d}t|d|d}t||| d S )Nr   rr  r&   r  r  rt  )r   r  r  r  r  r  rZ   rZ   r[   test_pdist_minkowski_random_p  s
    z'TestPdist.test_pdist_minkowski_random_pc                 C   s2   d}t d }t d }t|ddd}t||| d S Nr   rr  pdist-minkowski-3.2r&   r  r  rt  rv  rZ   rZ   r[   test_pdist_minkowski_random  s
    z%TestPdist.test_pdist_minkowski_randomc                 C   s8   d}t td }td }t|ddd}t||| d S r  r{  rv  rZ   rZ   r[   #test_pdist_minkowski_random_float32  s
    z-TestPdist.test_pdist_minkowski_random_float32c                 C   s2   d}t d }t d }t|ddd}t||| d S )Nr   rr  r  r  r  r  rt  r}  rZ   rZ   r[    test_pdist_minkowski_random_nonC  s
    z*TestPdist.test_pdist_minkowski_random_nonCc                 C   s2   d}t d }t d }t|ddd}t||| d S )Nr  r  pdist-minkowski-3.2-irisr&   r  r  rt  rv  rZ   rZ   r[   test_pdist_minkowski_3_2_iris  s
    z'TestPdist.test_pdist_minkowski_3_2_irisc                 C   s8   d}t td }td }t|ddd}t||| d S )Nr  r  r  r&   r  r  r{  rv  rZ   rZ   r[   %test_pdist_minkowski_3_2_iris_float32  s
    z/TestPdist.test_pdist_minkowski_3_2_iris_float32c                 C   s2   d}t d }t d }t|ddd}t||| d S )Nr  r  r  r  r  r  rt  r}  rZ   rZ   r[   "test_pdist_minkowski_3_2_iris_nonC  s
    z,TestPdist.test_pdist_minkowski_3_2_iris_nonCc                 C   s2   d}t d }t d }t|ddd}t||| d S )Nr  r  pdist-minkowski-5.8-irisr&   r   r  rt  rv  rZ   rZ   r[   test_pdist_minkowski_5_8_iris  s
    z'TestPdist.test_pdist_minkowski_5_8_irisc                 C   s>   d}t td }td }t|ddd}t|||tdk d S )Nr  r  r  r&   r   r  r   r  rv  rZ   rZ   r[   %test_pdist_minkowski_5_8_iris_float32  s
    z/TestPdist.test_pdist_minkowski_5_8_iris_float32c                 C   s2   d}t d }t d }t|ddd}t||| d S )Nr  r  r  r  r   r  rt  r}  rZ   rZ   r[   "test_pdist_minkowski_5_8_iris_nonC  s
    z,TestPdist.test_pdist_minkowski_5_8_iris_nonCc                 C   s   t g ddd}t|dd}t|dt dt dt dt dt d	g t d
d
gdd
gd
dgdd
gd
dgg}t|dd}t d}t|||||dd| ddd| dg
 tttd
dgddggdd d S )N)r   r   r   r   ru   rg   r$   r  r  r!  r   r   r   r   r   r   )	rQ   r   r   r   r
   r"  r  rp   r  )r   r   r%  r&  rZ   rZ   r[   test_pdist_mahalanobis  s    (
&z TestPdist.test_pdist_mahalanobisc                 C   s.   d}t d }t d }t|d}t||| d S Nr  rC   pdist-hammingr    r  rv  rZ   rZ   r[   test_pdist_hamming_random/  s
    
z#TestPdist.test_pdist_hamming_randomc                 C   s4   d}t td }td }t|d}t||| d S r  r  rv  rZ   rZ   r[   !test_pdist_hamming_random_float326  s
    
z+TestPdist.test_pdist_hamming_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S Nr  rC   r  Ztest_hammingr  r}  rZ   rZ   r[   test_pdist_hamming_random_nonC=  s
    
z(TestPdist.test_pdist_hamming_random_nonCc                 C   s4   d}t td }td }t|d}t||| d S r  rQ   r   rR   r  r   rv  rZ   rZ   r[   test_pdist_dhamming_randomD  s
    
z$TestPdist.test_pdist_dhamming_randomc                 C   s4   d}t td }td }t|d}t||| d S r  r  rv  rZ   rZ   r[   "test_pdist_dhamming_random_float32K  s
    
z,TestPdist.test_pdist_dhamming_random_float32c                 C   s4   d}t td }td }t|d}t||| d S r  r  r}  rZ   rZ   r[   test_pdist_dhamming_random_nonCR  s
    
z)TestPdist.test_pdist_dhamming_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S Nr  rC   pdist-jaccardr!   r  rv  rZ   rZ   r[   test_pdist_jaccard_randomY  s
    
z#TestPdist.test_pdist_jaccard_randomc                 C   s4   d}t td }td }t|d}t||| d S r  r  rv  rZ   rZ   r[   !test_pdist_jaccard_random_float32`  s
    
z+TestPdist.test_pdist_jaccard_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S Nr  rC   r  test_jaccardr  r}  rZ   rZ   r[   test_pdist_jaccard_random_nonCg  s
    
z(TestPdist.test_pdist_jaccard_random_nonCc                 C   s4   d}t td }td }t|d}t||| d S r  r  rv  rZ   rZ   r[   test_pdist_djaccard_randomn  s
    
z$TestPdist.test_pdist_djaccard_randomc                 C   s4   d}t td }td }t|d}t||| d S r  r  rv  rZ   rZ   r[   "test_pdist_djaccard_random_float32u  s
    
z,TestPdist.test_pdist_djaccard_random_float32c                 C   s*   d}t tdd}ttd|| d S )Nr  r  r   r!   rf  r   rQ   zerosr   r   r  YrZ   rZ   r[   test_pdist_djaccard_allzeros|  s    z&TestPdist.test_pdist_djaccard_allzerosc                 C   s4   d}t td }td }t|d}t||| d S r  r  r}  rZ   rZ   r[   test_pdist_djaccard_random_nonC  s
    
z)TestPdist.test_pdist_djaccard_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  pdist-jensenshannonr"   r  rv  rZ   rZ   r[   test_pdist_jensenshannon_random  s
    
z)TestPdist.test_pdist_jensenshannon_randomc                 C   s:   d}t td }td }t|d}t|||tdk d S )Nr  rr  r  r"   r   rQ   rT   rR   r   r   r   rv  rZ   rZ   r[   'test_pdist_jensenshannon_random_float32  s
    
z1TestPdist.test_pdist_jensenshannon_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  r  test_jensenshannonr  r}  rZ   rZ   r[   $test_pdist_jensenshannon_random_nonC  s
    
z.TestPdist.test_pdist_jensenshannon_random_nonCc                 C   s:   t  rd}nd}td }td }t|d}t||| d S )NgLa㧝=g-q=r  pdist-jensenshannon-irisr"   )r_   rR   r   r   rv  rZ   rZ   r[   test_pdist_jensenshannon_iris  s    
z'TestPdist.test_pdist_jensenshannon_irisc                 C   s:   d}t td }td }t|d}t|||tdk d S )Nr  r  r  r"   r   r  rv  rZ   rZ   r[   %test_pdist_jensenshannon_iris_float32  s
    
z/TestPdist.test_pdist_jensenshannon_iris_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Ngdy=r  r  r  r  r}  rZ   rZ   r[   "test_pdist_jensenshannon_iris_nonC  s
    
z,TestPdist.test_pdist_jensenshannon_iris_nonCc                 C   s*   d}t tdd}ttd|| d S )Nr  r  r  rf  r  r  rZ   rZ   r[   !test_pdist_djaccard_allzeros_nonC  s    z+TestPdist.test_pdist_djaccard_allzeros_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  pdist-chebyshevr   r  rv  rZ   rZ   r[   test_pdist_chebyshev_random  s
    
z%TestPdist.test_pdist_chebyshev_randomc                 C   s:   d}t td }td }t|d}t|||tdk d S )Nr  rr  r  r   r   r  rv  rZ   rZ   r[   #test_pdist_chebyshev_random_float32  s
    
z-TestPdist.test_pdist_chebyshev_random_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  rr  r  test_chebyshevr  r}  rZ   rZ   r[    test_pdist_chebyshev_random_nonC  s
    
z*TestPdist.test_pdist_chebyshev_random_nonCc                 C   s.   d}t d }t d }t|d}t||| d S )NV瞯<r  pdist-chebyshev-irisr   r  rv  rZ   rZ   r[   test_pdist_chebyshev_iris  s
    
z#TestPdist.test_pdist_chebyshev_irisc                 C   s:   d}t td }td }t|d}t|||tdk d S )Nr  r  r  r   r   r  rv  rZ   rZ   r[   !test_pdist_chebyshev_iris_float32  s
    
z+TestPdist.test_pdist_chebyshev_iris_float32c                 C   s.   d}t d }t d }t|d}t||| d S )Nr  r  r  r  r  r}  rZ   rZ   r[   test_pdist_chebyshev_iris_nonC  s
    
z(TestPdist.test_pdist_chebyshev_iris_nonCc                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S Nrg   r   rg   rg   r   rg   rg   r   rg   rg   r?   333333?r   绽|=r   	wmatchingrQ   r   r   r
   r   mZm2rZ   rZ   r[   test_pdist_matching_mtica1  s    z$TestPdist.test_pdist_matching_mtica1c                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S Nrg   r   rg   rg   rg   r   r?   UUUUUU?r   r  r   r  r  rZ   rZ   r[   test_pdist_matching_mtica2  s    z$TestPdist.test_pdist_matching_mtica2c                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S r  wjaccardrQ   r   r   r
   r  rZ   rZ   r[   test_pdist_jaccard_mtica1  s    z#TestPdist.test_pdist_jaccard_mtica1c                 C   sh   t tg dtg d}t tjg dtdtjg dtd}t|dddd t|dddd d S r  r  r  rZ   rZ   r[   test_pdist_jaccard_mtica2   s    z#TestPdist.test_pdist_jaccard_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )Nr  r  r?   r   r   r  r   wyulerQ   r   r   r   r   r
   r  rZ   rZ   r[   test_pdist_yule_mtica1  s    z TestPdist.test_pdist_yule_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )Nr  r  r?   r   r   r  r   r
  r  rZ   rZ   r[   test_pdist_yule_mtica2  s    z TestPdist.test_pdist_yule_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r  r?   r   g۶m۶m?r   r  r   wdicerQ   r   r   r   r   r
   r  rZ   rZ   r[   test_pdist_dice_mtica1  s    z TestPdist.test_pdist_dice_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r  r?   r   r!  r   r  r   r  r  rZ   rZ   r[   test_pdist_dice_mtica2&  s    z TestPdist.test_pdist_dice_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S 	Nr  r  r?   r   g      ?r   r  r   )r+   rQ   r   r   r   r   r
   r  rZ   rZ   r[   test_pdist_sokalsneath_mtica10  s    z'TestPdist.test_pdist_sokalsneath_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S 	Nr  r  r?   r   g?r   r  r   )wsokalsneathrQ   r   r   r   r   r
   r  rZ   rZ   r[   test_pdist_sokalsneath_mtica2:  s    z'TestPdist.test_pdist_sokalsneath_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S r  wrogerstanimotorQ   r   r   r   r   r
   r  rZ   rZ   r[    test_pdist_rogerstanimoto_mtica1D  s    z*TestPdist.test_pdist_rogerstanimoto_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S r  r  r  rZ   rZ   r[    test_pdist_rogerstanimoto_mtica2N  s    z*TestPdist.test_pdist_rogerstanimoto_mtica2c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r  r?   r   r  r   r  r   wrussellraorQ   r   r   r   r   r
   r  rZ   rZ   r[   test_pdist_russellrao_mtica1X  s    z&TestPdist.test_pdist_russellrao_mtica1c                 C   sx   t tg dtg d}t tjg dtdtjg dtd}tdkrTt| t|dddd t|dddd d S )	Nr  r  r?   r   r  r   r  r   r  r  rZ   rZ   r[   test_pdist_russellrao_mtica2b  s    z&TestPdist.test_pdist_russellrao_mtica2c                 C   sL   t d }tdkrt|j|j d}t|d}t|d}t|||tdk d S )Nr  r   r  r   test_canberra)rR   r   r   r|   r@   ru  r   )r   Dr  r8  r9  rZ   rZ   r[   test_pdist_canberra_matchl  s    

z#TestPdist.test_pdist_canberra_matchc                 C   s0   d}t dgdgfd}d}t|||tdk d S )Nr  r   r   r   gd>@1?r   )ru  r   r   )r   r  pdist_yr4  rZ   rZ   r[   test_pdist_canberra_ticket_711v  s    z(TestPdist.test_pdist_canberra_ticket_711c                    sZ   G dd d  fdd}t j  g  ggtd}t||d}d}t||tdkd	 d S )
Nc                   @   s   e Zd ZdS )z6TestPdist.test_pdist_custom_notdouble.<locals>.myclassNr(  rZ   rZ   rZ   r[   r+    s   r+  c                    s(   t | d  rt |d  s$tddS r,  r.  r0  r1  rZ   r[   r     s    z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricr?   r  r-  r   r2  )rQ   r   r3  r   r   r   )r   r   rB   r"  r4  rZ   r1  r[   test_pdist_custom_notdouble~  s    z%TestPdist.test_pdist_custom_notdoubler  c           
   
   K   s
  zHt |fd|i|}t |fdt|i|}t |fdd| i|}W n ty } z||j}	tdkrxt|	j t| t|	t |fd|i| t|	t |fdt|i| t|	t |fdd| i| W Y d }~n2d }~0 0 t|||tdkd t|||tdkd d S r6  )	r   r  r   r7  r   r   r   r  r   )
r   r  r   r  r   r8  r9  r:  r   r;  rZ   rZ   r[   r<    s    
2z$TestPdist._check_calling_conventionsc              	   C   s   | j D ]}t| d d dd d df }tD ]}|dkr8q*tdkrNtd|d| |dv r`d|vr`q*| || |dkrtj|tj	d	d
d}| j|||d q*|dkr*t
t|tj	j}ttj|j}| j|||d q*qd S )Nr  r   r.   r=  r>  r?  r   r)   r   rg   r@  rA  r$   rC  )r   rR   r   r   r   r<  rQ   rF  r   r>   rG  rH  r  r   r  rI  )r   rJ  r  r   rB  rD  rZ   rZ   r[   test_pdist_calling_conventions  s&    
z(TestPdist.test_pdist_calling_conventionsc                 C   s(  d}t d | jd ft d | jd ft d | jd ft d | jd	 fg}tD ]}|D ]}|d
 d d dd d df }zt||d}W nj ty } zR|j}tdkrt|j t| |d D ]}	|	|}
t	|t|
|d qW Y d }~qTd }~0 0 |d D ]&}	t|	||d}t
|||tdk qqTqLd S )Nr  rD   r   rH   rV   rG   r   rF   rT   r   r  r   r  rg   )rR   r   r   r   r   r7  r   r   r   r  r   )r   r  rL  r   rM  r  r8  r   r;  rN  r  r9  rZ   rZ   r[   test_pdist_dtype_equivalence  s,    
(z&TestPdist.test_pdist_dtype_equivalencec                 C   s  d}t d d d dd d df }t|jd |jd d  d }t :}|td tD ]}t }|dv rvd	|d
< |dkrd|jdd |d< t	j
|t	jd}t||fi |}t||fd|i|}	t|	|| t|	|u  t	j
|d t	jd}
ttt||fd|
i| t	j
d| t	jdd d d }ttt||fd|i| t	j
|t	jd}ttt||fd|i| qZW d    n1 s0    Y  d S )Nr  rF   r  r   r   rg   rP  rS  r  r  r.   r   rt   r   r?   rT  r   )rR   r   r|   r   r   r  r   rW  rX  rQ   rY  r>   r   r   r   r  rp   rZ  )r   r  r  Zout_sizer[  r   r   r\  rw  rx  r]  r^  r_  rZ   rZ   r[   test_pdist_out  s,     

zTestPdist.test_pdist_outc           	      C   s   d}t d d d dd d df }| }t|jj  t|jj t }|jtdd tD ]l}t	 }|dv rvd|d	< |d
krd|j
dd |d< t||fi |}t||fi |}t|||tdk q\W d    n1 s0    Y  d S )Nr  rF   r  r   rP  rQ  rS  r  r  r.   r   r   rt   r   )rR   ra  r   rb  rc  r   r   r  r   rW  rX  r   r   r   )	r   r  r  ZX_copyr[  r   r   r  r  rZ   rZ   r[   re    s$    zTestPdist.test_stridingN)r  )fr   r)  r*  r   rp  ry  rz  r|  r  rk  rl  Z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  r  r  r  rm  rQ   rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r  r  r  r!  r#  r$  r<  r%  r&  r'  re  rZ   rZ   rZ   r[   ro    s   	&


		


	


	









		










	
ro  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestSomeDistanceFunctionsc                 C   s,   t g d}t g d}||fg| _d S Nr   r   r   r   )rQ   r   cases)r   r   r   rZ   rZ   r[   r     s    z&TestSomeDistanceFunctions.setup_methodc                 C   s   | j D ]F\}}t||dd}t|d t||dd}t|d t||dd qtddg}td	d
g}tt||t|d|d d S )Nrg   r  r         ?qaz@r   i`  i  i^  i  uint16)r+  r.   r	   rQ   r   r   r&   r   )r   r   r   dist1dist1p5rc   r   rZ   rZ   r[   r    s    


z(TestSomeDistanceFunctions.test_minkowskic           	      C   s   t  }|jtdd tg d}| jD ]\\}}t||d|d}t|d t||d|d}t|d t||d	|d}t|td
 q*t	d}t
|d}tt||d d	|dd tt||d d	|dd W d    n1 s0    Y  d S )Nz.*wminkowski is deprecatedrQ  )r   r   r!  rg   )r  r   r   r,  r-  r   r     r   g      @)r   r   r  rQ   r   r+  old_wminkowskir	   r"  r   Z	full_liker.   )	r   Zwrnr   r   r   r/  r0  dist2ZarrrZ   rZ   r[   test_old_wminkowski%  s     


z-TestSomeDistanceFunctions.test_old_wminkowskic                 C   s.   | j D ]"\}}t||}t|td qd S )Nr  )r+  
weuclideanr	   rQ   r"  r   r   r   r%  rZ   rZ   r[   r
  8  s    
z(TestSomeDistanceFunctions.test_euclideanc                 C   s(   | j D ]\}}t||}t|d qd S )Nr   )r+  wsqeuclideanr	   r6  rZ   rZ   r[   test_sqeuclidean=  s    
z*TestSomeDistanceFunctions.test_sqeuclideanc              	   C   s@   | j D ]4\}}t||}t|ddtdtd    qd S )Nr   g      2@      )r+  wcosiner	   rQ   r"  r6  rZ   rZ   r[   r  B  s    
z%TestSomeDistanceFunctions.test_cosinec                 C   s`   t g d}t g d}| jD ]8\}}t||}t|dt ||t|t|    q"d S )N)      r   r   )UUUUUUr=  gUUUUUU@r   )rQ   r   r+  wcorrelationr	   r  r   )r   ZxmZymr   r   r%  rZ   rZ   r[   r  G  s
    
z*TestSomeDistanceFunctions.test_correlationc                 C   sR   t g d}t g d}t||}d|  krHdt t jj ksNn J d S )N)%r  r  r  r  r  r         r  r  r  r?  r?  r?  r  r?  r  r?  r  r  r<  r?  r  r   r  r  r?  r  r  r?  r  r?  r?  r?  r?  r?  r?  r  )%r   r   r   r   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   rf  )rQ   r   r   Zfinfor   r  r6  rZ   rZ   r[   test_correlation_positiveN  s    
z3TestSomeDistanceFunctions.test_correlation_positivec                 C   sh   t g d}t g d}t g dg dg dg}| jD ]$\}}t|||}t|t d q>d S )Nr   r*  )r   r   r  )r   r   r   )r  r   r   g      @)rQ   r   r+  r$   r	   r"  )r   r   r   Zvir%  rZ   rZ   r[   test_mahalanobisY  s    z*TestSomeDistanceFunctions.test_mahalanobisN)r   r)  r*  r   r  r4  r
  r8  r  r  r@  rA  rZ   rZ   rZ   r[   r(    s   r(  c                     sZ   dd } t  td t  fddt D }| |d< d}t| f|t |< d S )Nc                 S   sh   t g d}t g d}|d d t jf }|d d t jf }|j}|j}||f||f||fg| _d S r)  )rQ   r   newaxisr  r+  )r   r   r   Zx31Zy31Zx13Zy13rZ   rZ   r[   r   e  s    z-construct_squeeze_tests.<locals>.setup_methodz?.*distance metrics ignoring length-1 dimensions is deprecated.*c                    s&   i | ]}| d r|t |qS )r   )
startswithgetattr)rb   rX   baser[  rZ   r[   
<dictcomp>v  s   
z+construct_squeeze_tests.<locals>.<dictcomp>r   ZTestDistanceFunctionsSqueeze)r   r   r  r(  dirr   globals)r   attrsrX   rZ   rE  r[   construct_squeeze_testsb  s    rK  c                   @   sR   e Zd ZejejejejegZ	dd Z
dd Zdd Zdd Zd	d
 Zdd ZdS )TestSquareFormc                 C   s   | j D ]}| | qd S ri   )checked_dtypescheck_squareform_matrixr   r@   rZ   rZ   r[   test_squareform_matrix  s    
z%TestSquareForm.test_squareform_matrixc                 C   s   | j D ]}| | qd S ri   )rM  check_squareform_vectorrO  rZ   rZ   r[   test_squareform_vector  s    
z%TestSquareForm.test_squareform_vectorc                 C   s   t jd|d}t|}t|jd t|j| t jd|d}t|}t|jd t|j| t jddgddgg|d}t|}t|jd t|j| t|t jdg|d d S )N)r   r   r?   r   rg   rg   r   g@rf   )rQ   r  r   r   r|   r@   r   r   )r   r@   AZrArZ   rZ   r[   rN    s    z&TestSquareForm.check_squareform_matrixc                 C   s   t jd|d}t|}t|jd t|j| t|dgg t jdg|d}t|}t|jd t|j| t|t jddgddgg|d d S )NrS  r?   rT  r   g @)r   r   )rQ   r  r   r   r|   r@   r   r   )r   r@   ri  rvrZ   rZ   r[   rQ    s    z&TestSquareForm.check_squareform_vectorc                 C   s   t ddD ]}| | q
d S )Nr   r  )rq   check_squareform_multi_matrixr   nrZ   rZ   r[   test_squareform_multi_matrix  s    z+TestSquareForm.test_squareform_multi_matrixc           
      C   s   t j|d}t|}tt|jd t|}t|}|j}d}tdkrZt	|j|j|j tt|d tt|jd t|d |d  t
d|d D ]V}t
|d |d D ]>}	||	krt|||	f ||  |d7 }qt|||	f d qqd S )Nr1  rg   r   r   r   )rQ   r   r   ru  r   lenr|   r   r   r   rq   )
r   rY  r  r  rU  ZYrskr   jrZ   rZ   r[   rW    s$    
z,TestSquareForm.check_squareform_multi_matrixN)r   r)  r*  rQ   r   rT   int32int8r   rM  rP  rR  rN  rQ  rZ  rW  rZ   rZ   rZ   r[   rL    s   rL  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestNumObsYc                 C   s8   t ddD ](}tj|d}t|}tt|| q
d S )Nr   rf  r1  )rq   rQ   r   r   ru  r   r   )r   rY  r  r  rZ   rZ   r[   test_num_obs_y_multi_matrix  s    z'TestNumObsY.test_num_obs_y_multi_matrixc                 C   s   t t| jd d S Nrg   )r  rp   check_yr   rZ   rZ   r[   test_num_obs_y_1  s    zTestNumObsY.test_num_obs_y_1c                 C   s   t | d d S Nr   r   rd  r   rZ   rZ   r[   test_num_obs_y_2  s    zTestNumObsY.test_num_obs_y_2c                 C   s   t | d d S )Nr   rg  r   rZ   rZ   r[   test_num_obs_y_3  s    zTestNumObsY.test_num_obs_y_3c                 C   s   t | d d S Nr1  rg  r   rZ   rZ   r[   test_num_obs_y_4  s    zTestNumObsY.test_num_obs_y_4c                 C   s   t ddD ]}| | q
d S )Nr     )rq   minit)r   r   rZ   rZ   r[   test_num_obs_y_5_10  s    zTestNumObsY.test_num_obs_y_5_10c                 C   sX   t g }tddD ]}|||d  d  qtddD ]}||vr8tt| j| q8d S Nr   rl  rg   r  i   setrq   addr  rp   bad_yr   rc   rY  r   rZ   rZ   r[   test_num_obs_y_2_100  s    z TestNumObsY.test_num_obs_y_2_100c                 C   s   t | | d S ri   rg  rX  rZ   rZ   r[   rm    s    zTestNumObsY.minitc                 C   s   t j|}t|S ri   )rQ   r   r   r   r   rY  r   rZ   rZ   r[   rt    s    zTestNumObsY.bad_yc                 C   s   t | ||kS ri   )r   make_yrX  rZ   rZ   r[   rd    s    zTestNumObsY.check_yc                 C   s   t j||d  d S Nrg   r   rQ   r   r   rX  rZ   rZ   r[   rx    s    zTestNumObsY.make_yN)r   r)  r*  rb  re  rh  ri  rk  rn  rv  rm  rt  rd  rx  rZ   rZ   rZ   r[   ra    s   
ra  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestNumObsDMc                 C   sV   t ddD ]F}tj|d}t|}t|}tdkrBt|j|j t	t
|| q
d S )Nrg   rf  r1  r   )rq   rQ   r   r   ru  r   r   r   r|   r   r   )r   rY  r  r  rU  rZ   rZ   r[   test_num_obs_dm_multi_matrix  s    z)TestNumObsDM.test_num_obs_dm_multi_matrixc                 C   s   t | d d S )Nr   r   check_Dr   rZ   rZ   r[   test_num_obs_dm_0  s    zTestNumObsDM.test_num_obs_dm_0c                 C   s   t | d d S rc  r}  r   rZ   rZ   r[   test_num_obs_dm_1	  s    zTestNumObsDM.test_num_obs_dm_1c                 C   s   t | d d S rf  r}  r   rZ   rZ   r[   test_num_obs_dm_2  s    zTestNumObsDM.test_num_obs_dm_2c                 C   s   t | d d S rf  r}  r   rZ   rZ   r[   test_num_obs_dm_3  s    zTestNumObsDM.test_num_obs_dm_3c                 C   s   t | d d S rj  r}  r   rZ   rZ   r[   test_num_obs_dm_4  s    zTestNumObsDM.test_num_obs_dm_4c                 C   s   t | ||kS ri   )r   make_DrX  rZ   rZ   r[   r~    s    zTestNumObsDM.check_Dc                 C   s   t j||S ri   rz  rX  rZ   rZ   r[   r    s    zTestNumObsDM.make_DN)r   r)  r*  r|  r  r  r  r  r  r~  r  rZ   rZ   rZ   r[   r{    s   	r{  c                 C   s   t | ddS NT)throw)r   )r   rZ   rZ   r[   is_valid_dm_throw  s    r  c                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TestIsValidDMc                 C   s    t jdt jd}ttt| d S )Nr  r?   rQ   r  r>   r  rp   r  r   r   rZ   rZ   r[   $test_is_valid_dm_improper_shape_1D_E#  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_1D_Ec                 C   s"   t jdt jd}tt|d d S )Nr  r?   FrQ   r  r>   r   r   r  rZ   rZ   r[   $test_is_valid_dm_improper_shape_1D_F'  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_1D_Fc                 C   s    t jdt jd}ttt| d S Nr   r   r   r?   r  r  rZ   rZ   r[   $test_is_valid_dm_improper_shape_3D_E+  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_3D_Ec                 C   s"   t jdt jd}tt|d d S Nr  r?   Fr  r  rZ   rZ   r[   $test_is_valid_dm_improper_shape_3D_F/  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_3D_Fc                 C   s@   t jd}t|}tddD ]}d|||f< qttt| d S )Nrf  r   r  r   )rQ   r   r   r   rq   r  rp   r  r   r   r   r   rZ   rZ   r[   #test_is_valid_dm_nonzero_diagonal_E3  s
    z1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_Ec                 C   sB   t jd}t|}tddD ]}d|||f< qtt|d d S )Nrf  r   r  r   F)rQ   r   r   r   rq   r   r   r  rZ   rZ   r[   #test_is_valid_dm_nonzero_diagonal_F:  s
    z1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_Fc                 C   s4   t jd}t|}|d d |d< ttt| d S )Nrf  r   rg   rg   rg   r   )rQ   r   r   r   r  rp   r  r   r   r   rZ   rZ   r[   test_is_valid_dm_asymmetric_EA  s    z+TestIsValidDM.test_is_valid_dm_asymmetric_Ec                 C   s6   t jd}t|}|d d |d< tt|d d S )Nrf  r  rg   r  FrQ   r   r   r   r   r   r  rZ   rZ   r[   test_is_valid_dm_asymmetric_FG  s    z+TestIsValidDM.test_is_valid_dm_asymmetric_Fc                 C   s"   t jdt jd}tt|d d S )NrT  r?   Tr  r  rZ   rZ   r[   test_is_valid_dm_correct_1_by_1M  s    z-TestIsValidDM.test_is_valid_dm_correct_1_by_1c                 C   s&   t jd}t|}tt|d d S )Nrg   Tr  r  rZ   rZ   r[   test_is_valid_dm_correct_2_by_2Q  s    z-TestIsValidDM.test_is_valid_dm_correct_2_by_2c                 C   s&   t jd}t|}tt|d d S Nr   Tr  r  rZ   rZ   r[   test_is_valid_dm_correct_3_by_3V  s    z-TestIsValidDM.test_is_valid_dm_correct_3_by_3c                 C   s&   t jd}t|}tt|d d S )N   Tr  r  rZ   rZ   r[   test_is_valid_dm_correct_4_by_4[  s    z-TestIsValidDM.test_is_valid_dm_correct_4_by_4c                 C   s&   t jd}t|}tt|d d S )Nrf  Tr  r  rZ   rZ   r[   test_is_valid_dm_correct_5_by_5`  s    z-TestIsValidDM.test_is_valid_dm_correct_5_by_5N)r   r)  r*  r  r  r  r  r  r  r  r  r  r  r  r  r  rZ   rZ   rZ   r[   r  !  s   r  c                 C   s   t | ddS r  )r   )r   rZ   rZ   r[   is_valid_y_throwf  s    r  c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestIsValidYc                 C   s    t jdt jd}ttt| d S )Nr   r   r?   rQ   r  r>   r  rp   r  r   r   rZ   rZ   r[   #test_is_valid_y_improper_shape_2D_Eo  s    z0TestIsValidY.test_is_valid_y_improper_shape_2D_Ec                 C   s"   t jdt jd}tt|d d S )Nr  r?   FrQ   r  r>   r   r   r  rZ   rZ   r[   #test_is_valid_y_improper_shape_2D_Fs  s    z0TestIsValidY.test_is_valid_y_improper_shape_2D_Fc                 C   s    t jdt jd}ttt| d S r  r  r  rZ   rZ   r[   #test_is_valid_y_improper_shape_3D_Ew  s    z0TestIsValidY.test_is_valid_y_improper_shape_3D_Ec                 C   s"   t jdt jd}tt|d d S r  r  r  rZ   rZ   r[   #test_is_valid_y_improper_shape_3D_F{  s    z0TestIsValidY.test_is_valid_y_improper_shape_3D_Fc                 C   s   |  d}tt|d d S )Nr   Tcorrect_n_by_nr   r   r  rZ   rZ   r[   test_is_valid_y_correct_2_by_2  s    
z+TestIsValidY.test_is_valid_y_correct_2_by_2c                 C   s   |  d}tt|d d S r  r  r  rZ   rZ   r[   test_is_valid_y_correct_3_by_3  s    
z+TestIsValidY.test_is_valid_y_correct_3_by_3c                 C   s   |  d}tt|d d S )Nr1  Tr  r  rZ   rZ   r[   test_is_valid_y_correct_4_by_4  s    
z+TestIsValidY.test_is_valid_y_correct_4_by_4c                 C   s   |  d}tt|d d S )Nr  Tr  r  rZ   rZ   r[   test_is_valid_y_correct_5_by_5  s    
z+TestIsValidY.test_is_valid_y_correct_5_by_5c                 C   sX   t g }tddD ]}|||d  d  qtddD ]}||vr8tt| j| q8d S ro  rq  ru  rZ   rZ   r[   test_is_valid_y_2_100  s    z"TestIsValidY.test_is_valid_y_2_100c                 C   s   t j|}t|ddS r  )rQ   r   r   r   rw  rZ   rZ   r[   rt    s    zTestIsValidY.bad_yc                 C   s   t j||d  d }|S ry  rz  rw  rZ   rZ   r[   r    s    zTestIsValidY.correct_n_by_nN)r   r)  r*  r  r  r  r  r  r  r  r  r  rt  r  rZ   rZ   rZ   r[   r  j  s   r  c                  C   s>   d} t ttddgddg|  t ttddgddg| ddg d S )Nr!  rg   r   r   r1  )r  rp   r.   r  rZ   rZ   r[   
test_bad_p  s    r  c                   C   s   t ttg dg d d S )N)FFF)r  rp   r+   rZ   rZ   rZ   r[   test_sokalsneath_all_false  s    r  c                   C   s4   t tg dg dd t tg dg dd d S )Nrg   r   r   r   r1  r  rg   rg   rg   r   r   rg   r   rg   r   r   )r   	wcanberrarZ   rZ   rZ   r[   r    s    r  c                   C   s<   t tg dg dddd t tg dg dddd d S )	Nr  r  gUUUUUU?   Zdecimalr  r  r!  )r	   wbraycurtisrZ   rZ   rZ   r[   test_braycurtis  s    r  c                  C   s  t g d} t g d}tt| |ddd tt| |t ddd tjtddF tt| t j	d d f |t j	d d f t ddd W d    n1 s0    Y  tjtdd@ tt| t j	d d f |t j	d d f ddd W d    n1 s0    Y  tjtdd@ tt| d d t j	f |d d t j	f ddd W d    n1 sd0    Y  t 
d	d
d
}ttt|| ttt|| t jd}|d}|d}t||}t||}t|d
 |dd d S )N)rg   rg   rg   )r   r   r   r   r9  r  r   *ignoring length-1 dimensions is deprecatedmatchr1  r   iIrf  )rQ   r   r	   r7  r5  r"  rk  warnsr  rB  r   r   r  rp   r   r   r   )r#  r$  r   Zrsr   d1d2rZ   rZ   r[   test_euclideans  s>    &
$&&&&



r  c                  C   s"   g d} g d}t tt| | d S )N)r   r   rg   r  )r  rp   whammingr0  rZ   rZ   r[   test_hamming_unequal_length  s    r  c                  C   s<   t jg ddd} t jg ddd}d}tt| || d S )N)eggsspamr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z|S4r?   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rQ   r   r
   r  )rc   r   ZdesiredrZ   rZ   r[   test_hamming_string_array  s    

r  c                  C   sv   t g dg dg} t| ddd d}t| | ddd d}t| ddd}t| | ddd}t||dd t||dd d S )N)
QUUT@      Y@r  r  g      B@g      N@g     V@g     b@g      8@g      H@r&   rg   )r   r  r   )r   r  r  )r   )rQ   r   r   r   r
   )Zarr_inZp0Zc0Zp1Zc1rZ   rZ   r[   test_minkowski_w  s    
r  c                  C   s>  g d} g d}t jt jt jt jfD ]6}tt j| |dt j||d}tt |j	t j
 q$t jt jt jt jfD ]Z}tdgt jdg|d}tt jdg|ddg}t|| t|t t |jd  qpt jt jt jt jg}dD ]}tt |r|tt | q|D ]0}tt j| |dt j||d}t|j	| qd S )Nr  )r1  r  r  r?   r   ru   r   )Zfloat16Zfloat128)rQ   r`  Zint16r_  rZ  r7  asarrayr   Z
issubdtyper@   ZfloatingZuint8r.  Zuint32Zuint64r   r   Ziinfor   rT   Z	complex64Z
complex128hasattrr   rD  )r   r   r@   dr  r  ZdtypesrZ   rZ   r[   test_sqeuclidean_dtypes  s"    

r  c                  C   sN   g d} g d}dd | D }dd |D }t | |}t ||}t|| d S )N)TTF)TFTc                 S   s   g | ]}t |qS rZ   r   rb   r   rZ   rZ   r[   rd   $  re   z&test_sokalmichener.<locals>.<listcomp>c                 S   s   g | ]}t |qS rZ   r  r  rZ   rZ   r[   rd   %  re   )r*   r   )r  r   r   r   r/  r3  rZ   rZ   r[   test_sokalmichener   s    

r  c            	      C   s   d} d}d}d}d||   || d||     }t |d tddgddgddgd}t || g d	}g d
}dD ]}t t|||gd qrd S )Nr  g?r   r   gX$I?rg   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?g?r   g      4@r  )r	   r*   )	ZntfZnftZnttZnffZexpectedZactualZa1Za2r   rZ   rZ   r[   test_sokalmichener_with_weight,  s     

r  c                  C   s   t g dg dg dg dg} |  }t v}|jdd tD ]T}|dkrbdd	| jd
d ini }t| | |fi | t| |fi | t	| | qBW d    n1 s0    Y  d S )Nr   r   r   g3333336@gL7@g333333F@rP  rQ  r.   r   r   r   rt   )
rQ   r  ra  r   r   r   rX  r   r   r   )r  rd  r   r   r   rZ   rZ   r[   test_modifies_inputB  s    
 r  c                  C   s8  t g dg dg dg dg} t d}tD ] }|dkrFd|int }t }|jtdd	 t	t
& t| | |d
fi | W d    n1 s0    Y  t	t
$ t| |d
fi | W d    n1 s0    Y  W d    n1 s0    Y  dD ],}|di}|dkr:d|v sd|v r2q||d< |dkrN|dks|dkrb|dks|dkrz|dkrzqt }|jtdd	 t	t
$ t| | |fi | W d    n1 s0    Y  t	t
" t| |fi | W d    n1 s0    Y  W d    n1 s$0    Y  qq0d S )Nr   r   r   r  r   r.   r   rP  rQ  r   )r  rB  rD  Zfoor  rB  r)   rD  r$   r&   )rQ   r  r   r   rW  r   r   r  rk  r   r   r   r   )r  r}   r   r   r   r   rZ   rZ   r[   test_Xdist_deprecated_argsR  sP    


4P

4r  c                  C   s   t d d d dd d df } t| jd }|d d d  |d d d< t p}|jtdd tD ]L}|dv rnq`|t|d| fD ]*}t	t
t| ||d	 t	t
t| | ||d	 qq`W d    n1 s0    Y  d S )
NrF   r  r   rg   rP  rQ  )r)   r$   r"   r   r  )rR   rQ   r   r|   r   r   r  r   r  r  rp   r   r   )r  r   r[  r   r  rZ   rZ   r[   test_Xdist_non_negative_weights{  s    r  c                  C   sD  g d} t | }t||  t | tjd}t||  t|jtj dg} t | }t|jd t||  d} tjt	dd t | }W d    n1 s0    Y  t|jd t|| g t
dddd} tjt	dd t | }W d    n1 s0    Y  t|jd t|| dd d df  dd	gd
dgg} ttt |  d S )Nr  r?   rg   r  r  r  ru   r   r   r   r1  )r   r   rQ   r   r   r@   rh   rk  r  r  r   r   r  rp   r0  rZ   rZ   r[   test__validate_vector  s4    


&&r  c                  C   sp   t jdtd} t| d | d }|dks,J t| d}t|dg t| d d | d d d}t|dgg d S )N)r   r  r?   r   r  r-   rg   )rQ   r   r   r  r   r   r   )r   r  rZ   rZ   r[   test_yule_all_same  s    
r  c                  C   sJ  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dg 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dddgg t tddggddggddddgg tg dg dg dg} tg dg dg dg}t t| |d	d
g d t t| |dd
g d d S )N)r   r  r  )r  r   r  r   r   r  r!  g)>d?r,  r   rt   rg   gД?T)rr   Zkeepdims)rg   r   r   r1  )r  r     r]   )	   rf        )   r9  r  rl  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r	   r"   rQ   r   )rc   r   rZ   rZ   r[   r    sJ    

r  )N)	NNFTFFFFN)r   r   F)N)~os.pathrK   	functoolsr   r   rg  ZnumpyrQ   r   Znumpy.linalgr   Znumpy.testingr   r   r   r   r	   r
   r   rk  r   r  Zscipy.spatial.distanceZscipyZscipy.spatialr   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.   r2  rI   r   Z_tdistZ_ytdistrR   r\   r_   rs   r   r   r   r   r   r   r   r   r  r  r  ru  r  r  r  r  r  Z
wcityblockZ
wchebyshevr;  r>  Z
wkulsinskir  r5  r7  r  r  r  Zwsokalmichenerr  r   ro  r(  rK  rL  ra  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rZ   rZ   rZ   r[   <module>#   s   $0` 

     
0	





`        nVC4#E6%)