a
    ‡ù»jóÂ  ã                   @   s  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 d dlZd dlmZ d dlmZ ddlmZ G dd„ dƒZG d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"d#„ Z!d$d%„ Z"d&d'„ Z#d(d)„ Z$d*d+„ Z%d,d-„ Z&d.d/„ Z'd0d1„ Z(d2d3„ Z)d4d5„ Z*d6d7„ Z+d8d9„ Z,d:d;„ Z-d<d=„ Z.d>d?„ Z/d@dA„ Z0dBdC„ Z1dDdE„ Z2dFdG„ Z3dHdI„ Z4dJdK„ Z5dLdM„ Z6dNdO„ Z7dPdQ„ Z8dRdS„ Z9dTdU„ Z:dVdW„ Z;dXdY„ Z<dZd[„ Z=d\d]„ Z>d^d_„ Z?d`da„ Z@dbdc„ ZAddde„ ZBdfdg„ ZCdhdi„ ZDdjdk„ ZEdldm„ ZFdndo„ ZGdpdq„ ZHdrds„ ZIdtdu„ ZJdvdw„ ZKdxdy„ ZLdzd{„ 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£„ 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€G dâdã„ dãƒZ�ej‚ ƒdäej„ej…g¡dådæ„ ƒZ†dS )çé    N)Úassert_Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚassert_equalÚsuppress_warnings)Úraisesé   )Útypesc                   @   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_statszDndimage._measurements._stats() is a utility used by other functions.c                 C   sx   g d¢}g d¢}ddg}dD ]V}t  |¡ |¡}t  |¡ |¡}tjj|||d�\}}t|ddgƒ t|dd	gƒ qd S )
N©r   r
   é   é   ©r   r   r
   r
   r   r
   ©)é   )r   r   ©ÚlabelsÚindexr   ç      ð?ç       @©ÚnpÚarrayÚreshapeÚndimageÚ_measurementsZ_statsr   ©ÚselfÚxr   r   ÚshpÚcountsÚsums© r$   úKE:\soccer\ml_env\Lib\site-packages\scipy/ndimage/tests/test_measurements.pyÚtest_a   s    ÿ
zTest_measurements_stats.test_ac                 C   sx   g d¢}g d¢}ddg}dD ]V}t  |¡ |¡}t  |¡ |¡}tjj|||d�\}}t|ddgƒ t|dd	gƒ qd S )
Nr   ©r   r   é	   r(   r   r(   r   r   r   r   r   r   r   r$   r$   r%   Útest_b%   s    ÿ
zTest_measurements_stats.test_bc                 C   sŠ   g d¢}g d¢}ddg}dD ]h}t  |¡ |¡}t  |¡ |¡}tjj|||dd�\}}}t|ddgƒ t|d	d
gƒ t|dd
gƒ qd S )Nr   r   r   r
   r   T©r   r   Zcenteredr   r   r   ç      à?r   ©r   r    r   r   r!   r"   r#   Zcentersr$   r$   r%   Útest_a_centered3   s    ÿz'Test_measurements_stats.test_a_centeredc                 C   sŠ   g d¢}g d¢}ddg}dD ]h}t  |¡ |¡}t  |¡ |¡}tjj|||dd�\}}}t|ddgƒ t|d	d
gƒ t|dd
gƒ qd S )Nr   r'   r   r(   r   Tr*   r   r   r   r+   r   r,   r$   r$   r%   Útest_b_centered@   s    ÿz'Test_measurements_stats.test_b_centeredc                 C   sŠ   g d¢}g d¢}ddg}dD ]h}t  |¡ |¡}t  |¡ |¡}tjj|||dd�\}}}t|ddgƒ t|d	d
gƒ t|dd
gƒ qd S )Nr   )ç        r/   ç      "@r0   r/   r0   r   Tr*   r   r   r   r+   r   r,   r$   r$   r%   Útest_nonint_labelsM   s    ÿz*Test_measurements_stats.test_nonint_labelsN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r&   r)   r-   r.   r1   r$   r$   r$   r%   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 �]N\}}t jj|||d
�}tt|ƒdkƒ t jj|||dd�}tt|ƒdkƒ t|d ddgƒ t jj|||dd�}tt|ƒdkƒ t|d ddgƒ t jj|||ddd�}tt|ƒdkƒ t|d ddgƒ t|d ddgƒ t|d jjdƒ t jj|||ddd�}tt|ƒdkƒ t|d ddgƒ t|d ddgƒ t|d jjdƒ q:d S )N)r   r
   r   r   r   r   r
   r'   r(   )r/   r/   ç      @r7   r/   r7   r   T)r   r   Úfind_maxr   )r   r   Úfind_minr   )r   r   r9   Zfind_min_positionsé   Úi)r   r   r8   Zfind_max_positions)	r   r   Ú_selectr   Úlenr   r   ÚdtypeÚkind)r   r    Zcasesr   r   Úresultr$   r$   r%   Ú
test_basic^   sH    ýÿÿÿþþz#Test_measurements_select.test_basicN)r2   r3   r4   r5   rA   r$   r$   r$   r%   r6   [   s   r6   c                  C   s0   t  g ¡} t | ¡\}}t|dƒ t|dƒ d S ©Nr
   ©r   Úonesr   Úlabelr   r   ©ÚdataÚoutÚnr$   r$   r%   Útest_label01�   s    

rJ   c                  C   s0   t  g ¡} t | ¡\}}t|dƒ t|dƒ d S )Nr   ©r   Úzerosr   rE   r   r   rF   r$   r$   r%   Útest_label02ˆ   s    

rM   c                  C   s4   t  dg¡} t | ¡\}}t|dgƒ t|dƒ d S rB   rC   rF   r$   r$   r%   Útest_label03�   s    rN   c                  C   s4   t  dg¡} t | ¡\}}t|dgƒ t|dƒ d S ©Nr
   r   rK   rF   r$   r$   r%   Útest_label04–   s    rP   c                  C   s6   t  dg¡} t | ¡\}}t|g d¢ƒ t|dƒ d S )Né   )r
   r
   r
   r
   r
   r
   rC   rF   r$   r$   r%   Útest_label05�   s    rR   c                  C   s8   t  g d¢¡} t | ¡\}}t|g d¢ƒ t|dƒ d S )N)r
   r   r
   r
   r   r
   ©r
   r   r   r   r   r:   r:   ©r   r   r   rE   r   r   rF   r$   r$   r%   Útest_label06¤   s    rU   c               	   C   sx   t  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ƒ t|dƒ d S )N©r   r   r   r   r   r   r   rT   rF   r$   r$   r%   Útest_label07«   s     
û
ûrW   c               	   C   sx   t  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ƒ t|d
ƒ d S ©N©r
   r   r   r   r   r   ©r   r   r
   r
   r   r   ©r   r   r
   r
   r
   r   ©r
   r
   r   r   r   r   ©r   r   r   r
   r
   r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   ©r:   r:   r   r   r   r   ©r   r   r   r   r   r   r   rT   rF   r$   r$   r%   Útest_label08¼   s     
û
ûrb   c               	   C   s†   t  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ƒ t|dƒ d S )NrY   rZ   r[   r\   r]   r   r^   r_   )r   r   r   r   r   r   )r   r   r   r:   r:   r   r:   ©r   r   r   Úgenerate_binary_structurerE   r   r   ©rG   ÚstructrH   rI   r$   r$   r%   Útest_label09Í   s"    
û
ûrg   c                  C   sn   t  g d¢g d¢g d¢g d¢g¡} t dd¡}t | |¡\}}t|g d¢g d¢g d¢g d¢gƒ t|dƒ d S )NrV   )r   r
   r
   r   r
   r   )r   r
   r
   r
   r
   r   r   r
   rc   re   r$   r$   r%   Útest_label10ß   s    
ý
ýrh   c               
   C   sˆ   t D ]~} t g d¢g d¢g d¢g d¢g d¢g d¢g| ¡}t |¡\}}g d¢g d¢g d¢g d¢g d¢g d	¢g}t||ƒ t|d
ƒ qd S rX   ©r   r   r   r   rE   r   r   ©ÚtyperG   rH   rI   Úexpectedr$   r$   r%   Útest_label11í   s(    
ûûû
rm   c               
   C   sˆ   t D ]~} t g d¢g d¢g 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||ƒ t|dƒ qd S )NrY   rZ   r[   r\   r]   ©Úoutputr^   r_   r`   ra   r   ri   )rk   rG   rI   rl   r$   r$   r%   Útest_label11_inplace   s(    
ûûû
rp   c               	   C   s|   t D ]r} t g d¢g d¢g d¢g d¢g d¢g| ¡}t |¡\}}g d¢g d¢g d¢g d¢g d¢g}t||ƒ t|dƒ 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
   ri   rj   r$   r$   r%   Útest_label12  s$    
