a
    ˆù»j”Q ã                   @   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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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8 ej9e dd	�d
d„ ƒ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„ Z@e@ƒ  dd„ ZAdvdd„ZBdwdd„ZCdd „ ZDd!d"„ ZEdxd#d$„ZFeed%d&�d'd(„ dfd)d*„ZGd+dd,d(„ d-ddddddddddd.d eed%d&�fd/d0„ZHeHed1dd2�ZIeHed1ddd3�ZJeHed1dd1d4�ZKeHed1ddd1d5�ZLeHe/ƒZMeHe)dd6� ZNZOeHe5ƒZPeHe'ƒZQeHe$ƒZReHe#ƒZSeHe&ƒZTeHe%ƒZUeHe,ƒZVeHe*ƒZWeHe(dd7�ZXeHe4dd7�ZYeHe!ƒZZeHe"dd7�Z[eHe3ƒZ\eHe2ƒZ]eHe0ƒZ^G d8d9„ d9ƒZ_G d:d;„ d;ƒZ`G d<d=„ d=ƒZaG d>d?„ d?ƒZbG d@dA„ dAƒZcG dBdC„ dCƒZddDdE„ ZeG dFdG„ dGƒZfdHdI„ ZgG dJdK„ dKƒZheji jdLg dM¢¡dNdO„ ƒZkdPdQ„ ZldRdS„ ZmdTdU„ ZndVdW„ ZodXdY„ ZpdZd[„ Zqd\d]„ Zrd^d_„ Zsd`da„ Ztdbdc„ Zuddde„ Zvdfdg„ Zwdhdi„ Zxdjdk„ Zydldm„ Zzdndo„ Z{dpdq„ Z|drds„ Z}dtdu„ Z~dS )yé    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)Únp_longÚnp_ulongÚsession)ÚparamsÚscopec                 C   s   | j S )z;
    Fixture for all metrics in scipy.spatial.distance
    )Úparam)Úrequest© r2   úGE:\soccer\ml_env\Lib\site-packages\scipy/spatial/tests/test_distance.pyÚmetricD   s    r4   )zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r   é–  ém  éÿ   éœ  éä  )r5   r   é'  éÔ  é  é�  )r6   r:   r   éò  é4  éŠ   )r7   r;   r>   r   éÛ   ée  )r8   r<   r?   rA   r   é�  )r9   r=   r@   rB   rC   r   Údouble©Údtypec                  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_Úfloat32r+   r,   )ÚfnÚnameZfqfnÚfpr2   r2   r3   Úload_testing_files{   s    
r^   c                   C   s   t  d¡jdk S )Nr   é   )rW   ZintpÚitemsizer2   r2   r2   r3   Ú	_is_32bitŒ   s    ra   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 r2   )rW   Ú
asanyarray©Ú.0Úar2   r2   r3   Ú
<listcomp>‘   ó    z!_chk_asarrays.<locals>.<listcomp>c                 S   s$   g | ]}|j d krt |¡n|‘qS ©é   )ÚndimrW   Zravelrc   r2   r2   r3   rf   ”   s   ÿr   c                 s   s   | ]}t  |¡V  qd S ©N)rW   Ú
atleast_1drc   r2   r2   r3   Ú	<genexpr>—   rg   z _chk_asarrays.<locals>.<genexpr>c                 3   s   | ]}|j ˆ d  j kV  qdS )r   N)rj   rc   ©Úarraysr2   r3   rm   ™   rg   z(array ndim must be the same for neg axis)ÚtupleÚallÚ
ValueErrorÚrangerj   )ro   Úaxisr2   rn   r3   Ú_chk_asarrays�   s    ÿru   FTc
                    s|  t | ˆ d�}
|
d d… |
d  } ‰ |o*| }|sF|rFtdd„ | D ƒƒ}|r€dd„ | D ƒ}t|ƒr€d}d}tdd„ t| |ƒD ƒƒ} ˆd ur”t ˆ¡‰n&|r®t | d	 jˆ  ¡‰n| ˆˆ f S |	rÆtˆƒ‰|rÖt	| ˆˆ ƒ‰t
‡ ‡fd
d„| D ƒƒsöt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©rt   éÿÿÿÿc                 s   s"   | ]}t j |¡t jjuV  qd S rk   )rW   ÚmaÚgetmaskÚnomaskrc   r2   r2   r3   rm   ©   rg   z_chk_weights.<locals>.<genexpr>c                 S   s   g | ]}t  t  |¡¡‘qS r2   )rW   ÚisnanÚsumrc   r2   r2   r3   rf   ¬   rg   z _chk_weights.<locals>.<listcomp>Tc                 s   s&   | ]\}}|rt j |¡n|V  qd S rk   ©rW   rx   Zmasked_invalid)rd   re   Zhas_nanr2   r2   r3   rm   °   s   ÿr   c                 3   s    | ]}ˆj |j ˆ  fkV  qd S rk   ©Úshaperc   )rt   Úweightsr2   r3   rm   À   rg   z*weights shape must match arrays along axiszweights cannot be negativec                 3   s   | ]}t j|ˆˆ d �V  qdS )rv   N)rW   Útakerc   )rt   Úpos_weightsr2   r3   rm   È   rg   ri   )ru   Úanyrp   ÚziprW   rb   Úonesr   Ú_freq_weightsÚ_weight_maskedrq   rr   ZnonzeroÚsize)ro   r€   rt   Úforce_weightsZsimplify_weightsZpos_onlyZ	neg_checkZ
nan_screenÚmask_screenÚddofÚchkedZhas_nansr2   )rt   r‚   r€   r3   Ú_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ƒ   rr   )r€   Zint_weightsr2   r2   r3   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   ri   c                 3   s   | ]}|ˆ kr|V  qd S rk   r2   ©rd   Úirv   r2   r3   rm   á   rg   z!_weight_masked.<locals>.<genexpr>rv   )rW   rb   rx   ry   rz   rj   rp   rs   rƒ   rŽ   r�   )ro   r€   rt   re   Z	axis_maskZnot_axesr2   rv   r3   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 r2   )rW   Ú
issubdtyperF   ÚintegerrŽ   Úfloat64)rd   Zarrr2   r2   r3   rf   é   s   ÿz_rand_split.<locals>.<listcomp>rE   c                    s6   t  t jˆ |ˆd�¡}| ‡ ‡fdd„tˆ jƒD ƒ¡S )Nrv   c                    s"   g | ]}|ˆkrˆ j | nd ‘qS rh   r~   r�   ©re   rt   r2   r3   rf   ò   s   ÿz/_rand_split.<locals>.mytake.<locals>.<listcomp>)rW   rb   r�   Úreshapers   rj   )re   Zixrt   Úrecordr2   r•   r3   Úmytakeð   s    ÿz_rand_split.<locals>.mytaker   c                 3   s   | ]}|j ˆ  ˆkV  qd S rk   r~   rc   )rt   Ún_obsr2   r3   rm   ö   rg   z_rand_split.<locals>.<genexpr>z#data must be aligned on sample axisç      ð?c              	      s&   g | ]}t j|ˆ|ˆˆ d �ˆ d �‘qS ©rv   ©rW   Úappendrc   )rt   r˜   Úsplit_ixr2   r3   rf   þ   s   ÿÿ)rW   Úarrayr”   ÚrandomÚRandomStater   rq   rs   r�   ÚrandintÚrandr�   )	ro   r€   rt   Ú	split_perÚseedZseeded_randr‘   Zprev_wÚqr2   )rt   r˜   r™   rž   r3   Ú_rand_splitç   s(    ÿÿÿr§   çñhãˆµøä>©Úatolc                 C   s   | S rk   r2   ©Úxr2   r2   r3   Ú<lambda>  rg   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)rW   rŸ   rƒ   ÚAttributeErrorÚ	TypeErrorrr   r„   Ú_rough_check)	re   Úbr®   ÚkeyÚwZcheck_aZcheck_bZa_iZb_ir2   r2   r3   r±     s    r±   é   c                 C   s   | S rk   r2   r«   r2   r2   r3   r­     rg   r´   rš   c                    s8   t ˆƒ‡ ‡‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡fdd„ƒ}|S )zŒruns 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   }}‰ ˆr‚d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 ˆ�röt||ˆ ˆˆd�\}}	||	d |j…< d|	|jd …< t|ƒ| }
|	|ˆ< t|ˆ|
i |¤Žˆd� |D ]>}td ƒg|j	 }t|jd ƒ|ˆ < t|ƒ}|| d ||< �q¬t|ƒ| }
t|ˆ|
i |¤Žˆd� |D ]@}td ƒg|j	 }t|jd ƒ|ˆ < t|ƒ}|| t
j ||< �q|  dd ¡dk�r’ˆ
�r’t|ƒ| }
t|ˆ|
i |¤Žˆd� ˆ�rðdd„ |D ƒ}t|ƒ| }
t|ˆ|
i |¤Žˆd� ˆ�rðd |ˆ< t|ˆ|
i |¤Žˆd� ~~
~	ˆ�rP‡ fdd„|D ƒ}t
 ||¡d }t|ƒ| }||ˆ< t|ˆ|i |¤Žˆd� ~~~ˆ�r¦ˆdk�r¦t||ˆ ˆˆd�}|\}}t|ƒ| }||ˆ< t|ˆ|i |¤Žˆd� W nF t�yî } z,ˆ�sÚtjˆj› d|› �dd� W Y d }~n
