
    1-Pho                        d dl Z 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
j                    Zed         Zej                            dg d          d	             Zd
 Zd Zd Zej                            dg d          d             Zd Zd Zej                            dg d          d             Zd Zd Zd Zej                            dg d          d             Zd Z d Z!ej                            dg d          d             Z"d Z#ej                            dg d          ej                            dej$        ej%        g          d                         Z&dS )    N)assert_almost_equalassert_array_equalassert_equal)data)_supported_float_type)pyramids).r   channel_axis)r      c                    t          j                    }|j        \  }}}t          j        |d|           }t          j        |d|           }t          j        || d          }t          |j        |dz  |dz  |f           d S Nr   sourcedestination   	downscaler	   )r   	astronautshapenpmoveaxisr   pyramid_reducer   )r	   imagerowscolsdimout_outs          e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/transform/tests/test_pyramids.pytest_pyramid_reduce_rgbr       s    NEkOD$KblCCCE"5ALQQQD
+dL"
-
-Csy4!8TAXs";<<<<<    c                     t           j        \  } }t          j        t           dd           }t	          |j        | dz  |dz  f           t          t          j        |          dd           t          j        t           dd d          }t          t          j        |          t          j        t                     z  dd           d S )Nr   r         ?decimalT)r   r	   preserve_range
image_grayr   r   r   r   r   r   ptpr   r   out1out2s       r   test_pyramid_reduce_grayr-      s    !JD$":NNNDtzD1HdQh#7888tc15555"ad4  D trvj'9'993JJJJJJr!   c                     t           j        \  } }t          j        t                     }t	          |j        | dz  |dz  f           t          t          j        |          dd           t          j        t           d          }t          t          j        |          t          j        t                     z  dd           d S )Nr   r#   r$   T)r&   r'   r*   s       r   !test_pyramid_reduce_gray_defaultsr/   &   s    !JD$":..DtzD1HdQh#7888tc15555":dCCCDtrvj'9'993JJJJJJr!   c                      dD ]`} t          j        j        d| z   }t          j        |dd           }t          j        |j                  dz  }t          |j        |           ad S Nr
   r         )   r   r   )r   randomrandnr   r   asarrayr   r   ndimimgr   expected_shapes       r   test_pyramid_reduce_ndr=   /   so     6 6iot-%cQTJJJCI..239n5555	6 6r!   )r   r
   r   r   c                    t          j                    }|j        \  }}}t          j        |d|           }t          j        |d|           }|dz  |dz  g}|                    | |j        z  |           t          |j        |           d S )Nr   r   r   upscaler	   )
r   r   r   r   r   r   pyramid_expandinsertr:   r   )r	   r   r   r   r   r   r<   s          r   test_pyramid_expand_rgbrE   7   s    NEkOD$KblCCCE

!%
N
N
NCQhq)N,3S999sy.11111r!   c                      t           j        \  } }t          j        t           d          }t	          |j        | dz  |dz  f           d S )Nr   )rB   )r(   r   r   rC   r   )r   r   r   s      r   test_pyramid_expand_grayrG   B   sH    !JD$

