o
    Ö­júå  ã                   @   s–  d dl Z d dlZ d dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZ d dlZd dlmZ d dlmZ ddlmZ d dlmZ ejjZeej d¡ed	d
dgd�gZe jdko\ejdk Zed	dd�G dd„ dƒƒZG dd„ dƒZdd„ Z 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+ed	d+d�d,d-„ ƒZ,d.d/„ Z-d0d1„ Z.ed	d2d�d3d4„ ƒZ/ed	d2d�d5d6„ ƒZ0d7d8„ Z1d9d:„ Z2ed
d;d<�d=d>„ ƒZ3d?d@„ Z4ed
dAd<�G dBdC„ dCƒƒZ5dDdE„ Z6dFdG„ Z7dHdI„ Z8dJdK„ Z9dLdM„ Z:dNdO„ Z;dPdQ„ Z<dRdS„ Z=dTdU„ Z>dVdW„ Z?dXdY„ Z@dZd[„ ZAd\d]„ ZBd^d_„ ZCd`da„ ZDdbdc„ ZEddde„ ZFdfdg„ ZGdhdi„ ZHdjdk„ ZIdldm„ ZJdndo„ ZKdpdq„ ZLdrds„ ZMdtdu„ ZNdvdw„ ZOdxdy„ ZPdzd{„ 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^d–d—„ Z_d˜d™„ Z`dšd›„ Zadœd�„ 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~dÖd×„ ZdØdÙ„ Z€dÚdÛ„ Z�ed	dÜd�dÝdÞ„ ƒZ‚dßdà„ Zƒed
dád<�G dâdã„ dãƒƒZ„ed	dä�ej …dåej†ej‡g¡dædç„ ƒƒZˆdS )èé    N)Úsuppress_warnings)Úis_jaxÚis_torchÚarray_namespaceÚxp_assert_equalÚxp_assert_closeÚassert_array_almost_equalÚassert_almost_equal)Úraisesé   )Útypes)Úarray_api_compatibleÚskip_xp_backendsTÚcupyz	jax.numpy)Úcpu_onlyÚ
exceptionsÚntÚ2z test internal numpy-only helpers©Únp_onlyÚreasonc                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTest_measurements_statsz²ndimage._measurements._stats() is a utility used by other functions.

        Since internal ndimage/_measurements.py code is NumPy-only,
        so is this this test class.
    c           	      C   óž   g d¢}g d¢}ddg}dD ]>}t  |¡ |¡}t  |¡ |¡}tjj|||d�\}}tr2dt jini }t|t j	ddgfi |¤Žƒ t|t  	d	d
g¡ƒ qd S )N©r   r   é   é   ©r   r   r   r   r   r   ©)é   )r   r   ©ÚlabelsÚindexÚdtyper   ç      ð?ç       @©
ÚnpÚarrayÚreshapeÚndimageÚ_measurementsÚ_statsÚIS_WINDOWS_AND_NP1Úint64r   Úasarray©	ÚselfÚxpÚxr    r!   ÚshpÚcountsÚsumsÚ	dtype_arg© r7   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/ndimage/tests/test_measurements.pyÚtest_a'   s   
ÿøzTest_measurements_stats.test_ac           	      C   r   )Nr   ©r   r   é	   r;   r   r;   r   r   r"   r   r#   r$   r%   r/   r7   r7   r8   Útest_b5   s   
ÿøzTest_measurements_stats.test_bc           
      C   ó¶   g d¢}g d¢}ddg}dD ]J}t  |¡ |¡}t  |¡ |¡}tjj|||dd�\}}}tr4dt jini }	t|t j	d	d	gfi |	¤Žƒ t|t  	d
dg¡ƒ t|t  	ddg¡ƒ qd S )Nr   r   r   r   r   T©r    r!   Úcenteredr"   r   r#   r$   ç      à?r%   ©
r0   r1   r2   r    r!   r3   r4   r5   Úcentersr6   r7   r7   r8   Útest_a_centeredE   ó   ÿ÷z'Test_measurements_stats.test_a_centeredc           
      C   r=   )Nr   r:   r   r;   r   Tr>   r"   r   r#   r$   r@   r%   rA   r7   r7   r8   Útest_b_centeredT   rD   z'Test_measurements_stats.test_b_centeredc           
      C   r=   )Nr   )ç        rF   ç      "@rG   rF   rG   r   Tr>   r"   r   r#   r$   r@   r%   rA   r7   r7   r8   Útest_nonint_labelsc   rD   z*Test_measurements_stats.test_nonint_labelsN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   r<   rC   rE   rH   r7   r7   r7   r8   r       s    r   c                   @   s   e Zd ZdZdd„ ZdS )ÚTest_measurements_selectzEndimage._measurements._select() is a utility used by other functions.c                 C   s’  g d¢}g d¢ddgfg d¢ddgfg d¢dd	gfg}|D ]©\}}t jj|||d
