U
    Gvf                     @   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|dd݄ Z}dd߄ Z~dd ZG dd dZd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   s   ddddg}ddddg}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   labelsindex      ?       @nparrayreshapendimage_measurementsZ_statsr   selfxr   r   shpcountssums r"   I/tmp/pip-unpacked-wheel-96ln3f52/scipy/ndimage/tests/test_measurements.pytest_a   s      
zTest_measurements_stats.test_ac                 C   s   ddddg}ddddg}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#   test_b   s      
zTest_measurements_stats.test_bc                 C   s   ddddg}ddddg}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!   Zcentersr"   r"   r#   test_a_centered,   s       z'Test_measurements_stats.test_a_centeredc                 C   s   ddddg}ddddg}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%   r   Tr'   r   r   r(   r   r)   r"   r"   r#   test_b_centered9   s       z'Test_measurements_stats.test_b_centeredc                 C   s   ddddg}ddddg}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           g      "@r   Tr'   r   r   r(   r   r)   r"   r"   r#   test_nonint_labelsF   s       z*Test_measurements_stats.test_nonint_labelsN)	__name__
__module____qualname____doc__r$   r&   r*   r+   r-   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  ddddg}ddddgddgfddddgddgfddddg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 qJd S )Nr   r	   r   r   r%   r,         @r   T)r   r   find_max)r   r   find_min)r   r   r5   Zfind_min_positions   i)r   r   r4   Zfind_max_positions)	r   r   _selectr   lenr   r   dtypekind)r   r   Zcasesr   r   resultr"   r"   r#   
test_basicW   sd                  z#Test_measurements_select.test_basicN)r.   r/   r0   r1   r=   r"   r"   r"   r#   r2   T   s   r2   c                  C   s0   t g } t| \}}t|d t|d d S Nr	   r   onesr   labelr   r   dataoutnr"   r"   r#   test_label01z   s    

rF   c                  C   s0   t g } t| \}}t|d t|d d S Nr   r   zerosr   rA   r   r   rB   r"   r"   r#   test_label02   s    

rJ   c                  C   s4   t dg} t| \}}t|dg t|d d S r>   r?   rB   r"   r"   r#   test_label03   s    rK   c                  C   s4   t dg} t| \}}t|dg t|d d S Nr	   r   rH   rB   r"   r"   r#   test_label04   s    rM   c                  C   s<   t dg} t| \}}t|dddddg t|d d S )N   r	   r?   rB   r"   r"   r#   test_label05   s    rO   c                  C   sH   t ddddddg} t| \}}t|ddddddg t|d d S Nr	   r   r   r6   r   r   r   rA   r   r   rB   r"   r"   r#   test_label06   s    rR   c                  C   s   t ddddddgddddddgddddddgddddddgddddddgddddddgg} t| \}}t|ddddddgddddddgddddddgddddddgddddddgddddddgg t|d d S rG   rQ   rB   r"   r"   r#   test_label07   s     rS   c                  C   s   t ddddddgddddddgddddddgddddddgddddddgddddddgg} t| \}}t|ddddddgddddddgddddddgddddddgddddddgddddddgg t|d d S Nr	   r   r   r6   r   rQ   rB   r"   r"   r#   test_label08   s     rU   c                  C   s   t ddddddgddddddgddddddgddddddgddddddgddddddgg} tdd}t| |\}}t|ddddddgddddddgddddddgddddddgddddddgddddddgg t|d d S rP   r   r   r   generate_binary_structurerA   r   r   rC   structrD   rE   r"   r"   r#   test_label09   s"    rZ   c                  C   s   t ddddddgddddddgddddddgddddddgg} tdd}t| |\}}t|ddddddgddddddgddddddgddddddgg t|d d S )Nr   r	   r   rV   rX   r"   r"   r#   test_label10   s    r[   c                  C   s   t D ]} tddddddgddddddgddddddgddddddgddddddgddddddgg| }t|\}}ddddddgddddddgddddddgddddddgddddddgddddddgg}t|| t|d qd S rT   r
   r   r   r   rA   r   r   typerC   rD   rE   expectedr"   r"   r#   test_label11   s(    