üüü
rq   c                  C   sp   t D ]f} t g d¢g d¢g d¢g d¢g| ¡}t |¡\}}g d¢g d¢g d¢g d¢g}t||ƒ t|dƒ 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
   ri   rj   r$   r$   r%   Útest_label13$  s     
ýüý
rr   c                  C   sL   t  dg¡} tD ]6}t jdg|d�}tj| |d�}t|dƒ t|dƒ qd S )NrQ   ©r>   rn   r
   )r   rD   r   rL   r   rE   r   r   ©rG   Útro   rI   r$   r$   r%   Útest_label_output_typed4  s    
rv   c                  C   sD   t  dg¡} tD ].}tj| |d�\}}t|dƒ |j|ksJ ‚qd S )NrQ   rn   r
   )r   rD   r   r   rE   r   r>   rt   r$   r$   r%   Útest_label_output_dtype=  s
    
rw   c                  C   s>   t  dg¡} tD ](}t  dg|¡}tttftj| |d� qd S )NrQ   é
   rn   )	r   rD   r   rL   Úassert_raisesÚRuntimeErrorÚ
ValueErrorr   rE   )rG   ru   ro   r$   r$   r%   Útest_label_output_wrong_sizeE  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 ]t}| |d d …d d …f }t|j	d ƒD ]J}||d d …d d …f }t
t ||¡d ||d d …d d …f ƒ |d7 }q²qŠd S )	NrG   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)éÿÿÿÿé   r~   )r}   r:   r:   r   r
   )r   ZloadtxtÚosÚpathÚjoinÚdirnameÚ__file__r   ÚrangeÚshaper   r   rE   )rG   ZstrelsÚresultsÚrr;   ÚdÚjÚsr$   r$   r%   Útest_label_structuring_elementsM  s*    ÿÿ
ÿ
ÿ


(r‹   c                  C   sH   ddd„} t  t j¡t  d¡krDd}t j t  |¡¡ |¡}| |ƒ d S )Nçffffffæ?r   c                 S   s8   | |k}t |jƒ}t |t ||¡¡\}}t |¡}d S )N)r=   r…   r   rE   rd   Úfind_objects)ZimgZthreshÚsizeÚmaskZrankZlaÚcoÚ_r$   r$   r%   ÚSEa  s    