�}t|ƒdks2J ‚t jj|||dd�}t|ƒdksDJ ‚t|d ddgƒ t jj|||dd�}t|ƒdks_J ‚t|d ddgƒ t jj|||ddd�}t|ƒdks{J ‚t|d ddgƒ t|d ddgƒ |d jjdks—J ‚t jj|||ddd�}t|ƒdksªJ ‚t|d ddgƒ t|d ddgƒ |d jjdksÆJ ‚qd S )N)r   r   r   r   r   r   r   r:   r;   )rF   rF   ç      @rN   rF   rN   r   T)r    r!   Úfind_maxr   )r    r!   Úfind_minr   )r    r!   rP   Úfind_min_positionsé   Úi)r    r!   rO   Úfind_max_positions)r)   r*   Ú_selectÚlenr   r"   Úkind)r0   r1   r2   Úcasesr    r!   Úresultr7   r7   r8   Ú
test_basicv   sJ   ýÿÿÿþþçz#Test_measurements_select.test_basicN)rI   rJ   rK   rL   rZ   r7   r7   r7   r8   rM   s   s    rM   c                 C   ó4   |   g ¡}t |¡\}}|dksJ ‚|dksJ ‚d S ©Nr   )Úonesr)   Úlabel©r1   ÚdataÚoutÚnr7   r7   r8   Útest_label01™   ó   
rc   c                 C   r[   )Nr   )Úzerosr)   r^   r_   r7   r7   r8   Útest_label02    rd   rf   c                 C   s<   |   dg¡}t |¡\}}t||  dg¡ƒ |dksJ ‚d S r\   ©r]   r)   r^   r   r.   r_   r7   r7   r8   Útest_label03§   s   rh   c                 C   s<   |   dg¡}t |¡\}}t||  dg¡ƒ |dksJ ‚d S )Nr   r   )re   r)   r^   r   r.   r_   r7   r7   r8   Útest_label04¯   s   ri   c                 C   s>   |   dg¡}t |¡\}}t||  g d¢¡ƒ |dksJ ‚d S )Né   )r   r   r   r   r   r   rg   r_   r7   r7   r8   Útest_label05¶   s   rk   c                 C   s@   |   g d¢¡}t |¡\}}t||   g d¢¡ƒ |dksJ ‚d S )N)r   r   r   r   r   r   ©r   r   r   r   r   rR   rR   ©r.   r)   r^   r   r_   r7   r7   r8   Útest_label06½   s   rn   c                 C   s€   |   g d¢g d¢g d¢g d¢g d¢g d¢g¡}t |¡\}}t||   g d¢g d¢g d¢g d¢g d¢g d¢g¡ƒ |dks>J ‚d S )N©r   r   r   r   r   r   r   rm   r_   r7   r7   r8   Útest_label07Ä   s$   
ûûÿrp   c                 C   s€   |   g d¢g d¢g d¢g d¢g d¢g d¢g¡}t |¡\}}t||   g d¢g d¢g d¢g d¢g d¢g d	¢g¡ƒ |d
ks>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   ©rR   rR   r   r   r   r   ©r   r   r   r   r   r   r   rm   r_   r7   r7   r8   Útest_label08Ö   s    
ûûrz   c                 C   s˜   |   g d¢g d¢g d¢g d¢g d¢g d¢g¡}t dd¡}|   |¡}t ||¡\}}t||   g d¢g d¢g d¢g d	¢g d	¢g d
¢g¡ƒ |dksJJ ‚d S )Nrq   rr   rs   rt   ru   r   rv   rw   )r   r   r   r   r   r   )r   r   r   rR   rR   r   rR   ©r.   r)   Úgenerate_binary_structurer^   r   ©r1   r`   Ústructra   rb   r7   r7   r8   Útest_label09ç   s$   
û
ûr   c              	   C   s€   |   g d¢g d¢g d¢g d¢g¡}t dd¡}|   |¡}t ||¡\}}t||   g d¢g d¢g d¢g d¢g¡ƒ |dks>J ‚d S )Nro   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r{   r}   r7   r7   r8   Útest_label10ú   s   
ý
ýr€   c              	   C   s    t D ]K}t| |ƒ}| jg d¢g d¢g d¢g d¢g d¢g d¢g|d�}t |¡\}}g d¢g d¢g d¢g d	¢g d	¢g d
¢g}|  |¡}t||ƒ |dksMJ ‚qd S )Nrq   rr   rs   rt   ru   ©r"   rv   rw   rx   ry   r   ©r   Úgetattrr.   r)   r^   r   ©r1   Útyper"   r`   ra   rb   Úexpectedr7   r7   r8   Útest_label11	  s.   

ûûû

ïr‡   z inplace output is numpy-specificc              	   C   s    t D ]K}t| |ƒ}| jg d¢g d¢g d¢g d¢g d¢g d¢g|d�}tj||d�}g d¢g d¢g d	¢g d
¢g d
¢g d¢g}|  |¡}t||ƒ |dksMJ ‚qd S )Nrq   rr   rs   rt   ru   r�   ©Úoutputrv   rw   rx   ry   r   r‚   )r1   r…   r"   r`   rb   r†   r7   r7   r8   Útest_label11_inplace  s.   

ûûû

ïrŠ   c                 C   s”   t D ]E}t| |ƒ}| jg d¢g d¢g d¢g d¢g d¢g|d�}t |¡\}}g d¢g d¢g d¢g d¢g d¢g}|  |¡}t||ƒ |dksGJ ‚q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   ru   r�   r   r‚   r„   r7   r7   r8   Útest_label124  s*   

üüü

ñr‹   c                 C   sˆ   t D ]?}t| |ƒ}| jg d¢g d¢g d¢g d¢g|d�}t |¡\}}g d¢g d¢g d¢g d¢g}|  |¡}t||ƒ |dksAJ ‚q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„   r7   r7   r8   Útest_label13G  s&   

ýüý

òrŒ   zoutput=dtype is numpy-specificc                 C   sf   |   dg¡}tD ](}t| |ƒ}| jdg|d�}tj||d�}t|| j |j|jd�ƒ |dks0J ‚qd S )Nrj   r�   rˆ   r   )	r]   r   rƒ   re   r)   r^   r   Úshaper"   ©r1   r`   Útr"   r‰   rb   r7   r7   r8   Útest_label_output_typedY  s   
ÿúr�   c                 C   s\   |   dg¡}tD ]#}t| |ƒ}tj||d�\}}t|| j |j|jd�ƒ |j|ks+J ‚qd S )Nrj   rˆ   r�   )r]   r   rƒ   r)   r^   r   r�   r"   rŽ   r7   r7   r8   Útest_label_output_dtypee  s   
ÿûr‘   c                 C   s\   t | ƒr	t d¡ |  dg¡}tD ]}t| |ƒ}| jdg|d�}ttt	ft
j||d� qd S )NzJAX does not raiserj   é
   r�   rˆ   )r   ÚpytestÚxfailr]   r   rƒ   re   Úassert_raisesÚ
