
    IR-eR              	          d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z
 d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZ d dlmZ d d	lmZmZ d d
lmZ g dZg dZ  e!dd           e!dd           e!dd           e!dd           e!dd           e!dd          gZ"dZ#g dZ$ej%        ej%        fej&        ej&        fdej%        fej%        dfdej&         fej&         dfgZ'd Z(d Z)ej*        +                    d e$          d!             Z,d" Z-d# Z.d$ Z/ej*        +                    d%e'          d&             Z0d' Z1d( Z2d) Z3d* Z4d+ Z5d, Z6d- Z7d. Z8ej*        +                    d/g d0          d1             Z9d2 Z:d3 Z;d4 Z<d5 Z=d6 Z>ej*        +                    d7 e?ee                     d8             Z@ G d9 d:          ZAd; ZBdS )<    N)assert_allcloseassert_array_equal)Version)units)SkyCoord)fits)CCDDataCutout2DNoOverlapErrorPartialOverlapError	add_arrayextract_arrayoverlap_slicessubpixel_indices)assert_quantity_allclose)WCSSip)proj_plane_pixel_area))
ףp=
%@(\@){Gz@q=
ף)@)GzT?@Q?@)q=
ףp?Gz?)33333s4@=
ףp=(@)QE@Qk8@))r      r      )      )r$   r#   )r$   r!   r!   r$   r   r   r   r   r   r   r   r   r   r   r   r       )))r   )   r#   )r+   r+   r%   r#   r!   c                      t          j        t          d          5  t          ddd           ddd           dS # 1 swxY w Y   dS )z>Overlap from arrays with different number of dim is undefined.!.*the same number of dimensions.*match)r$   r'   r+   r%   r#   r   r   Npytestraises
ValueErrorr        ?lib/python3.11/site-packages/astropy/nddata/tests/test_utils.pytest_slices_different_dimr9   :   s    	z)L	M	M	M 2 2y&&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2   ;??c                      t          j        t          d          5  t          ddd           ddd           dS # 1 swxY w Y   dS )z&Position must have same dim as arrays.r-   r.   )r$   r'   r0   )r   r   r!   Nr2   r6   r7   r8   test_slices_pos_different_dimr<   @   s    	z)L	M	M	M 2 2vvy1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2r:   posc                     t          j        t                    5  t          dd|            ddd           dS # 1 swxY w Y   dS )zAIf there is no overlap between arrays, an error should be raised.r'   r'   r#   r#   N)r3   r4   r   r   )r=   s    r8   test_slices_no_overlaprA   F   s     
~	&	& , ,vvs+++, , , , , , , , , , , , , , , , , ,   9= =c                     t          ddd          } | t          ddd          ft          ddd          ffk    sJ t          dddd	
          } | t          ddd          ft          ddd          ffk    sJ dD ]I}t          j        t          d          5  t          dd|fd
          } ddd           n# 1 swxY w Y   JdS )z1Compute a slice for partially overlapping arrays.r'   r!   r   r   r#   Nr%   r!   partialmode)r   r$   z!.*Arrays overlap only partially.*r.   strict)r   slicer3   r4   r   )tempr=   s     r8   test_slices_partial_overlaprM   M   sL   $d++DU1a&&(5At+<+<*>?????$d;;;DU1a&&(5At+<+<*>????? E E]'J
 
 
 	E 	E "$sf8DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EE Es   B99B=	 B=	c                     t          dddd          \  } }| d         j        | d         j        cxk    rdk    sn J | d         j        | d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J t          ddd	d          \  } }| d         j        | d         j        cxk    rd
