a
    ReGE                    @   s  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j5eddd	d
 Z6g dZ7ej8g dg dg dg dg dg dgddZ9ee9Z:i Z;dd Z<e<  dd Z=dsddZ>dtddZ?dd Z@d d! ZAdud"d#ZBeed$d%d&d' dfd(d)ZCd*dd+d' d,ddddddddddd-d eed$d%fd.d/ZDeDed0dd1ZEeDed0ddd2ZFeDed0dd0d3ZGeDed0ddd0d4ZHeDe.ZIeDe(dd5 ZJZKeDe4ZLeDe&ZMeDe#ZNeDe"ZOeDe%ZPeDe$ZQeDe+ZReDe)ZSeDe'dd6ZTeDe3dd6ZUeDe ZVeDe!dd6ZWeDe2ZXeDe1ZYeDe/ZZG d7d8 d8Z[G d9d: d:Z\G d;d< d<Z]G d=d> d>Z^G d?d@ d@Z_G dAdB dBZ`dCdD ZaG dEdF dFZbdGdH ZcG dIdJ dJZdejefdKg dLdMdN ZgdOdP ZhdQdR ZidSdT ZjdUdV ZkdWdX ZldYdZ Zmd[d\ Znd]d^ Zod_d` Zpdadb Zqdcdd Zrdedf Zsdgdh Ztdidj Zudkdl Zvdmdn Zwdodp Zxdqdr ZydS )v    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)paramsZscopec                 C   s   | j S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)request r/   U/var/www/sunrise/env/lib/python3.9/site-packages/scipy/spatial/tests/test_distance.pymetricA   s    r1   )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         )r2   r   '        )r3   r7   r     4     )r4   r8   r;   r      e  )r5   r9   r<   r>   r     )r6   r:   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fpr/   r/   r0   load_testing_filesx   s    
r]   c                   C   s   t djdk S )Nr      )rT   Zintpitemsizer/   r/   r/   r0   	_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 r/   )rT   
asanyarray.0ar/   r/   r0   
<listcomp>       z!_chk_asarrays.<locals>.<listcomp>c                 S   s$   g | ]}|j d krt|n|qS    )ndimrT   Zravelrb   r/   r/   r0   re      s   r   c                 s   s   | ]}t |V  qd S N)rT   
atleast_1drb   r/   r/   r0   	<genexpr>   rf   z _chk_asarrays.<locals>.<genexpr>c                 3   s   | ]}|j  d  j kV  qdS )r   N)ri   rb   arraysr/   r0   rl      rf   z(array ndim must be the same for neg axis)tupleall
ValueErrorrangeri   )rn   axisr/   rm   r0   _chk_asarrays   s    rt   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rs   c                 s   s"   | ]}t j|t jjuV  qd S rj   )rT   magetmasknomaskrb   r/   r/   r0   rl      rf   z_chk_weights.<locals>.<genexpr>c                 S   s   g | ]}t t |qS r/   )rT   isnansumrb   r/   r/   r0   re      rf   z _chk_weights.<locals>.<listcomp>Tc                 s   s&   | ]\}}|rt j|n|V  qd S rj   rT   rw   Zmasked_invalid)rc   rd   Zhas_nanr/   r/   r0   rl      s   r   c                 3   s    | ]}j |j   fkV  qd S rj   shaperb   )rs   weightsr/   r0   rl      rf   z*weights shape must match arrays along axiszweights cannot be negativec                 3   s   | ]}t j| d V  qdS )ru   N)rT   takerb   )rs   pos_weightsr/   r0   rl      rf   rh   )rt   anyro   ziprT   ra   onesr~   _freq_weights_weight_maskedrp   rq   Znonzerosize)rn   r   rs   force_weightsZsimplify_weightsZpos_onlyZ	neg_checkZ
nan_screenmask_screenddofchkedZhas_nansr/   )rs   r   r   r0   _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   rq   )r   Zint_weightsr/   r/   r0   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   rh   c                 3   s   | ]}| kr|V  qd S rj   r/   rc   iru   r/   r0   rl      rf   z!_weight_masked.<locals>.<genexpr>ru   )rT   ra   rw   rx   ry   ri   ro   rr   r   r   r   )rn   r   rs   rd   Z	axis_maskZnot_axesr/   ru   r0   r      s    

