
    IR-e                        d dl Zd dlmZ d dlZd dlZd dlmZ d dl	m
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 d d
lmZ d dl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 d          Z& G d de&          Z'ej(        d             Z)ed             Z*ed             Z+ej(        d             Z,ed             Z-ej(        d             Z.ej/        0                    dej1        d ddf         dfej1        ddd f         dfg          ed                         Z2ej/        0                    dddg          ed                         Z3ed              Z4ed!             Z5dS )"    N)
rc_context)Figure)Circle	Rectangle)units)SkyCoord)fits)figure_test)get_pkg_data_filename)AstropyUserWarning)WCSAxesadd_beamadd_scalebar)EllipticalFrame)
QuadrangleSphericalCircle)WCSc                   *    e Zd Zed             Zd ZdS )BaseImageTestsc                    t          d          }t          j                            |          | _        t          d          }t          j                            |          | _        t          d          }t          j                            |          | _        t          d          }t          j                            |          | _        t          d          }t          j                            |          | _        d S )Nzdata/msx_headerzdata/rosat_headerzdata/2MASS_k_headerzdata/cube_headerzdata/slice_header)	r   r	   Headerfromtextfile
msx_headerrosat_headertwoMASS_k_headercube_headerslice_header)clsr   r   r   r   r   s         Olib/python3.11/site-packages/astropy/visualization/wcsaxes/tests/test_images.pysetup_classzBaseImageTests.setup_class   s    *+<==
11*==,-@AA;33LAA01FGG#{778HII+,>??+22;??,-@AA;33LAA    c                 .    t          j        d           d S )Nall)pltclose)selfmethods     r   teardown_methodzBaseImageTests.teardown_method(   s    	%r!   N)__name__
__module____qualname__classmethodr    r(    r!   r   r   r      s?        B B [B     r!   r   c                   Z   e Zd Zed             Zed             Zed             Zeej        	                    dg d          d                         Z
ed             Zed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Z eddi          d             Zed             Zed             Z ed              Z!ed!             Z"ed"             Z#ed#             Z$ed$             Z% ed%d&i'          d(             Z&ed)             Z'd*S )+	TestBasicc           	          t          j        d          }dD ]-}|                    dd|t          | j                             .|                                 |S )N)      figsize)      r6   r5   
projection)r$   figureadd_subplotr   r   tight_layout)r&   figis      r   test_tight_layoutzTestBasic.test_tight_layout-   se     j((( 	F 	FAOOAq!DO0D0DOEEEE
r!   c                 D   t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           |j        d                             g d	t          j
        z  d
d           |S )Nr2   r2   r3   皙?rB   皙?rC   equalr8   aspect           b@r   g333333ӿ        皙?   r5   sizewidth)r$   r9   add_axesr   r   set_xlimset_ylimcoords	set_ticksudegreer&   r<   axs      r   test_image_plotzTestBasic.test_image_plot6   s     j(((\\   S-A-A'  
 
 	D%   
D%   
	!111AH<1ANNN
r!   c                 "   t          j        d          }|                    g dt          | j                            }|                    t          j        d                              d                     |	                                 |S )N   r\   r3   rA   r7      )r\      )
r$   r9   rP   r   r   imshownparangereshapeset_axis_offrW   s      r   test_axes_offzTestBasic.test_axes_offB   sy     j(((\\...3t;O;O\PP
		")B--''//000

r!   	axisbelow)TFlinec                    t          j        d          }|                    g dt          | j                  d          }|                    |           |                    dd           |                    dd           |j        d         	                    g d	t          j        z  d
d           |                                 |j        d                             d           |j        d                             d           |                    t          j        d                     t#          ddddd          }|                    |           |                    ddgddgd           |S )Nr@   r3   rA   rD   rE   rG   rH   r   rI   rL   r5   rM   F)@   rh         >@      I@      N@rk   greenred)	facecolor	edgecolor       
   )	linewidth)r$   r9   rP   r   r   set_axisbelowrQ   rR   rS   rT   rU   rV   gridset_auto_axislabelr_   r`   zerosr   	add_patchplot)r&   re   r<   rX   rs        r   test_axisbelowzTestBasic.test_axisbelowK   sa   
 j(((\\   S-A-A'  
 
 	###
D%   
D%   
	!111AH<1ANNN
			
	!''...
	!''... 			"(8$$%%% lD$'USSS
Q 	S	B9333
r!   c                 (   t          d          }t          j        |          5 }|d         j        }d d d            n# 1 swxY w Y   t	          | j                  }t          j        d          }|                    g dt	          | j	                  d          }|
                    dd	           |                    dd	           |                    ||                    |          d
g d           |j        d                             dd           |j        d                             dd           |
                    dd           |                    dd           |j        d                             t"          j                   |S )Ngalactic_center/gc_msx_e.fitsr   r@   r3   333333?r   rC   rC   rD   rE   rG        @orangeg-C6>g-C6
?g-C6?)	transformcolorslevelsrL   r5   rM   rJ        @)r   r	   opendatar   r   r$   r9   rP   r   rQ   rR   contourget_transformrS   rT   set_format_unitrU   rV   r&   pathpfr   wcs_msxr<   rX   s          r   test_contour_overlayzTestBasic.test_contour_overlayh   s    %%DEEYt__ 	a5:D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 do&&j(((\\"""4011  
 

 	D%   
D%    	

&&w//)))	 	 	
 	
 	
 		!AQ///
	!AQ///
C
C 		!$$QX...
   >AAc                 &   t          d          }t          j        |          5 }|d         j        }d d d            n# 1 swxY w Y   t	          | j                  }t          j        d          }|                    g dt	          | j	                  d          }|
                    dd	           |                    dd	           |                    ||                    |          g d
           |j        d                             dd           |j        d                             dd           |
                    dd           |                    dd           |j        d                             t"          j                   |S )Nr~   r   r@   r3   r   rD   rE   rG   r   r   )r   r   rL   r5   rM   rJ   r   )r   r	   r   r   r   r   r$   r9   rP   r   rQ   rR   contourfr   rS   rT   r   rU   rV   r   s          r   test_contourf_overlayzTestBasic.test_contourf_overlay   s    %%DEEYt__ 	a5:D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 do&&j(((\\"""4011  
 

 	D%   
D%    	B,,W55>T>T>T 	 	
 	
 	
 		!AQ///
	!AQ///
C
C 		!$$QX...
r   c                 t   t          j        d          }|                    g dt          | j                  d          }|j        d                             d           |j        d                             d	           |                    d
ddd           |j        d                             dt          j
        z  dd           |j        d                             ddd           |j        d                             dd           |j        d                             dd           |j        j                            d
           |j        j                            d           |j        j                                        d
k    sJ |j        j                                        dk    sJ |S )Nr@   r3   )      ?r   ?r   rD   rE   r   zdd:mm:ssr5   zdd:mm:ss.ssssrn         ?dashedcoloralphalw	linestyleglonr^   rL   )spacingrN   rO   glat	   )numberrN   rO   zGalactic Longitudeg?)minpadzGalactic Latitudeg      r6   )r$   r9   rP   r   r   rS   set_major_formatterrv   rT   rU   arcsecset_axislabelframe	set_colorset_linewidth	get_colorget_linewidthrW   s      r   test_overlay_features_imagez%TestBasic.test_overlay_features_image   s   
 j(((\\$$$T_1E1Eg  
 

 		!((444
	!((999 	e31AAA 		&##ALq#JJJ 		&##11A#>>> 		&''(<S'III
	&''(;E'JJJ 		!!%(((
	%%a(((y((**e3333y,,..!3333
r!   c           	         t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           |                    d	d
dd           t          dddd          }|	                    |           t          dddd|
                    d                    }|	                    |           t          dddd|
                    d                    }|	                    |           t          dddd|
                    d                    }|	                    |           |S )N)r1   r1   r3   rA   rD   rE   rG   g     }@g     m@blackr   r5   r   r   ),  d   (   yellownone)radiusecfc)rj         4@r   r   world)r   r   r   r   )rl   rk   rn   fk5)g      D@rl   rm   galactic)r$   r9   rP   r   r   rQ   rR   rv   r   ry   r   )r&   r<   rX   ps       r   #test_curvilinear_grid_patches_imagez-TestBasic.test_curvilinear_grid_patches_image   sz    j(((\\   S1B-C-CG  
 
 	D%   
D%   
gSQ(CCC:bX&AAA
Q&&w//
 
 
 	Q&&u--
 
 
 	Q&&z22
 
 
 	Q
r!   c                 J   t          j                    }|                    g dt          | j                  dd          }|                    dd           |                    dd           |j        d                             d	           |j        d
         	                    dt          j        z  d
           |j        d         	                    dt          j        z  t          j        z  d
           |j        d
                             d           |j        d                             d           |j        d                             ddd           |j        d
                             ddd           |j        d                             ddd           |S )NrA   2   yxrD   r8   slicesrF   rG        @J@     Z@r6   zVelocity m/sr5   rK   )r   rO   i  Texclude_overlappingr   contourspurplesolid	grid_typer   r   r   rn   )r$   r9   rP   r   r   rQ   rR   rS   r   rT   rU   degmsset_ticklabelrv   rW   s      r   test_cube_slice_imagezTestBasic.test_cube_slice_image  sz    jll\\   4+,,!	  
 
 	D$
D%   
	!"">222
	!sQU{!<<<
	!sQSy13a@@@
	!""t"<<<
	!""t"<<<
	!Jh'RRR
	!Jh'RRR
	!JewOOO
r!   c                    t          j                    }|                    g dt          | j                  dd          }|                    dd           |                    dd           |j        d                             dd	d
           |j        d                             ddd
           |j        d         	                    t          j                   |S )NrA   )r   r   r   rD   r   rG   r   r   r   bluer   r   r5   rn   )r$   r9   rP   r   r   rQ   rR   rS   rv   r   rU   rV   rW   s      r   test_cube_slice_image_lonlatz&TestBasic.test_cube_slice_image_lonlat   s    
 jll\\   4+,,!	  
 
 	D%   
D%   
	!JfPPP
	!JewOOO 		!$$QX...
r!   c                 0   t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           t          dt          j	        z  d	t          j	        z            }|
                    |d
          }t          |t                    sJ t          |d         t          j        j                  sJ |j        d                             t          j                   |S )Nr@   r3   r   rD   rE   rG   r   
  or   )r$   r9   rP   r   r   rQ   rR   r   rU   r   
plot_coord
isinstancelist
matplotliblinesLine2DrS   r   rV   )r&   r<   rX   cr   s        r   test_plot_coordzTestBasic.test_plot_coord;  s    j(((\\"""4011  
 

 	D%   
D%   S15[#+..a%% %&&&&&%(J$4$;<<<<< 		!$$QX...
r!   c                    ddl m} t          j        d          }|                    g dt          | j                  d          }|                    dd	           |                    dd	           t          d
t          j        z  dt          j        z            }|                    |d          }t          ||          sJ |j        d                             t          j                   |S )Nr   )PathCollectionr@   r3   r   rD   rE   rG   r   r   r   r   )marker)matplotlib.collectionsr   r$   r9   rP   r   r   rQ   rR   r   rU   r   scatter_coordr   rS   r   rV   )r&   r   r<   rX   r   scs         r   test_scatter_coordzTestBasic.test_scatter_coordU  s    999999j(((\\"""4011  
 

 	D%   
D%   S15[#+..a,, "n----- 		!$$QX...
r!   c                    t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           t          dd	gt          j	        z  d
dgt          j	        z            }|
                    |           |j        d                             t          j                   |S )Nr@   r3   r   rD   rE   rG   r   r   g̬p@r   fffff<r   )r$   r9   rP   r   r   rQ   rR   r   rU   r   r   rS   r   rV   )r&   r<   rX   r   s       r   test_plot_linezTestBasic.test_plot_linep  s    j(((\\"""4011  
 

 	D%   
D%   c5\AE)C<!%+?@@
a 		!$$QX...
r!   c                    t          j                    }|                    g dt          | j                  dd          }|                    dd           |                    dd           |j        d                             d	           |j        d         	                    d	           |j        d         
                    d	           |j        d
                             d           |j        d
         	                    d           |j        d
         
                    d           |j        d                             d           |j        d         	                    d           |j        d         
                    d           |j        d                             d           |j        d                             t          j        t          j        z             |j        d                             d           |j        d
                             d
           |j        d                             d
           |j        d
                             d           |j        d                             d           |S )NrA   r   rD   r   rG   r   r   r    r5   lrlr6   btbzx.xxzVelocity km/s)rO   Tr   )r$   r9   rP   r   r   rQ   rR   rS   set_ticks_positionset_ticklabel_positionset_axislabel_positionr   r   rU   kmr   r   rT   r   rW   s      r   test_changed_axis_unitsz!TestBasic.test_changed_axis_units  s'    jll\\   4+,,!	  
 
 	D$
D%   
	!''+++
	!++B///
	!++B///
	!''---
	!++C000
	!++C000
	!''---
	!++C000
	!++C000
	!((000
	!$$QTACZ000
	!""?333
	!Q'''
	!Q'''
	!""t"<<<
	!""t"<<<
r!   c                    t          j                    }|                    g dt          | j                  dd          }|                    dd           |                    dd           |j        d                             d	           |j        d         	                    d	           |j        d         
                    d	           |j        d
                             d           |j        d
         	                    d           |j        d
         
                    d           |j        d                             d           |j        d         	                    d           |j        d         
                    d           |j        d                             d           |j        d
                             d           |j        d                             d           |j        d
                             d           |j        d                             d           |j        d
                             d           |S )NrA   r   rD   r   rG   r   r   r   r   r5   r   r   r6   r   r   Tr   r\   rs   )r$   r9   rP   r   r   rQ   rR   rS   r   r   r   r   display_minor_ticksset_minor_frequencyrW   s      r   test_minor_tickszTestBasic.test_minor_ticks  s    jll\\   4+,,!	  
 
 	D$
D%   
	!''+++
	!++B///
	!++B///
	!''---
	!++C000
	!++C000
	!''---
	!++C000
	!++C000
	!""t"<<<
	!""t"<<<
	!((...
	!((...
	!((+++
	!((,,,
r!   c                    t          j        d          }t          |g dd           }|                    |           |                    dd           |                    dd           |j        d                             dd	d
d           |j        d                             dddd           |j        d                             d           |j        d                             d           |j        d         	                    dd           |j        d         	                    dddddd           |j        d         
                    d           |j        d         
                    d           |j        d                             dddddd            |j        d                             d!d"dd#d$%           |j        d                             d           |j        d                             d           |S )&Nr@   r3   )rB   rB   ffffff?r   wcsrG   r6   r   rs   r   rK   r5   )rN   r   r   rO      rn   g?r#   zX-axis)rN   zY-axisrm      regularnormalcmtt10)r   rN   weightstylefamilytr{   r      lightcmss10)r   rN   r   r  r  r  r      boldcmr10)r   rN   r   r  r  )r$   r9   r   rP   rQ   rR   rS   rT   r   r   r   r   r   rW   s      r   test_ticks_labelszTestBasic.test_ticks_labels  s   j(((S...D999R
D!
D!
	!BfCqIII
	!Be3aHHH
	!''...
	!''...
	!""8""555
	!"" 	# 	
 	
 	
 		!++C000
	!++C000
	!"" 	# 	
 	
 	
 		!""#fW 	# 	
 	
 	
 		!++E222
	!++C000
r!   c                 b   t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           |j        d                             d	           |j        d         	                    d
           |S )Nr@   r3   rA   rD   rE   rG   rH   r   )r   T)
r$   r9   rP   r   r   rQ   rR   rS   rT   rv   rW   s      r   test_no_tickszTestBasic.test_no_ticks  s     j(((\\   S-A-A'  
 
 	D%   
D%   
	!a(((
	!$
r!   c                    t          i ddddddddd	d
ddddddddddddddddddddddd d!d"d#i          5  t          j        d$%          }t          |g d&d '          }|                    |           |                    d(d)           |                    d(d)           |                                 |                    d*           |	                    d+           |j
        d,                             d-           |j
        d!                             d-           |cd d d            S # 1 swxY w Y   d S ).Nzaxes.labelcolorr   zaxes.labelsize   zaxes.labelweightr  zaxes.linewidthr\   zaxes.facecolorz0.5zaxes.edgecolorrm   zxtick.colorrn   zxtick.labelsizer1   zxtick.directioninzxtick.minor.visibleTzxtick.minor.sizerL   zxtick.major.sizer   zxtick.major.widthzxtick.major.padrs   z
grid.colorr   zgrid.linestyle:zgrid.linewidthr5   z
grid.alpha      ?r@   r3   )r   rB   r   r   r   rG   r6   zX labelzY labelr   r   )r   r$   r9   r   rP   rQ   rR   rv   
set_xlabel
set_ylabelrS   r   rW   s      r   test_rcparamszTestBasic.test_rcparams  s.    !8 " #F !!	
 !% !' u "1 "4 &t #A #B $Q "2 f  !#!" !!#$ c% 
 
  	  	, *V,,,C333>>>BLLKKa   KKa   GGIIIMM)$$$MM)$$$IaL&&4&@@@IaL&&4&@@@A 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	s   C,E  EEc                    t                      }ddg|j        _        ddg|j        _        ddg|j        _        ddg|j        _        d|j        _        d|j        _        t          j	        d	
          }|
                    g d|          }|                    dd           |                    dd           |                    ddd           |j        d                             dd           |j        d                             dd           |j        d                             t"          j                   |S )NRA---TANDEC--TANZ   F      r5   ICRS     @@r[   r3   rA   r7   grayr  r   r   r   r   rarn   r   r   rN   decr   r   r   ctypecrvalcdeltcrpixradesysequinoxr$   r9   rP   rQ   rR   rv   rS   rT   r   rU   rV   r&   wr<   rX   s       r   test_tick_angleszTestBasic.test_tick_angles  s$    EE!:.2h2h!fj(((\\...1\==
Ar
B
fC7;;;
	$!!B!777
	%""R"888
 		!$$QX...
r!   c                    t                      }ddg|j        _        ddg|j        _        ddg|j        _        ddg|j        _        d|j        _        d|j        _        t          j	        d	
          }|
                    g d|          }|                    dd           |                    dd           |                    ddd           |j        d                             dd           |j        d                             dd           |j        d                             t"          j                   |S )Nr  r  r  r  r  r5   r   r!  )r2   r\   r3   rA   r7   r"  r#  r  r   r$  r%  rn   r   r&  r'  r   r(  r/  s       r    test_tick_angles_non_square_axesz*TestBasic.test_tick_angles_non_square_axes5  s$   
 EE!:.2h2h!fj(((\\...1\==
Ar
B
fC7;;;
	$!!B!777
	%""R"888
 		!$$QX...
r!   c                 d   t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           |j        d                             d	           |j        d
                             d	           |j        d         	                    d           |j        d
         	                    d           |j        d         
                    d           |j        d
         
                    d           |S )Nr[   r3   rK   rK   333333?r6  rD   rE   rG   rH   r   scalarr5   zx.xxxTr   )r$   r9   rP   r   r   rQ   rR   rS   set_coord_typer   r   rW   s      r   test_set_coord_typezTestBasic.test_set_coord_typeO  s    j(((\\   S-A-A'  
 
 	D%   
D%   
	!##H---
	!##H---
	!((111
	!((111
	!""t"<<<
	!""t"<<<
r!   c                    t          | j                  }t          j        d          }|                    g d|d          }|                    ddgddgd          d	         } |j        |  |j        d                             d
t          j
        z             |j        d	                             dt          j        z  t          j        z             |j        d                             d           |j        d	                             d           |j        d                             d           |j        d	                             d           |S )Nr[   r3   r   r   r  r  autorE   r   g     @g     @r5   gMb`?r   rL   r  )r   r#   )r   r   r$   r9   rP   wcs_world2pixrR   rS   rT   rU   r   r   r   r   r   )r&   r   r<   rX   limitss        r   test_ticks_regressionzTestBasic.test_ticks_regression`  s6    $#$$j(((\\000S\PP""Aq6D$<;;A>V
	!uqu}555
	!q14x!#~666
	!"""---
	!"""---
	!++E222
	!++E222
