o
    Eb                     @   s  d dl Zd dlZd dlmZmZmZmZm	Z	m
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 Z/dBdC Z0dDdE Z1dFdG Z2dHdI Z3dJdK Z4dLdM Z5dNdO Z6dPdQ Z7dRdS Z8dTdU Z9dVdW Z:dXdY Z;dZd[ Z<d\d] Z=d^d_ Z>d`da Z?dbdc Z@ddde ZAdfdg ZBdhdi ZCdjdk ZDdldm ZEdndo ZFdpdq ZGdrds ZHdtdu ZIdvdw ZJdxdy ZKdzd{ ZLd|d} ZMd~d ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd ZoddÄ Zpddń ZqddǄ ZrddɄ Zsdd˄ Ztdd̈́ Zuddτ Zvddф Zwddӄ ZxddՄ Zyddׄ Zzddل Z{ddۄ Z|G dd݄ d݃Z}dS )    N)assert_assert_array_almost_equalassert_equalassert_almost_equalassert_array_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   x   g d}g d}ddg}dD ]+}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%   G/usr/lib/python3/dist-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%   r%   r&   test_b   s   
zTest_measurements_stats.test_bc                 C      g d}g d}ddg}dD ]4}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_centered,      z'Test_measurements_stats.test_a_centeredc                 C   r+   )Nr   r(   r   r)   r   Tr,   r   r   r   r-   r   r.   r%   r%   r&   test_b_centered9   r0   z'Test_measurements_stats.test_b_centeredc                 C   r+   )Nr   )        r2         "@r3   r2   r3   r   Tr,   r   r   r   r-   r   r.   r%   r%   r&   test_nonint_labelsF   r0   z*Test_measurements_stats.test_nonint_labelsN)	__name__
__module____qualname____doc__r'   r*   r/   r1   r4   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 ]\}}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)   )r2   r2         @r:   r2   r:   r   T)r   r   find_maxr   )r   r   find_minr   )r   r   r<   Zfind_min_positions   i)r   r   r;   Zfind_max_positions)	r   r   Z_selectr   lenr   r   dtypekind)r    r!   casesr   r   resultr%   r%   r&   
test_basicW   sJ   z#Test_measurements_select.test_basicN)r5   r6   r7   r8   rD   r%   r%   r%   r&   r9   T   s    r9   c                  C   0   t g } t| \}}t|d t|d d S Nr	   r   onesr   labelr   r   dataoutnr%   r%   r&   test_label01z      

rN   c                  C   rE   )Nr   r   zerosr   rI   r   r   rJ   r%   r%   r&   test_label02   rO   rR   c                  C   s4   t dg} t| \}}t|dg t|d d S rF   rG   rJ   r%   r%   r&   test_label03      rS   c                  C   s4   t dg} t| \}}t|dg t|d d S Nr	   r   rP   rJ   r%   r%   r&   test_label04   rT   rV   c                  C   s6   t dg} t| \}}t|g d t|d d S )N   )r	   r	   r	   r	   r	   r	   rG   rJ   r%   r%   r&   test_label05   s   rX   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   rI   r   r   rJ   r%   r%   r&   test_label06   s   r[   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   rZ   rJ   r%   r%   r&   test_label07       

r]   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   rZ   rJ   r%   r%   r&   test_label08   r^   ri   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 )Nr`   ra   rb   rc   rd   r   re   rf   )r   r   r   r   r   r   )r   r   r   r=   r=   r   r=   r   r   r   generate_binary_structurerI   r   r   rK   structrL   rM   r%   r%   r&   test_label09   s"   

rn   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 )Nr\   )r   r	   r	   r   r	   r   )r   r	   r	   r	   r	   r   r   r	   rj   rl   r%   r%   r&   test_label10   s   

ro   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 r_   r
   r   r   r   rI   r   r   typerK   rL   rM   expectedr%   r%   r&   test_label11   *   