r   c           	         s   dd | D } t j|t jd}t j|}dd | d j  t fdd| D s`J d	tt| D ]X}|	| | }|
 }|| |< t |d
| | } fdd| D } qp| |fS )Nc                 S   s,   g | ]$}t |jt jr$|t jn|qS r/   )rT   
issubdtyperC   integerr   float64)rc   Zarrr/   r/   r0   re      s   z_rand_split.<locals>.<listcomp>rB   c                    s6   t t j |d}| fddt jD S )Nru   c                    s"   g | ]}|kr j | nd qS rg   r}   r   rd   rs   r/   r0   re      s   z/_rand_split.<locals>.mytake.<locals>.<listcomp>)rT   ra   r   reshaperr   ri   )rd   ixrs   recordr/   r   r0   mytake   s    z_rand_split.<locals>.mytaker   c                 3   s   | ]}|j   kV  qd S rj   r}   rb   )rs   n_obsr/   r0   rl      rf   z_rand_split.<locals>.<genexpr>z#data must be aligned on sample axis      ?c              	      s&   g | ]}t j|| d  d qS ru   rT   appendrb   )rs   r   split_ixr/   r0   re      s   )rT   arrayr   randomRandomStater~   rp   rr   r   randintrandr   )	rn   r   rs   	split_perseedZseeded_randr   Zprev_wqr/   )rs   r   r   r   r0   _rand_split   s$     r   h㈵>atolc                 C   s   | S rj   r/   xr/   r/   r0   <lambda>   rf   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)rT   r   r   AttributeError	TypeErrorrq   r   _rough_check)	rd   br   keywZcheck_aZcheck_bZa_iZb_ir/   r/   r0   r      s    r      c                 C   s   | S rj   r/   r   r/   r/   r0   r     rf   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 nB ty } z(stj d|  W Y d }~n
d }~0 0 |S )Nrs   T)r   rs   r   r   rv   c                 S   s   g | ]}t | qS r/   )rT   rk   squeezerb   r/   r/   r0   re   "  rf   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 r/   r|   rb   r/   r/   r0   re   O  rf   c                    s   g | ]}t j|| d qS r   r   rb   ru   r/   r0   re   Y  rf          @z NotImplemented weights: )getr   ro   r   	Exceptiontyper   r   sliceri   rT   nanr   NotImplementedErrorwarningswarn__name__)argskwargsresultrn   restr   r   eZ
dud_arraysZdud_weightsZdud_argsrd   ZindexerZ
dup_arraysZdup_weightsZdup_argsZsplit_arraysZsplit_weightsZ
split_args
const_testdefault_axisdud_testdup_testrZ   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_argru   r0   wrapped  s     *,z _weight_checked.<locals>.wrapped)r   )rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r   r0   _weight_checked  s    .Ur   rh   )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dd Zej	d	d
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)rI   rJ   rK   rH   rG   )boolrY   r   rW   rnd_eo_namesrT   rY   rX   rW   rA   valid_upcastsselfr/   r/   r0   setup_method  s    

zTestCdist.setup_methodc                 C   s  g dg dg dg}g dg dg dg}dt dd	}dgd
 }tt& t||fd|i| W d    n1 s|0    Y  tt* t||fdt|i| W d    n1 s0    Y  tt* t||fdd| i| W d    n1 s0    Y  tt( t||g|R d|i W d    n1 sJ0    Y  tt, t||g|R dt|i W d    n1 s0    Y  tt, t||g|R dd| i W d    n1 s0    Y  d S )Nr   r         @333333?ffffff@333333@皙@r   皙@g      @      @g       @g      @333333@g @g      @r   r   Q	@   ZN0tV4l1D_p4raMr      r1   test_)rT   arangepytestraisesr   r   eval)r   r1   X1X2r   r   r/   r/   r0   test_cdist_extra_args  s     
48:8<zTestCdist.test_cdist_extra_argsc              	   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||| W d    n1 s|0    Y  tt$ t|||g|R   W d    n1 s0    Y  tt$ t|||fi | W d    n1 s0    Y  tt" t|||ddd W d    n1 s60    Y  tt$ t|||dddd W d    n1 sv0    Y  tt$ t|||dddd W d    n1 s0    Y  tt" t|||ddd W d    n1 s0    Y  tt  t|||dd W d    n1 s00    Y  tt t|||d W d    n1 sj0    Y  tt$ t|||dddd W d    n1 s0    Y  tt|||dddd d S )Nrh   r   c                 S   s   || | S rj   r/   r   yargkwargkwarg2r/   r/   r0   
_my_metric  s    z:TestCdist.test_cdist_extra_args_custom.<locals>._my_metricr   r   r   r   r   r   r   r   r   r   r   ffffff
@r   r   r   皙?r1   r   r   皙@)rh   r   )rT   r   r   r   r   r   r
   )r   r   r   r   r   r   r/   r/   r0   test_cdist_extra_args_custom  s<    

*2224420.4
z&TestCdist.test_cdist_extra_args_customc                 C   sD   d}t d }t d }t||d}t||d}t|||tdkd d S )NV瞯<cdist-X1cdist-X2r   test_euclideanr   rtolr   rU   wcdist_no_constr
   r   )r   epsr   r   Y1Y2r/   r/   r0   #test_cdist_euclidean_random_unicode  s    z-TestCdist.test_cdist_euclidean_random_unicodep皙?      ?r   Gz?r   gffffff@gffffff@c                 C   sN   d}t d }t d }t||d|d}t||d|d}t||d|tdkd	 d S )
NvIh%<=r  r	  r#   r  test_minkowskir   r   )r   r  r   r  )r   r  r  r   r   r  r  r/   r/   r0   test_cdist_minkowski_random  s    z%TestCdist.test_cdist_minkowski_randomc                 C   sb   d}t d }t d }t||d}dd }dt||| ||| j }t|||tdkd	 d S )
N+=r  r	  r   c                 S   s   t jj| ddddS )Nrh   ru   rv   )rT   linalgr   r   )Xr/   r/   r0   norms  s    z1TestCdist.test_cdist_cosine_random.<locals>.normsrh   r   r  )rU   wcdistrT   dotTr
   r   )r   r  r   r   r  r  r  r/   r/   r0   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 W d    n1 s0    Y  d S )Nr   r      r"   r1                 @      ?r   rv   rh   r   )rT   r   r   r
   sqrtr   r   rq   )r   x1x2distrt2r/   r/   r0   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__r/   r/   r/   r0   myclass  s   r1  c                    s(   t | d  rt |d  s$tddS Nr   zType has been changed+?
isinstancerq   r   r   r1  r/   r0   r      s    z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metricrB   r$  r3  r   r   )rT   r   objectr   r   r   )r   r   rE   Zcdist_yright_yr/   r7  r0   test_cdist_custom_notdouble  s    z%TestCdist.test_cdist_custom_notdoubleHz>c                 K   s  zPt ||fd|i|}t ||fdt|i|}t ||fdd| i|}W n ty` }	 z|	j}
tdkrt|
j t|	 t|
& t ||fd|i| W d    n1 s0    Y  t|
* t ||fdt|i| W d    n1 s0    Y  t|
* t ||fdd| i| W d    n1 sB0    Y  W Y d }	~	n2d }	~	0 0 t	|||tdkd t	|||tdkd d S Nr1   r   r   r  )
r   r   r   	__class__r   printr   r   r   r
   )r   r   r   r1   r  r   y1y2y3r   e_clsr/   r/   r0   _check_calling_conventions	  s"     
48P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krZtd|d| |dv rld|vrlq| ||| |d	krt||gtj}tj	|d
dd}| j||||d q|dkrt||gtj}t
t|j}ttj|j}| j||||d qd S )Nr#  r   rh   r   	testing:  with: >   r!   r$   r'   r   r*   r(   r%   r   r&   r   rs   r   Vr"   VI)r   rU   r   r?  rD  rT   vstackr   rA   var
atleast_2dcovr!  r   r  inv)r   r1   eo_namer   r   ZX12rI  rK  r/   r/   r0   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}|D ](}|d
 d d dd d df }|d
 dd dd d df }zt|||d}W n ty: } z|j}	tdkrt|	j t| |d D ]N}
|
|}|
|}t	|	 t|||d W d    q1 s0    Y  qW Y d }~qLd }~0 0 |d D ]0}
t|
||
||d}t
|||tdkd qDqLd S )Nr<  rG   r   rK   rY   rJ   r   rI   rW   r   r#  r   rh   r   r$  r  )rU   r   r   r   r>  r   r?  r   r   r   r
   )r   r1   r  teststestr   r   r@  r   rC  new_typeZX1newZX2newrA  r/   r/   r0   test_cdist_dtype_equivalence=  s0    

Fz&TestCdist.test_cdist_dtype_equivalencec                 C   s(  d}t d }t d }|jd |jd  }}t }|dkr@d|d< tj||ftjd}t|||fi |}	t|||fd	|i|}
t|	|
|td
kd t	|
|u  tj|d |d ftjd}t
t( t|||fd	|i| W d    n1 s0    Y  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| W d    n1 s~0    Y  t
t( t|||fd	|i| W d    n1 s0    Y  tj||ftjd}t
t( t|||fd	|i| W d    n1 s0    Y  d S )Nr  r  r	  r   r#   r  r  rB   outr   r  rh   F)rC   order)rU   r~   dictrT   emptyrA   r   r
   r   r   r   r   rq   int64)r   r1   r  r   r   Zout_rZout_cr   out1r  r  out2out3Zout4out5r/   r/   r0   test_cdist_outX  s8    688zTestCdist.test_cdist_outc           
      C   s   d}t d d d dd d df }t d d d dd d df }| }| }t|| t|| t|jj  t|jj  t|jj t|jj t }|dkrd|d< t|||fi |}t|||fi |}	t||	|t	dkd d S )	Nr  r  r   r	  r#   r  r  r  )