ÿztest_ticket_742.<locals>.SEr;   )r:   éØ  r“   )rŒ   r   )r   r>   ZintpÚrandomÚrandÚprodr   )r’   r…   Úar$   r$   r%   Útest_ticket_742`  s
    
r˜   c                  C   sl   t  d¡} d| dd…dd…f< d| dd…dd…f< d| d< d| d< d| d< t | t  d	¡¡d dkshJ ‚dS )
z/Github issue #3025 - improper merging of labels)é<   i@  r
   Né  i  )é$   rš   )é#   i  )rœ   i  )r:   r:   )r   rL   r   rE   rD   )rˆ   r$   r$   r%   Útest_gh_issue_3025o  s    
r�   c                  C   sD   t j dd¡} t | dk¡\}}t|jt jt jfv ƒ t 	|¡ d S )Nrx   r+   )
r   r”   r•   r   rE   r   r>   Úint32Zint64r�   )Z
test_arrayrE   Zno_featuresr$   r$   r%   Útest_label_default_dtypez  s    rŸ   c                  C   s*   t jg td�} t | ¡}t|dgkƒ d S )Nrs   r$   )r   rD   Úintr   r�   r   ©rG   rH   r$   r$   r%   Útest_find_objects01‚  s    
r¢   c                  C   s(   t jg td�} t | ¡}t|g kƒ d S )Nrs   )r   rL   r    r   r�   r   r¡   r$   r$   r%   Útest_find_objects02ˆ  s    
r£   c                  C   s4   t jdgtd�} t | ¡}t|tddd ƒfgƒ d S )Nr
   rs   r   ©r   rD   r    r   r�   r   Úslicer¡   r$   r$   r%   Útest_find_objects03Ž  s    
r¦   c                  C   s(   t jdgtd�} t | ¡}t|g ƒ d S )Nr
   rs   )r   rL   r    r   r�   r   r¡   r$   r$   r%   Útest_find_objects04”  s    
r§   c                  C   s4   t jdgtd�} t | ¡}t|tddd ƒfgƒ d S )NrQ   rs   r   r¤   r¡   r$   r$   r%   Útest_find_objects05š  s    
r¨   c                  C   sJ   t  g d¢¡} t | ¡}t|tddd ƒftddd ƒftddd ƒfgƒ d S )NrS   r   r
   r   r   rQ   r   ©r   r   r   r�   r   r¥   r¡   r$   r$   r%   Útest_find_objects06   s    
þrª   c               	   C   sF   t  g d¢g d¢g d¢g d¢g d¢g d¢g¡} t | ¡}t|g ƒ d S )NrV   )r   r   r   r�   r   r¡   r$   r$   r%   Útest_find_objects07¨  s    
û
r«   c               
   C   sž   t  g d¢g d¢g d¢g d¢g d¢g d¢g¡} t | ¡}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ƒ d S )NrY   r^   r_   r`   ra   r   r
   r:   r   rQ   r   r©   r¡   r$   r$   r%   Útest_find_objects08³  s    
û
ýr¬   c               
   C   sŠ   t  g d¢g d¢g d¢g d¢g d¢g d¢g¡} t | ¡}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ƒ d S )NrY   r^   r_   rV   ra   r   r
   r:   r   rQ   r   r©   r¡   r$   r$   r%   Útest_find_objects09Á  s    
û
ýr­   c               	   C   s’   t  g d¢g d¢g d¢g d¢g d¢g d¢g¡} tj| dd�}g d¢}tt| ¡ ƒ|ƒ i }|D ]}t  | |k¡||< q^tj| dd�}t||ƒ d	S )
z Test dictionary keys and entriesrY   r^   r_   rV   ra   r   )Zignore_value)r
   r   r   N)r   r   r   Úvalue_indicesr   ÚlistÚkeysÚwhere)rG   ÚviZ	true_keysZtrueviÚkr$   r$   r%   Útest_value_indices01Ï  s    
ûr´   c                  C   sN   t jdt jd�} d}tt|d�� t | ¡ W d  ƒ n1 s@0    Y  dS )zTest input checking)rQ   r   rs   z(Parameter 'arr' must be an integer array)ÚmatchN)r   rL   Zfloat32ry   r{   r   r®   )rG   Úmsgr$   r$   r%   Útest_value_indices02ã  s    r·   c                  C   sŽ   dD ]„} t jddg ddg  ddg  t jd� | ¡}t  |¡}t |¡}tt| 	¡ ƒt|ƒƒ |D ] }t  
||k¡}t|| |ƒ qfqdS )z2Test different input array shapes, from 1-D to 4-D))r›   )é   r   )r:   r:   r   )r:   r:   r   r   é   r
   r   r:   rs   N)r   r   rž   r   Úuniquer   r®   r   r¯   r°   r±   )r…   r—   ZtrueKeysr²   r³   ZtrueNdxr$   r$   r%   Útest_value_indices03ë  s    0

r»   c                  C   s.   t D ]$} t g | ¡}t |¡}t|dƒ qd S )Nr/   )r   r   r   r   Úsumr   ©rk   Úinputro   r$   r$   r%   Ú
test_sum01÷  s    
r¿   c                  C   s2   t D ](} t ddg| ¡}t |¡}t|dƒ qd S )Nr   r   r/   )r   r   rL   r   r¼   r   r½   r$   r$   r%   Ú
test_sum02þ  s    
rÀ   c                  C   s.   t D ]$} t g | ¡}t |¡}t|dƒ qd S )Nr   )r   r   rD   r   r¼   r   r½   r$   r$   r%   Ú
test_sum03  s    
rÁ   c                  C   s2   t D ](} t ddg| ¡}t |¡}t|dƒ qd S )Nr
   r   ç      @©r   r   r   r   r¼   r   r½   r$   r$   r%   Ú
