a
    BCCf5                     @   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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 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|ddۄ Z}dd݄ Z~dd߄ Zdd ZG dd dZd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$   a/var/www/html/django/DPS/env/lib/python3.9/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_centered2   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_labelsL   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   Z   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_typed3  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_sizeD  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 }qqd 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_elementsL  s*    




(r   c                  C   sH   ddd} t t jt dkrDd}t jt ||}| | d S )Nffffff?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%   SE`  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_3025n  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_dtypey  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_sum091  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_sum109  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_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   r/   g      @)r   r   r   r   r   r   r   r   r$   r$   r%   
test_sum12I  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_labelsQ  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_mean02e  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_mean03l  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 s0    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_mean04u  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 )NA   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 s0    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 s0    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_deviation022  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_deviation039  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_deviation04@  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_deviation05F  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_deviation06N  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 `yr   r$  r   r$   r$   r%   test_standard_deviation07W  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_position01`  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_position02h  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_position03q  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_position04y  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_mass026  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_mass04F  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_mass05N  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_mass06V  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_mass08e  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_mass09m  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_histogram01u  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_ift065  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_ift07N  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_ift08m  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_ift09x  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  )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  r$   r$   r$   r%   <module>   s   $	E&								
	
			

		