ValueErrorÚ	TypeErrorr)   r^   )r1   r`   r�   r"   r‰   r7   r7   r8   Útest_label_output_wrong_sizep  s   

ÿür˜   c           	   	   C   s&  t  tj tj t¡dd¡¡}t  tj tj t¡dd¡¡}t  tj tj t¡dd¡¡}| d¡}| d¡}| d¡}|  |¡}|  |¡}|  |¡}d}t	|j
d ƒD ]<}||d d …d d …f }t	|j
d ƒD ]'}||d d …d d …f }tt ||¡d ||d d …d d …f dd	� |d
7 }qhqTd S )Nr`   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)éÿÿÿÿé   rš   )r™   rR   rR   r   F©Úcheck_dtyper   )r&   ÚloadtxtÚosÚpathÚjoinÚdirnameÚ__file__r(   r.   Úranger�   r   r)   r^   )	r1   r`   ÚstrelsÚresultsÚrrS   ÚdÚjÚsr7   r7   r8   Útest_label_structuring_elements}  s4   ÿÿ
ÿ
ÿ





,
ýþrª   z2`cupyx.scipy.ndimage` does not have `find_objects`©r   c                    sZ   d‡ fdd„	}t  t j¡t  d¡kr+d}t j t  |¡¡ |¡}ˆ  |¡}||ƒ d S d S )Nçffffffæ?r   c           	         sF   | |k}t |jƒ}t ||¡}ˆ  |¡}t ||¡\}}t |¡}d S )N)rV   r�   r)   r|   r.   r^   Úfind_objects)	ÚimgÚthreshÚsizeÚmaskÚrankr~   ÚlaÚcoÚ_©r1   r7   r8   ÚSE—  s   

ÿztest_ticket_742.<locals>.SErS   )rR   éØ  r¸   )r¬   r   )r&   r"   ÚintpÚrandomÚrandÚprodr(   r.   )r1   r·   r�   Úar7   r¶   r8   Útest_ticket_742“  s   	
ûr¾   c                 C   sv   t  d¡}d|dd…dd…f< d|dd…dd…f< d|d< d|d< d|d< |  |¡}t ||  d	¡¡d dks9J ‚dS )
z/Github issue #3025 - improper merging of labels)é<   i@  r   Né  i  )é$   rÀ   )é#   i  )rÂ   i  )rR   rR   )r&   re   r.   r)   r^   r]   )r1   r§   r7   r7   r8   Útest_gh_issue_3025¨  s   

"rÃ   z-cupyx.scipy.ndimage does not have find_objectc                   @   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	dd„ Z
dd„ Zdd„ ZdS )ÚTestFindObjectsc                 C   sN   t j dd¡}| |¡}t |dk¡\}}|j|j|jfv s J ‚t 	|¡ d S )Nr’   r@   )
r&   rº   r»   r.   r)   r^   r"   Úint32r-   r­   )r0   r1   Ú
test_arrayr^   Úno_featuresr7   r7   r8   Útest_label_default_dtype¶  s
   
z(TestFindObjects.test_label_default_dtypec                 C   s,   |j g |jd�}t |¡}|dgksJ ‚d S )Nr�   r7   )r]   r-   r)   r­   ©r0   r1   r`   ra   r7   r7   r8   Útest_find_objects01¿  s   
z#TestFindObjects.test_find_objects01c                 C   s*   |j g |jd�}t |¡}|g ksJ ‚d S )Nr�   ©re   r-   r)   r­   rÉ   r7   r7   r8   Útest_find_objects02Å  s   
z#TestFindObjects.test_find_objects02c                 C   ó8   |j dg|jd�}t |¡}|tddd ƒfgksJ ‚d S )Nr   r�   r   ©r]   r-   r)   r­   ÚslicerÉ   r7   r7   r8   Útest_find_objects03Ë  ó   
z#TestFindObjects.test_find_objects03c                 C   s,   |j dg|jd�}t |¡}|g ksJ ‚d S )Nr   r�   rË   rÉ   r7   r7   r8   Útest_find_objects04Ñ  s   
z#TestFindObjects.test_find_objects04c                 C   rÍ   )Nrj   r�   r   rÎ   rÉ   r7   r7   r8   Útest_find_objects05×  rÑ   z#TestFindObjects.test_find_objects05c                 C   sL   |  g d¢¡}t |¡}|tddd ƒftddd ƒftddd ƒfgks$J ‚d S )Nrl   r   r   r   r   rj   r   ©r.   r)   r­   rÏ   rÉ   r7   r7   r8   Útest_find_objects06Ý  s   
þz#TestFindObjects.test_find_objects06c              	   C   sH   |  g d¢g d¢g d¢g d¢g d¢g d¢g¡}t |¡}|g ks"J ‚d S )Nro   )r.   r)   r­   rÉ   r7   r7   r8   Útest_find_objects07å  s   
û
z#TestFindObjects.test_find_objects07c              	   C   s    |  g d¢g d¢g d¢g d¢g d¢g d¢g¡}t |¡}|tddd ƒtddd ƒftddd ƒtd	d
d ƒftdd
d ƒtdd	d ƒftd
dd ƒtdd
d ƒfgksNJ ‚d S )Nrq   rv   rw   rx   ry   r   r   rR   r   rj   r   rÔ   rÉ   r7   r7   r8   Útest_find_objects08ð  s   
û
ýz#TestFindObjects.test_find_objects08c              	   C   sŒ   |  g d¢g d¢g d¢g d¢g d¢g d¢g¡}t |¡}|tddd ƒtddd ƒftddd ƒtd	d
d ƒfd td
dd ƒtdd
d ƒfgksDJ ‚d S )Nrq   rv   rw   ro   ry   r   r   rR   r   rj   r   rÔ   rÉ   r7   r7   r8   Útest_find_objects09þ  s   
û
ýz#TestFindObjects.test_find_objects09N)rI   rJ   rK   rÈ   rÊ   rÌ   rÐ   rÒ   rÓ   rÕ   rÖ   r×   rØ   r7   r7   r7   r8   rÄ   ´  s    	rÄ   c           
   	   C   s
  |   g d¢g d¢g d¢g d¢g d¢g d¢g¡}tj|dd�}g d¢}t| ¡ ƒ|ks,J ‚t| ƒr4d	d
ini }i }|D ]}| j||kfi |¤Ž||< q:tj|dd�}| ¡ | ¡ ks[J ‚| ¡ D ]#}t|| ƒt|| ƒksoJ ‚t|| || ƒD ]	\}}	t	||	ƒ qxq_dS )z Test dictionary keys and entriesrq   rv   rw   ro   ry   r   )Úignore_value)r   r   r   Úas_tupleTN)
r.   r)   Úvalue_indicesÚlistÚkeysr   ÚnonzerorV   Úzipr   )
r1   r`   ÚviÚ	true_keysÚnnz_kwdÚtrueviÚkÚkeyÚvÚtrue_vr7   r7   r8   Útest_value_indices01  s,   
ûÿþrè   c                 C   sP   | j d| jd�}d}tt|d�� t |¡ W d  ƒ dS 1 s!w   Y  dS )zTest input checking)rj   r   r�   z(Parameter 'arr' must be an integer array)ÚmatchN)re   Úfloat32r•   r–   r)   rÛ   )r1   r`   Úmsgr7   r7   r8   Útest_value_indices02&  s
   "ÿrì   c                 C   sð   dD ]s}| j ddg ddg  ddg  | jd�}|  ||¡}t| ƒr'ddini }t|ƒj}||ƒ}t |¡}t| 	¡ ƒt|ƒksCJ ‚d	d