test_sum04  s    
rÄ   c                  C   s:   t D ]0} t ddgddgg| ¡}t |¡}t|dƒ qd S )Nr
   r   r:   r   g      $@rÃ   r½   r$   r$   r%   Ú
test_sum05  s    
rÅ   c                  C   s>   t  g t¡} tD ](}t  g |¡}tj|| d�}t|dƒ qd S )N©r   r/   ©r   r   Úboolr   r   r¼   r   ©r   rk   r¾   ro   r$   r$   r%   Ú
test_sum06  s
    rÊ   c                  C   sF   t  ddgt¡} tD ],}t  ddg|¡}tj|| d�}t|dƒ qd S )Nr   r   rÆ   r/   )r   rD   rÈ   r   rL   r   r¼   r   rÉ   r$   r$   r%   Ú
test_sum07"  s
    rË   c                  C   sF   t  ddgt¡} tD ],}t  ddg|¡}tj|| d�}t|dƒ qd S )Nr
   r   r   rÆ   r   rÇ   rÉ   r$   r$   r%   Ú
test_sum08*  s
    rÌ   c                  C   sN   t  ddgt¡} tD ]4}t  ddgddgg|¡}tj|| d�}t|dƒ qd S )Nr
   r   r   r:   r   rÆ   ç      @)r   r   rÈ   r   r   r¼   r   rÉ   r$   r$   r%   Ú
test_sum092  s
    rÎ   c                  C   sD   t  ddgt¡} t  ddgddggt¡}tj|| d�}t|dƒ d S ©Nr
   r   r   r:   r   rÆ   ç       @)r   r   rÈ   r   r¼   r   ©r   r¾   ro   r$   r$   r%   Ú
test_sum10:  s    rÒ   c                  C   sR   t  ddgt j¡} tD ]6}t  ddgddgg|¡}tj|| dd�}t|dƒ qd S )Nr
   r   r:   r   r   ç      @)r   r   Úint8r   r   r¼   r   rÉ   r$   r$   r%   Ú
test_sum11A  s    ÿrÕ   c                  C   sb   t  ddgddggt j¡} tD ]>}t  ddgddgg|¡}tj|| g d¢d�}t|g d¢ƒ qd S ©Nr
   r   r   r:   ©r   é   r   r   )rÍ   r/   g      @)r   r   rÔ   r   r   r¼   r   rÉ   r$   r$   r%   Ú
test_sum12J  s
    rÙ   c                  C   s†   t  ddgddggt j¡} tD ]b}t  ddgddgg|¡}tj|| g d¢d�}tj|| g d¢d�}||k ¡ srJ ‚t|g d¢ƒ qd S rÖ   )	r   r   rÔ   r   r   r¼   Z
sum_labelsÚallr   )r   rk   r¾   Z
output_sumZoutput_labelsr$   r$   r%   Útest_sum_labelsR  s    
ÿrÛ   c                  C   sN   t  ddgt¡} tD ]4}t  ddgddgg|¡}tj|| d�}t|dƒ qd S rÏ   )r   r   rÈ   r   r   Úmeanr   rÉ   r$   r$   r%   Útest_mean01^  s
    rÝ   c                  C   sD   t  ddgt¡} t  ddgddggt¡}tj|| d�}t|dƒ d S ©Nr
   r   r   r:   r   rÆ   r   )r   r   rÈ   r   rÜ   r   rÑ   r$   r$   r%   Útest_mean02f  s    rß   c                  C   sN   t  ddg¡} tD ]6}t  ddgddgg|¡}tj|| dd�}t|dƒ qd S )Nr
   r   r:   r   r   rÂ   )r   r   r   r   rÜ   r   rÉ   r$   r$   r%   Útest_mean03m  s    ÿrà   c                  C   s¨   t  ddgddggt j¡} t jdd��n tD ]X}t  ddgddgg|¡}tj|| g d¢d�}t|d	dg d
dgƒ tt  	|d ¡ƒ q,W d   ƒ n1 sš0    Y  d S )Nr
   r   r   Úignore©rÚ   r:   r×   r   r   rÍ   ç      @)