d }~0 0 |S )Nrt   T)r€   rt   r‰   rŠ   éþÿÿÿrw   c                 S   s   g | ]}t  | ¡ ¡‘qS r2   )rW   rl   Úsqueezerc   r2   r2   r3   rf   (  rg   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 r2   r}   rc   r2   r2   r3   rf   V  rg   c                    s   g | ]}t j||ˆ d �‘qS r›   rœ   rc   rv   r2   r3   rf   `  rg   ç       @z NotImplemented weights: é   )Ú
stacklevel)Úgetr�   rp   r±   Ú	ExceptionÚtyper§   rˆ   Úslicerj   rW   Únanr�   ÚNotImplementedErrorÚwarningsÚwarnÚ__name__)ÚargsÚkwargsÚresultro   Úrestr€   rŒ   ÚeZ
dud_arraysZdud_weightsZdud_argsre   ZindexerZ
dup_arraysZdup_weightsZdup_argsÚsplitZsplit_arraysZsplit_weightsZ
split_args©Ú
const_testÚdefault_axisÚdud_testÚdup_testr[   r³   Úma_safeÚma_very_safeÚn_argsÚnan_safeÚ	ones_testr¥   Úsilentr¤   Ú
split_testr·   Ú
weight_argrv   r3   Úwrapped  sš    ÿ *ÿ
ÿÿz _weight_checked.<locals>.wrapped)r   )r[   rÒ   rÍ   r³   r×   r·   rÕ   rÔ   rÌ   rÏ   rÖ   rÎ   rÐ   rÑ   rÓ   r¤   r¥   r®   rØ   r2   rË   r3   Ú_weight_checked  s    .ZrÙ   ri   )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   s@   g d¢| _ tttjtjgttjtjgtjtjgtjgdœ| _d S ©N)rL   rM   rN   rK   rJ   )ÚboolÚuintr�   rZ   ©Úrnd_eo_namesr,   r+   rW   rZ   r”   Úvalid_upcasts©Úselfr2   r2   r3   Ú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 sÀ0    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 �s’0    Y  t t¡�, t||g|¢R dd| iŽ W d   ƒ n1 �sÚ0    Y  d S )N©rš   r¹   ç      @©ç333333ó?çffffff@ç333333@©çš™™™™™@rè   çš™™™™™@©g      @ç      @g       @©g      @ç333333@gÍÌÌÌÌÌ @©g      @rð   rì   ç…ëQ¸	@rº   ©ZN0tV4l1D_p4raMr´   éÈ   r4   Útest_)rW   ÚarangeÚpytestÚraisesr°   r   Úeval)râ   r4   ÚX1ÚX2rÆ   rÅ   r2   r2   r3   Ú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 sº0    Y  t t¡�$ t|||fi |¤Ž W d   ƒ n1 sø0    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 �s¶0    Y  t t¡�" t|||dddƒ W d   ƒ n1 �sô0    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 �sª0    Y  tt|||ddd�dƒ d S )Nri   rµ   c                 S   s   || | S rk   r2   ©r¬   ÚyÚargÚkwargÚkwarg2r2   r2   r3   Ú
_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   çš™™™™™ñ?©r4   rÿ   r  çš™™™™™@)ri   rµ   )rW   rö   r÷   rø   r°   r   r
   )râ   r  rú   rû   rÆ   rÅ   r2   r2   r3   Ú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   ©rX   Úwcdist_no_constr
   r   )râ   Úepsrú   rû   ÚY1ÚY2r2   r2   r3   Ú#test_cdist_euclidean_random_unicodeÖ  s    z-TestCdist.test_cdist_euclidean_random_unicodeÚpçš™™™™™¹?ç      Ð?rš   ç®Gáz®ó?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 )
Nç‚vIhÂ%<=r  r  r#   ©r  Útest_minkowskir   rµ   )rª   r  r   r  )râ   r  r  rú   rû   r  r  r2   r2   r3   Ú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 )Nri   rv   rw   )rW   Úlinalgr   r–   )ÚXr2   r2   r3   Únormsï  s    z1TestCdist.test_cdist_cosine_random.<locals>.normsri   rµ   r  )rX   ÚwcdistrW   ÚdotÚTr
   r   )râ   r  rú   rû   r  r!  r  r2   r2   r3   Ú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 sü0    Y  d S )Nrµ   rº   é   r"   ©r4   ç        ç      @ç      à?r   rw   ri   r¶   )rW   rŸ   r   r
   Úsqrtr÷   rø   rr   )râ   Úx1Úx2ÚdistÚrt2r2   r2   r3   Ú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__r2   r2   r2   r3   Úmyclass	  s   r4  c                    s(   t | d ˆ ƒrt |d ˆ ƒs$tdƒ‚dS ©Nr   zType has been changedç+‡ÙÎ÷ñ?©Ú
isinstancerr   ©r¬   rþ   ©r4  r2   r3   r    s    z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metricrE   r'  r6  rµ   ©r   )rW   rŸ   Úobjectr   r   r   )râ   r  rH   Zcdist_yÚright_yr2   r:  r3   Útest_cdist_custom_notdouble  s    z%TestCdist.test_cdist_custom_notdoubleçH¯¼šò×z>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r‚t|
jƒ t|	ƒ t |
¡�& t ||fd|i|¤Ž W d   ƒ n1 s¸0    Y  t |
¡�* t ||fdt|ƒi|¤Ž W d   ƒ n1 sü0    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 ©Nr4   rõ   rµ   r  )
r   rù   r½   Ú	__class__r   ÚprintrÄ   r÷   rø   r
   )râ   rú   rû   r4   r  rÆ   Úy1Úy2Úy3rÉ   Úe_clsr2   r2   r3   Ú_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r¼t ||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¶   ri   rµ   ú	testing: ú with: >   r'   r%   r(   r$   r*   r   r!   rÜ   r&   r   ©rt   r‹   ©ÚVr"   ©ÚVI)rß   rX   r   rB  rG  rW   ÚvstackrŽ   r”   ÚvarÚ
atleast_2dÚcovr$  rŸ   r  Úinv)râ   r4   Úeo_namerú   rû   ZX12rL  rN  r2   r2   r3   Ú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rÎt|	jƒ t|ƒ |d D ]N}
|
|ƒ}|
|ƒ}t 	|	¡� t|||d� W d   ƒ qÖ1 �s0    Y  qÖW Y d }~qLd }~0 0 |d D ]0}
t|
|ƒ|
|ƒ|d�}t
|||tdkd� �qDqLd S )Nr?  rJ   rÜ   rN   rÝ   rM   r�   rL   rZ   r   r&  r¶   ri   rµ   r'  r  )rX   rà   r   r½   rA  r   rB  rÄ   r÷   rø   r
   )râ   r4   r  ÚtestsÚtestrú   rû   rC  rÉ   rF  Únew_typeZX1newZX2newrD  r2   r2   r3   Útest_cdist_dtype_equivalenceI  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 sô0    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 �sÂ0    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  rE   Úoutrµ   r  ri   ÚF)rF   Úorder)rX   r   ÚdictrW   Úemptyr”   r   r
   r   r   r÷   rø   rr   Úint64)râ   r4   r  rú   rû   Zout_rZout_crÆ   Úout1r  r  Úout2Úout3Zout4Úout5r2   r2   r3   Útest_cdist_outd  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rªd|d< t|||fi |¤Ž}t|||fi |¤Ž}	t||	|t	dkd� d S )	Nr
  r  rµ   r  r#   r  r  r  )
rX   Úcopyr   r   ÚflagsÚc_contiguousr]  r   r
   r   )
râ   r4   r  rú   rû   ÚX1_copyZX2_copyrÆ   r  r  r2   r2   r3   Ú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 ƒƒs‚J ‚d S )
Né
   r#   r  r  r4   c                 S   s   g | ]}t  |¡‘qS r2   )ÚweakrefÚref)rd   Úvr2   r2   r3   rf   ±  rg   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>c                 s   s   | ]}|ƒ d u V  qd S rk   r2   )rd   Zweak_refr2   r2   r3   rm   ¶  rg   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>)rW   r    r£   r]  r   r   r   rq   )râ   r4   r,  r-  rÆ   rZ  Z	weak_refsr2   r2   r3   Útest_cdist_refcount¥  s    zTestCdist.test_cdist_refcountN)r?  )rÄ   r2  r3  rã   rü   r	  r  r÷   ÚmarkÚparametrizerW   Úinfr  r%  r0  r>  rG  rU  rY  rd  ri  rn  r2   r2   r2   r3   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€„ ZEd�d‚„ ZFdƒd„„ ZGd…d†„ ZHd‡dˆ„ ZId‰dŠ„ ZJd‹dŒ„ ZKd�dŽ„ ZLd�d�„ ZMd‘d’„ ZNd“d”„ ZOd•d–„ ZPd—d˜„ ZQd™dš„ ZRd›dœ„ ZSd�dž„ ZTdŸd „ ZUd¡d¢„ ZVd£d¤„ ZWd¥d¦„ ZXd§d¨„ ZYd©dª„ ZZd«d¬„ Z[d­d®„ Z\d¯d°„ Z]d±d²„ Z^e
jjd³d´„ ƒZ_dµd¶„ Z`d·d¸„ ZadÅdºd»„Zbd¼d½„ Zcd¾d¿„ ZddÀdÁ„ ZedÂdÃ„ ZfdÄS )ÆÚ	TestPdistc                 C   s@   g d¢| _ tttjtjgttjtjgtjtjgtjgdœ| _d S rÛ   rÞ   rá   r2   r2   r3   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 s¦0    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 �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 �s¶0    Y  d S )Nrš   r¹   rç   rè   rë   rò   rµ   ró   rô   r4   rõ   )rW   rö   r÷   rø   r°   r   rù   )râ   r4   rú   rÆ   rÅ   r2   r2   r3   Ú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 s 0    Y  t t¡�" t||fi |¤Ž W d   ƒ n1 sÜ0    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 �s”0    Y  t t¡�  t||dd	dƒ W d   ƒ n1 �sÐ0    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 �s€0    Y  tt||ddd�dƒ d S )Nri   rµ   c                 S   s   || | S rk   r2   rý   r2   r2   r3   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  )ri   rµ   )rW   rö   r÷   rø   r°   r   r
   )râ   r  rú   rÆ   rÅ   r2   r2   r3   Ú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  ©rX   Úwpdist_no_constr
   ©râ   r  r   ÚY_rightÚY_test1r2   r2   r3   Útest_pdist_euclidean_randomú  s
    