„ |D ƒD ]*}| j
||kfi |¤Ž}t|| ƒt|ƒkscJ ‚t|| |ƒD ]	\}	}
t|	|
ƒ qjqJqdS )z2Test different input array shapes, from 1-D to 4-D))rÁ   )é   r   )rR   rR   r   )rR   rR   r   r   é   r   r   rR   r�   rÚ   Tc                 S   s   g | ]}t |ƒ‘qS r7   )Úint)Ú.0r2   r7   r7   r8   Ú
<listcomp>:  s    z(test_value_indices03.<locals>.<listcomp>N)r.   rÅ   r(   r   r   Úunique_valuesr)   rÛ   rÜ   rÝ   rÞ   rV   rß   r   )r1   r�   r½   râ   rò   ÚtrueKeysrà   rä   ÚtrueNdxÚvikÚtrue_vikr7   r7   r8   Útest_value_indices03.  s    *

ÿýör÷   c                 C   s<   t D ]}t| |ƒ}| jg |d�}t |¡}|dksJ ‚qd S )Nr�   r   )r   rƒ   r.   r)   Úsum©r1   r…   r"   Úinputr‰   r7   r7   r8   Ú
test_sum01A  s   

ürû   c                 C   s@   t D ]}t| |ƒ}| jddg|d�}t |¡}|dksJ ‚qd S )Nr   r   r�   )r   rƒ   re   r)   rø   rù   r7   r7   r8   Ú
test_sum02I  s   

ürü   c                 C   sD   t D ]}t| |ƒ}| jg |d�}t |¡}t||  d¡dd� qd S )Nr�   r#   F©Úcheck_0d)r   rƒ   r]   r)   rø   r	   r.   rù   r7   r7   r8   Ú
test_sum03Q  s   

ürÿ   c                 C   óH   t D ]}t| |ƒ}| jddg|d�}t |¡}t||  d¡dd� qd S )Nr   r   r�   ç      @Frý   ©r   rƒ   r.   r)   rø   r	   rù   r7   r7   r8   Ú
test_sum04Y  ó   

ür  c                 C   sP   t D ]#}t| |ƒ}| jddgddgg|d�}t |¡}t||  d¡dd� qd S )	Nr   r   rR   r   r�   g      $@Frý   r  rù   r7   r7   r8   Ú
test_sum05a  s   

ür  c                 C   sX   t jg td�}|  |¡}tD ]}t| |ƒ}| jg |d�}tj||d�}|dks)J ‚qd S )Nr�   ©r    r   ©r&   r.   Úboolr   rƒ   r)   rø   ©r1   r    r…   r"   rú   r‰   r7   r7   r8   Ú
test_sum06i  s   

ür
  c                 C   s`   t jddgtd�}|  |¡}tD ]}t| |ƒ}| jddg|d�}tj||d�}|dks-J ‚qd S )Nr   r   r�   r  )	r&   r]   r  r.   r   rƒ   re   r)   rø   r	  r7   r7   r8   Ú
test_sum07s  ó   

ür  c                 C   s`   t jddgtd�}|  |¡}tD ]}t| |ƒ}| jddg|d�}tj||d�}|dks-J ‚qd S )Nr   r   r�   r   r  r  r	  r7   r7   r8   Ú
test_sum08}  r  r  c                 C   óp   t jddgtd�}|  |¡}tD ]%}t| |ƒ}| jddgddgg|d�}tj||d�}t||  d¡d	d
� qd S )Nr   r   r�   r   rR   r   r  ç      @Frý   )r&   r.   r  r   rƒ   r)   rø   r	   r	  r7   r7   r8   Ú
test_sum09‡  ó   

ür  c                 C   óf   t jddgtd�}t jddgddggtd�}|  |¡}|  |¡}tj||d�}t||  d¡d	d
� d S ©Nr   r   r�   r   rR   r   r  ç       @Frý   )r&   r.   r  r)   rø   r	   ©r1   r    rú   r‰   r7   r7   r8   Ú
test_sum10‘  ó   

r  c                 C   sj   | j ddg| jd�}tD ]&}t| |ƒ}| j ddgddgg|d�}tj||dd�}t||   d¡dd	� qd S )
Nr   r   r�   rR   r   r   ç      @Frý   )r.   Úint8r   rƒ   r)   rø   r	   r	  r7   r7   r8   Ú
test_sum11›  s   
ÿûr  c                 C   s|   | j ddgddgg| jd�}tD ]+}t| |ƒ}| j ddgddgg|d�}tj|||   g d¢¡d�}t||   g d¢¡ƒ qd S ©	Nr   r   r   r�   rR   ©r   é   r   r   )r  rF   g      @)r.   r  r   rƒ   r)   rø   r   r	  r7   r7   r8   Ú
test_sum12¥  s   
ür  c                 C   s¨   | j ddgddgg| jd�}tD ]A}t| |ƒ}| j ddgddgg|d�}tj|||   g d¢¡d�}tj|||   g d¢¡d�}|  ||k¡sGJ ‚t||   g d¢¡ƒ qd S r  )	r.   r  r   rƒ   r)   rø   Ú
sum_labelsÚallr   )r1   r    r…   r"   rú   Ú
output_sumÚoutput_labelsr7   r7   r8   Útest_sum_labels®  s   
ÿør#  c                 C   r  r  )r&   r.   r  r   rƒ   r)   Úmeanr	   r	  r7   r7   r8   Útest_mean01»  r  r%  c                 C   r  ©Nr   r   r�   r   rR   r   r  r#   Frý   )r&   r.   r  r)   r$  r	   r  r7   r7   r8   Útest_mean02Å  r  r'  c                 C   ód   |   ddg¡}tD ]&}t| |ƒ}| j ddgddgg|d�}tj||dd�}t||   d¡dd	� q	d S )
Nr   r   rR   r   r�   r   r  Frý   )r.   r   rƒ   r)   r$  r	   r	  r7   r7   r8   Útest_mean03Ï  ó   
ÿûr)  c              	   C   sÈ   | j ddgddgg| jd�}tjdd��F tD ]:}t| |ƒ}| j ddgddgg|d�}tj|||   g d¢¡d	�}|d
 dks@J ‚|d dksHJ ‚|  |d ¡sQJ ‚qW d   ƒ d S 1 s]w   Y  d S )Nr   r   r   r�   Úignore©r   rR   r  r   r   r  ç      @)	r.   r  r&   Úerrstater   rƒ   r)   r$  Úisnanr	  r7   r7   r8   Útest_mean04Ù  s   