k    sn J | d         j        | d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J t          ddd          \  } }| d         j        | d         j        cxk    rdk    sn J | d         j        | d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J t          ddd          \  } }| d         j        | d         j        cxk    rdk    sn J | d         j        | d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J dS )z:
    Test overlap_slices when extracting along edges.
    
   rP   r!   r!   r%   r%   rJ   rH   r   r%   r!   )   rS      rP   r1   r?   r'   N)r   startstop)slc_lgslc_sms     r8   test_slices_edgesrY   \   sz   
 $Hff8LLLNFF!9?fQio2222222222!9>VAY^0000q000000!9?fQio2222222222!9>VAY^0000q000000#Hff8LLLNFF!9?fQio2222222222!9>VAY^1111r111111!9?fQio2222222222!9>VAY^0000q000000 $Hff==NFF!9?fQin1111111111!9?fQin1111111111!9?fQin1111111111!9?fQin1111111111#Hff==NFF!9?fQin1111111111!9?fQin1111111111!9?fQin1111111111!9?fQin111111111111r7   c                      t          j        t          d          5  t          dddd           ddd           dS # 1 swxY w Y   dS )	z+Call overlap_slices with non-existing mode.z^Mode can be only.*r.   rD   rE   rF   fullrH   Nr2   r6   r7   r8   test_slices_overlap_wrong_moder\   {   s    	z)>	?	?	? 6 6tT4f55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   =AApositionc                     t          j        t                    5  t          dd|            ddd           dS # 1 swxY w Y   dS )zT
    A ValueError should be raised if position contains a non-finite
    value.
    )rT   rT   rQ   Nr2   )r]   s    r8   test_slices_nonfinite_positionr_      s     
z	"	" 1 1vvx0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1rB   c                  (   t          j        d          } d}g d}|D ])\  }}t          | ||fd          }t          ||           *d}d}d}|gd	z  |gz   }	t	          ||	          D ]*\  }}t          | ||fdd
          }t          ||           +dS )b
    Test overlap_slices (via extract_array) for rounding with an
    even-shaped extraction.
    rP   r#   ))ףp=
?r0   )      ?r0   )jt?r0   )ףp=
?r0   )       @r0   )Gz @r#   r!   )Q@ri   )      @ri   )5^I@ri   )Q@ri   )      @ri   )Gz@r&   rG   rH   gGzgRQg      g\(\߿g{Gzr   )r   )r   r%   r+   rq   rI   
fill_valueNnparanger   r   zip
datashapepositions_expectedr=   expout	positionsexp1exp2expecteds
             r8   &test_extract_array_even_shape_roundingr      s     9R==DE   ' % %SD%#i@@@3$$$$ 6IDDvzTF"H	8,, % %SD%#iCPPP3$$$$% %r7   c                  .   t          j        d          } d}g d}|D ])\  }}t          | ||fd          }t          ||           *d}d}d}|gd	z  |gd
z  z   }	t	          ||	          D ]*\  }}t          | ||fdd          }t          ||           +dS )ra   rP   rE   ))rc   r   r%   r#   )rd   r   )re   r%   r#   r!   )rf   r   )rg   r   )rh   r   )rj   r   )rk   r   )rl   r#   r!   r$   )rm   r   )rn   r   )ro   r   rG   rH   rp   rq   rq   r   rq   r   r%   r!   r$   rq   rr   Nrt   rx   s
             r8   %test_extract_array_odd_shape_roundingr      s     9R==DE   ' % %SD%#i@@@3$$$$ 6IDDvzTFQJ&H	8,, % %SD%#iCPPP3$$$$% %r7   c                      t          j        t          d          5  t          t	          j        d          ddd           ddd           dS # 1 swxY w Y   dS )	z*Call extract_array with non-existing mode.z0Valid modes are 'partial', 'trim', and 'strict'.r.   r$   rb   rF   r[   rH   N)r3   r4   r5   r   ru   rv   r6   r7   r8   test_extract_array_wrong_moder      s    	L
 
 
 = = 	billD$V<<<<= = = = = = = = = = = = = = = = = =s   &AAAc                  "   t          j        t          t          j        d          ddd          t          j        ddg          k              sJ dD ]U} t          j        t          t          j        d          d| f          t          j        | dz
  | g          k              sJ Vt          j        t          t          j        d	          dd
