
    IR-eY                     x    d dl Zd dlZd dlmZmZmZ  G d d          Z G d d          Z G d d          Z	dS )	    N)block_reduceblock_replicatereshape_as_blocksc                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestReshapeAsBlocksc                     t          j        d          }t          |d          }|j        dk    sJ t          |d          }|j        dk    sJ t          |d          }|j        dk    sJ d S )N      )   r
      r   r   r   )r
   r   )nparanger   shapeselfdatareshapeds      @lib/python3.11/site-packages/astropy/nddata/tests/test_blocks.pytest_1dzTestReshapeAsBlocks.test_1d
   s{    y}}$T1--~''''$T1--~''''$T1--~''''''    c                 T   t          j        d                              dd          }t          |d          }|j        dk    sJ t          j        d                              dd          }t          |d          }|j        dk    sJ t          |d          }|j        d	k    sJ d S )
Nr	   r   r
   r
   )r
   r
   r
   r
   @   r   )r   r   r
   r
   r   )r
   r
   r   r   r   r   reshaper   r   r   s      r   test_2dzTestReshapeAsBlocks.test_2d   s    y}}$$Q**$T622~----y}}$$Q**$T622~----$T622~------r   c                    t          j        d                              ddd          }t          |d          }|j        dk    sJ t          j        d                              ddd          }t          |d          }|j        d	k    sJ d S )
Nr   r   r
   r
   r
   )r
   r
   r
   r
   r
   r
      r
      )r
      r
   )r"   r!   r
   r
   r"   r
   r   r   s      r   test_3dzTestReshapeAsBlocks.test_3d   s    y}}$$Q1--$T955~!33333y##++Aq!44$T955~!3333333r   c                     t          j        d                              dd          }t          |d          }d|d<   |d         dk    sJ d S )Nr	   r   r   d   )r   r   )r   r   r   r   )r   r   r   r   r   s      r   	test_viewzTestReshapeAsBlocks.test_view'   sS    y}}$$Q**$T622T

#s******r   c                     t          j        d                              ddd          }d}t          j        t
          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr   r   zTblock_size must be a scalar or have the same length as the number of data dimensionsmatchr   r   r   r   pytestraises
ValueErrorr   r   r   r)   s      r   test_invalid_block_dimz*TestReshapeAsBlocks.test_invalid_block_dim-   s    y}}$$Q1--6 	 ]:U333 	, 	,dF+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   A%%A),A)c                     t          j        d                              dd          }d}t          j        t
          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr	   r   zXEach dimension of block_size must divide evenly into the corresponding dimension of datar(   )r
   r!   r*   r.   s      r   test_invalid_block_sizez+TestReshapeAsBlocks.test_invalid_block_size6   s    y}}$$Q**7 	 ]:U333 	, 	,dF+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   A$$A(+A(c                 l   t          j        d                              dd          }d}t          j        t
          |          5  t          |d           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr	   r   z$block_size elements must be integersr(   )g @r
   z-block_size elements must be strictly positive)r   r*   r.   s      r   test_invalid_block_valuez,TestReshapeAsBlocks.test_invalid_block_value?   s/   y}}$$Q**6]:U333 	. 	.dH---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. @]:U333 	- 	-dG,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   A##A'*A'B))B-0B-N)
__name__
__module____qualname__r   r   r#   r&   r/   r1   r4    r   r   r   r   	   s}        ( ( (	. 	. 	.4 4 4+ + +, , ,, , ,- - - - -r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestBlockReducec                     t          j        d          }t          j        ddg          }t          |d          }t          j        ||k              sJ dS )Test 1D array.r   r"      r
   N)r   r   arrayr   allr   r   expectedresults       r   r   zTestBlockReduce.test_1dK   sR    y||8QF##dA&&vf()))))))r   c                     t          j        d          }d}t          ||t           j                  |z  }t          ||t           j                  }t          j        ||k              sJ dS )z Test 1D array with func=np.mean.r          @funcN)r   r   r   summeanr?   )r   r   
block_sizerA   result_means        r   test_1d_meanzTestBlockReduce.test_1d_meanR   sf    y||
jrv>>>K"4"'BBBvkX-.......r   c                     t          j        d                              dd          }t          j        dgg          }t	          |d          }t          j        ||k              sJ dS )Test 2D array.r   r
      N)r   r   r   r>   r   r?   r@   s       r   r   zTestBlockReduce.test_2dZ   s`    y||##Aq))8aSE??dA&&vf()))))))r   c                 
   t          j        d                              dd          }d}t          ||t           j                  |dz  z  }t          ||t           j                  }t          j        ||k              sJ dS )z Test 2D array with func=np.mean.r   r
   rD   rE   N)r   r   r   r   rG   rH   r?   r   r   rI   rA   rB   s        r   test_2d_meanzTestBlockReduce.test_2d_meana   sz    y||##Aq))
jrv>>>QNdJRW===vf()))))))r   c                     t          j        d                              dd          }t          |d          }|ddddf         }t          |d          }t          j        ||k              sJ dS )zg
        Test trimming of 2D array when size is not perfectly divisible
        by block_size.
           r=   r!   r
   r   r   Nr   r   r   r   r?   )r   data1result1data2result2s        r   test_2d_trimzTestBlockReduce.test_2d_trimi   su     	"%%a++ua((ac1Q3hua((vg()))))))r   c                     t          j        d                              dd          }t          |d          }t          |d          }t          j        ||k              sJ dS )$Test scalar block_size broadcasting.r	   r   r
   r   NrT   r   r   rV   rX   s       r   test_block_size_broadcastingz,TestBlockReduce.test_block_size_broadcastingu   s^    y}}$$Q**tQ''tV,,vg()))))))r   c                     t          j        d          }t          j        t                    5  t          |d           ddd           dS # 1 swxY w Y   dS )Test block_size length.r   r   N)r   onesr+   r,   r-   r   r   r   s     r   test_block_size_lenz#TestBlockReduce.test_block_size_len|   s    wv]:&& 	* 	*y)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*   AAAN)
r5   r6   r7   r   rK   r   rQ   rY   r]   rb   r8   r   r   r:   r:   J   s}        * * */ / /* * ** * *
* 
* 
** * ** * * * *r   r:   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestBlockReplicatec                     t          j        d          }t          j        g d          }t          |d          }t          j        ||k              sJ dS )r<   r
   )r   r         ?rg   N)r   r   r>   r   r?   r@   s       r   r   zTestBlockReplicate.test_1d   sU    y||8,,,-- q))vf()))))))r   c                     t          j        d          }d}t          ||          |z  }t          ||d          }t          j        ||k              sJ dS )z&Test 1D array with conserve_sum=False.r
   rD   Fconserve_sumN)r   r   r   r?   rP   s        r   test_1d_conserve_sumz'TestBlockReplicate.test_1d_conserve_sum   s]    y||
"444zA zFFFvf()))))))r   c                     t          j        d                              dd          }t          j        ddgddgddgddgg          }t	          |d          }t          j        ||k              sJ dS )rM   r
   r"   r   g      ?N)r   r   r   r>   r   r?   r@   s       r   r   zTestBlockReplicate.test_2d   sw    y||##Aq))8aVaVdD\D$<HII q))vf()))))))r   c                     t          j        d                              dd          }d}t          ||          |dz  z  }t          ||d          }t          j        ||k              sJ dS )z&Test 2D array with conserve_sum=False.rN   r
   r!   rD   Fri   Nr   r   r   r   r?   rP   s        r   test_2d_conserve_sumz'TestBlockReplicate.test_2d_conserve_sum   sq    y||##Aq))
"444z1}D zFFFvf()))))))r   c                     t          j        d                              dd          }t          |d          }t          |d          }t          j        ||k              sJ dS )r[   r   r
   r   Nrn   r\   s       r   r]   z/TestBlockReplicate.test_block_size_broadcasting   s^    y||##Aq))!$**!$//vg()))))))r   c                     t          j        d          }t          j        t                    5  t          |d           ddd           dS # 1 swxY w Y   dS )r_   r=   r   N)r   r   r+   r,   r-   r   ra   s     r   rb   z&TestBlockReplicate.test_block_size_len   s    y||]:&& 	* 	*D&)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*rc   N)	r5   r6   r7   r   rk   r   ro   r]   rb   r8   r   r   re   re      sn        * * ** * ** * ** * ** * ** * * * *r   re   )
numpyr   r+   astropy.nddatar   r   r   r   r:   re   r8   r   r   <module>rt      s         K K K K K K K K K K>- >- >- >- >- >- >- >-B6* 6* 6* 6* 6* 6* 6* 6*r** ** ** ** ** ** ** ** ** **r   