rt   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 )Nr`   ra   rb   rc   rd   outputre   rf   rg   rh   r   rp   )rr   rK   rM   rs   r%   r%   r&   test_label11_inplace   ru   rx   c               	   C   s|   t D ]9} 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	   rd   r	   rp   rq   r%   r%   r&   test_label12  s&   

ry   c                  C   sp   t D ]3} 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	   rp   rq   r%   r%   r&   test_label13  s"   

rz   c                  C   sL   t dg} tD ]}t jdg|d}tj| |d}t|d t|d qd S )NrW   r@   rv   r	   )r   rH   r
   rQ   r   rI   r   r   rK   trw   rM   r%   r%   r&   test_label_output_typed-  s   
r~   c                  C   sD   t dg} tD ]}tj| |d\}}t|d |j|ksJ qd S )NrW   rv   r	   )r   rH   r
   r   rI   r   r@   r|   r%   r%   r&   test_label_output_dtype6  s   
r   c                  C   s>   t dg} tD ]}t dg|}tttftj| |d qd S )NrW   
   rv   )	r   rH   r
   rQ   assert_raisesRuntimeError
ValueErrorr   rI   )rK   r}   rw   r%   r%   r&   test_label_output_wrong_size>  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7 }qYqEd S )	NrK   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   rI   )rK   Zstrelsresultsrr>   djsr%   r%   r&   test_label_structuring_elementsF  s.   




(
r   c                  C   sL   ddd} t t jt dkr$d}t jt ||}| | d S d S )Nffffff?r   c                 S   s8   | |k}t |j}t|t||\}}t|}d S )N)r?   r   r   rI   rk   find_objects)ZimgZthreshsizemaskZrankZlaco_r%   r%   r&   SEZ  s   

ztest_ticket_742.<locals>.SEr>   )r=     r   )r   r   )r   r@   ZintprandomrandZprodr   )r   r   ar%   r%   r&   test_ticket_742Y  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s4J dS )
z/Github issue #3025 - improper merging of labels)<   i@  r	   N  i  )$   r   )#   i  )r   i  )r=   r=   )r   rQ   r   rI   rH   )r   r%   r%   r&   test_gh_issue_3025h  s   
"r   c                  C   sD   t jdd} t| dk\}}t|jt jt jfv  t	| d S )Nr   r-   )
r   r   r   r   rI   r   r@   Zint32Zint64r   )Z
test_arrayrI   Zno_featuresr%   r%   r&   test_label_default_dtypes  s   r   c                  C   s*   t jg td} t| }t|dgk d S )Nr{   r%   )r   rH   intr   r   r   rK   rL   r%   r%   r&   test_find_objects01{  s   
r   c                  C   s(   t jg td} t| }t|g k d S )Nr{   )r   rQ   r   r   r   r   r   r%   r%   r&   test_find_objects02  s   
r   c                  C   4   t jdgtd} t| }t|tddd fg d S )Nr	   r{   r   r   rH   r   r   r   r   slicer   r%   r%   r&   test_find_objects03     
r   c                  C   s(   t jdgtd} t| }t|g  d S )Nr	   r{   )r   rQ   r   r   r   r   r   r%   r%   r&   test_find_objects04     
r   c                  C   r   )NrW   r{   r   r   r   r%   r%   r&   test_find_objects05  r   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 )NrY   r   r	   r   r   rW   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 )Nr\   )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 )Nr`   re   rf   rg   rh   r   r	   r=   r   rW   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 )Nr`   re   rf   r\   rh   r   r	   r=   r   rW   r   r   r   r%   r%   r&   test_find_objects09  s   


r   c                  C   .   t D ]} tg | }t|}t|d qd S )Nr2   )r
   r   r   r   sumr   rr   inputrw   r%   r%   r&   
test_sum01  
   
r   c                  C   2   t D ]} tddg| }t|}t|d qd S )Nr   r   r2   )r
   r   rQ   r   r   r   r   r%   r%   r&   
test_sum02  
   
r   c                  C   r   )Nr   )r
   r   rH   r   r   r   r   r%   r%   r&   
test_sum03  r   r   c                  C   r   )Nr	   r         @r
   r   r   r   r   r   r   r%   r%   r&   
test_sum04  r   r   c                  C   s:   t D ]} 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   r2   r   r   boolr
   r   r   r   r   rr   r   rw   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   r2   )r   rH   r   r
   rQ   r   r   r   r   r%   r%   r&   
test_sum07     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  r   r   c                  C   N   t ddgt} tD ]}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_sum09     r   c                  C   D   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   rw   r%   r%   r&   
test_sum10     r   c                  C   sR   t ddgt j} tD ]}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_sum11  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   r2   g      @)r   r   r   r
   r   r   r   r   r%   r%   r&   
test_sum12  s   r   c                  C   s   t ddgddggt j} tD ]1}t ddgddgg|}tj|| g dd}tj|| g dd}||k s9J t|g d qd S r   )	r   r   r   r
   r   r   Z
sum_labelsallr   )r   rr   r   Z
output_sumZoutput_labelsr%   r%   r&   test_sum_labels#  s   
r   c                  C   r   r   )r   r   r   r
   r   meanr   r   r%   r%   r&   test_mean01/  r   r   c                  C   r   Nr	   r   r   r=   r   r   r   )r   r   r   r   r   r   r   r%   r%   r&   test_mean027  r   r   c                  C   N   t ddg} tD ]}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_mean03>     r   c                  C   s   t ddgddggt j} t jdd8 tD ],}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    d S 1 sNw   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_mean04G  s   "r   c                  C   r   r   )r   r   r   r
   r   minimumr   r   r%   r%   r&   test_minimum01R  r   r   c                  C   D   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_minimum02Z  r   r   c                  C   r   )Nr	   r   r=   r   r   r   )r   r   r
   r   r   r   r   r%   r%   r&   test_minimum03a  r   r   c                  C   ^   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   r2   )r   r   r
   r   r   r   r   r%   r%   r&   test_minimum04j     r   c                  C   r   )Nr	   r   r   r=   r   r   r   )r   r   r   r
   r   maximumr   r   r%   r%   r&   test_maximum01s  r   r   c                  C   r   r   )r   r   r   r   r   r   r   r%   r%   r&   test_maximum02{  r   r   c                  C   r   )Nr	   r   r=   r   r   r   )r   r   r
   r   r   r   r   r%   r%   r&   test_maximum03  r   r   c                  C   r   )Nr	   r   r=   r   r   r   )r   r   r2   )r   r   r
   r   r   r   r   r%   r%   r&   test_maximum04  r   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	   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   medianr   r   r   rw   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   rw   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	   r{   r   r   r   )r   asarrayr   r   r  rH   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 )NA   F   r{   r  r	   r   g     P@)r   r  r   r   r  rH   r   r
  r%   r%   r&   test_median_no_int_overflow  s   r  c               
   C      t jdd9 tD ]-} t g | }t }|td t|}W d    n1 s*w   Y  t	t 
| q	W d    d S 1 sBw   Y  d S Nr   r   zMean of empty slice)r   r   r
   r   r   filterRuntimeWarningr   variancer   r   rr   r   suprw   r%   r%   r&   test_variance01     "r  c                  C   0   t D ]} tdg| }t|}t|d qd S Nr	   r2   r
   r   r   r   r  r   r   r%   r%   r&   test_variance02  
   
r  c                  C   r   Nr	   r=   r   r  r   r%   r%   r&   test_variance03  r   r"  c                  C   (   t ddgt} t| }t|d d S )Nr	   r   g      ?)r   r   r   r   r  r   r   rw   r%   r%   r&   test_variance04  r   r%  c                  C   >   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     r(  c                  C   t   g d} t jdd& tD ]}t g d|}t|| g d}t|g d qW d    d S 1 s3w   Y  d S N)r   r   r=   r=   r   r   r   )r	   r=   r   r   r   )r   r=   r   )r   r   r2   )r   r   r
   r   r   r  r   r   r%   r%   r&   test_variance06     "r,  c               
   C   r  r  )r   r   r
   r   r   r  r  r   standard_deviationr   r   r  r%   r%   r&   test_standard_deviation01  r  r/  c                  C   r  r  r
   r   r   r   r.  r   r   r%   r%   r&   test_standard_deviation02  r   r1  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
   
r3  c                  C   r#  )Nr	   r   r-   )r   r   r   r   r.  r   r$  r%   r%   r&   test_standard_deviation04  r   r4  c                  C   r&  r'  r0  r   r%   r%   r&   test_standard_deviation05  r)  r5  c                  C   r*  r+  r   r   r
   r   r   r.  r   r   r%   r%   r&   test_standard_deviation06   r-  r7  c                  C   sl   dg} t jdd# tD ]}t dg|}t|| dg}t|dg qW d    d S 1 s/w   Y  d S )Nr	   r   r   gl `yr   r6  r   r%   r%   r&   test_standard_deviation07)  s   "r8  c                  C   r   )Nr	   r   r   r=   r   r   r   r   )r   r   r   r
   r   minimum_positionr   r   r%   r%   r&   test_minimum_position012  r   r;  c                  C   @   t D ]} tg dg dg dg| }t|}t|d qd S NrW   r   r   rW   r=   r   r   r   r	   rW   r	   r	   r	   r   r
   r   r   r   r:  r   r   r%   r%   r&   test_minimum_position02:     