t           j                  t          j        dt           j        g          k              sJ dS )[Extract 1 d arrays.

    All dimensions are treated the same, so we can test in 1 dim.
    r$   rb   rF   rq   rs   r   r   r%         @r$   r!   N)ru   allr   rv   arrayinfis    r8   test_extract_array_1d_evenr      s
   
 6billD$3???28SRSHCUCUU      W WvmBIaLL$==1q5RS*AUAUUVVVVVV6binndDRVDDD8QK  	!      r7   c            
      f   t          j        t          t          j        d          ddd          t          j        g d          k              sJ t          j        t          t          j        d          ddd          t          j        g d          k              sJ d	D ]Y} t          j        t          t          j        d          d| f          t          j        | d
z
  | | d
z   g          k              sJ Zt          j        t          t          j        d          ddd          t          j        g d          k              sJ t          j        d          }t          |dd          }|d         dk    sJ t          j        |d
                   sJ |j        |j        k    sJ dS )a  Extract 1 d arrays.

    All dimensions are treated the same, so we can test in 1 dim.
    The first few lines test the most error-prone part: Extraction of an
    array on the boundaries.
    Additional tests (e.g. dtype of return array) are done for the last
    case only.
    r$   rE   r(   rq   r   r   rF   r   r0   r%   )r#   r!   rq   r   r   r   r!   N)ru   r   r   rv   r   isnandtype)r   arrayin	extracteds      r8   test_extract_array_1d_oddr      s    6billD%C@@@8MMM""	#     6billD$3???28KKKCXCXX      
 
v")A,,qd33rxQ1q5@Q7R7RR
 
 	
 	
 	
 	
 6billD$3???28KKKCXCXX     innGgtT22IQ<18IaL!!!!!?gm++++++r7   c                  J   t          j        t          t          j        d          ddd          t          j        g d          k              sJ t          j        t          t          j        d          ddd          t          j        g d          k              sJ dS )	z(In 1d, shape can be int instead of tupler$   r!   r   rq   r   r   r(   Nru   r   r   rv   r   r6   r7   r8   test_extract_array_1dr     s    6billAu===---AXAXX     6billArc:::bh}}}>U>UU      r7   c                      t          j        ddd          D ]Q} t          j        t          t          j        d          d|           t          j        g d          k              sJ RdS )zinteger is at bin centergGz@gQ@皙?r'   r!   r   N)ru   rv   r   r   r   )as    r8   test_extract_Array_floatr     sm    YtT3'' P PvmBIaLL!Q7728III;N;NNOOOOOOP Pr7   c            	         t          j        t          t          j        d          ddd          t          j        dg          k              sJ dD ]W} t          j        t          t          j        d          d| fd          t          j        | dz
  | g          k              sJ Xt          j        t          t          j        d	          dd
d          t          j        dg          k              sJ dS )r   r$   rb   rF   trimrH   r   r   r%   r   r   r!   Nr   r   s    r8   test_extract_array_1d_trimr     s   
 6-	!dDvFFF"(TUSV--WXXXXX 
 
v")A,,qd@@@BHaRSeUVZDXDXX
 
 	
 	
 	
 	
 6binndDv>>>"(A3--O      r7   rI   )rG   r   rJ   c                     t          j        d          }t          j        d          }||ddddf<   t          |dd|           }t          j        ||k              sJ dS )zq
    Test extract_array utility function.

    Test by extracting an array of ones out of an array of zeros.
       r   r?   r!   rS   rH   N)ru   zerosonesr   r   )rI   large_test_arraysmall_test_arrayextracted_arrays       r8   test_extract_array_easyr   -  sr     x))wv!1QqS!A#X#$4ff4PPPO6/%556666666r7   c                     t          j        dt                    } t          j        dd          D ]!}t          | d|dd          \  }}|d	k    sJ "t	          g d