r   r   rÔ   Úerrstater   r   rÜ   r   r   ÚisnanrÉ   r$   r$   r%   Útest_mean04v  s    ÿræ   c                  C   sN   t  ddgt¡} tD ]4}t  ddgddgg|¡}tj|| d�}t|dƒ qd S rÞ   )r   r   rÈ   r   r   Úminimumr   rÉ   r$   r$   r%   Útest_minimum01�  s
    rè   c                  C   sD   t  ddgt¡} t  ddgddggt¡}tj|| d�}t|dƒ d S ©Nr
   r   r   r   rÆ   r   )r   r   rÈ   r   rç   r   rÑ   r$   r$   r%   Útest_minimum02‰  s    rê   c                  C   sN   t  ddg¡} tD ]6}t  ddgddgg|¡}tj|| dd�}t|dƒ qd S )Nr
   r   r:   r   r   rÐ   )r   r   r   r   rç   r   rÉ   r$   r$   r%   Útest_minimum03�  s    ÿrë   c                  C   s^   t  ddgddgg¡} tD ]>}t  ddgddgg|¡}tj|| g d¢d�}t|g d¢ƒ qd S )Nr
   r   r:   r   ©r   r:   rØ   r   )rÐ   rÍ   r/   )r   r   r   r   rç   r   rÉ   r$   r$   r%   Útest_minimum04™  s    ÿrí   c                  C   sN   t  ddgt¡} tD ]4}t  ddgddgg|¡}tj|| d�}t|dƒ qd S )Nr
   r   r   r:   r   rÆ   rÂ   )r   r   rÈ   r   r   Úmaximumr   rÉ   r$   r$   r%   Útest_maximum01¢  s
    rï   c                  C   sD   t  ddgt¡} t  ddgddggt¡}tj|| d�}t|dƒ d S ré   )r   r   rÈ   r   rî   r   rÑ   r$   r$   r%   Útest_maximum02ª  s    rð   c                  C   sN   t  ddg¡} tD ]6}t  ddgddgg|¡}tj|| dd�}t|dƒ qd S )Nr
   r   r:   r   r   rÍ   )r   r   r   r   rî   r   rÉ   r$   r$   r%   Útest_maximum03±  s    ÿrñ   c                  C   s^   t  ddgddgg¡} tD ]>}t  ddgddgg|¡}tj|| g d¢d�}t|g d¢ƒ qd S )Nr
   r   r:   r   rì   r   )rÂ   rÍ   r/   )r   r   r   r   rî   r   rÉ   r$   r$   r%   Útest_maximum04º  s    ÿrò   c                  C   s"   t  g d¢¡} tt | ¡dƒ d S )N)éýÿÿÿéþÿÿÿr}   r}   )r   r   r   r   rî   )r    r$   r$   r%   Útest_maximum05Ã  s    rõ   c                  C   sj   t  g d¢g d¢g d¢g d¢g¡} t  g d¢g d¢g d¢g d¢g¡}tj| |g d¢d	�}t|g d
¢ƒ d S )N©r
   r   r   r
   ©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   Úmedianr   ©r—   r   ro   r$   r$   r%   Útest_median01É  s    
ý
ýrÿ   c                  C   s:   t  g d¢g d¢g d¢g d¢g¡} t | ¡}t|dƒ d S )Nrö   r÷   rø   rù   r   ©r   r   r   rý   r   ©r—   ro   r$   r$   r%   Útest_median02Ö  s    
ý
r  c                  C   s`   t  g d¢g d¢g d¢g d¢g¡} t  g d¢g d¢g d¢g d¢g¡}tj| |d�}t|d	ƒ d S )
Nrö   r÷   rø   rù   rú   rû   rü   rÆ   rÂ   r   rþ   r$   r$   r%   Útest_median03ß  s    
ý
ýr  c                  C   s:   t jddgtd�} tj| t  d¡dgd�}t|dgƒ d S )Nr
   rs   ©r   r   r   )r   ÚasarrayrÈ   r   rý   rD   r   r  r$   r$   r%   Útest_median_gh12836_boolì  s    r  c                  C   s<   t jddgt jd�} tj| t  d¡dgd�}t|dgƒ d S )NéA   éF   rs   r  r
   r   g     àP@)r   r  rÔ   r   rý   rD   r   r  r$   r$   r%   Útest_median_no_int_overflowó  s    r	  c               
   C   s�   t jdd��p tD ]Z} t  g | ¡}tƒ �&}| td¡ t |¡}W d   ƒ n1 sT0    Y  t	t  
|¡ƒ qW d   ƒ n1 s‚0    Y  d S ©Nrá   râ   zMean of empty slice)r   rä   r   r   r   ÚfilterÚRuntimeWarningr   Úvariancer   rå   ©rk   r¾   Úsupro   r$   r$   r%   Útest_variance01ú  s    (r  c                  C   s0   t D ]&} t dg| ¡}t |¡}t|dƒ qd S ©Nr
   r/   ©r   r   r   r   r  r   r½   r$   r$   r%   Útest_variance02  s    
r  c                  C   s2   t D ](} t ddg| ¡}t |¡}t|dƒ qd S ©Nr
   r:   r   r  r½   r$   r$   r%   Útest_variance03  s    
r  c                  C   s(   t  ddgt¡} t | ¡}t|dƒ d S )Nr
   r   g      Ð?)r   r   rÈ   r   r  r   ©r¾   ro   r$   r$   r%   Útest_variance04  s    
r  c                  C   s>   g d¢} t D ],}t g d¢|¡}t || d¡}t|dƒ qd S ©N)r   r   r:   )r
   r:   rØ   r   r   r  rÉ   r$   r$   r%   Útest_variance05  s
    r  c                  C   sr   g d¢} t jdd��J tD ]4}t  g d¢|¡}t || g d¢¡}t|g d¢ƒ qW d   ƒ n1 sd0    Y  d S ©N)r   r   r:   r:   r   rá   râ   )r
   r:   rØ   rx   rØ   )r   r:   r   )r   r   r/   )r   rä   r   r   r   r  r   rÉ   r$   r$   r%   Útest_variance06   s    r  c               
   C   s�   t jdd��p tD ]Z} t  g | ¡}tƒ �&}| td¡ t |¡}W d   ƒ n1 sT0    Y  t	t  
|¡ƒ qW d   ƒ n1 s‚0    Y  d S r
  )r   rä   r   r   r   r  r  r   Ústandard_deviationr   rå   r  r$   r$   r%   Útest_standard_deviation01)  s    (r  c                  C   s0   t D ]&} t dg| ¡}t |¡}t|dƒ qd S r  ©r   r   r   r   r  r   r½   r$   r$   r%   Útest_standard_deviation023  s    
r  c                  C   s8   t D ].} t ddg| ¡}t |¡}t|t d¡ƒ qd S r  )r   r   r   r   r  r   Úsqrtr½   r$   r$   r%   Útest_standard_deviation03:  s    
r!  c                  C   s(   t  ddgt¡} t | ¡}t|dƒ d S )Nr
   r   r+   )r   r   rÈ   r   r  r   r  r$   r$   r%   Útest_standard_deviation04A  s    
r"  c                  C   s>   g d¢} t D ],}t g d¢|¡}t || d¡}t|dƒ qd S r  r  rÉ   r$   r$   r%   Útest_standard_deviation05G  s
    r#  c                  C   sr   g d¢} t jdd��J tD ]4}t  g d¢|¡}t || g d¢¡}t|g d¢ƒ qW d   ƒ n1 sd0    Y  d S r  ©r   rä   r   r   r   r  r   rÉ   r$   r$   r%   Útest_standard_deviation06O  s    r%  c                  C   sj   dg} t jdd��D tD ].}t  dg|¡}t || dg¡}t|dgƒ qW d   ƒ n1 s\0    Y  d S )Nr
   rá   râ   gl�§ `y¿r   r$  rÉ   r$   r$   r%   Útest_standard_deviation07X  s    r&  c                  C   sN   t  ddgt¡} tD ]4}t  ddgddgg|¡}tj|| d�}t|dƒ qd S )Nr
   r   r   r:   r   rÆ   ©r   r   )r   r   rÈ   r   r   Úminimum_positionr   rÉ   r$   r$   r%   Útest_minimum_position01a  s
    r)  c                  C   s@   t D ]6} t g d¢g d¢g d¢g| ¡}t |¡}t|dƒ qd S ©N©rQ   r   r   rQ   ©r:   r~   r   r   ©r
   rQ   r
   r
   ©r
   r   ©r   r   r   r   r(  r   r½   r$   r$   r%   Útest_minimum_position02i  s    
þþ
r0  c                  C   s6   t  g d¢g d¢g d¢gt¡} t | ¡}t|dƒ d S r*  ©r   r   rÈ   r   r(  r   r  r$   r$   r%   Útest_minimum_position03r  s    
þþ
r2  c                  C   s6   t  g d¢g d¢g d¢gt¡} t | ¡}t|dƒ d S )Nr+  )r:   r~   r
   r   r-  r'  r1  r  r$   r$   r%   Útest_minimum_position04z  s    