ÿ÷"ÿr0  c                 C   r  r&  )r&   r.   r  r   rƒ   r)   Úminimumr	   r	  r7   r7   r8   Útest_minimum01è  r  r2  c                 C   óf   t jddgtd�}t jddgddggtd�}|  |¡}|  |¡}tj||d�}t||  d¡dd	� d S ©
Nr   r   r�   r   r   r  r#   Frý   )r&   r.   r  r)   r1  r	   r  r7   r7   r8   Útest_minimum02ò  r  r5  c                 C   r(  )
Nr   r   rR   r   r�   r   r  Frý   )r.   r   rƒ   r)   r1  r	   r	  r7   r7   r8   Útest_minimum03ü  s   
ÿúr6  c                 C   óv   |   ddgddgg¡}tD ]+}t| |ƒ}| j ddgddgg|d�}tj|||   g d¢¡d�}t||   g d¢¡ƒ qd S )	Nr   r   rR   r   r�   ©r   rR   r  r   )r  r  rF   )r.   r   rƒ   r)   r1  r   r	  r7   r7   r8   Útest_minimum04  ó   
ÿûr9  c                 C   r  )Nr   r   r�   r   rR   r   r  r  Frý   )r&   r.   r  r   rƒ   r)   Úmaximumr	   r	  r7   r7   r8   Útest_maximum01  r  r<  c                 C   r3  r4  )r&   r.   r  r)   r;  r	   r  r7   r7   r8   Útest_maximum02  s   

r=  c                 C   r(  )
Nr   r   rR   r   r�   r   r  Frý   )r.   r   rƒ   r)   r;  r	   r	  r7   r7   r8   Útest_maximum03$  r*  r>  c                 C   r7  )	Nr   r   rR   r   r�   r8  r   )r  r  rF   )r.   r   rƒ   r)   r;  r   r	  r7   r7   r8   Útest_maximum04.  r:  r?  c                 C   s$   |   g d¢¡}t |¡dksJ ‚d S )N)éýÿÿÿéþÿÿÿr™   r™   )r.   r)   r;  )r1   r2   r7   r7   r8   Útest_maximum058  s   rB  c                 C   sv   |   g d¢g d¢g d¢g d¢g¡}|   g d¢g d¢g d¢g d¢g¡}tj|||   g d¢¡d	�}t||   g d
¢¡ƒ d S )N©r   r   r   r   ©rj   rR   r   r   ©r   r   r   rš   ©r;   rR   r   r   ©r   r   r   r   ©r   r   r   r   ©rR   rR   r   r   )r   r   rR   r   )r-  r  r  )r.   r)   Úmedianr   ©r1   r½   r    r‰   r7   r7   r8   Útest_median01>  s   
ý
ýrL  c                 C   sD   |   g d¢g d¢g d¢g d¢g¡}t |¡}t||   d¡dd� d S )NrC  rD  rE  rF  r#   Frý   ©r.   r)   rJ  r	   ©r1   r½   r‰   r7   r7   r8   Útest_median02K  s   
ý
rO  c                 C   sj   |   g d¢g d¢g d¢g d¢g¡}|   g d¢g d¢g d¢g d¢g¡}tj||d�}t||   d	¡d
d� d S )NrC  rD  rE  rF  rG  rH  rI  r  r  Frý   rM  rK  r7   r7   r8   Útest_median03T  s   
ý
ýrP  c                 C   sP   t jddgtd�}|  |¡}tj||  d¡|  dg¡d�}t||  dg¡ƒ d S )Nr   r�   ©r   r   r#   )r&   r.   r  r)   rJ  r]   r   rN  r7   r7   r8   Útest_median_gh12836_boola  s   
rR  c                 C   sH   | j ddg| jd�}tj||  d¡|   dg¡d�}t||   dg¡ƒ d S )NéA   éF   r�   rQ  r   r   g     àP@)r.   r  r)   rJ  r]   r   rN  r7   r7   r8   Útest_median_no_int_overflowi  s   rU  c              
   C   óž   t jdd��? tD ]3}t| |ƒ}| jg |d�}tƒ �}| td¡ t 	|¡}W d   ƒ n1 s0w   Y  |  
|¡s<J ‚q	W d   ƒ d S 1 sHw   Y  d S ©Nr+  r,  r�   zMean of empty slice)r&   r.  r   rƒ   r.   r   ÚfilterÚRuntimeWarningr)   Úvariancer/  ©r1   r…   r"   rú   Úsupr‰   r7   r7   r8   Útest_variance01p  ó   
þú"ÿr]  c                 C   óF   t D ]}t| |ƒ}| jdg|d�}t |¡}t||  d¡dd� qd S ©Nr   r�   rF   Frý   ©r   rƒ   r.   r)   rZ  r	   rù   r7   r7   r8   Útest_variance02{  ó   

ürb  c                 C   r   ©Nr   rR   r�   r#   Frý   ra  rù   r7   r7   r8   Útest_variance03ƒ  r  re  c                 C   ó>   t jddgtd�}|  |¡}t |¡}t||  d¡dd� d S )Nr   r   r�   g      Ð?Frý   )r&   r.   r  r)   rZ  r	   ©r1   rú   r‰   r7   r7   r8   Útest_variance04‹  ó   

rh  c                 C   óZ   |   g d¢¡}tD ]!}t| |ƒ}| j g d¢|d�}t ||d¡}t||   d¡dd� q	d S ©N)r   r   rR   )r   rR   r  r�   r   r#   Frý   )r.   r   rƒ   r)   rZ  r	   r	  r7   r7   r8   Útest_variance05’  s   
ûrl  c              
   C   ó’   |   g d¢¡}tjdd��2 tD ]&}t| |ƒ}| j g d¢|d�}t |||   g d¢¡¡}t||   g d¢¡ƒ qW d   ƒ d S 1 sBw   Y  d S ©N)r   r   rR   rR   r   r+  r,  )r   rR   r  r’   r  r�   )r   rR   r   )r#   r#   rF   )r.   r&   r.  r   rƒ   r)   rZ  r   r	  r7   r7   r8   Útest_variance06œ  s   