r!   c                    t          | j                  }t          j        d          }|                    g d|d          }|j        d                             d           |j        d                             d	           |j        d                             d
           |j        d         j        	                    d           |S )Nr[   r3   r;  r<  rE   r   zLabel 1r5   zLabel 2alwaysF)
r   r   r$   r9   rP   rS   r   set_axislabel_visibility_rule
ticklabelsset_visibler&   r   r<   rX   s       r   test_axislabels_regressionz$TestBasic.test_axislabels_regressionu  s     $/""j(((\\000S\PP
	!""9---
	!""9---
	!228<<<
	!++E222
r!   bbox_inchestight)savefig_kwargsc                 t   t          d          }ddg|j        _        ddg|j        _        t	          j        d          }|                    ddd|	          }|                    t          j	        d
d
g          d           |j
        d                             ddt          j        z             |j
        d                             d           |j
        d                             d           |j
        d                             d           |j
        d                             t          j        d           |j
        d                             t          j        d           |                    dd           |                    |dz             |                    dd          dk    sJ |S )Nr6   naxiszsolar-xzsolar-yr   r[   r3   r5   r7   i   lower)originr   	longitude   )
coord_wraplatitudezs.sF)show_decimal_unitwhiter   )r   lsnothingi   z513.0 513.0 (world))r   r   r)  cunitr$   r9   r:   r_   r`   rx   rS   r8  rU   r   r   r   r   rv   savefigformat_coordr&   tmp_pathr   r<   rX   s        r   test_noncelestial_angularz#TestBasic.test_noncelestial_angular  s    lll"I.!8,j(((__Q1_55
		"(D$<((	999
	!##KC!%K#HHH
	!##J///
	!((///
	!((///
	!$$QX$GGG
	!$$QX$GGG
g'*** 	Hy()))sC((,AAAAA
r!   c           
         t          | j                  }t          j        d          }|                    g d|d          }t          dddd	d
          }|                    |           t          ddddd
|                    d                    }|                    |           t          dddd
|                    d                    }|                    |           |	                    g dg dddd           |	                    dd|                    d          ddd
           t          dt          j        z  dt          j        z  fdt          j        z  d d
|                    d                    }|                    |           t          t          dt          j        z  dt          j        z            dt          j        z  d d
|                    d                    }t          j        t"          d!"          5  t          t          d#d$d%d&'          dt          j        z  d d
|                    d                    }	d d d            n# 1 swxY w Y   |j        d(                             d)           |j        d*                             d)           |                                |                                k                                    sJ t-          j        |                                |	                                          sJ t-          j        |                                d(         dd+g          sJ |S ),Nr[   r3   r;  rD   rE   ri   rl   rk   rm   r   )rp   ro   )fffffp@r   333333?cyanr   )rp   ro   r   )r_  皙=r   magenta)r   r      )   rd  <   r   rn   )r5   r   r   r  )r   rp   ro   g䠄p@gHK<r   )r   r   rp   ro   r_  rb  r   zReceived `center` of representation type <class 'astropy.coordinates.representation.CartesianRepresentation'> will be converted to SphericalRepresentation)matchgsP6g,Eg7m ߿	cartesian)r   r   zrepresentation_typer   Fr5   g     @=)r   r   r$   r9   rP   r   ry   r   r   scatterr   rU   r   rV   r   pytestwarnsr   rS   set_ticklabel_visibleget_xyr#   r`   allclose)
r&   r\  r   r<   rX   r{   r   r1r2r3s
             r   test_patches_distortionz!TestBasic.test_patches_distortion  s   
 $/""j(((\\000S\QQ lD$'VTTT
Q &&u--
 
 
 	Q &&u--
 
 
 	Q 	

NNMM$ 	 	
 	
 	
 	

&&u-- 	 	
 	
 	
 QU]EAEM*18O&&u--
 
 
 	RUQU]EAEM2218O&&u--
 
 
 \;
 
 
 	 	 !!!!(3	   qx" **511  B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	& 		!**5111
	!**5111 		ryy{{*//11111{299;;		44444{299;;q>E6?;;;;;
s   AI  I$'I$c                    t          | j                  }t          j        d          }|                    g d|d          }|                    dd           |                    dd           t          d	t          j	        z  d
t          j	        z  dt          j	        z  ddd|
                    d                    }|                    |           t          d	d
ddddd|
                    d                    }|                    |           |j        d                             d           |j        d                             d           |S )Nr[   r3   r;  rD   rE   r   i'  i)   ir   r   r   r   r   icrs)labelrp   ro   r   r   rn   z--)rx  rp   ro   r   r   Fr5   )r   r   r$   r9   rP   rQ   rR   r   rU   r   r   ry   r   rS   rn  )r&   r\  r   r<   rX   qr{   s          r   test_quadranglezTestBasic.test_quadrangle  sN    $/""j(((\\000S\QQ
Au
FA !%KJ&&v..
 
 
 	Q &&v..	
 	
 	
 	Q
	!**5111
	!**5111
r!   c                 b   t          | j                  }t          j        d          }|                    g d|d          }|                    dd           |                    dd           t          |dt          j	        z  d	t          j	        z  d
t          j
        z  ddddd	  	         |S )Nr^   r\   r3   r5  rD   rE   rs   r6   r5   zbottom rightTrJ   r   r   )majorminoranglecornerr   	borderpadpadr   )r   r   r$   r9   rP   rQ   rR   r   rU   arcminrV   r[  s        r   test_beam_shape_from_argsz#TestBasic.test_beam_shape_from_args4  s     $/""j(((\\...3w\OO
C
Cah,ah,.!
	
 
	
 
	
 
	
 
r!   c                    | j         }dt          j        z                      t          j                  j        |d<   dt          j        z                      t          j                  j        |d<   d|d<   t          |          }t          j        d          }|	                    g d	|d
          }|
                    dd           |                    dd           t          ||           |S )Nr6   BMAJr5   BMINrj   BPAr|  r3   r5  rD   rE   r}  rs   )header)r   rU   r  torV   valuer   r$   r9   rP   rQ   rR   r   )r&   r\  hdrr   r<   rX   s         r   test_beam_shape_from_headerz%TestBasic.test_beam_shape_from_headerK  s     o18|''117F18|''117FE