z%TestPdist.test_pdist_euclidean_randomc                 C   s0   d}t d }t d }t|dƒ}t|||d� d S ru  ry  r{  r2   r2   r3   Ú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 ru  ©rW   rZ   rX   rz  r
   r{  r2   r2   r3   Ú#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?  rv  rw  r  rx  ry  ©râ   r  r   r|  ÚY_test2r2   r2   r3   Ú 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   rx  ry  r{  r2   r2   r3   Ú 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  ©rW   rZ   rX   rz  r
   r   r{  r2   r2   r3   Ú!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  rx  ry  r‚  r2   r2   r3   Ú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?  rv  úpdist-seuclideanr&   rx  ©rX   r   r
   r{  r2   r2   r3   Útest_pdist_seuclidean_random0  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?  rv  r‹  r&   rx  r   ri   rJ  rK  )rW   rZ   rX   r   r
   rP  )râ   r  r   r|  r}  rL  rƒ  r2   r2   r3   Ú$test_pdist_seuclidean_random_float327  s    
z.TestPdist.test_pdist_seuclidean_random_float32c                 C   s0   d}t d }t d }t|dƒ}t|||d� d S )Nr?  rv  r‹  Útest_seuclideanrx  rŒ  r‚  r2   r2   r3   Ú!test_pdist_seuclidean_random_nonCC  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&   rx  rŒ  r{  r2   r2   r3   Útest_pdist_seuclidean_irisK  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&   rx  )rW   rZ   rX   r   r
   r{  r2   r2   r3   Ú"test_pdist_seuclidean_iris_float32R  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�  rx  rŒ  r‚  r2   r2   r3   Útest_pdist_seuclidean_iris_nonCZ  s
    
z)TestPdist.test_pdist_seuclidean_iris_nonCc                 C   s0   d}t d }t d }t|dƒ}t|||d� d S ©Nr?  rv  úpdist-cosiner   rx  ©rX   Úwpdistr
   r{  r2   r2   r3   Útest_pdist_cosine_randomc  s
    
z"TestPdist.test_pdist_cosine_randomc                 C   s6   d}t  td ¡}td }t|dƒ}t|||d� d S r•  ©rW   rZ   rX   r˜  r
   r{  r2   r2   r3   Ú test_pdist_cosine_random_float32j  s
    
z*TestPdist.test_pdist_cosine_random_float32c                 C   s0   d}t d }t d }t|dƒ}t|||d� d S )Nr?  rv  r–  Útest_cosinerx  r—  r‚  r2   r2   r3   Útest_pdist_cosine_random_nonCq  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—  r{  r2   r2   r3   Útest_pdist_cosine_irisy  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   )rW   rZ   rX   r˜  r
   r   r{  r2   r2   r3   Útest_pdist_cosine_iris_float32�  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‚  r2   r2   r3   Ú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)rW   Úabsr    r¡   r£   rO  r   r˜  )râ   r¬   r   r2   r2   r3   Ú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?  rv  úpdist-cityblockr   rx  ry  r{  r2   r2   r3   Ú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€  r{  r2   r2   r3   Ú#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?  rv  r¨  Útest_cityblockrx  ry  r‚  r2   r2   r3   Ú 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   rx  ry  r{  r2   r2   r3   Ú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ˆ  r{  r2   r2   r3   Ú!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«  rx  ry  r‚  r2   r2   r3   Ú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?  rv  úpdist-correlationr   rx  r—  r{  r2   r2   r3   Ú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š  r{  r2   r2   r3   Ú%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?  rv  r²  Útest_correlationrx  r—  r‚  r2   r2   r3   Ú"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   rx  r—  r{  r2   r2   r3   Ú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  )rX   rW   rZ   r˜  r
   r   r{  r2   r2   r3   Ú#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µ  rx  )ÚsysÚmaxsizer÷   ÚskiprX   r˜  r
   r‚  r2   r2   r3   Ú 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  rv  r#   r  r  r   )rª   r  ry  )râ   r  r  r   r  r  r2   r2   r3   Ú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?  rv  úpdist-minkowski-3.2r#   r¾  r  rx  ry  r{  r2   r2   r3   Ú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€  r{  r2   r2   r3   Ú#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?  rv  rÁ  r  r¾  r  rx  ry  r‚  r2   r2   r3   Ú 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  rx  ry  r{  r2   r2   r3   Ú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  rx  r€  r{  r2   r2   r3   Ú%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  rx  ry  r‚  r2   r2   r3   Ú"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  rx  ry  r{  r2   r2   r3   Ú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ˆ  r{  r2   r2   r3   Ú%test_pdist_minkowski_5_8_iris_float326  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  rx  ry  r‚  r2   r2   r3   Ú"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� W d   ƒ n1 sò0    Y  d S )N)r¹   r¹   rå   rî   rw   ri   r"   r'  r(  r*  r)  r¹   r   rµ   r¶   rº   )
rW   rŸ   r–   r   r
   r+  r÷   rø   rr   r˜  )râ   r¬   r.  r/  r2   r2   r3   Útest_pdist_mahalanobisF  s    ÿ(
&z TestPdist.test_pdist_mahalanobisc                 C   s0   d}t d }t d }t|dƒ}t|||d� d S ©Nr
  rI   úpdist-hammingr   rx  r—  r{  r2   r2   r3   Útest_pdist_hamming_randomW  s
    
z#TestPdist.test_pdist_hamming_randomc                 C   s6   d}t  td ¡}td }t|dƒ}t|||d� d S rÎ  rš  r{  r2   r2   r3   Ú!test_pdist_hamming_random_float32^  s
    
z+TestPdist.test_pdist_hamming_random_float32c                 C   s0   d}t d }t d }t|dƒ}t|||d� d S ©Nr
  rI   rÏ  Ztest_hammingrx  r—  r‚  r2   r2   r3   Útest_pdist_hamming_random_nonCe  s
    