g d          D ]&\  }}t          | d|fdd          \  }}||fk    sJ 't	          t          j        dd          d          D ]&\  }}t          | d|fdd          \  }}||fk    sJ 'dS )zCheck that the return position is calculated correctly.

    The result will differ by mode. All test here are done in 1d because it's
    easier to construct correct test cases.
    r'   r   r(   r+   r!   rG   T)rI   return_position)r%   )rc   g)\(?r!   )g\(\?gRQ?r%   rb   rJ   )r(   r   r%   r%   r%   r%   r%   rE   r   N)ru   rv   floatr   rw   )r   r   r   new_posr   s        r8   test_extract_array_return_posr   ;  s>    y%000Yr1  *aD
 
 
	7 $???OOO<< & &8*dQDx
 
 
	7 8+%%%%%29R++-CDD & &8*dQDvt
 
 
	7 8+%%%%%	& &r7   c                  6   t          t          j                  t          d          k    rnd} t          j        t
          |           5  t          t          j        dt                    ddt          j	                   d d d            d S # 1 swxY w Y   d S d S )	Nz1.20z9fill_value cannot be set to np.nan if the input array hasr.   rO   r   r?   rR   r   )
r   ru   __version__r3   r4   r5   r   r   intnan)msgs    r8    test_extract_array_nan_fillvaluer   U  s    r~'&//11I]:S111 	 	,,,ff   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 21s   7BBBc                      t          j        d          } t          j        d          }|                                 }|ddddfxx         |z  cc<   t	          | |d          }t          j        ||k              sJ dS )zi
    Test add_array utility function.

    Test by adding an array of ones out of an array of zeros.
    r   r?   r!   rS   Nru   r   r   copyr   r   r   r   large_test_array_refadded_arrays       r8   test_add_array_odd_shaper   ^  s     x))wv+00221ac"""&66""",.>GGK6+!556666666r7   c                     t          j        d          } t          j        d          }|                                 }|ddddfxx         |ddddf         z  cc<   t	          | |d          }t          j        ||k              sJ dS )l
    Test add_array_2D utility function.

    Test by adding an array of ones out of an array of zeros.
    r   )r$   r$   r   r#   r$   r1   Nr   r   s       r8   test_add_array_even_shaper   m  s     x))wv+00221ac"""&6qsAaCx&@@""",.>GGK6+!556666666r7   c                      t          j        d          } t          j        d          }|                                 }||z  }t	          | |d          }t          j        ||k              sJ dS )r   r   r?   Nr   r   s       r8   test_add_array_equal_shaper   |  sw     x))wx((+0022,,,.>GGK6+!556666666r7   r]   subpixel_indexc                 `    t          j        t          | t                    |k              sJ dS )z
    Test subpixel_indices utility function.

    Test by asserting that the function returns correct results for
    given test values.
    N)ru   r   r   subsamplingr   s     r8   test_subpixel_indicesr     s0     6"8[99^KLLLLLLLr7   c                   z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestCutout2Dc                    t          j        d                              dd          | _        t	          dd          | _        t          d          }t           j        d	z  }d
}|t          j        |          z  | t          j	        |          z  g|t          j	        |          z  |t          j        |          z  gg|j
        _        ddg|j
        _        | j        j                            t          j                  | j        j                            t          j                  g|j
        _        ddg|j
        _        || _
        |                                }ddg|j
        _        t          j        g dg dg dg dg dg          }t          j        g dg dg dg dg dg          }t-          ||d d |j
        j                  |_        |j
                                         || _        d S )Ng      4@r'   r$   z13h11m29.96s -01d19m18.7sicrs)framer#   )naxisrn   g2.Z >zRA---TANzDEC--TANr!   zRA---TAN-SIPzDEC--TAN-SIP)r   r   gc)Şl>gA=gNqL)r   g>gǢ%=g{p8b=        )g2g=gaR"=r   r   )gW.2LgdV>OY!c=r   r   r   )gTSr   r   r   r   )r   r   gbYza>g@U]g=ri=)r   g	!g&Y=g$-r   )g