rU   copyr   r   flagsc_contiguousrZ  r   r
   r   )
r   r1   r  r   r   X1_copyZX2_copyr   r  r  r/   r/   r0   test_striding  s"    

zTestCdist.test_stridingc                 C   s   t jdd}t jdd}t }|dkr2d|d< t||fd|i|}dd |||fD }~~~trlt  tdd	 |D sJ d S )
N
   r#   r  r  r1   c                 S   s   g | ]}t |qS r/   )weakrefref)rc   vr/   r/   r0   re     rf   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>c                 s   s   | ]}| d u V  qd S rj   r/   )rc   Zweak_refr/   r/   r0   rl     rf   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>)rT   r   r   rZ  r   r   r   rp   )r   r1   r)  r*  r   rW  Z	weak_refsr/   r/   r0   test_cdist_refcount  s    zTestCdist.test_cdist_refcountN)r<  )r   r/  r0  r   r   r  r  r   markparametrizerT   infr  r"  r-  r;  rD  rR  rV  ra  rf  rk  r/   r/   r/   r0   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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/d0 Zd1d2 Zd3d4 Ze
jjd5d6 Z e
jjd7d8 Z!e
jjd9d: Z"d;d< Z#d=d> Z$d?d@ Z%e
jjdAdB Z&e
jjdCdD Z'e
jjdEdF Z(e
j)dGdHdIdJdKdLe*j+gdMdN Z,dOdP Z-dQdR Z.dSdT Z/e
jjdUdV Z0e
jjdWdX Z1e
jjdYdZ Z2e
jjd[d\ Z3e
jjd]d^ Z4e
jjd_d` Z5dadb Z6dcdd Z7dedf Z8dgdh Z9didj Z:dkdl Z;dmdn Z<dodp Z=dqdr Z>dsdt Z?dudv Z@dwdx ZAdydz ZBd{d| ZCd}d~ ZDdd ZEdd 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]dd Z^e
jjdd Z_dd Z`dd ZadddZbdd Zcdd Zddd ZeddÄ ZfdS )	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   r/   r/   r0   r     s    

zTestPdist.setup_methodc                 C   s  ddgddgddgg}dt dd}dgd	 }tt$ t|fd
|i| W d    n1 sd0    Y  tt( t|fd
t|i| W d    n1 s0    Y  tt( t|fd
d| i| W d    n1 s0    Y  tt& t|g|R d
|i W d    n1 s*0    Y  tt* t|g|R d
t|i W d    n1 sp0    Y  tt* t|g|R d
d| i W d    n1 s0    Y  d S )Nr   r   r   r   r   r   r   r   r   r1   r   )rT   r   r   r   r   r   r   )r   r1   r   r   r   r/   r/   r0   test_pdist_extra_args  s    
2666:zTestPdist.test_pdist_extra_argsc                 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|| W d    n1 sd0    Y  tt" t||g|R   W d    n1 s0    Y  tt" t||fi | W d    n1 s0    Y  tt  t||d	dd W d    n1 s0    Y  tt" t||ddd	d W d    n1 sV0    Y  tt" t||ddd	d W d    n1 s0    Y  tt  t||dd	d W d    n1 s0    Y  tt t||dd	 W d    n1 s
0    Y  tt t||d W d    n1 sB0    Y  tt" t||dd	dd W d    n1 s0    Y  tt||dddd d S )Nrh   r   c                 S   s   || | S rj   r/   r   r/   r/   r0   r     s    z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metricr   r   r   r   r   r   r   r   r   r  r  r  r  r  )rh   r   )rT   r   r   r   r   r   r
   )r   r   r   r   r   r/   r/   r0   test_pdist_extra_args_custom  s:    

(000220.,2z&TestPdist.test_pdist_extra_args_customc                 C   s0   d}t d }t d }t|d}t|||d d S Nr<  pdist-double-inppdist-euclideanr   r  rU   wpdist_no_constr
   r   r  r  Y_rightY_test1r/   r/   r0   test_pdist_euclidean_random  s
    
z%TestPdist.test_pdist_euclidean_randomc                 C   s0   d}t d }t d }t|d}t|||d d S rr  rv  rx  r/   r/   r0   test_pdist_euclidean_random_u  s
    
z'TestPdist.test_pdist_euclidean_random_uc                 C   s6   d}t td }td }t|d}t|||d d S rr  rT   rW   rU   rw  r
   rx  r/   r/   r0   #test_pdist_euclidean_random_float32  s
    
z-TestPdist.test_pdist_euclidean_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  rs  rt  r
  ru  rv  r   r  r  ry  Y_test2r/   r/   r0    test_pdist_euclidean_random_nonC  s
    
z*TestPdist.test_pdist_euclidean_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  irispdist-euclidean-irisr   ru  rv  rx  r/   r/   r0    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 d S )Nr   r  r  r   r   r  rT   rW   rU   rw  r
   r   rx  r/   r/   r0   !test_pdist_euclidean_iris_float32  s
    
z+TestPdist.test_pdist_euclidean_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  r  r  r
  ru  rv  r  r/   r/   r0   test_pdist_euclidean_iris_nonC  s
    
z(TestPdist.test_pdist_euclidean_iris_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  rs  pdist-seuclideanr&   ru  rU   r   r
   rx  r/   r/   r0   test_pdist_seuclidean_random$  s
    
z&TestPdist.test_pdist_seuclidean_randomc                 C   sb   d}t td }td }t|d}t|||d t j|ddd}t|d|d	}t|||d d S )
Nr<  rs  r  r&   ru  r   rh   rG  rH  )rT   rW   rU   r   r
   rM  )r   r  r  ry  rz  rI  r  r/   r/   r0   $test_pdist_seuclidean_random_float32+  s    
z.TestPdist.test_pdist_seuclidean_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  rs  r  test_seuclideanru  r  r  r/   r/   r0   !test_pdist_seuclidean_random_nonC7  s
    
z+TestPdist.test_pdist_seuclidean_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  r  pdist-seuclidean-irisr&   ru  r  rx  r/   r/   r0   test_pdist_seuclidean_iris?  s
    
z$TestPdist.test_pdist_seuclidean_irisc                 C   s6   d}t td }td }t|d}t|||d d S )Nr   r  r  r&   ru  )rT   rW   rU   r   r
   rx  r/   r/   r0   "test_pdist_seuclidean_iris_float32F  s
    
z,TestPdist.test_pdist_seuclidean_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  r  r  r  ru  r  r  r/   r/   r0   test_pdist_seuclidean_iris_nonCN  s
    
z)TestPdist.test_pdist_seuclidean_iris_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S Nr<  rs  pdist-cosiner   ru  rU   wpdistr
   rx  r/   r/   r0   test_pdist_cosine_randomW  s
    