!*a
8
8
8Csy4!8TAX"677777r!   c                      dD ]`} t          j        j        d| z   }t          j        |dd           }t          j        |j                  dz  }t          |j        |           ad S )Nr2   )r4   r   rA   )r   r6   r7   r   rC   r8   r   r   r9   s       r   test_pyramid_expand_ndrI   H   so     6 6iot-%c14HHHCI..239n5555	6 6r!   c                 X   t          j                    }|j        \  }}}t          j        |d|           }t          j        |d|           }t          |          D ]M\  }}|d|z  z  |d|z  z  g}|                    | |j	        z  |           |j        t          |          k    sJ Nd S r   )r   r   r   r   r   r   pyramid_gaussian	enumeraterD   r:   tuple	r	   r   r   r   r   pyramidlayerr   layer_shapes	            r   test_build_gaussian_pyramid_rgbrR   P   s    NEkOD$KblCCCE'VVVG(( / /
sahq%x8<%*4c:::yE+......./ /r!   c                      t           j        \  } }t          j        t           dd           }t	          |          D ]*\  }}| d|z  z  |d|z  z  f}t          |j        |           +d S )Nr   r   r(   r   r   rK   rL   r   r   r   rO   rP   r   rQ   s         r    test_build_gaussian_pyramid_grayrV   \   sy    !JD$'
adSSSG(( 3 3
sahq%x839k22223 3r!   c                      t           j        \  } }t          j        t                     }t	          |          D ]*\  }}| d|z  z  |d|z  z  f}t          |j        |           +d S Nr   rT   rU   s         r   )test_build_gaussian_pyramid_gray_defaultsrY   d   sr    !JD$'
33G(( 3 3
sahq%x839k22223 3r!   c                      dD ]z} t          j        j        d| z   }t          j        |j                  }t          j        |dd           }t          |          D ]"\  }}|d|z  z  }t          |j        |           #{d S r1   )	r   r6   r7   r8   r   r   rK   rL   r   r:   r;   original_shaperO   rP   r   rQ   s          r   test_build_gaussian_pyramid_ndr]   l   s     7 7iot-CI..+C14PPP#G,, 	7 	7JE3(1e83Ksy+6666	7	7 7r!   c                 X   t          j                    }|j        \  }}}t          j        |d|           }t          j        |d|           }t          |          D ]M\  }}|d|z  z  |d|z  z  g}|                    | |j	        z  |           |j        t          |          k    sJ Nd S r   )r   r   r   r   r   r   pyramid_laplacianrL   rD   r:   rM   rN   s	            r    test_build_laplacian_pyramid_rgbr`   v   s    NEkOD$KblCCCE(!,WWWG(( / /
sahq%x8<%*4c:::yE+......./ /r!   c                      t           j        \  } }t          j        t                     }t	          |          D ]*\  }}| d|z  z  |d|z  z  f}t          |j        |           +d S rX   )r(   r   r   r_   rL   r   rU   s         r   %test_build_laplacian_pyramid_defaultsrb      sr    !JD$(44G(( 3 3
sahq%x839k22223 3r!   c                      dD ]z} t          j        j        d| z   }t          j        |j                  }t          j        |dd           }t          |          D ]"\  }}|d|z  z  }t          |j        |           #{d S )Nr2   )   r   r   )	r   r6   r7   r8   r   r   r_   rL   r   r[   s          r   test_build_laplacian_pyramid_ndre      s     7 7iout|,CI..,SADQQQ#G,, 	7 	7JE3(1e83Ksy+6666	7	7 7r!   c                    dD ]S}| d}|}nMd}t          |          dz   }d}t          |          }|                    | |z  |           t          |          }t	          j        |          }t          j        |||           }t          j	        t          j
        t          |          |                    }t          |          D ]u\  }	}
| |
j        }nK|
j        |          |k    sJ t          |
j                  }|                    |            t          |          }|	|k     rt          |          dk    sJ vt          ||	           |dk    sJ Ud S )N)r   r3         )    r5   r
   rg   r   )r
   r
   )lenlistrD   rM   r   onesr   r_   mathceillogmaxrL   r   popr   )r	   r   r   shape_without_channelsr:   
n_channelsr;   rO   	max_layerrP   r   out_shape_without_channelss               r   !test_laplacian_pyramid_max_layersrv      s   ! !4 !4	E%*""%,"-..2DJ/00ELL,j999%LLEgenn,9<
 
 
 Idhs+A'B'BINNOO	#G,, 	; 	;JE3#-0Y**y.*<<<<-1#)__**..|<<<-23M-N-N*y  566:::: 	Y&&& *V33333C!4 !4r!   c                     t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )NgGz?r>   )pytestraises
ValueErrorr   _check_factor r!   r   test_check_factorr}      s    	z	"	" % %t$$$% % % % % % % % % % % % % % %	z	"	" # #r"""# # # # # # # # # # # # # # # # # #s   ;??BBBdtype)float16float32float64uint8int64pyramid_funcc                 t   t          j                    5  t          j        dt          d           t          j                            dd                              |          }d d d            n# 1 swxY w Y    | |          }t          |          t	          j	        fd|D                       sJ d S )Nignorez!invalid value encountered in cast)actioncategorymessageri   r5   c                 &    g | ]}|j         k    S r|   )r~   ).0imfloat_dtypes     r   
<listcomp>z.test_pyramid_dtype_support.<locals>.<listcomp>   s     ===r28{*===r!   )
warningscatch_warningsfilterwarningsRuntimeWarningr   r6   r7   astyper   all)r   r~   r;   rO   r   s       @r   test_pyramid_dtype_supportr      s   
 
	 	"	" 3 3 	#7	
 	
 	
 	

 ioob!$$++E223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 l3G'..K6====W===>>>>>>>s   AA11A58A5)'rm   r   rx   numpyr   numpy.testingr   r   r   skimager   skimage._shared.utilsr   skimage.transformr   r   r   r(   markparametrizer    r-   r/   r=   rE   rG   rI   rR   rV   rY   r]   r`   rb   re   rv   r}   rK   r_   r   r|   r!   r   <module>r      s          O O O O O O O O O O       7 7 7 7 7 7 & & & & & & 	6]
 44= = 54=K K KK K K6 6 6 )>)>)>??2 2 @?28 8 86 6 6 )>)>)>??/ / @?/3 3 33 3 37 7 7 )>)>)>??/ / @?/3 3 37 7 7 )>)>)>??"4 "4 @?"4J# # # "U"U"UVVX.0JK ? ?  WV? ? ?r!   