r`   c                  C   s   t D ]} tddddddgddddddgddddddgddddddgddddddgddddddgg| }tj||d}ddddddgddddddgddddddgddddddgddddddgddddddgg}t|| t|d qd S )Nr	   r   outputr   r6   r   r\   )r^   rC   rE   r_   r"   r"   r#   test_label11_inplace   s(    
rc   c                  C   s   t D ]} tddddddgddddddgddddddgddddddgddddddgg| }t|\}}ddddddgddddddgddddddgddddddgddddddgg}t|| t|d qd S Nr   r	   r\   r]   r"   r"   r#   test_label12  s$    
re   c                  C   s   t D ]} tdddddddddddgdddddddddddgdddddddddddgdddddddddddgg| }t|\}}dddddddddddgdddddddddddgdddddddddddgdddddddddddgg}t|| t|d qd S rL   r\   r]   r"   r"   r#   test_label13  s     
rf   c                  C   sL   t dg} tD ]6}t jdg|d}tj| |d}t|d t|d qd S )NrN   r:   ra   r	   )r   r@   r
   rI   r   rA   r   r   rC   trb   rE   r"   r"   r#   test_label_output_typed-  s    
rj   c                  C   sD   t dg} tD ].}tj| |d\}}t|d |j|kstqd S )NrN   ra   r	   )r   r@   r
   r   rA   r   r:   AssertionErrorrh   r"   r"   r#   test_label_output_dtype6  s
    
rl   c                  C   s>   t dg} tD ](}t dg|}tttftj| |d qd S )NrN   
   ra   )	r   r@   r
   rI   assert_raisesRuntimeError
ValueErrorr   rA   )rC   ri   rb   r"   r"   r#   test_label_output_wrong_size>  s      rq   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 )	NrC   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)   rs   )rr   r6   r6   r   r	   )r   Zloadtxtospathjoindirname__file__r   rangeshaper   r   rA   )rC   Zstrelsresultsrr7   djsr"   r"   r#   test_label_structuring_elementsF  s4     

  

  


(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)r9   rz   r   rA   rW   find_objects)imgZthreshsizemaskZrankZlaco_r"   r"   r#   SEZ  s    

ztest_ticket_742.<locals>.SEr7   )r6     r   )r   r   )r   r:   Zintprandomrandprodr   )r   rz   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shtdS )
z/Github issue #3025 - improper merging of labels)<   i@  r	   N  i  )$   r   )#   i  )r   i  )r6   r6   )r   rI   r   rA   r@   rk   )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k t	| d S )Nrm   r(   )
r   r   r   r   rA   r   r:   int32Zint64r   )Z
test_arrayrA   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 )Nrg   r"   )r   r@   intr   r   r   rC   rD   r"   r"   r#   test_find_objects01{  s    
r   c                  C   s(   t jg td} t| }t|g k d S )Nrg   )r   rI   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	   rg   r   r   r@   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	   rg   )r   rI   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 )NrN   rg   r   r   r   r"   r"   r#   test_find_objects05  s    
r   c                  C   sR   t ddddddg} t| }t|tddd ftddd ftddd fg d S Nr	   r   r   r6   r   rN   r   r   r   r   r   r   r   r   r"   r"   r#   test_find_objects06  s    
r   c                  C   sv   t ddddddgddddddgddddddgddddddgddddddgddddddgg} t| }t|g  d S rG   )r   r   r   r   r   r   r"   r"   r#   test_find_objects07  s    
r   c                  C   s   t ddddddgddddddgddddddgddddddgddddddgddddddg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 r   r   r   r"   r"   r#   test_find_objects08  s    
r   c                  C   s   t ddddddgddddddgddddddgddddddgddddddgddddddg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	   r   r   r   r6   rN   r   r   r   r"   r"   r#   test_find_objects09  s    
r   c                  C   s   t ddddddgddddddgddddddgddddddgddddddgddddddgg} tj| dd}dddg}tt| | i }|D ]}t | |k||< qtj| dd}t|| dS )z Test dictionary keys and entriesr	   r   r   r   )Zignore_valueN)r   r   r   value_indicesr   listkeyswhere)rC   viZ	true_keysZtruevikr"   r"   r#   test_value_indices01  s    
r   c               	   C   s:   t jdt jd} d}tt|d t|  W 5 Q R X dS )zTest input checking)rN   r   rg   z(Parameter 'arr' must be an integer array)matchN)r   rI   Zfloat32rn   rp   r   r   )rC   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   )r6   r6   r   )r6   r6   r   r      r	   r   r6   rg   N)r   r   r   r   uniquer   r   r   r   r   r   )rz   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   r^   inputrb   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   rI   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   r@   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   r6   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   r^   r   rb   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   r@   r   r
   rI   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   r6   r   r         @)r   r   r   r
   r   r   r   r   r"   r"   r#   
test_sum09+  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   r6   r   r          @)r   r   r   r   r   r   r   r   rb   r"   r"   r#   
test_sum103  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   r6   r   r         @)r   r   int8r
   r   r   r   r   r"   r"   r#   
test_sum11:  s    r   c                  C   sf   t ddgddggt j} tD ]B}t ddgddgg|}tj|| dddgd}t|ddd	g qd S 
Nr	   r   r   r6      r   r   r,   g      @)r   r   r   r
   r   r   r   r   r"   r"   r#   
test_sum12C  s
    r   c                  C   s   t ddgddggt j} tD ]h}t ddgddgg|}tj|| dddgd}tj|| dddgd}||k svtt	|ddd	g qd S r   )
r   r   r   r
   r   r   Z
sum_labelsallrk   r   )r   r^   r   Z
output_sumZoutput_labelsr"   r"   r#   test_sum_labelsK  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_mean01W  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   r6   r   r   r   )r   r   r   r   r   r   r   r"   r"   r#   test_mean02_  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   r6   r   r   r   )r   r   r
   r   r   r   r   r"   r"   r#   test_mean03f  s    r   c               	   C   s   t ddgddggt j} t jddf tD ]Z}t ddgddgg|}tj|| dddgd}t|d	dg d
dg tt 	|d  q,W 5 Q R X d S )Nr	   r   r   ignorer   r6   r   r   r   r         @)
r   r   r   errstater
   r   r   r   r   isnanr   r"   r"   r#   test_mean04o  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_minimum01z  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   r6   r   r   r   )r   r   r
   r   r   r   r   r"   r"   r#   test_minimum03  s    r   c                  C   sb   t ddgddgg} tD ]B}t ddgddgg|}tj|| dddgd}t|ddd	g qd S )
Nr	   r   r6   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   r6   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   r6   r   r   r   )r   r   r
   r   r   r   r   r"   r"   r#   test_maximum03  s    r   c                  C   sb   t ddgddgg} tD ]B}t ddgddgg|}tj|| dddgd}t|ddd	g qd S )
Nr	   r   r6   r   r   r   r   r   r,   )r   r   r
   r   r   r   r   r"   r"   r#   test_maximum04  s    r   c                  C   s$   t dddg} tt| d d S )Nrr   )r   r   r   r   r   )r   r"   r"   r#   test_maximum05  s    r   c               	   C   s   t ddddgddddgddddgddddgg} t ddddgddddgddddgddddgg}tj| |dddgd	}t|d
ddg d S )Nr	   r   r   rN   r6   r   rs   r%   r   r   r   r   )r   r   r   medianr   r   r   rb   r"   r"   r#   test_median01  s    





r   c               	   C   sJ   t ddddgddddgddddgddddgg} t| }t|d	 d S )
Nr	   r   r   rN   r6   r   rs   r%   r   r   r   r   r   r   r   rb   r"   r"   r#   test_median02  s    



r   c               	   C   s   t ddddgddddgddddgddddgg} t ddddgddddgddddgddddgg}tj| |d	}t|d
 d S )Nr	   r   r   rN   r6   r   rs   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	   rg   r   r   r   )r   asarrayr   r   r   r@   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   rg   r   r	   r   g     P@)r   r   r   r   r   r@   r   r   r"   r"   r#   test_median_no_int_overflow  s    r   c                  C   sh   t jddR tD ]F} t g | }t }|td t|}W 5 Q R X t	t 
| qW 5 Q R X d S Nr   r   zMean of empty slice)r   r   r
   r   r   filterRuntimeWarningr   variancer   r   r^   r   suprb   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	   r6   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   rb   r"   r"   r#   test_variance04  s    
r  c                  C   sB   dddg} t D ].}tdddg|}t|| d}t|d qd S Nr   r6   r	   r   r   r   r   r"   r"   r#   test_variance05  s
    
r  c               	   C   sn   dddddg} t jddJ tD ]>}t dddddg|}t|| dddg}t|d	d	d
g q W 5 Q R X d S Nr   r6   r   r   r   r	   r   rm   r   r,   )r   r   r
   r   r   r   r   r   r"   r"   r#   test_variance06  s    r	  c                  C   sh   t jddR tD ]F} t g | }t }|td t|}W 5 Q R X t	t 
| qW 5 Q R X 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_deviation02,  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_deviation033  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   sB   dddg} t D ].}tdddg|}t|| d}t|d qd S r  r  r   r"   r"   r#   test_standard_deviation05@  s
    
r  c               	   C   sn   dddddg} t jddJ tD ]>}t dddddg|}t|| dddg}t|d	d	d
g q W 5 Q R X d S r  r   r   r
   r   r   r
  r   r   r"   r"   r#   test_standard_deviation06H  s    r  c               	   C   sV   dg} t jdd: tD ].}t dg|}t|| dg}t|dg qW 5 Q R X d S )Nr	   r   r   gl `yr   r  r   r"   r"   r#   test_standard_deviation07Q  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   r6   r   r   r   r   )r   r   r   r
   r   minimum_positionr   r   r"   r"   r#   test_minimum_position01Z  s
    r  c               	   C   sL   t D ]B} tddddgddddgddddgg| }t|}t|d qd S 	NrN   r   r   r6   rs   r   r	   r	   r   r
   r   r   r   r  r   r   r"   r"   r#   test_minimum_position02b  s    