z"TestPdist.test_pdist_cosine_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  rT   rW   rU   r  r
   rx  r/   r/   r0    test_pdist_cosine_random_float32^  s
    
z*TestPdist.test_pdist_cosine_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  rs  r  test_cosineru  r  r  r/   r/   r0   test_pdist_cosine_random_nonCe  s
    
z'TestPdist.test_pdist_cosine_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr   r  pdist-cosine-irisr   r   r  rx  r/   r/   r0   test_pdist_cosine_irism  s
    
z TestPdist.test_pdist_cosine_irisc                 C   s<   d}t td }td }t|d}t|||tdkd d S )Nr   r  r  r   r   r   r   )rT   rW   rU   r  r
   r   rx  r/   r/   r0   test_pdist_cosine_iris_float32u  s
    
z(TestPdist.test_pdist_cosine_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr   r  r  r  r   r  r  r/   r/   r0   test_pdist_cosine_iris_nonC}  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)rT   absr   r   r   rL  r   r  )r   r   r  r/   r/   r0   test_pdist_cosine_bounds  s
    z"TestPdist.test_pdist_cosine_boundsc                 C   s0   d}t d }t d }t|d}t|||d d S Nr<  rs  pdist-cityblockr   ru  rv  rx  r/   r/   r0   test_pdist_cityblock_random  s
    
z%TestPdist.test_pdist_cityblock_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r}  rx  r/   r/   r0   #test_pdist_cityblock_random_float32  s
    
z-TestPdist.test_pdist_cityblock_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  rs  r  test_cityblockru  rv  r  r/   r/   r0    test_pdist_cityblock_random_nonC  s
    
z*TestPdist.test_pdist_cityblock_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  pdist-cityblock-irisr   ru  rv  rx  r/   r/   r0   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 d S )Nr   r  r  r   r   r  r  rx  r/   r/   r0   !test_pdist_cityblock_iris_float32  s
    
z+TestPdist.test_pdist_cityblock_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  r  r  ru  rv  r  r/   r/   r0   test_pdist_cityblock_iris_nonC  s
    
z(TestPdist.test_pdist_cityblock_iris_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S Nr<  rs  pdist-correlationr   ru  r  rx  r/   r/   r0   test_pdist_correlation_random  s
    
z'TestPdist.test_pdist_correlation_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  rx  r/   r/   r0   %test_pdist_correlation_random_float32  s
    
z/TestPdist.test_pdist_correlation_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  rs  r  test_correlationru  r  r  r/   r/   r0   "test_pdist_correlation_random_nonC  s
    
z,TestPdist.test_pdist_correlation_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr<  r  pdist-correlation-irisr   ru  r  rx  r/   r/   r0   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 d S )Nr<  r  r  r   r   r  )rU   rT   rW   r  r
   r   rx  r/   r/   r0   #test_pdist_correlation_iris_float32  s
    
z-TestPdist.test_pdist_correlation_iris_float32c                 C   sF   t jdkrd}n
td td }td }t|d}t|||d d S )Nl        r<  zsee gh-16456r  r  r  ru  )sysmaxsizer   skiprU   r  r
   r  r/   r/   r0    test_pdist_correlation_iris_nonC  s    


z*TestPdist.test_pdist_correlation_iris_nonCr  r  r  r   r   皙	@c                 C   s<   d}t d }t|d|d}t|d|d}t||d|d d S )Nr  rs  r#   r  r  r   )r   r  rv  )r   r  r  r  r  r  r/   r/   r0   test_pdist_minkowski_random_p  s
    z'TestPdist.test_pdist_minkowski_random_pc                 C   s4   d}t d }t d }t|ddd}t|||d d S Nr<  rs  pdist-minkowski-3.2r#   r  r  ru  rv  rx  r/   r/   r0   test_pdist_minkowski_random  s
    z%TestPdist.test_pdist_minkowski_randomc                 C   s:   d}t td }td }t|ddd}t|||d d S r  r}  rx  r/   r/   r0   #test_pdist_minkowski_random_float32  s
    z-TestPdist.test_pdist_minkowski_random_float32c                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr<  rs  r  r  r  r  ru  rv  r  r/   r/   r0    test_pdist_minkowski_random_nonC  s
    z*TestPdist.test_pdist_minkowski_random_nonCc                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr<  r  pdist-minkowski-3.2-irisr#   r  r  ru  rv  rx  r/   r/   r0   test_pdist_minkowski_3_2_iris
  s
    z'TestPdist.test_pdist_minkowski_3_2_irisc                 C   s:   d}t td }td }t|ddd}t|||d d S )Nr   r  r  r#   r  r  ru  r}  rx  r/   r/   r0   %test_pdist_minkowski_3_2_iris_float32  s
    z/TestPdist.test_pdist_minkowski_3_2_iris_float32c                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr<  r  r  r  r  r  ru  rv  r  r/   r/   r0   "test_pdist_minkowski_3_2_iris_nonC  s
    z,TestPdist.test_pdist_minkowski_3_2_iris_nonCc                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr<  r  pdist-minkowski-5.8-irisr#   r   r  ru  rv  rx  r/   r/   r0   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 d S )	Nr   r  r  r#   r   r  r   r  r  rx  r/   r/   r0   %test_pdist_minkowski_5_8_iris_float32*  s
    z/TestPdist.test_pdist_minkowski_5_8_iris_float32c                 C   s4   d}t d }t d }t|ddd}t|||d d S )Nr<  r  r  r  r   r  ru  rv  r  r/   r/   r0   "test_pdist_minkowski_5_8_iris_nonC2  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 W d    n1 s0    Y  d S )N)r   r   r   r   rv   rh   r"   r$  r%  r'  r&  r   r   r   r   r   )
rT   r   r   r   r
   r(  r   r   rq   r  )r   r   r+  r,  r/   r/   r0   test_pdist_mahalanobis:  s    (
&z TestPdist.test_pdist_mahalanobisc                 C   s0   d}t d }t d }t|d}t|||d d S Nr  rF   pdist-hammingr   ru  r  rx  r/   r/   r0   test_pdist_hamming_randomK  s
    
z#TestPdist.test_pdist_hamming_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  rx  r/   r/   r0   !test_pdist_hamming_random_float32R  s
    
z+TestPdist.test_pdist_hamming_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S Nr  rF   r  Ztest_hammingru  r  r  r/   r/   r0   test_pdist_hamming_random_nonCY  s
    