z(TestPdist.test_pdist_hamming_random_nonCc                 C   s6   d}t  td ¡}td }t|dƒ}t|||d� d S rÎ  ©rW   r”   rX   r˜  r
   r{  r2   r2   r3   Útest_pdist_dhamming_randoml  s
    
z$TestPdist.test_pdist_dhamming_randomc                 C   s6   d}t  td ¡}td }t|dƒ}t|||d� d S rÎ  rš  r{  r2   r2   r3   Ú"test_pdist_dhamming_random_float32s  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‚  r2   r2   r3   Útest_pdist_dhamming_random_nonCz  s
    
z)TestPdist.test_pdist_dhamming_random_nonCc                 C   s0   d}t d }t d }t|dƒ}t|||d� d S ©Nç:Œ0âŽyE>rI   úpdist-jaccardr   rx  r—  r{  r2   r2   r3   Útest_pdist_jaccard_random�  s
    
z#TestPdist.test_pdist_jaccard_randomc                 C   s6   d}t  td ¡}td }t|dƒ}t|||d� d S rØ  rš  r{  r2   r2   r3   Ú!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Ù  rI   rÚ  Útest_jaccardrx  r—  r‚  r2   r2   r3   Ú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Ô  r{  r2   r2   r3   Ú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š  r{  r2   r2   r3   Ú"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   rj  rx  ©r   rW   Úzerosr
   ©râ   r  ÚYr2   r2   r3   Ú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‚  r2   r2   r3   Ú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 )Nç•dyáý¥=rv  úpdist-jensenshannonr    rx  rŒ  r{  r2   r2   r3   Ú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Ù  rv  rê  r    rµ   r  ©rW   rZ   rX   r   r
   r   r{  r2   r2   r3   Ú'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é  rv  rê  Útest_jensenshannonrx  rŒ  r‚  r2   r2   r3   Ú$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©   )ra   rX   r   r
   r{  r2   r2   r3   Ú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ì  r{  r2   r2   r3   Ú%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î  rx  rŒ  r‚  r2   r2   r3   Ú"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Þ  rj  rx  rã  rå  r2   r2   r3   Ú!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Ù  rv  úpdist-chebyshevr   rx  rŒ  r{  r2   r2   r3   Ú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?  rv  rõ  r   rµ   r  rì  r{  r2   r2   r3   Ú#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Ù  rv  rõ  Útest_chebyshevrx  rŒ  r‚  r2   r2   r3   Ú 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   rx  rŒ  r{  r2   r2   r3   Ú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ì  r{  r2   r2   r3   Ú!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ø  rx  rŒ  r‚  r2   r2   r3   Ú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©ri   r   ri   ri   r   ©ri   ri   r   ri   ri   rE   ç333333ã?r   ç»½×Ùß|Û=©r  rª   ©Ú	wmatchingrW   rŸ   rÜ   r
   ©râ   ÚmÚm2r2   r2   r3   Ú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©ri   r   ri   ©ri   ri   r   rE   çUUUUUUå?r   r  r  r  r  r2   r2   r3   Ú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þ  ©ÚwjaccardrW   rŸ   rÜ   r
   r  r2   r2   r3   Ú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  r2   r2   r3   Ú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   rE   rµ   r   r  r  ©ÚwyulerW   rŸ   rÜ   r   rB  r
   r  r2   r2   r3   Útest_pdist_yule_mtica10  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  rE   rµ   r   r  r  r  r  r2   r2   r3   Ú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   rE   rµ   gÛ¶mÛ¶mÛ?r   r  r  ©ÚwdicerW   rŸ   rÜ   r   rB  r
   r  r2   r2   r3   Útest_pdist_dice_mtica1D  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  rE   rµ   r*  r   r  r  r  r  r2   r2   r3   Útest_pdist_dice_mtica2N  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   rE   rµ   g      è?r   r  r  )r(   rW   rŸ   rÜ   r   rB  r
   r  r2   r2   r3   Útest_pdist_sokalsneath_mtica1X  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  rE   rµ   gš™™™™™é?r   r  r  )ÚwsokalsneathrW   rŸ   rÜ   r   rB  r
   r  r2   r2   r3   Útest_pdist_sokalsneath_mtica2b  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  ©ÚwrogerstanimotorW   rŸ   rÜ   r   rB  r
   r  r2   r2   r3   Ú test_pdist_rogerstanimoto_mtica1l  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  r2   r2   r3   Ú test_pdist_rogerstanimoto_mtica2v  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   rE   rµ   r  r   r  r  ©ÚwrussellraorW   rŸ   rÜ   r   rB  r
   r  r2   r2   r3   Útest_pdist_russellrao_mtica1€  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  rE   rµ   r  r   r  r  r$  r  r2   r2   r3   Ú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  )rX   r   rB  r   rF   rz  r
   )râ   ÚDr  rC  rD  r2   r2   r3   Ú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   )rz  r
   r   )râ   r  Úpdist_yr=  r2   r2   r3   Ú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>.myclassNr1  r2   r2   r2   r3   r4  ¨  s   r4  c                    s(   t | d ˆ ƒrt |d ˆ ƒs$tdƒ‚dS r5  r7  r9  r:  r2   r3   r  «  s    z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricrE   r'  r6  rµ   r;  )rW   rŸ   r<  r   r   r   )râ   r  rH   r+  r=  r2   r:  r3   Ú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 s°0    Y  t |	¡�( t |fdt|ƒi|¤Ž W d   ƒ n1 sò0    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½   rA  r   rB  rÄ   r÷   rø   r
   )