r  c                  C   sB   t ddddgddddgddddggt} t| }t|d d S r  r   r   r   r   r  r   r  r"   r"   r#   test_minimum_position03k  s    


r  c                  C   sB   t ddddgddddgddddggt} t| }t|d d S )NrN   r   r   r6   rs   r	   r  r  r  r"   r"   r#   test_minimum_position04s  s    


r  c               	   C   sZ   ddddg} t D ]D}tddddgddddgddddgg|}t|| }t|d qd S )	Nr	   r   r   r   rN   r6   rs   )r   r   r  r   r"   r"   r#   test_minimum_position05{  s    

r  c               	   C   s\   ddddg} t D ]F}tddddgddddgddddgg|}t|| d}t|d qd S )	Nr	   r   r6   r   rN   rs   r   r   r	   r  r   r"   r"   r#   test_minimum_position06  s    

r!  c               	   C   sr   ddddg} t D ]\}tddddgddddgddddgg|}t|| ddg}t|d d t|d d	 qd S )
Nr	   r   r6   r   rN   rs   r   r   r  r  r   r"   r"   r#   test_minimum_position07  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   r6   r   r   )r	   r   )r   r   r   r
   r   maximum_positionr   r   r"   r"   r#   test_maximum_position01  s    r$  c               	   C   sL   t D ]B} tddddgddddgddddgg| }t|}t|d qd S )	NrN   r   r   r6   rs   r   r	   r  r
   r   r   r   r#  r   r   r"   r"   r#   test_maximum_position02  s    