þþ
r3  c                  C   sJ   g d¢} t D ]8}t g d¢g d¢g d¢g|¡}t || ¡}t|dƒ qd S )N©r
   r   r   r   r+  r,  )r
   rQ   r   r:   )r   r   r/  rÉ   r$   r$   r%   Útest_minimum_position05‚  s    
þþr5  c                  C   sL   g d¢} t D ]:}t g d¢g d¢g d¢g|¡}t || d¡}t|dƒ qd S )N©r
   r   r:   r   r+  r,  r-  r   ©r   r
   r/  rÉ   r$   r$   r%   Útest_minimum_position06Œ  s    
þþr8  c                  C   sb   g d¢} t D ]P}t g d¢g d¢g d¢g|¡}t || ddg¡}t|d dƒ t|d	 d
ƒ qd S )Nr6  r+  r,  r-  r   r:   r   r7  r
   r.  r/  rÉ   r$   r$   r%   Útest_minimum_position07–  s    
þþÿr9  c                  C   sN   t  ddgt¡} tD ]4}t  ddgddgg|¡}tj|| d�}t|dƒ qd S )Nr
   r   r   r:   r   rÆ   )r
   r   )r   r   rÈ   r   r   Úmaximum_positionr   rÉ   r$   r$   r%   Útest_maximum_position01¢  s    ÿr;  c                  C   s@   t D ]6} t g d¢g d¢g d¢g| ¡}t |¡}t|dƒ qd S )Nr+  ©r:   r~   rØ   r   r-  r.  ©r   r   r   r   r:  r   r½   r$   r$   r%   Útest_maximum_position02«  s    
þþ
r>  c                  C   s6   t  g d¢g d¢g d¢gt¡} t | ¡}t|dƒ d S )Nr+  r<  r-  r'  )r   r   rÈ   r   r:  r   r  r$   r$   r%   Útest_maximum_position03´  s    
þþ
r?  c                  C   sJ   g d¢} t D ]8}t g d¢g d¢g d¢g|¡}t || ¡}t|dƒ qd S )Nr4  r+  r<  r-  ©r
   r
   r=  rÉ   r$   r$   r%   Útest_maximum_position04¼  s    
þþrA  c                  C   sL   g d¢} t D ]:}t g d¢g d¢g d¢g|¡}t || d¡}t|dƒ qd S )Nr4  r+  r<  r-  r
   r'  r=  rÉ   r$   r$   r%   Útest_maximum_position05Æ  s    
þþrB  c                  C   sb   g d¢} t D ]P}t g d¢g d¢g d¢g|¡}t || ddg¡}t|d dƒ t|d d	ƒ qd S )
Nr4  r+  r<  r-  r
   r   r   r'  r@  r=  rÉ   r$   r$   r%   Útest_maximum_position06Ð  s    
þþÿrC  c                  C   sh   t  g d¢¡} tD ]P}t  g d¢g d¢g d¢g|¡}t || ddg¡}t|d dƒ t|d	 d
ƒ qd S )N)r   rã   r/   ç      @r+  r<  r-  r   rD  r   r'  r
   )r   r:   )r   r   r   r   r:  r   rÉ   r$   r$   r%   Útest_maximum_position07Ü  s    