râ   r   r4   r  rÆ   rC  rD  rE  rÉ   rF  r2   r2   r3   rG  ´  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rŒt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µ   rH  rI  >   Zmatchingr'   r%   r(   r$   r*   r   r!   rÜ   r&   r   ri   rJ  rK  r"   rM  )rß   rX   r   rB  rG  rW   rP  rŽ   r”   rQ  rR  r$  rŸ   r  rS  )râ   r4   rT  r   rL  rN  r2   r2   r3   Ú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r®t|jƒ t|ƒ |d D ]B}	|	|ƒ}
t 	|¡� t|
|d� W d   ƒ q¶1 sî0    Y  q¶W Y d }~qLd }~0 0 |d D ]*}	t|	|ƒ|d�}t
|||tdkd� �qqLd S )Nr?  rJ   rÜ   rN   rÝ   rM   r�   rL   rZ   r   r&  rµ   r'  ri   r  )rX   rà   r   r½   rA  r   rB  rÄ   r÷   rø   r
   )râ   r4   r  rV  rW  rú   rC  rÉ   rF  rX  rû   rD  r2   r2   r3   Ú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 sò0    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 �s¤0    Y  d S )Nr
  rL   r&  rµ   r   ri   r#   r  r  rE   rZ  rx  rº   )rX   r�   r   r]  rW   r^  r”   r   r
   r   r÷   rø   rr   r_  )râ   r4   r  r   Zout_sizerÆ   r`  r|  r}  ra  rb  rc  r2   r2   r3   Ú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
  rL   r&  rµ   r#   r  r  r  )	rX   re  r   rf  rg  r]  r   r
   r   )râ   r4   r  r   ZX_copyrÆ   r  r  r2   r2   r3   ri     s    zTestPdist.test_stridingN)r?  )grÄ   r2  r3  rã   rs  rt  r~  r  r�  r„  r÷   ro  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½  rp  rW   rq  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  r.  r/  r0  ri  r2   r2   r2   r3   rr  ¹  sä   	#


		


	


	










		










	
"rr  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î   )rW   rŸ   Úcases)râ   r¬   rþ   r2   r2   r3   rã   5  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 )Nri   r  rå   ç      ø?gqÎazý“@rµ   g¨ô—›wã@r  gÙRÏ"ø6@i`  i”  i^  i”  Úuint16)r3  r#   r	   rW   rŸ   r   rŽ   )	râ   r¬   rþ   Údist1Zdist1p5Údist2Zdist0p25re   r²   r2   r2   r3   r  <  s    