ü"ÿro  c              
   C   rV  rW  )r&   r.  r   rƒ   r.   r   rX  rY  r)   Ústandard_deviationr/  r[  r7   r7   r8   Útest_standard_deviation01¦  r^  rq  c                 C   r_  r`  ©r   rƒ   r.   r)   rp  r	   rù   r7   r7   r8   Útest_standard_deviation02±  rc  rs  c                 C   r   rd  rr  rù   r7   r7   r8   Útest_standard_deviation03¹  r  rt  c                 C   rf  )Nr   r   r�   r@   Frý   )r&   r.   r  r)   rp  r	   rg  r7   r7   r8   Útest_standard_deviation04Á  ri  ru  c                 C   rj  rk  )r.   r   rƒ   r)   rp  r	   r	  r7   r7   r8   Útest_standard_deviation05È  s   
ürv  c              
   C   rm  rn  )r.   r&   r.  r   rƒ   r)   rp  r   r	  r7   r7   r8   Útest_standard_deviation06Ñ  s   
ÿú"ÿrw  c              	   C   s¤   |   dg¡}tjdd��< tD ]0}t| ƒr|dkrt d¡ t| |ƒ}| j dg|d�}t 	|||   dg¡¡}t
||   dg¡ƒ qW d   ƒ d S 1 sKw   Y  d S )	Nr   r+  r,  Úuint8z8value cannot be converted to type uint8 without overflowgl�§ `y¿r�   r   )r.   r&   r.  r   r   r“   r”   rƒ   r)   rp  r   r	  r7   r7   r8   Útest_standard_deviation07Ý  s   

ù"ÿry  c                 C   óh   t jddgtd�}|  |¡}tD ]!}t| |ƒ}| jddgddgg|d�}tj||d�}|dks1J ‚qd S )	Nr   r   r�   r   rR   r   r  ©r   r   )r&   r.   r  r   rƒ   r)   Úminimum_positionr	  r7   r7   r8   Útest_minimum_position01ê  s   

ür}  c                 C   óN   t D ]"}t| |ƒ}| jg d¢g d¢g d¢g|d�}t |¡}|dks$J ‚qd S ©N©rj   r   r   rj   ©rR   rš   r   r   ©r   rj   r   r   r�   ©r   r   )r   rƒ   r.   r)   r|  rù   r7   r7   r8   Útest_minimum_position02ô  ó   

þþ
úr„  c                 C   óD   t jg d¢g d¢g d¢gtd�}|  |¡}t |¡}|dks J ‚d S r  ©r&   r.   r  r)   r|  rg  r7   r7   r8   Útest_minimum_position03þ  ó   
þþ

rˆ  c                 C   r†  )Nr€  )rR   rš   r   r   r‚  r�   r{  r‡  rg  r7   r7   r8   Útest_minimum_position04  r‰  rŠ  c                 C   ó^   |   g d¢¡}tD ]#}t| |ƒ}| j g d¢g d¢g d¢g|d�}t ||¡}|dks,J ‚q	d S )N©r   r   r   r   r€  r�  )r   rj   r   rR   r�   )r   r   ©r.   r   rƒ   r)   r|  r	  r7   r7   r8   Útest_minimum_position05  ó   