z(TestPdist.test_pdist_hamming_random_nonCc                 C   s6   d}t td }td }t|d}t|||d d S r  rT   r   rU   r  r
   rx  r/   r/   r0   test_pdist_dhamming_random`  s
    
z$TestPdist.test_pdist_dhamming_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  rx  r/   r/   r0   "test_pdist_dhamming_random_float32g  s
    
z,TestPdist.test_pdist_dhamming_random_float32c                 C   s6   d}t td }td }t|d}t|||d d S r  r  r  r/   r/   r0   test_pdist_dhamming_random_nonCn  s
    
z)TestPdist.test_pdist_dhamming_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S N:0yE>rF   pdist-jaccardr   ru  r  rx  r/   r/   r0   test_pdist_jaccard_randomu  s
    
z#TestPdist.test_pdist_jaccard_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  rx  r/   r/   r0   !test_pdist_jaccard_random_float32|  s
    
z+TestPdist.test_pdist_jaccard_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S Nr  rF   r  test_jaccardru  r  r  r/   r/   r0   test_pdist_jaccard_random_nonC  s
    
z(TestPdist.test_pdist_jaccard_random_nonCc                 C   s6   d}t td }td }t|d}t|||d d S r  r  rx  r/   r/   r0   test_pdist_djaccard_random  s
    
z$TestPdist.test_pdist_djaccard_randomc                 C   s6   d}t td }td }t|d}t|||d d S r  r  rx  r/   r/   r0   "test_pdist_djaccard_random_float32  s
    
z,TestPdist.test_pdist_djaccard_random_float32c                 C   s,   d}t tdd}ttd||d d S )Nr  r#  r   r   rg  ru  r   rT   zerosr
   r   r  Yr/   r/   r0   test_pdist_djaccard_allzeros  s    z&TestPdist.test_pdist_djaccard_allzerosc                 C   s6   d}t td }td }t|d}t|||d d S r  r  r  r/   r/   r0   test_pdist_djaccard_random_nonC  s
    
z)TestPdist.test_pdist_djaccard_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Ndy=rs  pdist-jensenshannonr    ru  r  rx  r/   r/   r0   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 d S )Nr  rs  r  r    r   r  rT   rW   rU   r   r
   r   rx  r/   r/   r0   'test_pdist_jensenshannon_random_float32  s
    
z1TestPdist.test_pdist_jensenshannon_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  rs  r  test_jensenshannonru  r  r  r/   r/   r0   $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 d S )Ng&.=g-q=r  pdist-jensenshannon-irisr    r   )r`   rU   r   r
   rx  r/   r/   r0   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 d S )Ngư>r  r  r    r   r  r  rx  r/   r/   r0   %test_pdist_jensenshannon_iris_float32  s
    
z/TestPdist.test_pdist_jensenshannon_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Ng-C6
?r  r  r  ru  r  r  r/   r/   r0   "test_pdist_jensenshannon_iris_nonC  s
    
z,TestPdist.test_pdist_jensenshannon_iris_nonCc                 C   s,   d}t tdd}ttd||d d S )Nr  r  r  rg  ru  r  r  r/   r/   r0   !test_pdist_djaccard_allzeros_nonC  s    z+TestPdist.test_pdist_djaccard_allzeros_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  rs  pdist-chebyshevr   ru  r  rx  r/   r/   r0   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 d S )Nr<  rs  r  r   r   r  r  rx  r/   r/   r0   #test_pdist_chebyshev_random_float32  s
    
z-TestPdist.test_pdist_chebyshev_random_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  rs  r  test_chebyshevru  r  r  r/   r/   r0    test_pdist_chebyshev_random_nonC  s
    
z*TestPdist.test_pdist_chebyshev_random_nonCc                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  pdist-chebyshev-irisr   ru  r  rx  r/   r/   r0   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 d S )Nr   r  r  r   r   r  r  rx  r/   r/   r0   !test_pdist_chebyshev_iris_float32  s
    
z+TestPdist.test_pdist_chebyshev_iris_float32c                 C   s0   d}t d }t d }t|d}t|||d d S )Nr  r  r  r  ru  r  r  r/   r/   r0   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rh   r   rh   rh   r   rh   rh   r   rh   rh   rB   333333?r   绽|=r  r   	wmatchingrT   r   r   r
   r   mm2r/   r/   r0   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rh   r   rh   rh   rh   r   rB   UUUUUU?r   r  r   r  r  r/   r/   r0   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  wjaccardrT   r   r   r
   r  r/   r/   r0   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  r/   r/   r0   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  rB   r   r   r  r   wyulerT   r   r   r   r?  r
   r  r/   r/   r0   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	  rB   r   r   r  r   r  r  r/   r/   r0   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  rB   r   g۶m۶m?r   r  r   wdicerT   r   r   r   r?  r
   r  r/   r/   r0   test_pdist_dice_mtica18  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	  rB   r   r'  r   r  r   r  r  r/   r/   r0   test_pdist_dice_mtica2B  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  rB   r   g      ?r   r  r   )r(   rT   r   r   r   r?  r
   r  r/   r/   r0   test_pdist_sokalsneath_mtica1L  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	  rB   r   g?r   r  r   )wsokalsneathrT   r   r   r   r?  r
   r  r/   r/   r0   test_pdist_sokalsneath_mtica2V  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  wrogerstanimotorT   r   r   r   r?  r
   r  r/   r/   r0    test_pdist_rogerstanimoto_mtica1`  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  r/   r/   r0    test_pdist_rogerstanimoto_mtica2j  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  rB   r   r  r   r  r   wrussellraorT   r   r   r   r?  r
   r  r/   r/   r0   test_pdist_russellrao_mtica1t  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	  rB   r   r
  r   r  r   r!  r  r/   r/   r0   test_pdist_russellrao_mtica2~  s    z&TestPdist.test_pdist_russellrao_mtica2c                 C   sN   t d }tdkrt|j|j d}t|d}t|d}t|||tdkd d S )Nr  r   r  r   test_canberrar  )rU   r   r?  r~   rC   rw  r
   )r   Dr  r@  rA  r/   r/   r0   test_pdist_canberra_match  s    

z#TestPdist.test_pdist_canberra_matchc                 C   s2   d}t dgdgfd}d}t|||tdkd d S )Nr  r   r   r   gd>@1?r   r  )rw  r
   r   )r   r  pdist_yr:  r/   r/   r0   test_pdist_canberra_ticket_711  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.  r/   r/   r/   r0   r1    s   r1  c                    s(   t | d  rt |d  s$tddS r2  r4  r6  r7  r/   r0   r     s    z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricrB   r$  r3  r   r8  )rT   r   r9  r   r   r   )r   r   rE   r(  r:  r/   r7  r0   test_pdist_custom_notdouble  s    z%TestPdist.test_pdist_custom_notdoubler<  c           
      K   s  zJt |fd|i|}t |fdt|i|}t |fdd| i|}W n
 tyT } z|j}	tdkr|t|	j t| t|	$ t |fd|i| W d    n1 s0    Y  t|	( t |fdt|i| W d    n1 s0    Y  t|	( t |fdd| i| W d    n1 s60    Y  W Y d }~n2d }~0 0 t	|||tdkd t	|||tdkd d S r=  )
r   r   r   r>  r   r?  r   r   r   r
   )
r   r  r1   r  r   r@  rA  rB  r   rC  r/   r/   r0   rD    s"    
26Nz$TestPdist._check_calling_conventionsc                 C   s   | j D ]}t| d d dd d df }tdkr<td|d| |dv rNd|vrNq| || |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d S )Nr#  r   rE  rF  >   r!   r$   r'   r   r*   Zmatchingr(   r%   r   r&   r   rh   rG  rH  r"   rJ  )r   rU   r   r?  rD  rT   rM  r   rA   rN  rO  r!  r   r  rP  )r   r1   rQ  r  rI  rK  r/   r/   r0   test_pdist_calling_conventions  s     
z(TestPdist.test_pdist_calling_conventionsc                 C   sJ  d}t d | jd ft d | jd ft d | jd ft d | jd	 fg}|D ]}|d
 d d dd d df }zt||d}W n ty } zx|j}tdkrt|j t| |d D ]B}	|	|}
t	| t|
|d W d    q1 s0    Y  qW Y d }~qLd }~0 0 |d D ]*}	t|	||d}t
|||tdkd qqLd S )Nr<  rG   r   rK   rY   rJ   r   rI   rW   r   r#  r   r$  rh   r  )rU   r   r   r   r>  r   r?  r   r   r   r
   )r   r1   r  rS  rT  r   r@  r   rC  rU  r   rA  r/   r/   r0   test_pdist_dtype_equivalence  s,    
B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 }|dkrVd|d	< tj|tjd
}t||fi |}t||fd|i|}t|||d t	||u  tj|d tjd
}	t
t& t||fd|	i| W d    n1 s0    Y  tjd| tjd
d d d }
t
t& t||fd|
i| W d    n1 sR0    Y  tj|tjd
}t
t& t||fd|i| W d    n1 s0    Y  d S )Nr  rI   r#  r   r   rh   r#   r  r  rB   rW  ru  r   )rU   r   r~   rZ  rT   r[  rA   r   r
   r   r   r   rq   r\  )r   r1   r  r  Zout_sizer   r]  ry  rz  r^  r_  r`  r/   r/   r0   test_pdist_out  s(     46zTestPdist.test_pdist_outc                 C   s   d}t d d d dd d df }| }t|jj  t|jj t }|dkrXd|d< t||fi |}t||fi |}t|||tdkd d S )	Nr  rI   r#  r   r#   r  r  r  )	rU   rb  r   rc  rd  rZ  r   r
   r   )r   r1   r  r  ZX_copyr   r  r  r/   r/   r0   rf    s    zTestPdist.test_stridingN)r<  )gr   r/  r0  r   rp  rq  r{  r|  r~  r  r   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  rT   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*  rD  r+  r,  r-  rf  r/   r/   r/   r0   ro    s   	#


		


	


	










		










	
"ro  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 )TestSomeDistanceFunctionsc                 C   s,   t g d}t g d}||fg| _d S )Nr   r   r   r   )rT   r   cases)r   r   r   r/   r/   r0   r   )  s    z&TestSomeDistanceFunctions.setup_methodc           	      C   s   | j D ]h\}}t||dd}t|d t||dd}t|d t||dd}t|d t||dd}t|d	 qtd
dg}tddg}tt||t|d|d d S )Nrh   r  r         ?gqaz@r   gw@r  gR"6@i`  i  i^  i  uint16)r0  r#   r	   rT   r   r   r   )	r   r   r   dist1Zdist1p5dist2Zdist0p25rd   r   r/   r/   r0   r  0  s    