ÿz(TestSomeDistanceFunctions.test_minkowskic                 C   s.   | j D ]"\}}t||ƒ}t|t d¡ƒ qd S )Nr&  )r3  Ú
weuclideanr	   rW   r+  ©râ   r¬   rþ   r.  r2   r2   r3   r  O  s    
z(TestSomeDistanceFunctions.test_euclideanc                 C   s(   | j D ]\}}t||ƒ}t|dƒ qd S )Nrî   )r3  Úwsqeuclideanr	   r9  r2   r2   r3   Útest_sqeuclideanT  s    
z*TestSomeDistanceFunctions.test_sqeuclideanc              	   C   s@   | j D ]4\}}t||ƒ}t|ddt d¡t d¡   ƒ qd S )Nrš   g      2@é   é   )r3  Úwcosiner	   rW   r+  r9  r2   r2   r3   rœ  Y  s    
z%TestSomeDistanceFunctions.test_cosinec                 C   s@   t tddgddgdd�tƒs J ‚t tddgddgƒtƒs<J ‚d S )Nri   F)Zcentered)r8  ÚwcorrelationÚfloatr>  rá   r2   r2   r3   Útest_cosine_output_dtype^  s     z2TestSomeDistanceFunctions.test_cosine_output_dtypec                 C   s`   t  g d¢¡}t  g d¢¡}| jD ]8\}}t||ƒ}t|dt  ||¡t|ƒt|ƒ   ƒ q"d S )N)ç      ð¿r   rš   )çUUUUUUõ¿rC  gUUUUUU@rš   )rW   rŸ   r3  r?  r	   r#  r   )râ   ZxmZymr¬   rþ   r.  r2   r2   r3   rµ  c  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(  rD  rD  rD  r(  rD  r(  rD  r(  r(  rB  rD  r(  rš   r(  r(  rD  r(  r(  rD  r(  rD  rD  rD  rD  rD  rD  r(  )%rš   rš   rš   rš   rš   rš   rB  rš   rš   rš   rB  rB  rB  rš   rB  rš   rB  rš   rš   r(  rB  rš   r¹   rš   rš   rB  rš   rš   rB  rš   rB  rB  rB  rB  rB  rB  rš   r   rj  )rW   rŸ   r   Zfinfor”   r  r9  r2   r2   r3   Útest_correlation_positivej  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ä   r2  )r¹   rš   r(  )rš   r¹   rš   )r(  rš   r¹   g      @)rW   rŸ   r3  r"   r	   r+  )râ   r¬   rþ   Úvir.  r2   r2   r3   Útest_mahalanobisu  s    z*TestSomeDistanceFunctions.test_mahalanobisN)rÄ   r2  r3  rã   r  r  r;  rœ  rA  rµ  rE  rG  r2   r2   r2   r3   r1  3  s   r1  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 rk   )Úchecked_dtypesÚcheck_squareform_matrix©râ   rF   r2   r2   r3   Útest_squareform_matrix�  s    
z%TestSquareForm.test_squareform_matrixc                 C   s   | j D ]}|  |¡ qd S rk   )rI  Úcheck_squareform_vectorrK  r2   r2   r3   Ú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   rE   ©r   ©ri   ri   r   gÍÌÌÌÌÌ@rh   )rW   rä  r   r   r   rF   rŸ   r   )râ   rF   ÚAZrAr2   r2   r3   rJ  ‰  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 )NrO  rE   rP  r   gš™™™™™ @)rµ   rµ   )rW   rä  r   r   r   rF   r   rŸ   )râ   rF   rm  Úrvr2   r2   r3   rM  š  s    z&TestSquareForm.check_squareform_vectorc                 C   s   t ddƒD ]}|  |¡ q
d S )Nrµ   r&  )rs   Úcheck_squareform_multi_matrix©râ   Únr2   r2   r3   Ú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rÚt|||	f || ƒ |d7 }q®t|||	f dƒ q®q˜d S )Né   ri   r   rº   rµ   )rW   r    r£   rz  r   Úlenr   r   r   rB  rs   )
râ   rU  r   ræ  rQ  ZYrÚsÚkr‘   Újr2   r2   r3   rS  «  s$    
z,TestSquareForm.check_squareform_multi_matrixN)rÄ   r2  r3  rW   r”   rZ   Úint32Úint8rÜ   rI  rL  rN  rJ  rM  rV  rS  r2   r2   r2   r3   rH  ~  s   rH  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µ   rj  rW  )rs   rW   r    r£   rz  r   r   )râ   rU  r   ræ  r2   r2   r3   Ú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 ©Nri   )r÷   rø   rr   Úcheck_yrá   r2   r2   r3   Útest_num_obs_y_1É  s    zTestNumObsY.test_num_obs_y_1c                 C   s   t |  d¡ƒ d S ©Nrµ   ©r   ra  rá   r2   r2   r3   Útest_num_obs_y_2Ï  s    zTestNumObsY.test_num_obs_y_2c                 C   s   t |  d¡ƒ d S )Nrº   rd  rá   r2   r2   r3   Útest_num_obs_y_3Ô  s    zTestNumObsY.test_num_obs_y_3c                 C   s   t |  d¡ƒ d S ©NrW  rd  rá   r2   r2   r3   Útest_num_obs_y_4×  s    zTestNumObsY.test_num_obs_y_4c                 C   s   t ddƒD ]}|  |¡ q
d S )Nr&  é   )rs   Úminit)râ   r‘   r2   r2   r3   Ú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µ   ri  ri   r&  éi   ©Úsetrs   Úaddr÷   rø   rr   Úbad_y©râ   re   rU  r‘   r2   r2   r3   Útest_num_obs_y_2_100Þ  s    z TestNumObsY.test_num_obs_y_2_100c                 C   s   t |  |¡ƒ d S rk   rd  rT  r2   r2   r3   rj  é  s    zTestNumObsY.minitc                 C   s   t j |¡}t|ƒS rk   )rW   r    r£   r   ©râ   rU  rþ   r2   r2   r3   rq  ì  s    zTestNumObsY.bad_yc                 C   s   t |  |¡ƒ|kS rk   )r   Úmake_yrT  r2   r2   r3   ra  ð  s    zTestNumObsY.check_yc                 C   s   t j ||d  d ¡S ©Nri   rµ   ©rW   r    r£   rT  r2   r2   r3   ru  ó  s    zTestNumObsY.make_yN)rÄ   r2  r3  r_  rb  re  rf  rh  rk  rs  rj  rq  ra  ru  r2   r2   r2   r3   r^  Á  s   r^  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 )Nri   rj  rW  rº   )rs   rW   r    r£   rz  r   r   rB  r   r   r   )râ   rU  r   ræ  rQ  r2   r2   r3   Ú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á   r2   r2   r3   Útest_num_obs_dm_0  s    zTestNumObsDM.test_num_obs_dm_0c                 C   s   t |  d¡ƒ d S r`  rz  rá   r2   r2   r3   Útest_num_obs_dm_1  s    zTestNumObsDM.test_num_obs_dm_1c                 C   s   t |  d¡ƒ d S rc  rz  rá   r2   r2   r3   Útest_num_obs_dm_2
  s    zTestNumObsDM.test_num_obs_dm_2c                 C   s   t |  d¡ƒ d S rc  rz  rá   r2   r2   r3   Útest_num_obs_dm_3  s    zTestNumObsDM.test_num_obs_dm_3c                 C   s   t |  d¡ƒ d S rg  rz  rá   r2   r2   r3   Útest_num_obs_dm_4  s    zTestNumObsDM.test_num_obs_dm_4c                 C   s   t |  |¡ƒ|kS rk   )r   Úmake_DrT  r2   r2   r3   r{    s    zTestNumObsDM.check_Dc                 C   s   t j ||¡S rk   rw  rT  r2   r2   r3   r�    s    zTestNumObsDM.make_DN)rÄ   r2  r3  ry  r|  r}  r~  r  r€  r{  r�  r2   r2   r2   r3   rx  ÷  s   	rx  c                 C   s   t | dd�S ©NT)Úthrow)r   )r)  r2   r2   r3   Ú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&  rE   ©rW   rä  r”   r÷   rø   rr   r„  ©râ   r)  r2   r2   r3   Ú$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†  rE   F©rW   rä  r”   r   r   rˆ  r2   r2   r3   Ú$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º   rE   r‡  rˆ  r2   r2   r3   Ú$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�  rE   FrŠ  rˆ  r2   r2   r3   Ú$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 )Nrj  r   r&  r¹   )	rW   r    r£   r   rs   r÷   rø   rr   r„  ©râ   rþ   r)  r‘   r2   r2   r3   Ú#test_is_valid_dm_nonzero_diagonal_E2  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 )Nrj  r   r&  r¹   F)rW   r    r£   r   rs   r   r   r‘  r2   r2   r3   Ú#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 )Nrj  ©rº   ri   ri   ©ri   rº   )rW   r    r£   r   r÷   rø   rr   r„  ©râ   rþ   r)  r2   r2   r3   Ú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 )Nrj  r”  ri   r•  F©rW   r    r£   r   r   r   r–  r2   r2   r3   Útest_is_valid_dm_asymmetric_FH  s    z+TestIsValidDM.test_is_valid_dm_asymmetric_Fc                 C   s"   t jdt jd�}tt|ƒdƒ d S )NrP  rE   TrŠ  rˆ  r2   r2   r3   Útest_is_valid_dm_correct_1_by_1N  s    z-TestIsValidDM.test_is_valid_dm_correct_1_by_1c                 C   s&   t j d¡}t|ƒ}tt|ƒdƒ d S )Nri   Tr˜  r–  r2   r2   r3   Útest_is_valid_dm_correct_2_by_2R  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–  r2   r2   r3   Útest_is_valid_dm_correct_3_by_3W  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–  r2   r2   r3   Ú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 )Nrj  Tr˜  r–  r2   r2   r3   Útest_is_valid_dm_correct_5_by_5a  s    z-TestIsValidDM.test_is_valid_dm_correct_5_by_5N)rÄ   r2  r3  r‰  r‹  rŽ  r�  r’  r“  r—  r™  rš  r›  r�  rŸ  r   r2   r2   r2   r3   r…    s   r…  c                 C   s   t | dd�S r‚  )r   )rþ   r2   r2   r3   Úis_valid_y_throwg  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º   rE   ©rW   rä  r”   r÷   rø   rr   r¡  ©râ   rþ   r2   r2   r3   Ú#test_is_valid_y_improper_shape_2D_Ep  s    z0TestIsValidY.test_is_valid_y_improper_shape_2D_Ec                 C   s"   t jdt jd�}tt|ƒdƒ d S )Nr£  rE   F©rW   rä  r”   r   r   r¥  r2   r2   r3   Ú#test_is_valid_y_improper_shape_2D_Fu  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¥  r2   r2   r3   Ú#test_is_valid_y_improper_shape_3D_Ey  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¥  r2   r2   r3   Ú#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¥  r2   r2   r3   Ú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¥  r2   r2   r3   Ú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 )NrW  Tr«  r¥  r2   r2   r3   Ú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¥  r2   r2   r3   Ú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 rl  rn  rr  r2   r2   r3   Útest_is_valid_y_2_100’  s    z"TestIsValidY.test_is_valid_y_2_100c                 C   s   t j |¡}t|dd�S r‚  )rW   r    r£   r   rt  r2   r2   r3   rq  ›  s    zTestIsValidY.bad_yc                 C   s   t j ||d  d ¡}|S rv  rw  rt  r2   r2   r3   r¬  Ÿ  s    zTestIsValidY.correct_n_by_nN)rÄ   r2  r3  r¦  r¨  r©  rª  r­  r®  r¯  r°  r±  rq  r¬  r2   r2   r2   r3   r¢  k  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 )Nri   rµ   rº   rW  )r÷   rø   rr   r#   r  r2   r2   r3   Ú
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ø   rr   r(   r2   r2   r2   r3   Ú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©ri   rµ   rº   ©rµ   rW  rž  ri   ©ri   ri   r   r   ©ri   r   ri   r   rµ   )r   Ú	wcanberrar2   r2   r2   r3   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	   Úwbraycurtisr2   r2   r2   r3   Ú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 sž0    Y  tjtdd��6 t| t j	d d …f |t j	d d …f ƒ W d   ƒ n1 sò0    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 �s�0    Y  t t¡� t||ƒ W d   ƒ n1 �sÆ0    Y  t j d¡}| d¡}| d¡}t||ƒ}t||ƒ}t|d
 |dd� d S )N)ri   ri   ri   )r   r   r   rå   r<  rº  rº   úInput vector should be 1-D©ÚmatchrW  rµ   iÒ–Irj  )rW   rŸ   r	   r:  r8  r+  r÷   rø   rr   Znewaxisrö   r–   r    r¡   r£   )r,  r-  r¬   Úrsrþ   Úd1Úd2r2   r2   r3   Ú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   ri   r·  ©r÷   rø   rr   Úwhammingr9  r2   r2   r3   Ú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Æ  )Úurm  r´   r¤  r2   r2   r3   Ú"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|S4rE   )rË  rÌ  rÌ  rË  rË  rÌ  rÌ  rÌ  rÌ  rË  rÌ  rË  rÌ  rË  rÌ  rÌ  rË  rÌ  rÌ  rË  gÍÌÌÌÌÌÜ?)rW   rŸ   r
   rÇ  )re   r²   Zdesiredr2   r2   r3   Ú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)