o+>guM/g<CHr   r   )g>䔍Y=g3--/=r   r   r   )g3;6dr   r   r   r   )ru   rv   reshapery   r   r]   r   picossinwcscdctyperato_valueudegdeccrvalcrpixdeepcopyr   r   sipsetsipwcs)selfr   rhoscaler   r   bs          r8   setup_classzTestCutout2D.setup_class  s   IdOO++Aq11	 !<FKKKllleckRVC[[ 5&26#;;"67RVC[[ %"&++"56

 $Z0M%%ae,,M&&qu--
 A *N;
HGGGHHHKKK@@@555
 
 HGGGJJJLLL???555
 
 AtT37=99

r7   c                    ddt           j        z  ddt           j        z  dt           j        z  fddt           j        z  fdg}|D ] }d}t          | j        ||          }|j        j        dk    sJ |j        d         dk    sJ |j        dk    sJ |j        dk    sJ |j        |k    sJ t          |j
        d	           |j        d
k    sJ |j        dk    sJ |j        d
k    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        t%          dd          t%          dd          fk    sJ |j        t%          dd          t%          dd          fk    sJ "d S )Nr!   rQ   rn   )g333333@gffffff
@)g @gffffff?rR   rP   r1   )g?g?)rg   rg   )      ?r   )r%   r!   r   )r"   r"   r%   r$   r   )r   pixelpixr
   ry   rz   origin_originalorigin_cutoutinput_position_originalr   input_position_cutoutposition_originalposition_cutoutcenter_originalcenter_cutoutbbox_originalbbox_cutoutslices_originalrK   slices_cutout)r   sizessizer]   cs        r8   test_cutoutzTestCutout2D.test_cutout  s   K[!ae)$!ag+
  	A 	AD!HHd33A6<6))))6$<2%%%%$....?f,,,,,8888A3Z@@@&*4444$
2222$
2222?j0000?&66666=$44444$q!eAqkk(BBBBB?uQ{{E!QKK&@@@@@@!	A 	Ar7   c                     t          j        t                    5  t          | j        dd           d d d            d S # 1 swxY w Y   d S )Nr@   )r%   r%   r%   )r3   r4   r5   r
   ry   r   s    r8   test_size_lengthzTestCutout2D.test_size_length  s    ]:&& 	3 	3TY	222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   >AAc                     dt           j        z  ddt           j        z  ffD ]I}t          j        t
                    5  t          | j        d|           d d d            n# 1 swxY w Y   Jd S )Nr!   r@   )r   cmKr3   r4   r5   r
   ry   )r   r   s     r8   test_size_unitszTestCutout2D.test_size_units  s    X1qs7|, 	2 	2Dz** 2 2FD1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2s   AA#	&A#	c                    dt           j        z  dt           j        z  t           j        z  z  }t          | j        d|          }|j        j        dk    sJ |j        d         dk    sJ |j        t          dd          t          dd          fk    sJ |j        t          d	d
          t          d	d
          fk    sJ dS )z4
        Check size in derived pixel units.
        g333333?r   r@   rQ   r1   r'   r%   r$   r   r!   N)	r   arcsecr   r
   ry   rz   r   rK   r   )r   r   r   s      r8   test_size_pixelzTestCutout2D.test_size_pixel  s     QX~qx!'!9:TY--v|v%%%%vd|q     U1a[[%1++$>>>>>5A;;a"<<<<<<<r7   c                 P   t          | j        ddt          j        z  | j                  }|j        j        dk    sJ |j        d         dk    sJ |j        t          dd          t          dd          fk    sJ |j        t          dd	          t          dd	          fk    sJ d S )
