a
    
d                     @   sn  d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ e	 Zed Zejdg dd	d
 Zdd Zdd Zdd Zejdg ddd Zdd Zdd Zejdg ddd Zdd Zdd Zdd Zejdg dd d! Zd"d# Zd$d% Z ejdg dd&d' Z!d(d) Z"ejd*g d+ejd,ej#ej$gd-d. Z%dS )/    N)assert_almost_equalassert_array_equalassert_equal)data)_supported_float_type)pyramids).r   channel_axis)r      c                 C   s`   t  }|j\}}}tj|d| d}tj|d| d}t|| d}t|j|d |d |f d S Nr
   sourceZdestination   	downscaler   )r   	astronautshapenpmoveaxisr   pyramid_reducer   )r   imagerowscolsdimZout_out r   n/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/skimage/transform/tests/test_pyramids.pytest_pyramid_reduce_rgb   s    r   c                  C   st   t j\} }tjt dd d}t|j| d |d f t| ddd tjt dd dd}t| t   ddd d S )Nr   r         ?decimalT)r   r   preserve_range
image_grayr   r   r   r   r   Zptpr   r   Zout1Zout2r   r   r   test_pyramid_reduce_gray   s    
r%   c                  C   sj   t j\} }tt }t|j| d |d f t| ddd tjt dd}t| t   ddd d S )Nr   r   r   T)r!   r"   r$   r   r   r   !test_pyramid_reduce_gray_defaults&   s    

r&   c                  C   sJ   dD ]@} t jjd|   }tj|dd d}t |jd }t|j| qd S Nr	   r         )   r   r   )r   randomrandnr   r   asarrayr   r   ndimimgr   expected_shaper   r   r   test_pyramid_reduce_nd/   s    r3   )r   r	   r   r
   c                 C   sf   t  }|j\}}}tj|d| d}tj|d| d}|d |d g}|| |j | t	|j| d S )Nr
   r   r   upscaler   )
r   r   r   r   r   r   pyramid_expandinsertr0   r   )r   r   r   r   r   r   r2   r   r   r   test_pyramid_expand_rgb8   s    r:   c                  C   s4   t j\} }tjt dd}t|j| d |d f d S )Nr   )r7   )r#   r   r   r8   r   )r   r   r   r   r   r   test_pyramid_expand_grayD   s    
r;   c                  C   sJ   dD ]@} t jjd|   }tj|dd d}t |jd }t|j| qd S )Nr(   )r*   r   r6   )r   r,   r-   r   r8   r.   r   r   r/   r   r   r   test_pyramid_expand_ndJ   s    r<   c           	      C   s   t  }|j\}}}tj|d| d}tj|d| d}t|D ]D\}}|d|  |d|  g}|| |j	 | |jt
|ks<J q<d S r   )r   r   r   r   r   r   pyramid_gaussian	enumerater9   r0   tuple	r   r   r   r   r   pyramidlayerr   layer_shaper   r   r   test_build_gaussian_pyramid_rgbS   s    rD   c                  C   sT   t j\} }tjt dd d}t|D ],\}}| d|  |d|  f}t|j| q"d S )Nr   r   r#   r   r   r=   r>   r   r   r   rA   rB   r   rC   r   r   r    test_build_gaussian_pyramid_gray`   s    
rG   c                  C   sN   t j\} }tt }t|D ],\}}| d|  |d|  f}t|j| qd S Nr   rE   rF   r   r   r   )test_build_gaussian_pyramid_gray_defaultsi   s
    

rI   c                  C   sd   dD ]Z} t jjd|   }t |j}tj|dd d}t|D ] \}}|d|  }t|j| q<qd S r'   )	r   r,   r-   r.   r   r   r=   r>   r   r0   r1   Zoriginal_shaperA   rB   r   rC   r   r   r   test_build_gaussian_pyramid_ndq   s    rK   c           	      C   s   t  }|j\}}}tj|d| d}tj|d| d}t|D ]D\}}|d|  |d|  g}|| |j	 | |jt
|ks<J q<d S r   )r   r   r   r   r   r   pyramid_laplacianr>   r9   r0   r?   r@   r   r   r    test_build_laplacian_pyramid_rgb|   s    rM   c                  C   sN   t j\} }tt }t|D ],\}}| d|  |d|  f}t|j| qd S rH   )r#   r   r   rL   r>   r   rF   r   r   r   %test_build_laplacian_pyramid_defaults   s
    

rN   c                  C   sd   dD ]Z} t jjd|   }t |j}tj|dd d}t|D ] \}}|d|  }t|j| q<qd S )Nr(   )   r   r   )	r   r,   r-   r.   r   r   rL   r>   r   rJ   r   r   r   test_build_laplacian_pyramid_nd   s    rP   c                 C   s  dD ]}| d u rd}|}n4d}t |d }d}t|}|| | | t|}t|}tj||| d}t	t
t||}t|D ]^\}	}
| d u r|
j}n.|
j|  |ksJ t|
j}||  t|}|	|k rt|dksJ qt||	 |dksJ qd S )N)r   r)         )    r+   r	   rQ   r   )r	   r	   )lenlistr9   r?   r   Zonesr   rL   mathceillogmaxr>   r   popr   )r   r   r   Zshape_without_channelsr0   Z
n_channelsr1   rA   Z	max_layerrB   r   Zout_shape_without_channelsr   r   r   !test_laplacian_pyramid_max_layers   s4    



r[   c                   C   sl   t t td W d    n1 s*0    Y  t t td W d    n1 s^0    Y  d S )NgGz?r4   )pytestZraises
ValueErrorr   Z_check_factorr   r   r   r   test_check_factor   s    (r^   dtype)float16float32float64Zuint8int64pyramid_funcc                    sD   t jdd|}| |}t| t  fdd|D s@J d S )NrS   r+   c                    s   g | ]}|j  kqS r   )r_   ).0ZimZfloat_dtyper   r   
<listcomp>       z.test_pyramid_dtype_support.<locals>.<listcomp>)r   r,   r-   Zastyper   all)rd   r_   r1   rA   r   rf   r   test_pyramid_dtype_support   s    rj   )&rV   r\   numpyr   Znumpy.testingr   r   r   Zskimager   Zskimage._shared.utilsr   Zskimage.transformr   r   r   r#   markZparametrizer   r%   r&   r3   r:   r;   r<   rD   rG   rI   rK   rM   rN   rP   r[   r^   r=   rL   rj   r   r   r   r   <module>   sH   

		
	
	

%