
    a6d                     D   d dl Zd dlmZmZ d dlmZmZmZ d dl	m
Z
mZ d dlmZ d dlZ ej        d          Zd Zd Zd	 Zd
 Zd Zej                            dej        ej        f          ej                            dd          ej                            dd          d                                     Zej                            dd          ej                            dd          ej                            dd          d                                     ZdS )    N)assert_array_almost_equalassert_equal)colordataimg_as_float)threshold_localgaussian)apply_parallelz
dask.arrayc            	      D   t          j        d                              dd                              t                    } t          | d          }t          t
          | dddddi	          }t          ||           d
 }t          | dd          }t          || dd          }t          ||           t          | dd          }t          |t          
                    | d          dd          }t          |t           j                  sJ t          ||           d S )N            r      r   modereflect)chunksdepthextra_argumentsextra_keywordsc                 &    t          | dd          S )N   r   r   r	   arrs    Flib/python3.11/site-packages/skimage/util/tests/test_apply_parallel.pywrapped_gaussz*test_apply_parallel.<locals>.wrapped_gauss       QY////    r   r   )r   r   r   T)r   compute)nparangereshapeastypefloatr   r
   r   r	   da
from_array
isinstancendarray)a	expected1result1r    	expected2result2	expected3result3s           r   test_apply_parallelr5      s6   
	#r2&&--e44A  1%%I_aa-1-3Y,?A A AG gy1110 0 0 AI...I]AfAFFFGgy111AI...Ir}}Qv}66a  G grz*****gy11111r"   c            	      F   t          j        d                              dd                              t                    } t
                              | d          }t          | d          }t          t          | ddddd	id
          }t          t          |dddd	i          }t          |t
          j
                  sJ t          |                                |           t          |t
          j
                  sJ t          |                                |           d S )Nr   r   r   r#   r   r   r   r   r   F)r   r   r   r   r$   )r   r   r   )r%   r&   r'   r(   r)   r*   r+   r   r
   r,   Arrayr   r$   )r.   dr/   r0   r2   s        r   test_apply_parallel_lazyr9   )   s   
	#r2&&--e44A
a''A  1%%I_aa-1-3Y,?%*, , ,G _aq-1-3Y,?A A AG grx(((((goo//;;;grx(((((goo//;;;;;r"   c                      t          j        d                              dddd          } d } ||           }t          ||           }t	          ||           d S )Ni   r         	   c                     | dz   S )N*    r   s    r   add_42ztest_no_chunks.<locals>.add_42F   s    Rxr"   )r%   onesr'   r
   r   )r.   rA   expectedresults       r   test_no_chunksrE   C   sh    
&&q!Q22A   vayyHFA&&Ffh/////r"   c                      d } t          j        d                              dd                              t                    }t          |dd          }t          | |ddd	          }t          ||           d S )
Nc                 &    t          | dd          S )Nr   wrapr   r   r   s    r   wrappedz)test_apply_parallel_wrap.<locals>.wrappedP   s    QV,,,,r"   r   r   r   rH   r   r   r   r   r   r   r%   r&   r'   r(   r)   r	   r
   r   rI   r.   rC   rD   s       r   test_apply_parallel_wraprM   O   s~    - - -
	#r2&&--e44A16***HGQvQVLLLFfh/////r"   c                      d } t          j        d                              dd                              t                    }t          |dd          }t          | |dddd	d
          }t          ||           d S )Nc                 &    t          | dd          S )Nr   nearestr   r   r   s    r   rI   z,test_apply_parallel_nearest.<locals>.wrappedZ   r!   r"   r   r   r   rP   r   r   r   )r   r   rJ   rK   rL   s       r   test_apply_parallel_nearestrQ   Y   s    0 0 0
	#r2&&--e44A19---HGQvq\\!*, , ,F fh/////r"   dtyper   )N)   rS   r   r   )r   r<   )r<   r<   r   c                    t          j                                        |          dz  }t          j        } ||          }t          |||| |d          }t          |j        |j                   t          ||           d S )Ng     o@)r   r   rR   channel_axis)	r   chelsear(   r   	rgb2ycbcrr
   r   rR   r   )r   r   rR   catfunccat_ycbcr_expected	cat_ycbcrs          r   test_apply_parallel_rgbr]   d   s     ,..


&
&
-C?DctSu%*= = =I #),,,0)<<<<<r"   )N)rS      ndim)r   r<   )r<      r_   rV   )r   r      rU   c                    t          t          j                              }t          j        } ||d          }t          j        |d|          }|dk    r-ddg}|                    ||j        z  |j	        |                    | dk    r"ddg} |                     ||j        z  d           t          |||| |j        |t          |                    }t          j        ||d          }t          ||           dS )	a
  Test channel_axis combinations.

    For depth and chunks, test in three ways:
    1.) scalar (to be applied over all axes)
    2.) tuple of length ``image.ndim - 1`` corresponding to spatial axes
    3.) tuple of length ``image.ndim`` corresponding to all axes
    rU   )rV   r_   rS   r<   r   )r   r   rR   rV   r   N)r   r   rW   r   rX   r%   moveaxisinsertr_   shaper
   rR   dictr   )r   r   rV   rY   rZ   r[   r\   s          r   $test_apply_parallel_rgb_channel_axisri   t   s    t|~~
&
&C?Dc333 +c2|
,
,CslSX-sy/FGGGA\CH,a000tSu%(Y\.2.M.M.MO O OI I|R88I0)<<<<<r"   )numpyr%   skimage._shared.testingr   r   skimager   r   r   skimage.filtersr   r	   skimage.util.apply_parallelr
   pytestimportorskipr*   r5   r9   rE   rM   rQ   markparametrizefloat32float64r]   ri   r@   r"   r   <module>ru      s       M M M M M M M M - - - - - - - - - - 5 5 5 5 5 5 5 5 6 6 6 6 6 6 V&&2 2 2:< < <4	0 	0 	00 0 00 0 0 2:rz":;;#899"344
= 
= 54 :9 <;
= #=>>"9::)>??= = @? ;: ?>= = =r"   