rC  c                  C   6   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_position03C     

rG  c                  C   rE  )Nr>  )r=   r   r	   r   r@  r9  rF  r$  r%   r%   r&   test_minimum_position04K  rH  rI  c                  C   J   g d} t D ]}tg dg dg dg|}t|| }t|d qd S )Nr	   r   r   r   r>  r?  )r	   rW   r   r=   )r   r   rB  r   r%   r%   r&   test_minimum_position05S     
rL  c                  C   L   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	   rB  r   r%   r%   r&   test_minimum_position06]     
rQ  c                  C   sb   g d} t D ](}tg dg dg dg|}t|| ddg}t|d d t|d	 d
 qd S )NrO  r>  r?  r@  r   r=   r   rP  r	   rA  rB  r   r%   r%   r&   test_minimum_position07g     
rS  c                  C   r   )Nr	   r   r   r=   r   r   )r	   r   )r   r   r   r
   r   maximum_positionr   r   r%   r%   r&   test_maximum_position01s  s   rV  c                  C   r<  )Nr>  r=   r   r   r   r@  rA  r
   r   r   r   rU  r   r   r%   r%   r&   test_maximum_position02|  rD  rY  c                  C   rE  )Nr>  rW  r@  r9  )r   r   r   r   rU  r   r$  r%   r%   r&   test_maximum_position03  rH  rZ  c                  C   rJ  )NrK  r>  rW  r@  r	   r	   rX  r   r%   r%   r&   test_maximum_position04  rM  r\  c                  C   rN  )NrK  r>  rW  r@  r	   r9  rX  r   r%   r%   r&   test_maximum_position05  rR  r]  c                  C   sb   g d} t D ](}tg dg dg dg|}t|| ddg}t|d d t|d d	 qd S )