r&  c                  C   sB   t ddddgddddgddddggt} t| }t|d d S )	NrN   r   r   r6   rs   r   r	   r  )r   r   r   r   r#  r   r  r"   r"   r#   test_maximum_position03  s    


r'  c               	   C   sZ   ddddg} t D ]D}tddddgddddgddddgg|}t|| }t|d	 qd S )
Nr	   r   r   r   rN   r6   rs   r   r	   r	   r%  r   r"   r"   r#   test_maximum_position04  s    

r)  c               	   C   s\   ddddg} t D ]F}tddddgddddgddddgg|}t|| d}t|d	 qd S )
Nr	   r   r   r   rN   r6   rs   r   r  r%  r   r"   r"   r#   test_maximum_position05  s    

r*  c               	   C   sr   ddddg} t D ]\}tddddgddddgddddgg|}t|| ddg}t|d d	 t|d d
 qd S )Nr	   r   r   r   rN   r6   rs   r   r  r(  r%  r   r"   r"   r#   test_maximum_position06  s    

r+  c               	   C   sx   t ddddg} tD ]\}t ddddgdd	d
dgddddgg|}t|| ddg}t|d d t|d d qd S )Nr   r   r,   g      @rN   r   r   r6   rs   r   r	   r   r  )r   r6   )r   r   r
   r   r#  r   r   r"   r"   r#   test_maximum_position07  s    