z(TestSomeDistanceFunctions.test_minkowskic                 C   s.   | j D ]"\}}t||}t|td qd S )Nr#  )r0  
weuclideanr	   rT   r(  r   r   r   r+  r/   r/   r0   r
  C  s    
z(TestSomeDistanceFunctions.test_euclideanc                 C   s(   | j D ]\}}t||}t|d qd S )Nr   )r0  wsqeuclideanr	   r6  r/   r/   r0   test_sqeuclideanH  s    
z*TestSomeDistanceFunctions.test_sqeuclideanc              	   C   s@   | j D ]4\}}t||}t|ddtdtd    qd S )Nr   g      2@      )r0  wcosiner	   rT   r(  r6  r/   r/   r0   r  M  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   )rT   r   r0  wcorrelationr	   r   r   )r   ZxmZymr   r   r+  r/   r/   r0   r  R  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   rg  )rT   r   r   Zfinfor   r  r6  r/   r/   r0   test_correlation_positiveY  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      @)rT   r   r0  r"   r	   r(  )r   r   r   vir+  r/   r/   r0   test_mahalanobisd  s    z*TestSomeDistanceFunctions.test_mahalanobisN)r   r/  r0  r   r  r
  r8  r  r  r@  rB  r/   r/   r/   r0   r.  '  s   r.  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 rj   )checked_dtypescheck_squareform_matrixr   rC   r/   r/   r0   test_squareform_matrixp  s    