þþúrŽ  c                 C   ó`   |   g d¢¡}tD ]$}t| |ƒ}| j g d¢g d¢g d¢g|d�}t ||d¡}|dks-J ‚q	d S )N©r   r   rR   r   r€  r�  r‚  r�   r   ©r   r   r�  r	  r7   r7   r8   Útest_minimum_position06  ó   

þþúr“  c              	   C   s~   |   g d¢¡}tD ]3}t| |ƒ}| j g d¢g d¢g d¢g|d�}t |||   ddg¡¡}|d d	ks4J ‚|d
 dks<J ‚q	d S )Nr‘  r€  r�  r‚  r�   r   rR   r   r’  r   rƒ  r�  r	  r7   r7   r8   Útest_minimum_position07&  ó   

þþÿør•  c                 C   rz  )	Nr   r   r�   r   rR   r   r  ©r   r   )r&   r.   r  r   rƒ   r)   Úmaximum_positionr	  r7   r7   r8   Útest_maximum_position013  s   

ÿûr™  c                 C   r~  )Nr€  ©rR   rš   r  r   r‚  r�   rƒ  )r   rƒ   r.   r)   r˜  rù   r7   r7   r8   Útest_maximum_position02>  r…  r›  c                 C   r†  )Nr€  rš  r‚  r�   r{  )r&   r.   r  r)   r˜  rg  r7   r7   r8   Útest_maximum_position03H  r‰  rœ  c                 C   r‹  )NrŒ  r€  rš  r‚  r�   ©r   r   ©r.   r   rƒ   r)   r˜  r	  r7   r7   r8   Útest_maximum_position04Q  r�  rŸ  c                 C   r�  )NrŒ  r€  rš  r‚  r�   r   r{  rž  r	  r7   r7   r8   Útest_maximum_position05\  r”  r   c              	   C   s~   |   g d¢¡}tD ]3}t| |ƒ}| j g d¢g d¢g d¢g|d�}t |||   ddg¡¡}|d d	ks4J ‚|d d
ks<J ‚q	d S )NrŒ  r€  rš  r‚  r�   r   r   r   r{  r�  rž  r	  r7   r7   r8   Útest_maximum_position06g  r–  r¡  c              	   C   s�   t | ƒr	t d¡ |  g d¢¡}tD ]3}t| |ƒ}| jg d¢g d¢g d¢g|d�}t |||  ddg¡¡}|d	 d
ks=J ‚|d dksEJ ‚qd S )Nzoutput[1] is wrong on pytorch)r#   r-  rF   ç      @r€  rš  r‚  r�   r#   r¢  r   r{  r   )r   rR   )r   r“   r”   r.   r   rƒ   r)   r˜  r	  r7   r7   r8   Útest_maximum_position07t  s"   


þþÿør£  c           
      C   s¨   t jddgtd�}|  |¡}tD ]A}t| |ƒ}| jddgddgg|d�}tj||d�}tj||d�}tj||d�}tj	||d�}tj
||d�}	|||||	fksQJ ‚qd S )Nr   r   r�   r   rR   r   r  )r&   r.   r  r   rƒ   r)   Úextremar1  r;  r|  r˜  ©
r1   r    r…   r"   rú   Úoutput1Úoutput2Úoutput3Úoutput4Úoutput5r7   r7   r8   Útest_extrema01…  s    

ÿÿör«  c           
      C   s¤   |   ddg¡}tD ]F}t| |ƒ}| j ddgddgg|d�}tj||dd�}tj||dd�}tj||dd�}tj||dd�}tj||dd�}	|||||	fksOJ ‚q	d S )Nr   r   rR   r   r�   r   )	r.   r   rƒ   r)   r¤  r1  r;  r|  r˜  r¥  r7   r7   r8   Útest_extrema02•  s*   
ÿÿÿÿÿór¬  c           
      C   s   |   ddgddgg¡}tD ]€}t| ƒr|dv rt d¡ t| |ƒ}| j ddgddgg|d�}tj|||   g d¢¡d	�}tj|||   g d¢¡d	�}tj	|||   g d¢¡d	�}tj
|||   g d¢¡d	�}tj|||   g d¢¡d	�}	t|d
 |ƒ t|d |ƒ |d |ks…J ‚|d |	ks�J ‚qd S )Nr   r   rR   ©Úuint16Úuint32Úuint64ú/https://github.com/pytorch/pytorch/issues/58734r   r�   r8  r   r   ©r.   r   r   r“   r”   rƒ   r)   r¤  r1  r;  r|  r˜  r   r¥  r7   r7   r8   Útest_extrema03§  s<   

þþÿþþér³  c           
   	   C   s  |   g d¢¡}tD ]~}t| ƒr|dv rt d¡ t| |ƒ}| j g d¢g d¢g d¢g|d�}t |||   dd	g¡¡}t |||   dd	g¡¡}t 	|||   dd	g¡¡}t 
|||   dd	g¡¡}t |||   dd	g¡¡}	t|d
 |ƒ t|d |ƒ |d	 |ksJ ‚|d |	ks‡J ‚q	d S )NrŒ  r­  r±  r€  rš  r‚  r�   r   r   r   rR   r²  r¥  r7   r7   r8   Útest_extrema04Ã  s2   


þþÿÿîr´  c                 C   sL   d}t D ]}t| |ƒ}| jddgddgg|d�}t |¡}||ks#J ‚qd S )N)rF   rF   r   r   r�   ©r   rƒ   r.   r)   Úcenter_of_mass©r1   r†   r…   r"   rú   r‰   r7   r7   r8   Útest_center_of_mass01Ú  ó   

ür¸  c                 C   sL   d}t D ]}t| |ƒ}| jddgddgg|d�}t |¡}||ks#J ‚qd S )Nr—  r   r   r�   rµ  r·  r7   r7   r8   Útest_center_of_mass02ã  r¹  rº  c                 C   sL   d}t D ]}t| |ƒ}| jddgddgg|d�}t |¡}||ks#J ‚qd S )Nr’  r   r   r�   rµ  r·  r7   r7   r8   Útest_center_of_mass03ì  r¹  r»  c                 C   sL   d}t D ]}t| |ƒ}| jddgddgg|d�}t |¡}||ks#J ‚qd S )Nr�  r   r   r�   rµ  r·  r7   r7   r8   Útest_center_of_mass04õ  r¹  r¼  c                 C   sL   d}t D ]}t| |ƒ}| jddgddgg|d�}t |¡}||ks#J ‚qd S )N©r@   r@   r   r�   rµ  r·  r7   r7   r8   Útest_center_of_mass05þ  r¹  r¾  c                 C   sB   d}t jddgddggtd�}|  |¡}t |¡}||ksJ ‚d S )Nr½  r   r   rR   r�   )r&   r.   r  r)   r¶  ©r1   r†   rú   r‰   r7   r7   r8   Útest_center_of_mass06  s
   

rÀ  c                 C   sR   |   ddg¡}d}tj ddgddggtd�}|   |¡}t ||¡}||ks'J ‚d S )Nr   r   ©r@   rF   r   rR   r�   ©r.   r&   r  r)   r¶  ©r1   r    r†   rú   r‰   r7   r7   r8   Útest_center_of_mass07  s   
rÄ  c                 C   sT   |   ddg¡}d}tj ddgddggtd�}|   |¡}t ||d¡}||ks(J ‚d S )Nr   r   ©r@   r#   rj   rR   r�   rÂ  rÃ  r7   r7   r8   Útest_center_of_mass08  s   
rÆ  c                 C   st   |   d¡}| j ddg| jd�}tj ddgddggtd�}|   |¡}t |||   ddg¡¡}t|   |¡|   |¡ƒ d S )Nrƒ  rÁ  rÅ  r�   r   r   )r.   Úfloat64r&   r  r)   r¶  r   rÃ  r7   r7   r8   Útest_center_of_mass09!  s   

rÈ  c                 C   s2   |   d¡}|  d¡}t |ddd¡}t||ƒ d S )Nr’   r   )r]   Úaranger)   Ú	histogramr   r¿  r7   r7   r8   Útest_histogram01*  s   

rË  c                 C   sL   |   g d¢¡}|   g d¢¡}|   g d¢¡}t |ddd|d¡}t||ƒ d S )N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   rR   r   rR   rR   rR   rR   r   r   rj   r   ©r.   r)   rÊ  r   rÃ  r7   r7   r8   Útest_histogram021  s
   rÍ  zobject arraysc                 C   sl   |   g d¢¡}|   g d¢¡}|   g d¢¡}|   g d¢¡}t |ddd|d¡}t|d |ƒ t|d	 |ƒ d S )
N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   rR   r   )r   r   rR   r   rR   rj   rR   rR   r   r   rj   rƒ  r   rÌ  )r1   r    Ú	expected1Ú	expected2rú   r‰   r7   r7   r8   Útest_histogram039  s   rÐ  c           	      C   sv  |   g d¢g d¢g d¢g¡}|   g d¢g d¢g d¢g¡}tj|||   ddg¡d�}t|| j d	d
g| jd�ƒ tj|||   ddg¡d�}t|| j ddg| jd�ƒ tj|||   ddg¡d�}t||  | j ddg| jd�¡ƒ tj	|||   ddg¡d�}t|| j d	d
g| jd�ƒ tj
|||   ddg¡d�}t||   ddg¡dd� tj|||   ddg¡d�}t||   ddg¡dd� d S )N)rj   r   r   r   r   )r  r;   r   r   r   )r   r   r   rR   rj   )r   r   r   r   r   )r   r   r   r   r   r   r   r   rN   r  r�   r-  r#   rj   rR   Fr›   r;   )r.   r)   r$  r   rÇ  rZ  rp  r   ÚsqrtrJ  r1  r;  )	r1   r½   Úlblr$  ÚvarÚstdÚmedÚminÚmaxr7   r7   r8   Útest_stat_funcs_2dF  s    rØ  úno watershed_ift on CuPyc                   @   sx   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	ddd�dd„ ƒZ
e	ddd�dd„ ƒZe	ddd�dd„ ƒZdS )ÚTestWatershedIftc              
   C   sô   |j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|  g d¢g d¢g d¢g¡}tj|||d�}g d	¢g d
¢g d
¢g d
¢g d
¢g d
¢g d	¢g d	¢g}t||  |¡ƒ 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   ©Ú	structure©r™   r™   r™   r™   r™   r™   r™   ©r™   r   r   r   r   r   r™   ©r.   rx  r  r)   Úwatershed_iftr   ©r0   r1   r`   Úmarkersrâ  ra   r†   r7   r7   r8   Útest_watershed_ift01`  sJ   
ùù
ùù
þùz%TestWatershedIft.test_watershed_ift01c              
   C   sÔ   |j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}t ||¡}g d¢g d¢g d	¢g d	¢g d	¢g d¢g d¢g d¢g}t||  |¡ƒ d S )
NrÛ  rÜ  rÝ  r�   rÞ  rß  rã  )r™   r™   r   r   r   r™   r™   rä  rå  ©r0   r1   r`   rè  ra   r†   r7   r7   r8   Útest_watershed_ift02  sB   
ùù
ùùùz%TestWatershedIft.test_watershed_ift02c              	   C   sÂ   |j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}t ||¡}g d¢g d¢g d	¢g d	¢g d	¢g d¢g d¢g}t||  |¡ƒ d S )
NrÛ  rÜ  ©r   r   r   r   r   r   r   r�   ©r   r   r   r   rR   r   r   ©r   r   r   r   r   r   r™   rã  )r™   r™   r   r™   rR   r™   r™   ©r™   r   r   rR   rR   rR   r™   rå  rê  r7   r7   r8   Útest_watershed_ift03›  s<   
úú
úúúz%TestWatershedIft.test_watershed_ift03c              	   C   óâ   |j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|j g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|  g d¢g d¢g d¢g¡}tj|||d�}g d	¢g d
¢g d
¢g d
¢g d
¢g d
¢g d	¢g}t||  |¡ƒ d S )NrÛ  rÜ  rì  r�   rí  rî  rà  rá  rã  rï  rå  rç  r7   r7   r8   Útest_watershed_ift04´  sD   
úú
úù
	þúz%TestWatershedIft.test_watershed_ift04c              	   C   rñ  )NrÛ  rÜ  rì  r�   )r   r   rR   r   r   r   r   rî  rà  rá  rã  )r™   rR   rR   r   r   r   r™   rå  rç  r7   r7   r8   Útest_watershed_ift05Ò  sD   