NrK  r>  rW  r@  r	   r   r   r9  r[  rX  r   r%   r%   r&   test_maximum_position06  rT  r^  c                  C   sh   t g d} tD ](}t g dg dg dg|}t|| ddg}t|d d t|d	 d
 q	d S )N)r   r   r2         @r>  rW  r@  r   r_  r   r9  r	   )r   r=   )r   r   r
   r   rU  r   r   r%   r%   r&   test_maximum_position07  s   
r`  c                  C   s   t ddgt} tD ]:}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:  rU  r   r   rr   r   Zoutput1Zoutput2Zoutput3Zoutput4Zoutput5r%   r%   r&   test_extrema01  s   rc  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   ra  r   r   r:  rU  r   rb  r%   r%   r&   test_extrema02  s(   rd  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   ra  r   r   r:  rU  r   rb  r%   r%   r&   test_extrema03  s.   re  c                  C   s   g d} t D ]Z}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 )	NrK  r>  rW  r@  r	   r   r   r=   )
r
   r   r   r   ra  r   r   r:  rU  r   rb  r%   r%   r&   test_extrema04  s,   
rf  c                  C   sB   ddg} t D ]}tddgddgg|}t|}t||  qd S )Nr2   r	   r   r
   r   r   r   center_of_massr   rs   rr   r   rw   r%   r%   r&   test_center_of_mass01      
rj  c                  C   sB   ddg} t D ]}tddgddgg|}t|}t||  qd S rU   rg  ri  r%   r%   r&   test_center_of_mass02  rk  rl  c                  C   sB   ddg} t D ]}tddgddgg|}t|}t||  qd S )Nr   r	   rg  ri  r%   r%   r&   test_center_of_mass03  rk  rm  c                  C   sB   ddg} t D ]}tddgddgg|}t|}t||  qd S rU   rg  ri  r%   r%   r&   test_center_of_mass04  rk  rn  c                  C   sB   ddg} t D ]}tddgddgg|}t|}t||  qd S )Nr-   r	   rg  ri  r%   r%   r&   test_center_of_mass05   rk  ro  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   rh  r   rs   r   rw   r%   r%   r&   test_center_of_mass06(  s   
rr  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-   r2   r   r=   rp  r   rs   r   rw   r%   r%   r&   test_center_of_mass07/  s
   rt  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   rW   r=   rp  rs  r%   r%   r&   test_center_of_mass087  s
   ru  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-   r2   )r-   r   rp  rs  r%   r%   r&   test_center_of_mass09?  s
   rv  c                  C   s2   t d} t d}t|ddd}t||  d S )Nr   r   )r   rH   Zaranger   	histogramr   rq  r%   r%   r&   test_histogram01G  s   

rx  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   rW   r	   r   r   r   rw  r   rs  r%   r%   r&   test_histogram02N  s
   rz  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=   rW   r=   r=   r   r   rW   rA  r	   ry  )r   Z	expected1Z	expected2r   rw   r%   r%   r&   test_histogram03V  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)rW   r   r   r   r   )r   r)   r   r   r   )r   r   r   r=   rW   )r	   r	   r   r   r   )r   r   r   r   r   r	   r   r   r:   r   r   r   rW   r=   r)   )r   r   r   r   r   r  r.  r   r2  r  r   r   )r   Zlblr   varZstdZmedminmaxr%   r%   r&   test_stat_funcs_2da  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 )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    rK   markersrL   rs   r%   r%   r&   test_watershed_ift01z  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 )	Nr  r  r  r  r  r  )r   r   r	   r	   r	   r   r   r  r  r  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 )	Nr  r  r   r	   r   r	   r   r	   r   r   r   r   r   r=   r   r   r   r   r   r   r   r   r   r  )r   r   r   r   r=   r   r   r   r   r   r=   r=   r=   r   r  r  r%   r%   r&   test_watershed_ift03  s<   

z%TestWatershedIft.test_watershed_ift03c              
   C      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 )
Nr  r  r  r  r  r  r  r  r  r  r  r%   r%   r&   test_watershed_ift04  F   

z%TestWatershedIft.test_watershed_ift04c              
   C   r  )
Nr  r  r  )r   r   r=   r   r   r   r   r  r  r  r  )r   r=   r=   r   r   r   r   r  r  r%   r%   r&   test_watershed_ift05  r  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 )
Nr  r  r  r  r  r  r  r  r  r  r  r%   r%   r&   test_watershed_ift06  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   r{   r  r  r  .r  r  r  )r  rw   r  r  )
r   rQ   r  Z	transposer   r   Zint16r   r  r   r    r   rK   r  rL   rs   r%   r%   r&   test_watershed_ift07   sL   

z%TestWatershedIft.test_watershed_ift07c                 C   sb   d}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 )Nr      r   r	   )r   r   Zuint16r   r   r  r   r  r%   r%   r&   test_watershed_ift08?  s    

z%TestWatershedIft.test_watershed_ift08N)r5   r6   r7   r  r  r  r  r  r  r  r  r%   r%   r%   r&   r  x  s    r  )~os.pathr   Znumpyr   Znumpy.testingr   r   r   r   r   r   Zpytestr   r   Zscipy.ndimager    r
   r   r9   rN   rR   rS   rV   rX   r[   r]   ri   rn   ro   rt   rx   ry   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   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r"  r%  r(  r,  r/  r1  r3  r4  r5  r7  r8  r;  rC  rG  rI  rL  rQ  rS  rV  rY  rZ  r\  r]  r^  r`  rc  rd  re  rf  rj  rl  rm  rn  ro  rr  rt  ru  rv  rx  rz  r{  r  r  r%   r%   r%   r&   <module>   s     E&								
	
			

		