z%TestSquareForm.test_squareform_matrixc                 C   s   | j D ]}| | qd S rj   )rD  check_squareform_vectorrF  r/   r/   r0   test_squareform_vectort  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   rB   r   rh   rh   r   g@rg   )rT   r  r   r   r~   rC   r   r   )r   rC   AZrAr/   r/   r0   rE  x  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 )NrJ  rB   rK  r   g @)r   r   )rT   r  r   r   r~   rC   r   r   )r   rC   rj  rvr/   r/   r0   rH    s    z&TestSquareForm.check_squareform_vectorc                 C   s   t ddD ]}| | q
d S )Nr   r#  )rr   check_squareform_multi_matrixr   nr/   r/   r0   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 )N   rh   r   r   r   )rT   r   r   rw  r   lenr~   r   r   r?  rr   )
r   rP  r  r  rL  ZYrskr   jr/   r/   r0   rN    s$    
z,TestSquareForm.check_squareform_multi_matrixN)r   r/  r0  rT   r   rW   int32int8r   rD  rG  rI  rE  rH  rQ  rN  r/   r/   r/   r0   rC  m  s   rC  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   rg  rR  )rr   rT   r   r   rw  r   r   )r   rP  r  r  r/   r/   r0   test_num_obs_y_multi_matrix  s    z'TestNumObsY.test_num_obs_y_multi_matrixc                 C   s8   t t | d W d    n1 s*0    Y  d S Nrh   )r   r   rq   check_yr   r/   r/   r0   test_num_obs_y_1  s    zTestNumObsY.test_num_obs_y_1c                 C   s   t | d d S Nr   r   r\  r   r/   r/   r0   test_num_obs_y_2  s    zTestNumObsY.test_num_obs_y_2c                 C   s   t | d d S )Nr   r_  r   r/   r/   r0   test_num_obs_y_3  s    zTestNumObsY.test_num_obs_y_3c                 C   s   t | d d S NrR  r_  r   r/   r/   r0   test_num_obs_y_4  s    zTestNumObsY.test_num_obs_y_4c                 C   s   t ddD ]}| | q
d S )Nr#     )rr   minit)r   r   r/   r/   r0   test_num_obs_y_5_10  s    zTestNumObsY.test_num_obs_y_5_10c              	   C   s|   t  }tddD ]}|||d  d  qtddD ]@}||vr6tt | | W d    q61 sl0    Y  q6d S Nr   rd  rh   r#  i   setrr   addr   r   rq   bad_yr   rd   rP  r   r/   r/   r0   test_num_obs_y_2_100  s    z TestNumObsY.test_num_obs_y_2_100c                 C   s   t | | d S rj   r_  rO  r/   r/   r0   re    s    zTestNumObsY.minitc                 C   s   t j|}t|S rj   )rT   r   r   r   r   rP  r   r/   r/   r0   rl    s    zTestNumObsY.bad_yc                 C   s   t | ||kS rj   )r   make_yrO  r/   r/   r0   r\    s    zTestNumObsY.check_yc                 C   s   t j||d  d S Nrh   r   rT   r   r   rO  r/   r/   r0   rp    s    zTestNumObsY.make_yN)r   r/  r0  rZ  r]  r`  ra  rc  rf  rn  re  rl  r\  rp  r/   r/   r/   r0   rY    s   rY  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 )Nrh   rg  rR  r   )rr   rT   r   r   rw  r   r   r?  r~   r   r   )r   rP  r  r  rL  r/   r/   r0   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   r/   r/   r0   test_num_obs_dm_0  s    zTestNumObsDM.test_num_obs_dm_0c                 C   s   t | d d S r[  ru  r   r/   r/   r0   test_num_obs_dm_1  s    zTestNumObsDM.test_num_obs_dm_1c                 C   s   t | d d S r^  ru  r   r/   r/   r0   test_num_obs_dm_2  s    zTestNumObsDM.test_num_obs_dm_2c                 C   s   t | d d S r^  ru  r   r/   r/   r0   test_num_obs_dm_3  s    zTestNumObsDM.test_num_obs_dm_3c                 C   s   t | d d S rb  ru  r   r/   r/   r0   test_num_obs_dm_4  s    zTestNumObsDM.test_num_obs_dm_4c                 C   s   t | ||kS rj   )r   make_DrO  r/   r/   r0   rv    s    zTestNumObsDM.check_Dc                 C   s   t j||S rj   rr  rO  r/   r/   r0   r|    s    zTestNumObsDM.make_DN)r   r/  r0  rt  rw  rx  ry  rz  r{  rv  r|  r/   r/   r/   r0   rs    s   	rs  c                 C   s   t | ddS NT)throw)r   )r&  r/   r/   r0   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   sF   t jdt jd}tt t| W d    n1 s80    Y  d S )Nr#  rB   rT   r  rA   r   r   rq   r  r   r&  r/   r/   r0   $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  rB   FrT   r  rA   r   r   r  r/   r/   r0   $test_is_valid_dm_improper_shape_1D_F  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_1D_Fc                 C   sF   t jdt jd}tt t| W d    n1 s80    Y  d S Nr   r   r   rB   r  r  r/   r/   r0   $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  rB   Fr  r  r/   r/   r0   $test_is_valid_dm_improper_shape_3D_F  s    z2TestIsValidDM.test_is_valid_dm_improper_shape_3D_Fc                 C   sf   t jd}t|}tddD ]}d|||f< qtt t| W d    n1 sX0    Y  d S )Nrg  r   r#  r   )	rT   r   r   r   rr   r   r   rq   r  r   r   r&  r   r/   r/   r0   #test_is_valid_dm_nonzero_diagonal_E!  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 )Nrg  r   r#  r   F)rT   r   r   r   rr   r   r   r  r/   r/   r0   #test_is_valid_dm_nonzero_diagonal_F)  s
    z1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_Fc                 C   sZ   t jd}t|}|d d |d< tt t| W d    n1 sL0    Y  d S )Nrg  r   rh   rh   rh   r   )rT   r   r   r   r   r   rq   r  r   r   r&  r/   r/   r0   test_is_valid_dm_asymmetric_E0  s
    z+TestIsValidDM.test_is_valid_dm_asymmetric_Ec                 C   s6   t jd}t|}|d d |d< tt|d d S )Nrg  r  rh   r  FrT   r   r   r   r   r   r  r/   r/   r0   test_is_valid_dm_asymmetric_F7  s    z+TestIsValidDM.test_is_valid_dm_asymmetric_Fc                 C   s"   t jdt jd}tt|d d S )NrK  rB   Tr  r  r/   r/   r0   test_is_valid_dm_correct_1_by_1=  s    z-TestIsValidDM.test_is_valid_dm_correct_1_by_1c                 C   s&   t jd}t|}tt|d d S )Nrh   Tr  r  r/   r/   r0   test_is_valid_dm_correct_2_by_2A  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  r/   r/   r0   test_is_valid_dm_correct_3_by_3F  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  r/   r/   r0   test_is_valid_dm_correct_4_by_4K  s    z-TestIsValidDM.test_is_valid_dm_correct_4_by_4c                 C   s&   t jd}t|}tt|d d S )Nrg  Tr  r  r/   r/   r0   test_is_valid_dm_correct_5_by_5P  s    z-TestIsValidDM.test_is_valid_dm_correct_5_by_5N)r   r/  r0  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r    s   r  c                 C   s   t | ddS r}  )r   )r   r/   r/   r0   is_valid_y_throwV  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   sF   t jdt jd}tt t| W d    n1 s80    Y  d S )Nr   r   rB   rT   r  rA   r   r   rq   r  r   r   r/   r/   r0   #test_is_valid_y_improper_shape_2D_E_  s    z0TestIsValidY.test_is_valid_y_improper_shape_2D_Ec                 C   s"   t jdt jd}tt|d d S )Nr  rB   FrT   r  rA   r   r   r  r/   r/   r0   #test_is_valid_y_improper_shape_2D_Fd  s    z0TestIsValidY.test_is_valid_y_improper_shape_2D_Fc                 C   sF   t jdt jd}tt t| W d    n1 s80    Y  d S r  r  r  r/   r/   r0   #test_is_valid_y_improper_shape_3D_Eh  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  r/   r/   r0   #test_is_valid_y_improper_shape_3D_Fm  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  r/   r/   r0   test_is_valid_y_correct_2_by_2q  s    