þþÿrE  c                  C   sŽ   t  ddgt¡} tD ]t}t  ddgddgg|¡}tj|| d�}tj|| d�}tj|| d�}tj|| d�}tj	|| d�}t
|||||fƒ qd S )Nr
   r   r   r:   r   rÆ   )r   r   rÈ   r   r   Úextremarç   rî   r(  r:  r   ©r   rk   r¾   Zoutput1Zoutput2Zoutput3Zoutput4Zoutput5r$   r$   r%   Útest_extrema01é  s    ÿÿrH  c                  C   s–   t  ddg¡} tD ]~}t  ddgddgg|¡}tj|| dd�}tj|| dd�}tj|| dd�}tj|| dd�}tj|| dd�}t	|||||fƒ qd S )Nr
   r   r:   r   r   )
r   r   r   r   rF  rç   rî   r(  r:  r   rG  r$   r$   r%   Útest_extrema02÷  s&    ÿÿÿÿÿrI  c                  C   sØ   t  ddgddgg¡} tD ]¸}t  ddgddgg|¡}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 |ƒ t	|d |ƒ t	|d |ƒ qd S )Nr
   r   r:   r   rì   r   r   )
r   r   r   r   rF  rç   rî   r(  r:  r   rG  r$   r$   r%   Útest_extrema03  s,    ÿÿÿÿÿrJ  c                  C   sÆ   g d¢} t D ]´}t g d¢g d¢g d¢g|¡}t || ddg¡}t || ddg¡}t || ddg¡}t || ddg¡}t || ddg¡}t	|d |ƒ t	|d |ƒ t	|d |ƒ t	|d |ƒ qd S )	Nr4  r+  r<  r-  r
   r   r   r:   )
r   r   r   r   rF  rç   rî   r(  r:  r   rG  r$   r$   r%   Útest_extrema04  s*    
þþÿÿrK  c                  C   sB   ddg} t D ]0}t ddgddgg|¡}t |¡}t|| ƒ qd S )Nr/   r
   r   ©r   r   r   r   Úcenter_of_massr   ©rl   rk   r¾   ro   r$   r$   r%   Útest_center_of_mass01/  s
    
rO  c                  C   sB   ddg} t D ]0}t ddgddgg|¡}t |¡}t|| ƒ qd S rO   rL  rN  r$   r$   r%   Útest_center_of_mass027  s
    
rP  c                  C   sB   ddg} t D ]0}t ddgddgg|¡}t |¡}t|| ƒ qd S ©Nr   r
   rL  rN  r$   r$   r%   Útest_center_of_mass03?  s
    
rR  c                  C   sB   ddg} t D ]0}t ddgddgg|¡}t |¡}t|| ƒ qd S rO   rL  rN  r$   r$   r%   Útest_center_of_mass04G  s
    
rS  c                  C   sB   ddg} t D ]0}t ddgddgg|¡}t |¡}t|| ƒ qd S )Nr+   r
   rL  rN  r$   r$   r%   Útest_center_of_mass05O  s
    
rT  c                  C   s8   ddg} t  ddgddggt¡}t |¡}t|| ƒ d S )Nr+   r
   r   r:   ©r   r   rÈ   r   rM  r   ©rl   r¾   ro   r$   r$   r%   Útest_center_of_mass06W  s    
rW  c                  C   sB   ddg} ddg}t  ddgddggt¡}t || ¡}t||ƒ d S )Nr
   r   r+   r/   r   r:   rU  ©r   rl   r¾   ro   r$   r$   r%   Útest_center_of_mass07^  s
    rY  c                  C   sD   ddg} ddg}t  ddgddggt¡}t || d¡}t||ƒ d S )Nr
   r   r+   r   rQ   r:   rU  rX  r$   r$   r%   Útest_center_of_mass08f  s
    rZ  c                  C   sH   ddg} ddg}t  ddgddggt¡}t || ddg¡}t||ƒ d S )Nr
   r   )r+   r/   )r+   r   rU  rX  r$   r$   r%   Útest_center_of_mass09n  s
    r[  c                  C   s2   t  d¡} t  d¡}t |ddd¡}t|| ƒ d S )Nrx   r   )r   rD   Zaranger   Ú	histogramr   rV  r$   r$   r%   Útest_histogram01v  s    