#hhj(((\\...3w\OO
C
CC    
r!   c                 (   t          | j                  }t          j        d          }|                    g d|d          }|                    dd           |                    dd           t          |dt          j	        z  d	d
dd           |S )Nr|  r3   r5  rD   rE   r}  rs   r6   z2'z	top rightr   T)rx  r  r  	label_top)
r   r   r$   r9   rP   rQ   rR   r   rU   r  r[  s        r   test_scalebarzTestBasic.test_scalebar]  s     $/""j(((\\...3w\OO
C
CL	
 	
 	
 	
 
r!   c                     t          | j                  }t          j        d          }|                    g d|t
                     |S )N)rL   r\   r3   r5  )r8   frame_class)r   r   r$   r9   rP   r   )r&   r   r<   s      r   test_elliptical_framezTestBasic.test_elliptical_frameq  sI    
 $/""j((()))cWWW
r!   c                 <   t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           |j        d                             d	t          j
        z  
           |S Nr[   r3   )r`  rK   r   r6  rD   rE   rG   r  r         @r=  r$   r9   rP   r   r   rQ   rR   rS   rT   rU   r   rW   s      r   test_hms_labelszTestBasic.test_hms_labels{  s     j(((\\!!!c$2G.H.HQX  
 
 	D#
D#
	!x!(':;;;
r!   ztext.usetexT)r  c                 <   t          j        d          }|                    g dt          | j                  d          }|                    dd           |                    dd           |j        d                             d	t          j
        z  
           |S r  r  rW   s      r   test_latex_labelszTestBasic.test_latex_labels  s    j(((\\!!!c$2G.H.HQX  
 
 	D#
D#
	!x!(':;;;
r!   c                 H   t                      }ddg|j        _        t          j        d          }|                    ddd|          }t          j        dd	d
dddd           |j        d                             d           |j        d                             d           |                    ddd|          }t          j        ddd	d
dddddd
  
         t          j        dddddddd           |j        d                             d           |j        d                             d           |                    ddd|          }|                    ddd	d
d	ddddd
  
         |                    dddddddd           t          j	                     |j        d                             d           |j        d                             d           |                    ddd|          }|j        d                             dddddd           |j        d         
                    d           |j        d                             dd           |j        d                             d           |j        d                             d           |S ) Nlonlatr@   r3   r6   r5   r7   r  r   rL   r2   rn   r   )	directionlengthrO   r  	labelsizer   
labelcolorr   Fr^   Tr   )
axisr  r  rO   r  r  r   r  bottom
grid_coloroutr1   )r  r  r  r   r  leftrightr  r\   r   r   r   rs   )r  r  r   labelbottomlabeltopr  r  )whichr  )r   r   r)  r$   r9   r:   tick_paramsrS   rw   rv   r   rF  s       r   test_tick_paramszTestBasic.test_tick_params  s   
 eej((( __Q1_55	
 	
 	
 	
 		!''...
	!''... __Q1_55	
 	
 	
 	
 			
 		
 		
 		
 		!''...
	!''... __Q1_55
 	 	
 	
 	
 	 	 		
 		
 		
 	



	!''...
	!''... __Q1_55
	!   	! 	
 	
 	
 		!((...
	!  wq 999
	!''...
	!''...
r!   N)(r)   r*   r+   r
   r>   rY   rd   rl  markparametrizer|   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r1  r3  r9  r@  rG  r]  rt  rz  r  r  r  r  r  r  r  r-   r!   r   r/   r/   ,   s         [ 	 	 [	   [ [[*?*?*?@@  A@ [6 # # [#J     [ D ! ! [!F + + [+Z   [8   [4   [2   [4   [*   [<   [: # # [#J 
 
 [
 # # [#J   [0   [2   [    [(   [ [ 8999! ! :9!F b b [bH $ $ [$L   [,   ["   [&   [ 	 	 [	 [t,---  .- p p [p p pr!   r/   c                      t          d          } dg| j        _        dg| j        _        dg| j        _        dg| j        _        dg| j        _        | j                                         | S )Nr5   rL  WAVEr   rL   -   )r   r   r)  rX  r,  r+  r*  setr   s    r   wave_wcs_1dr    sZ    
A,,,CHCGMECGMCCGMCCGMDCGMGKKMMMJr!   c                     t          j                    }|                    ddd|           }|                    g d          \  }|                    d           |                    d           |S )Nr5   r7   rs   r]   r  r]   rs   zthis is the x-axiszthis is the y-axis)r$   r9   r:   rz   r  r  r  r<   rX   r   s       r   test_1d_plot_1d_wcsr    sk    
*,,C	Aq[	9	9Bww+++,,HUMM&'''MM&'''Jr!   c                     t          j                    }|                    ddd|           }|                    g d          \  }|j        d                             d           |S )z~
    This test ensures that the format unit is updated and displayed for both
    the axis ticks and default axis labels.
    r5   r7   r  r   nm)r$   r9   r:   rz   rS   r   r  s       r   test_1d_plot_1d_wcs_format_unitr    sa     *,,C	Aq[	9	9Bww+++,,HUIaL  &&&Jr!   c                      t          d          } ddg| j        _        dgdz  | j        _        dgdz  | j        _        dgdz  | j        _        | j                                         | S )Nr6   rL  zGLON-TANzGLAT-TANr  r	  rk   r   r   r)  r,  r+  r*  r  r   s    r   spatial_wcs_2dr  -  s^    
A,,,C,CGMEAICGMD1HCGMFQJCGMGKKMMMJr!   c                 $   t          j                    }|                    ddd| d          }|                    g ddd          \  }|j        d                             d	           |j        d                             d	           |j        d                             d	           |j        d
                             d           |j        d
                             d           |j        d
                             d           |S )Nr5   r   r   r8   r   r  -or   r   r   rn   r   r   )r$   r9   r:   rz   rS   rT   r   rv   )r  r<   rX   r   s       r   test_1d_plot_2d_wcs_correlatedr  8  s   
*,,C	Aq^H	M	MBww+++TwBBHUIfe,,,If##%#000If'''Iff---If##&#111If(((Jr!   c                      t          d          } ddg| j        _        dgdz  | j        _        ddg| j        _        dgdz  | j        _        | j                                         | S )	zv
    This WCS has an almost linear correlation between the pixel and world axes
    close to the reference pixel.
    r6   rL  zHPLN-TANzHPLT-TANr  gllf?gllV?r   r  r   s    r   spatial_wcs_2d_small_angler  I  s_     A,,,C,CGMEAICGM)CGMC!GCGMGKKMMMJr!   zslices, bottom_axiszcustom:pos.helioprojective.lonzcustom:pos.helioprojective.latc                    t          j                    }|                    ddd| |                   }|                    g ddd          \  }t          j                     |j        |         j                                        dgk    sJ |S )zG
    Test that a SLLWCS through a coupled 2D WCS plots as line OK.
    r5   r7   r  r  r   r  r   r$   r9   r:   rz   drawrS   ticksget_visible_axesr  r   bottom_axisr<   rX   r   s         r   $test_1d_plot_1d_sliced_low_level_wcsr  X  s     *,,C	Aq-G-O	P	PBww+++TwBBHU HJJJ9[!'88::seCCCCJr!   )r  hpln))r   r   hpltc                    t          j                    }|                    ddd| |          }|                    g ddd          \  }t          j                     |j        |         j                                        dgk    sJ |S )a  
    When we plot a 1D slice through spatial axes, we want to put the axis which
    actually changes on the bottom.

    For example an aligned wcs, pixel grid where you plot a lon slice through a
    lat axis, you would end up with no ticks on the bottom as the lon doesn't
    change, and a set of lat ticks on the top because it does but it's the
    correlated axis not the actual one you are plotting against.
    r5   r  r  r  r   r  r   r  r  s         r   +test_1d_plot_put_varying_axis_on_bottom_lonr  s  s      *,,C	Aq-GPV	W	WBww+++TwBBHU HJJJ9[!'88::seCCCCJr!   c                     t          j        d          } d}dD ]N}dD ]G}|dz  }t          d          }||j        _        |df|j        _        d	|j        _        d
|j        _        |                     dd||          }|	                    dd           |j
        d                             dt          j        z             |j
        d                             d           |j
        d                             d           |j
        d                             d           |j
        d                             d           |j
        d                             d           IP|                     ddddd           | S )N)r^   r^   r3   r   ))zGLON-CARzGLAT-CAR)zHGLN-CARzHGLT-CAR)r   r  rQ  i  r5   r6   rL  )g     v@     f@)rG   r  r1   r7   rG   g     |@r   r=  r   Fg?gffffff?rB   )hspacer  r  r  top)r$   r9   r   r   r)  r*  r,  r+  r:   rQ   rS   rT   rU   r   r   rw   rn  set_ticks_visiblesubplots_adjust)r<   icenr)  cenr   rX   s         r   test_allsky_labels_wrapr    sw   
 *V
$
$
$CDE 2 2$ 	2 	2CAIDA,,,C!CGMFCGM(CGM%CGMAt<<BKKe$$$IaL""2:"666IaL++C000IaL++E222IaL++E222IaL..u555IaL**51111!	2$ qt4NNNJr!   c                  n   t          ddddddddd	d
	          } t                      }|                    |           }|                    dd           |                    dd           |j        \  }}|                                 |                                 |                    d          }|d                             dt          j
        z             |d                             dt          j
        z             |d                             ddt          j
        z             |d                             ddt          j
        z             |d                             d           |d                             d           |d                             d           |d                             dd           |d                             d           |d                             d           |d                             d           |d                             dd           |S )Nr6   ih  rQ  r  g     V@r"  r5   zRA---CARzDEC--CAR)	rM  naxis1naxis2crpix1crpix2cdelt1cdelt2ctype1ctype2r7   rG   g     xv@g     b@r   r   re  r=  gr~  
const-glonrc  r  gtzGalactic longituder   )r  r{   zGalactic latitude)r   r   r:   rQ   rR   rS   rv   get_coords_overlayrT   rU   r   add_tickable_gridliner   r   r   )r   r<   rX   r  r  overlays         r   test_tickable_gridlinesr    s   
  
	
 
	
 C ((C	C	(	(BKKi   KKi   yHCHHJJJHHJJJ##J//GAJae,,,AJae,,, AJ$$S#+666AJ$$\2:>>>AJOO)O$$$AJ%%d+++AJ9---AJ1CCCAJOO&O!!!AJ%%&9:::AJ6***AJ0???Jr!   )6matplotlib.linesr   matplotlib.pyplotpyplotr$   numpyr`   rl  r   matplotlib.figurer   matplotlib.patchesr   r   astropyr   rU   astropy.coordinatesr   
astropy.ior	   astropy.tests.figuresr
   astropy.utils.datar   astropy.utils.exceptionsr   astropy.visualization.wcsaxesr   r   r   #astropy.visualization.wcsaxes.framer   %astropy.visualization.wcsaxes.patchesr   r   astropy.wcsr   r   r/   fixturer  r  r  r  r  r  r  r  s_r  r  r  r  r-   r!   r   <module>r     s:                  ! ! ! ! ! ! $ $ $ $ $ $ 0 0 0 0 0 0 0 0       ( ( ( ( ( (       - - - - - - 4 4 4 4 4 4 7 7 7 7 7 7 I I I I I I I I I I ? ? ? ? ? ? M M M M M M M M             ,W W W W W W W Wt                     
q!!!t67	qqq!t67     $ .0BC     0   @ * * * * *r!   