Nr@   r   r   r1   r'   r%   r!   r   r#   )	r
   ry   r   r	  r   rz   r   rK   r   r   r   s     r8   test_size_anglezTestCutout2D.test_size_angle  s    TYqxdhGGGv|v%%%%vd|q     U1a[[%1++$>>>>>5A;;a"<<<<<<<r7   c                     t          j        t                    5  t          | j        dddt
          j        z  f           d d d            d S # 1 swxY w Y   d S )Nr@   r!   )r3   r4   r5   r
   ry   r   r	  r  s    r8   test_size_angle_without_wcsz(TestCutout2D.test_size_angle_without_wcs  s    ]:&& 	; 	;TYAL(9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   &AAAc                 ,   t          | j        ddd          }|j        j        dk    sJ |j        d         dk    sJ |j        t	          dd          t	          dd          fk    sJ |j        t	          dd          t	          dd          fk    sJ d S )Nr1   rQ   r   rH   r@   r   r#   r
   ry   rz   r   rK   r   r  s     r8   test_cutout_trim_overlapz%TestCutout2D.test_cutout_trim_overlap  s    TYV<<<v|v%%%%vd|q     U1a[[%1++$>>>>>5A;;a"<<<<<<<r7   c                 ,   t          | j        ddd          }|j        j        dk    sJ |j        d         dk    sJ |j        t	          dd          t	          dd          fk    sJ |j        t	          dd	          t	          dd	          fk    sJ d S )
Nr1   rQ   rG   rH   rR   r   r#   r%   r!   r  r  s     r8   test_cutout_partial_overlapz(TestCutout2D.test_cutout_partial_overlap  s    TYY???v|v%%%%vd|q     U1a[[%1++$>>>>>5A;;a"<<<<<<<r7   c                     d}t          | j        ddd|          }|j        j        dk    sJ |j        d         dk    sJ |j        d         |k    sJ d S )Nrq   r1   rQ   rG   rr   rR   r   )r
   ry   rz   )r   rs   r   s      r8   &test_cutout_partial_overlap_fill_valuez3TestCutout2D.test_cutout_partial_overlap_fill_value  sj    
TYY:VVVv|v%%%%vd|q    vd|z))))))r7   c                 d   t          j        | j                  }t          |dd          }d}d}||j        |<   |                    |          }|d d d         }||         |k    sJ t          j        | j                  }t          | j        ddd          }||j        |<   ||         |k    sJ d S )Nri   rQ   r1   g      Y@r(   T)r   )ru   r   ry   r
   to_original_position)r   ry   r   xyvaluexy_origyxc2s           r8   	test_copyzTestCutout2D.test_copy  s    wty!!T66**r
((,,TTrT]Bx5    wty!!did;;;Bx5      r7   c                     d}t          | j        |d          }d}|                    |                    |                    }t	          ||           d S )Nr@   rQ   r1   )r
   ry   to_cutout_positionr  r   )r   r]   r   r  results        r8   test_to_from_largezTestCutout2D.test_to_from_large"  sV    TY&11%%a&<&<R&@&@AA#####r7   c                     t          j        t                    5  t          | j        | j        d           d d d            d S # 1 swxY w Y   d S )NrQ   )r3   r4   r5   r
   ry   r]   r  s    r8   test_skycoord_without_wcsz&TestCutout2D.test_skycoord_without_wcs)  s    ]:&& 	7 	7TYv666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AA
Ac                    t          | j        | j        d| j                  }| j                            |j        d         |j        d         | j                  }| j                            |j        d         |j        d         |j                  }t          |j        |j                   t          |j	        |j	                   d S )NrQ   r  r%   r   
r
   ry   r]   r   