r]  c                  C   s@   g d¢} g d¢}t  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
   r:   r   r:   r:   r:   r:   r   r   rQ   r
   ©r   r   r   r\  r   rX  r$   r$   r%   Útest_histogram02}  s
    r_  c                  C   sZ   g d¢} g d¢}g d¢}t  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   r:   r   )r
   r
   r:   r   r:   rQ   r:   r:   r   r   rQ   r.  r
   r^  )r   Z	expected1Z	expected2r¾   ro   r$   r$   r%   Útest_histogram03…  s    r`  c                  C   s  t  g d¢g d¢g d¢g¡} t  g d¢g d¢g d¢g¡}tj| |ddgd�}t|d	d
gƒ tj| |ddgd�}t|ddgƒ tj| |ddgd�}t|t  ddg¡ƒ tj	| |ddgd�}t|d	d
gƒ tj
| |ddgd�}t|ddgƒ tj| |ddgd�}t|ddgƒ d S )N)rQ   r   r   r   r   )rØ   r(   r   r   r   )r   r   r   r:   rQ   )r
   r
   r   r   r   )r   r   r   r   r   r
   r   r   r7   rÍ   rã   r   rQ   r:   r(   )r   r   r   rÜ   r   r  r  r   r   rý   rç   rî   )r—   ZlblrÜ   ÚvarZstdZmedÚminÚmaxr$   r$   r%   Útest_stat_funcs_2d�  s    rd  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 )ÚTestWatershedIftc                 C   sà   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}tj||g d¢g d¢g d¢g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
   ©Ú	structure©r}   r}   r}   r}   r}   r}   r}   ©r}   r
   r
   r
   r
   r
   r}   ©r   r   Úuint8rÔ   r   Úwatershed_iftr   ©r   rG   ÚmarkersrH   rl   r$   r$   r%   Útest_watershed_ift01©  sH    
ùù
ùùþùz%TestWatershedIft.test_watershed_ift01c                 C   sÊ   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t ||¡}g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t||ƒ d S )	Nrf  rg  rh  ri  rj  rn  )r}   r}   r
   r
   r
   r}   r}   ro  rp  rs  r$   r$   r%   Útest_watershed_ift02Ç  sB    
ùù
ùùùz%TestWatershedIft.test_watershed_ift02c              
   C   s¸   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t ||¡}g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t||ƒ d S )	Nrf  rg  ©r   r
   r   r
   r   r
   r   ©r   r   r   r   r:   r   r   ©r   r   r   r   r   r   r}   rn  )r}   r}   r   r}   r:   r}   r}   ©r}   r   r   r:   r:   r:   r}   rp  rs  r$   r$   r%   Útest_watershed_ift03ã  s<    
úú
úúúz%TestWatershedIft.test_watershed_ift03c              
   C   sÎ   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}tj||g d¢g d¢g d¢gd�}g d¢g d	¢g d	¢g d	¢g d	¢g d	¢g d¢g}t||ƒ d S )
Nrf  rg  rw  rx  ry  rk  rl  rn  rz  rp  rs  r$   r$   r%   Útest_watershed_ift04ü  sF    
úú
úùþÿúz%TestWatershedIft.test_watershed_ift04c              
   C   sÎ   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}tj||g d¢g d¢g d¢gd�}g d¢g d	¢g d	¢g d	¢g d	¢g d	¢g d¢g}t||ƒ d S )
Nrf  rg  rw  )r   r   r:   r   r   r   r   ry  rk  rl  rn  )r}   r:   r:   r   r   r   r}   rp  rs  r$   r$   r%   Útest_watershed_ift05  sF    
úú
úùþÿúz%TestWatershedIft.test_watershed_ift05c              	   C   s¼   t  g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t  g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}tj||g d¢g d¢g d¢gd�}g d¢g d¢g d¢g d¢g d	¢g d	¢g}t||ƒ d S )
Nrh  rg  rf  ri  rj  rk  rl  ro  rn  rp  rs  r$   r$   r%   Útest_watershed_ift066  s@    
ûû
ûûþÿûz%TestWatershedIft.test_watershed_ift06c              	   C   sö   d}t j|t jd�}| ¡ }t  g d¢g d¢g d¢g d¢g d¢g d¢gt j¡|d< t  g d¢g d¢g d¢g d¢g d¢g d¢gt j¡}t j|t jd�}| ¡ }tj||g d	¢g d	¢g d	¢g|d
� g d¢g d¢g d¢g d¢g d¢g d¢g}t	||ƒ d S )N)r~   r   rs   rh  rg  rf  .ri  rj  rk  )rm  ro   ro  rn  )
r   rL   rq  Z	transposer   rÔ   Zint16r   rr  r   )r   r…   rG   rt  rH   rl   r$   r$   r%   Útest_watershed_ift07O  sL    
ûû
ûûþüûz%TestWatershedIft.test_watershed_ift07c                 C   s^   t  ddgddggt j¡}t  ddgddggt j¡}t ||¡}ddgddgg}t||ƒ d S )Né   r   r
   )r   r   Úuint16rÔ   r   rr  r   rs  r$   r$   r%   Útest_watershed_ift08n  s    
ÿÿ
ÿÿÿz%TestWatershedIft.test_watershed_ift08c                 C   sh   t  t  t j¡jdgddggt j¡}t  ddgddggt j¡}t ||¡}ddgddgg}t||ƒ d S rQ  )	r   r   Ziinfor�  rc  rÔ   r   rr  r   rs  r$   r$   r%   Útest_watershed_ift09y  s    ÿÿ
ÿÿÿz%TestWatershedIft.test_watershed_ift09N)r2   r3   r4   ru  rv  r{  r|  r}  r~  r  r‚  rƒ  r$   r$   r$   r%   re  §  s   re  Údtc                 C   sJ   t j d¡}d}|jd|dd�j| d�}t |¡}t| ¡ ƒ|ksFJ ‚d S )Né{   rØ   r   )rx   r¹   )ÚlowÚhighrŽ   rs   )	r   r”   Zdefault_rngZintegersZastyper   r®   r=   r°   )r„  ÚrngZmax_valÚimageZval_idxr$   r$   r%   Útest_gh_19423…  s
    
rŠ  )‡Úos.pathr   Únumpyr   Znumpy.testingr   r   r   r   r   r   r   Zpytestr	   ry   Zscipy.ndimager   Ú r   r   r6   rJ   rM   rN   rP   rR   rU   rW   rb   rg   rh   rm   rp   rq   rr   rv   rw   r|   r‹   r˜   r�   rŸ   r¢   r£   r¦   r§   r¨   rª   r«   r¬   r­   r´   r·   r»   r¿   rÀ   rÁ   rÄ   rÅ   rÊ   rË   rÌ   rÎ   rÒ   rÕ   rÙ   rÛ   rÝ   rß   rà   ræ   rè   rê   rë   rí   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  r3  r5  r8  r9  r;  r>  r?  rA  rB  rC  rE  rH  rI  rJ  rK  rO  rP  rR  rS  rT  rW  rY  rZ  r[  r]  r_  r`  rd  re  ÚmarkZparametrizeZintcZuintcrŠ  r$   r$   r$   r%   Ú<module>   sð   $	E&								
	
			

		

 _