r,  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   r6   r   r   )r   r   r   r
   r   extremar   r   r  r#  r   r   r^   r   Zoutput1Zoutput2Zoutput3Zoutput4Zoutput5r"   r"   r#   test_extrema01  s    r/  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   r6   r   r   )
r   r   r
   r   r-  r   r   r  r#  r   r.  r"   r"   r#   test_extrema02  s*      r0  c                  C   s   t ddgddgg} tD ]}t ddgddgg|}tj|| dddgd}tj|| dddgd}tj|| dddgd}tj|| dddgd}tj|| dddgd}t	|d | t	|d | t	|d | t	|d | qd S )Nr	   r   r6   r   r   r   r   )
r   r   r
   r   r-  r   r   r  r#  r   r.  r"   r"   r#   test_extrema03  s0      r1  c               	   C   s   ddddg} t D ]}tddddgddddgddddg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 )	Nr	   r   r   r   rN   r6   rs   r   )
r
   r   r   r   r-  r   r   r  r#  r   r.  r"   r"   r#   test_extrema04  s*    

r2  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   r_   r^   r   rb   r"   r"   r#   test_center_of_mass01(  s
    
r6  c                  C   sB   ddg} t D ]0}tddgddgg|}t|}t||  qd S rL   r3  r5  r"   r"   r#   test_center_of_mass020  s
    
r7  c                  C   sB   ddg} t D ]0}tddgddgg|}t|}t||  qd S rd   r3  r5  r"   r"   r#   test_center_of_mass038  s
    
r8  c                  C   sB   ddg} t D ]0}tddgddgg|}t|}t||  qd S rL   r3  r5  r"   r"   r#   test_center_of_mass04@  s
    
r9  c                  C   sB   ddg} t D ]0}tddgddgg|}t|}t||  qd S )Nr(   r	   r3  r5  r"   r"   r#   test_center_of_mass05H  s
    
r:  c                  C   s8   ddg} t ddgddggt}t|}t||  d S )Nr(   r	   r   r6   r   r   r   r   r4  r   r_   r   rb   r"   r"   r#   test_center_of_mass06P  s    
r=  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   r6   r;  r   r_   r   rb   r"   r"   r#   test_center_of_mass07W  s
    r?  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   rN   r6   r;  r>  r"   r"   r#   test_center_of_mass08_  s
    r@  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   r;  r>  r"   r"   r#   test_center_of_mass09g  s
    rA  c                  C   s2   t d} t d}t|ddd}t||  d S )Nrm   r   )r   r@   Zaranger   	histogramr   r<  r"   r"   r#   test_histogram01o  s    