úú
úù
þúz%TestWatershedIft.test_watershed_ift05c                 C   sÐ   |j g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|j g d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|  g d¢g d¢g d¢g¡}tj|||d�}g d	¢g d	¢g d	¢g d	¢g d
¢g d
¢g}t||  |¡ƒ d S )NrÝ  rÜ  rÛ  r�   rÞ  rß  rà  rá  rä  rã  rå  rç  r7   r7   r8   Útest_watershed_ift06ï  s>   
ûû
ûû
þûz%TestWatershedIft.test_watershed_ift06Tzinplace ops are numpy-specificr   c                 C   s  d}t j|t jd�}| ¡ }t jg d¢g d¢g d¢g d¢g d¢g d¢gt jd�|d< | |¡}|jg d¢g d¢g d¢g d¢g d¢g d¢g|jd�}|j||jd�}|j}| g d	¢g d	¢g d	¢g¡}tj	||||d
� g d¢g d¢g d¢g d¢g d¢g d¢g}t
|| |¡ƒ d S )N)rš   r   r�   rÝ  rÜ  rÛ  .rÞ  rß  rà  )râ  r‰   rä  rã  )r&   re   rx  Ú	transposer.   r  Úint16ÚTr)   ræ  r   )r0   r1   r�   r`   rè  ra   râ  r†   r7   r7   r8   Útest_watershed_ift07  sN   
û
û

ûû
þ
ÿûz%TestWatershedIft.test_watershed_ift07r   rÙ  r«   c                 C   sh   |j ddgddgg|jd�}|j ddgddgg|jd�}t ||¡}ddgddgg}t||  |¡ƒ d S )Né   r   r�   r   )r.   r®  r  r)   ræ  r   rê  r7   r7   r8   Útest_watershed_ift08)  s   
ÿÿ
ÿÿÿz%TestWatershedIft.test_watershed_ift08c                 C   sv   |j | |j¡jdgddgg|jd�}|j ddgddgg|jd�}t ||¡}ddgddgg}t||  |¡dd� d S )Nr   r�   r   Fr›   )r.   Úiinfor®  r×  r  r)   ræ  r   rê  r7   r7   r8   Útest_watershed_ift095  s   ÿÿ
ÿÿÿz%TestWatershedIft.test_watershed_ift09N)rI   rJ   rK   ré  rë  rð  rò  ró  rô  r   rø  rú  rü  r7   r7   r7   r8   rÚ  ]  s    


 

rÚ  )r   Údtc                 C   sJ   t j d¡}d}|jd|dd�j| d�}t |¡}t| ¡ ƒ|ks#J ‚d S )Né{   r  r   )r’   rî   )ÚlowÚhighr°   r�   )	r&   rº   Údefault_rngÚintegersÚastyper)   rÛ   rV   rÝ   )rý  r1   ÚrngÚmax_valÚimageÚval_idxr7   r7   r8   Útest_gh_19423B  s
   
r  )‰rž   Úos.pathÚnumpyr&   Únumpy.testingr   Úscipy._lib._array_apir   r   r   r   r   r   r	   r“   r
   r•   Úscipy.ndimager)   Ú r   Úscipy.conftestr   Úmarkr   ÚusefixturesÚ
pytestmarkÚnameÚ__version__r,   r   rM   rc   rf   Úthread_unsaferh   ri   rk   rn   rp   rz   r   r€   r‡   rŠ   r‹   rŒ   r�   r‘   r˜   rª   r¾   rÃ   rÄ   rè   rì   r÷   rû   rü   rÿ   r  r  r
  r  r  r  r  r  r  r#  r%  r'  r)  r0  r2  r5  r6  r9  r<  r=  r>  r?  rB  rL  rO  rP  rR  rU  r]  rb  re  rh  rl  ro  rq  rs  rt  ru  rv  rw  ry  r}  r„  rˆ  rŠ  rŽ  r“  r•  r™  r›  rœ  rŸ  r   r¡  r£  r«  r¬  r³  r´  r¸  rº  r»  r¼  r¾  rÀ  rÄ  rÆ  rÈ  rË  rÍ  rÐ  rØ  rÚ  ÚparametrizeÚintcÚuintcr  r7   r7   r7   r8   Ú<module>   s   $
ÿ
R&







ÿ

W





	






	

	

	

		
									


 e