çÁQUUÕT@ç      Y@rÎ  rÏ  g      B@g      N@g     €V@g     Àb@g      8@g      H@r#   ri   )r4   r  r´   )r4   r  r
  rx  )rW   rŸ   r   r   r
   )Zarr_inÚp0Zc0Úp1Úc1r2   r2   r3   Ú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´  )rW  r&  rž  rE   r   rµ   )Zfloat16Zfloat128)rW   r]  Zint16r\  r_  r:  Úasarrayr   r’   rF   ZfloatingZuint8r5  Zuint32Zuint64ZiinfoÚmaxr   r”   rZ   Z	complex64Z
complex128Úhasattrr�   Úgetattr)r¬   rþ   rF   ÚdZumaxrÂ  rÃ  Zdtypesr2   r2   r3   Ú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 r2   ©r�   ©rd   r²   r2   r2   r3   rf   2  rg   z&test_sokalmichener.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r2   rÚ  rÛ  r2   r2   r3   rf   3  rg   )r'   r   )r  r¦   r¬   rþ   r6  r7  r2   r2   r3   Ú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Ò?ri   r   ©r´   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)gš™™™™™©?r  rš   g      4@r  )r	   r'   )	ZntfZnftZnttZnffÚexpectedÚactualZa1Za2r´   r2   r2   r3   Ú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@gÍÌÌÌÌL7@g333333F@)rW   rÔ  re  r   r   r   )r4   rú   rh  r2   r2   r3   Útest_modifies_inputP  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 s†0    Y  dD ]¼}|di}|dkr°| d	ks”|d
krÀ| dks”|dkrÒ| dkrÒq”t t¡�$ t||| fi |¤Ž W d   ƒ n1 �s0    Y  t t¡�" t|| fi |¤Ž W d   ƒ q”1 �sF0    Y  q”d S )Nrä   ræ   rê   rá  r¹   )r  rL  rN  ZfoorL  r&   rN  r"   r  r#   )rW   rÔ  r÷   rø   r°   r   r   )r4   rú   rÿ   rÆ   r2   r2   r3   Útest_Xdist_deprecated_args\  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 sœ0    Y  t t¡�  t
||||d� W d   ƒ qj1 sÖ0    Y  qjd S )	NrL   r&  rµ   ri   )r&   r"   r    únot applicablerõ   rÝ  )rX   rW   r…   r   r÷   r¼  rù   rø   rr   r   r   )r4   r   r´   r  r2   r2   r3   Útest_Xdist_non_negative_weightsx  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 s”0    Y  t 
d¡ ddd¡} tjt	dd�� t | ƒ W d   ƒ n1 sÞ0    Y  ddgd	d
gg} tjt	dd�� t | ƒ W d   ƒ n1 �s&0    Y  d S )Nr´  rE   ri   r¾  r¿  r&  rw   rµ   rº   rW  )r   r   rW   r”   r   rF   rj   r÷   rø   rr   rö   r–   r9  r2   r2   r3   Útest__validate_vector‡  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ž  rE   r   r(  r*   ri   )rW   r…   rÜ   r  r   r   r   )r¬   rØ  r2   r2   r3   Ú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ºÝ?r4  r   rv   ri   gÆüÜÐ”�°?T)rt   Zkeepdims)ri   rµ   rº   rW  )r&  rž  é   r_   )é	   rj  é   é   )é   r<  r¹  ri  )é   é   é   é   )é   é   é   é   )gº'Y˜ÏÉ?gTÒyCÐ‡Â?g¥F�®w$½?gœ\BôZ¿·?)g;0%7/óÁ?g�‡ƒ)o¤?gkØï‰uª”?)r	   r    rW   rŸ   )re   r²   r2   r2   r3   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)ri   r   r   )rµ   r   r   r   r'  )rW   rŸ   r   r   r
   r   rQ  )Zarr_1Zarr_2rÞ  rß  r2   r2   r3   Útest_gh_17703Ë  s    