rC  c               
   C   s^   ddddddddg} dddddg}t ddddddddg}t|ddd| d}t|| d S )Nr	   r   r   r6   r   rN   r   r   r   rB  r   r>  r"   r"   r#   test_histogram02v  s
    rE  c               
   C   s~   ddddddddg} dddddg}dddddg}t ddddddddg}t|ddd| d}t|d | t|d | d S )Nr	   r   r   r6   r   rN   r  rD  )r   Z	expected1Z	expected2r   rb   r"   r"   r#   test_histogram03~  s    rF  c               	   C   s2  t dddddgdddddgdddddgg} t dddddgdddddgdddddg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 )NrN   r   r   r   r%   r6   r	   r   r   r3   r   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    ..rJ  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 dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}tj||dddgdddgdddggd}dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgg}t|| d S Nr   r	   rr   	structurer   r   uint8r   r   watershed_iftr   r   rC   markersrD   r_   r"   r"   r#   test_watershed_ift01  sH    z%TestWatershedIft.test_watershed_ift01c                 C   s  t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t||}dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgg}t|| d S )Nr   r	   rr   rO  rR  r"   r"   r#   test_watershed_ift02  sB    z%TestWatershedIft.test_watershed_ift02c                 C   s  t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t||}dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgg}t|| d S )Nr   r	   r   r6   rr   rO  rR  r"   r"   r#   test_watershed_ift03  s<    z%TestWatershedIft.test_watershed_ift03c                 C   s  t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}tj||dddgdddgdddggd}dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgg}t|| d S )Nr   r	   r   r6   rr   rM  rO  rR  r"   r"   r#   test_watershed_ift04  sF    z%TestWatershedIft.test_watershed_ift04c                 C   s  t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}tj||dddgdddgdddggd}dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgg}t|| d S )Nr   r	   r6   r   rr   rM  rO  rR  r"   r"   r#   test_watershed_ift05  sF    z%TestWatershedIft.test_watershed_ift05c                 C   sv  t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}tj||dddgdddgdddggd}dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgg}t|| d S rL  rO  rR  r"   r"   r#   test_watershed_ift06/  s@    z%TestWatershedIft.test_watershed_ift06c                 C   s  d}t j|t jd}| }t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j|d< t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddggt j}t j|t jd}| }tj||dddgdddgdddgg|d dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgg}t	|| d S )N)rs   r   rg   r   r	   .rr   )rN  rb   )
r   rI   rP  Z	transposer   r   Zint16r   rQ  r   r   rz   rC   rS  rD   r_   r"   r"   r#   test_watershed_ift07H  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   rQ  r   rZ  r"   r"   r#   test_watershed_ift08g  s     

z%TestWatershedIft.test_watershed_ift08N)r.   r/   r0   rT  rU  rV  rW  rX  rY  r[  r]  r"   r"   r"   r#   rK    s   rK  )os.pathrt   Znumpyr   Znumpy.testingr   r   r   r   r   r   Zpytestr   rn   Zscipy.ndimager    r
   r   r2   rF   rJ   rK   rM   rO   rR   rS   rU   rZ   r[   r`   rc   re   rf   rj   rl   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r  r!  r"  r$  r&  r'  r)  r*  r+  r,  r/  r0  r1  r2  r6  r7  r8  r9  r:  r=  r?  r@  rA  rC  rE  rF  rJ  rK  r"   r"   r"   r#   <module>   s    E&								
	
			

		