from_pixelr   r   r   r   r   r   r   skycoord_originalskycoord_cutouts       r8   test_skycoordzTestCutout2D.test_skycoord-  s    TYv48DDD M44a !"3A"6
 
 -22OA 2AE
 
 	!!2!57IJJJ !2!68KLLLLLr7   c                    t          | j        | j        d| j        d          }| j                            |j        d         |j        d         | j                  }| j                            |j        d         |j        d         |j                  }t          |j        |j                   t          |j	        |j	                   d S )NrQ   rG   r   rI   r%   r   r'  r)  s       r8   test_skycoord_partialz"TestCutout2D.test_skycoord_partial8  s    TYv48)TTT M44a !"3A"6
 
 -22OA 2AE
 
 	!!2!57IJJJ !2!68KLLLLLr7   c                 ~    d}d}t          | j        | j        ||f| j                  }|j        j        ||fk    sJ d S )Nr#   r!   r  )r
   ry   r]   r   array_shape)r   xsizeysizer   s       r8   test_naxis_updatezTestCutout2D.test_naxis_updateC  sL    TYu~48LLLu UEN222222r7   c                 j   t          | j        dd| j        d          j        }t	          j        t          |                    }t           |j        g |j        j	        dR  |j        j
        dd|z             t           |j        g |j        j	        dR  |j        j
        dd|z             d S )	Nr1   rQ   rG   r.  r%   r   gư>)rtolatol)r
   ry   r   r   ru   sqrtr   r   wcs_pix2worldr   r   all_pix2world)r   wpscales      r8   test_crpix_maps_to_crvalz%TestCutout2D.test_crpix_maps_to_crvalI  s    TYDKiPPPT.q1122AO,QU[,!,,,aek$QW-	
 	
 	
 	
 	AO,QU[,!,,,aek$QW-	
 	
 	
 	
 	
 	
r7   c                    t          | j        | j        d          }t          || j        d          }| j                            |j        d         |j        d         | j                  }| j                            |j        d         |j        d         |j                  }t          |j	        |j	                   t          |j
        |j
                   d S )Nadu)ry   r   unitrQ   r%   r   )r	   ry   r   r
   r]   r(  r   r   r   r   r   )r   ccdr   r*  r+  s        r8    test_cutout_with_nddata_as_inputz-TestCutout2D.test_cutout_with_nddata_as_inputS  s     49$(???S$-00 M44a !"3A"6
 
 -22OA 2AE
 
 	!!2!57IJJJ !2!68KLLLLLr7   N)__name__
__module____qualname__r   r   r  r  r
  r  r  r  r  r  r  r#  r%  r,  r/  r4  r=  rB  r6   r7   r8   r   r     s1       ) ) )VA A A63 3 32 2 2
	= 	= 	== = =; ; ;= = == = =* * *! ! !$ $ $7 7 7	M 	M 	M	M 	M 	M3 3 3
 
 
M M M M Mr7   r   c                 D   t          j        d          }t          j        |          }|                    | dz             t          j        | dz            5 }t          |d         j        ddt          j	        z            }d d d            n# 1 swxY w Y   t          j
        |          }|                    | dz             t          j        | dz            5 }t          |d         j        ddt          j	        z            }d d d            d S # 1 swxY w Y   d S )N)   rG  )ry   zuncompressed.fitsr%   )K   rH  d   zcompressed.fits)ru   r   r   ImageHDUwritetoopenr
   sectionr   r   CompImageHDU)tmp_pathry   hduhdulr   chdus         r8   test_cutout_sectionrS  c  s    7:D
-T
"
"
"CKK..///	811	2	2 
dGO!%K
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 $'''DLL--...	8//	0	0 
DGO!%K
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   *BBB*DDD)Cnumpyru   r3   numpy.testingr   r   packaging.versionr   astropyr   r   astropy.coordinatesr   
astropy.ior   astropy.nddatar	   r
   r   r   r   r   r   r   astropy.tests.helperr   astropy.wcsr   r   astropy.wcs.utilsr   test_positionstest_position_indicesrK   test_slicesr   test_pos_badr   r   test_nonfinite_positionsr9   r<   markparametrizerA   rM   rY   r\   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   rS  r6   r7   r8   <module>re     s;        = = = = = = = = % % % % % %       ( ( ( ( ( (      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 : 9 9 9 9 9                 3 3 3 3 3 3   IHH  
E%	E$	E%	E$	E%	E% 222VRVVRVKVQKLfWaL 2 2 22 2 2 --, , .-,E E E2 2 2>6 6 6 %=>>1 1 ?>1#% #% #%L#% #% #%L= = =   , , ,<  P P P   !>!>!>??
7 
7 @?
7& & &4  7 7 77 7 77 7 7 "CC8M$N$N M M MHM HM HM HM HM HM HM HMV
 
 
 
 
r7   