ÿrõ  c                 C   sJ   | dv rt  d¡ tjdtjd�}|jdd� ttjj	| ƒ|||d� d S )N)r    r"   r&   rä  rj  rE   F)ÚwriterÝ  )
r÷   r¼  rW   rö   r”   Zsetflagsr×  ÚscipyZspatialZdistance)r4   r¬   r2   r2   r3   Útest_immutable_inputÖ  s
    
rø  )N)	NNFTFFFFN)N)rº  Úos.pathrQ   Ú	functoolsr   r   rk  ÚnumpyrW   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)   r*   Zscipy._lib._utilr+   r,   Zfixturer4   rO   rŸ   Z_tdistZ_ytdistrX   r^   ra   ru   r�   r†   r‡   r§   r±   rÙ   r"  r  r˜  rz  r!  r  rÇ  r  r  Z
wcityblockZ
wchebyshevr>  r?  Zwkulczynski1r  r8  r:  r¼  r¸  r  Zwsokalmichenerr%  rÚ   rr  r1  rH  r^  rx  r„  r…  r¡  r¢  ro  rp  r²  r³  r(  r½  rÄ  rÈ  rÊ  rÍ  rÓ  rÙ  rÜ  rà  râ  rã  rå  ræ  rç  rî  rõ  rø  r2   r2   r2   r3   Ú<module>#   sä   (,\
 
ûû
     ü
0	

ÿ

û
fÿÿ  )       KC6#I9
!		