o
    h                     @   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
   sourcedestination   	downscaler   )r   	astronautshapenpmoveaxisr   pyramid_reducer   )r   imagerowscolsdimout_out r   `/var/www/html/scripts/venv/lib/python3.10/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   ptpr   r   out1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/      r8   )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insertr5   r   )r   r   r   r   r   r   r7   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   )r=   )r%   r   r   r>   r   )r   r   r   r   r   r   test_pyramid_expand_grayD   s   
rA   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   r<   )r   r1   r2   r   r>   r3   r   r   r4   r   r   r   test_pyramid_expand_ndJ   r9   rB   c           	      C      t  }|j\}}}tj|d| d}tj|d| d}t|D ]"\}}|d|  |d|  g}|| |j	 | |jt
|ks@J qd S r   )r   r   r   r   r   r   pyramid_gaussian	enumerater?   r5   tuple	r   r   r   r   r   pyramidlayerr   layer_shaper   r   r   test_build_gaussian_pyramid_rgbS      rK   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   rD   rE   r   r   r   rH   rI   r   rJ   r   r   r    test_build_gaussian_pyramid_gray`   s   
rO   c                  C   N   t j\} }tt }t|D ]\}}| d|  |d|  f}t|j| qd S Nr   rM   rN   r   r   r   )test_build_gaussian_pyramid_gray_defaultsi      

rR   c                  C   d   dD ]-} t jjd|   }t |j}tj|dd d}t|D ]\}}|d|  }t|j| qqd S r,   )	r   r1   r2   r3   r   r   rD   rE   r   r5   r6   original_shaperH   rI   r   rJ   r   r   r   test_build_gaussian_pyramid_ndq      rW   c           	      C   rC   r   )r   r   r   r   r   r   pyramid_laplacianrE   r?   r5   rF   rG   r   r   r    test_build_laplacian_pyramid_rgb|   rL   rZ   c                  C   rP   rQ   )r%   r   r   rY   rE   r   rN   r   r   r   %test_build_laplacian_pyramid_defaults   rS   r[   c                  C   rT   )Nr-   )   r   r   )	r   r1   r2   r3   r   r   rY   rE   r   rU   r   r   r   test_build_laplacian_pyramid_nd   rX   r]   c                 C   s  dD ]|}| d u rd}|}nd}t |d }d}t|}|| | | t|}t|}tj||| d}t	t
t||}t|D ]/\}	}
| d u rO|
j}n|
j|  |ksXJ t|
j}||  t|}|	|k rrt|dksrJ qCt||	 |dks~J qd S )N)r   r.         )    r0   r	   r^   r   )r	   r	   )lenlistr?   rF   r   onesr   rY   mathceillogmaxrE   r   popr   )r   r   r   shape_without_channelsr5   
n_channelsr6   rH   	max_layerrI   r   out_shape_without_channelsr   r   r   !test_laplacian_pyramid_max_layers   s8   



rm   c                   C   sn   t t td W d    n1 sw   Y  t t td W d    d S 1 s0w   Y  d S )NgGz?r:   )pytestraises
ValueErrorr   _check_factorr   r   r   r   test_check_factor   s   "rr   dtype)float16float32float64uint8int64pyramid_funcc                    sD   t jdd|}| |}t| t  fdd|D s J d S )Nr`   r0   c                    s   g | ]}|j  kqS r   )rs   ).0imfloat_dtyper   r   
<listcomp>   s    z.test_pyramid_dtype_support.<locals>.<listcomp>)r   r1   r2   astyper   all)ry   rs   r6   rH   r   r|   r   test_pyramid_dtype_support   s    r   )&rd   rn   numpyr   numpy.testingr   r   r   skimager   skimage._shared.utilsr   skimage.transformr   r   r   r%   markparametrizer   r*   r+   r8   r@   rA   rB   rK   rO   rR   rW   rZ   r[   r]   rm   rr   rD   rY   r   r   r   r   r   <module>   sJ    

		
	
	

%