z+TestIsValidY.test_is_valid_y_correct_2_by_2c                 C   s   |  d}tt|d d S r  r  r  r/   r/   r0   test_is_valid_y_correct_3_by_3u  s    
z+TestIsValidY.test_is_valid_y_correct_3_by_3c                 C   s   |  d}tt|d d S )NrR  Tr  r  r/   r/   r0   test_is_valid_y_correct_4_by_4y  s    
z+TestIsValidY.test_is_valid_y_correct_4_by_4c                 C   s   |  d}tt|d d S )Nr#  Tr  r  r/   r/   r0   test_is_valid_y_correct_5_by_5}  s    
z+TestIsValidY.test_is_valid_y_correct_5_by_5c              	   C   s|   t  }tddD ]}|||d  d  qtddD ]@}||vr6tt | | W d    q61 sl0    Y  q6d S rg  ri  rm  r/   r/   r0   test_is_valid_y_2_100  s    z"TestIsValidY.test_is_valid_y_2_100c                 C   s   t j|}t|ddS r}  )rT   r   r   r   ro  r/   r/   r0   rl    s    zTestIsValidY.bad_yc                 C   s   t j||d  d }|S rq  rr  ro  r/   r/   r0   r    s    zTestIsValidY.correct_n_by_nN)r   r/  r0  r  r  r  r  r  r  r  r  r  rl  r  r/   r/   r/   r0   r  Z  s   	r  r  )g      $g      r%  c                 C   s   t t$ tddgddg|  W d    n1 s40    Y  t t* tddgddg| ddg W d    n1 sx0    Y  d S )Nrh   r   r   rR  )r   r   rq   r#   r  r/   r/   r0   
test_bad_p  s    2r  c                   C   s@   t t" tg dg d W d    n1 s20    Y  d S )N)FFF)r   r   rq   r(   r/   r/   r/   r0   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rh   r   r   r   rR  r  rh   rh   rh   r   r   rh   r   rh   r   r   )r   	wcanberrar/   r/   r/   r0   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?   decimalr  r  r'  )r	   wbraycurtisr/   r/   r/   r0   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@ t| t j	d d f |t j	d d f t df W d    n1 s0    Y  tjtdd6 t| t j	d d f |t j	d d f  W d    n1 s0    Y  tjtdd6 t| d d t j	f |d d t j	f  W d    n1 sH0    Y  t 
d	d
d
}tt t|| W d    n1 s0    Y  tt t|| W d    n1 s0    Y  t jd}|d}|d}t||}t||}t|d
 |dd d S )N)rh   rh   rh   )r   r   r   r   r9  r  r   Input vector should be 1-DmatchrR  r   iIrg  )rT   r   r	   r7  r5  r(  r   r   rq   Znewaxisr   r   r   r   r   )r)  r*  r   rsr   d1d2r/   r/   r0   test_euclideans  s*    NDF**



r  c                  C   sH   g d} g d}t t t| | W d    n1 s:0    Y  d S )Nr   r   rh   r  r   r   rq   whammingr6  r/   r/   r0   test_hamming_unequal_length  s    r  c                  C   sZ   g d} g d}g d}d}t jt|d t| || W d    n1 sL0    Y  d S )Nr  r  z/'w' should have the same length as 'u' and 'v'.r  r  )urj  r   r  r/   r/   r0   "test_hamming_unequal_length_with_w  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|S4rB   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rT   r   r
   r  )rd   r   Zdesiredr/   r/   r0   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#   rh   )r1   r  r   )r1   r  r  ru  )rT   r   r   r   r
   )Zarr_inZp0Zc0p1Zc1r/   r/   r0   test_minkowski_w  s    
r  c                  C   sB  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 ]^}t |j}tdgt j|g|d}tt j|g|ddg}t|| t|t |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  )rR  r#  r  rB   r   r   )float16Zfloat128)rT   rX  int16rW  r\  r7  asarrayr   r   rC   ZfloatingZuint8r2  Zuint32Zuint64Ziinfomaxr   r   rW   Z	complex64Z
complex128hasattrr   getattr)r   r   rC   dZumaxr  r  Zdtypesr/   r/   r0   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 r/   r   rc   r   r/   r/   r0   re   !  rf   z&test_sokalmichener.<locals>.<listcomp>c                 S   s   g | ]}t |qS r/   r  r  r/   r/   r0   re   "  rf   )r'   r   )r  r   r   r   r3  r4  r/   r/   r0   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?rh   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?r  r   g      4@r
  )r	   r'   )	ZntfZnftZnttZnffexpectedactualZa1Za2r   r/   r/   r0   test_sokalmichener_with_weight)  s     

r  c                 C   sN   t g dg dg dg dg}| }t|||  t||  t|| d S )Nr   r   r   g3333336@gL7@g333333F@)rT   r  rb  r   r   r   )r1   r   re  r/   r/   r0   test_modifies_input?  s    

r  c              	   C   sV  t g dg dg dg dg}tt t||| d W d    n1 sP0    Y  tt t|| d W d    n1 s0    Y  dD ]}|di}|dkr| d	ks|d
kr| dks|dkr| dkrqtt$ t||| fi | W d    n1 s0    Y  tt" t|| fi | W d    q1 sF0    Y  qd S )Nr   r   r   r  r   )r  rI  rK  ZfoorI  r&   rK  r"   r  r#   )rT   r  r   r   r   r   r   )r1   r   r   r   r/   r/   r0   test_Xdist_deprecated_argsK  s2    
,*4r  c              	   C   s   t d d d dd d df }t|jd }|d d d  |d d d< | dv rXtd | t| d|  fD ]v}tt t	|||d W d    n1 s0    Y  tt  t
||||d W d    qj1 s0    Y  qjd S )	NrI   r#  r   rh   )r&   r"   r    znot applicabler   r  )rU   rT   r   r~   r   r  r   r   rq   r   r   )r1   r  r   r  r/   r/   r0   test_Xdist_non_negative_weightsg  s    
,r  c                  C   s4  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
dddd} tjt	dd t |  W d    n1 s0    Y  ddgd	d
gg} tjt	dd t |  W d    n1 s&0    Y  d S )Nr  rB   rh   r  r  r#  rv   r   r   rR  )r   r   rT   r   r   rC   ri   r   r   rq   r   r   r6  r/   r/   r0   test__validate_vectorv  s&    


&&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  rB   r   r%  r*   rh   )rT   r   r   r  r   r   r   )r   r  r/   r/   r0   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?r1  r   ru   rh   gД?T)rs   Zkeepdims)rh   r   r   rR  )r#  r     r^   )	   rg        )   r9  r  rd  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r	   r    rT   r   )rd   r   r/   r/   r0   r    sJ    

r  c                  C   sh   t g d} t g d}t| |}t| |gdd}t|| tt | t |dd}t|| d S )N)rh   r   r   )r   r   r   r   r$  )rT   r   r   r   r
   r   rN  )Zarr_1Zarr_2r  r  r/   r/   r0   test_gh_17703  s    



r  )N)	NNFTFFFFN)N)zr  os.pathrN   	functoolsr   r   rh  numpyrT   r   Znumpy.linalgr   Znumpy.testingr   r   r   r   r	   r
   r   r   r   Z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*   Zfixturer1   rL   r   Z_tdistZ_ytdistrU   r]   r`   rt   r   r   r   r   r   r   r  r  r  rw  r  r  r  r  r  Z
wcityblockZ
wchebyshevr;  r>  Zwkulczynski1r  r5  r7  r  r  r  Zwsokalmichenerr"  r   ro  r.  rC  rY  rs  r  r  r  r  rl  rm  r  r  r%  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   <module>#   s   (,\	
 

     
0	




`  )       FC6#I9
!		