U
    e»{jgž  ã                   @   s¸  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„ dƒZ&G dd„ de&ƒZ'ej(dd„ ƒZ)edd„ ƒZ*edd„ ƒZ+ej(dd„ ƒZ,edd„ ƒZ-ej(dd„ ƒZ.ej/ 0dej1d dd…f d fej1dd…d f d!fg¡ed"d#„ ƒƒZ2ej/ 0dd$d%g¡ed&d'„ ƒƒZ3ed(d)„ ƒZ4ed*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                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚBaseImageTestsc                 C   sr   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   ÚHeaderZfromtextfileÚ
msx_headerÚrosat_headerÚtwoMASS_k_headerÚcube_headerÚslice_header)Úclsr   r   r   r   r   © r   ún/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/visualization/wcsaxes/tests/test_images.pyÚsetup_class   s    zBaseImageTests.setup_classc                 C   s   t  d¡ d S )NÚall)ÚpltÚclose)ÚselfÚmethodr   r   r   Úteardown_method(   s    zBaseImageTests.teardown_methodN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r#   r   r   r   r   r      s   
r   c                   @   s´  e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZeej 	ddd	d
g¡dd„ ƒƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd „ ƒZed!d"„ ƒZed#d$„ ƒZed%d&„ ƒZed'd(„ ƒZed)d*„ ƒZed+d,„ ƒZed-d.„ ƒZed/d0„ ƒZed1d2id3�d4d5„ ƒZed6d7„ ƒZed8d9„ ƒZed:d;„ ƒZ ed<d=„ ƒZ!ed>d?„ ƒZ"ed@dA„ ƒZ#edBdC„ ƒZ$edDdidE�dFdG„ ƒZ%edHdI„ ƒZ&dJS )KÚ	TestBasicc                 C   s:   t jdd�}dD ]}|jdd|t| jƒd� q| ¡  |S )N)é   é   ©Zfigsize)é   é   r-   r,   ©Ú
projection)r   ÚfigureÚadd_subplotr   r   Ztight_layout)r!   ÚfigÚir   r   r   Útest_tight_layout-   s
    zTestBasic.test_tight_layoutc                 C   sh   t jdd�}|jddddgt| jƒdd�}| dd¡ | dd¡ |jd	 jd
ddgt	j
 ddd� |S )N©r*   r*   r+   çš™™™™™¹?çš™™™™™é?Úequal©r/   Úaspectç      à¿ç     �b@r   ç333333Ó¿ç        çš™™™™™É?é   r,   ©ÚsizeÚwidth)r   r0   Úadd_axesr   r   Úset_xlimÚset_ylimÚcoordsÚ	set_ticksÚuÚdegree©r!   r2   Úaxr   r   r   Útest_image_plot6   s    
  ÿ"zTestBasic.test_image_plotc                 C   sJ   t jdd�}|jddddgt| jƒd�}| t d¡ d¡¡ | 	¡  |S )N©é   rO   r+   r6   r7   r.   é   )rO   é   )
r   r0   rD   r   r   ÚimshowÚnpZarangeZreshapeZset_axis_offrK   r   r   r   Útest_axes_offB   s
    zTestBasic.test_axes_offÚ	axisbelowTFÚlinec                 C   sÞ   t jdd�}|jddddgt| jƒdd�}| |¡ | dd¡ | dd¡ |jd	 j	d
ddgt
j ddd� | ¡  |jd	  d¡ |jd  d¡ | t d¡¡ tdddddd�}| |¡ |jddgddgdd� |S )Nr5   r+   r6   r7   r8   r9   r;   r<   r   r=   r>   r?   r@   r,   rA   F)é@   rW   ©ç      >@ç      I@ç      N@rZ   ÚgreenÚred)Ú	facecolorÚ	edgecoloré    é€   é
   )Z	linewidth)r   r0   rD   r   r   Zset_axisbelowrE   rF   rG   rH   rI   rJ   ÚgridÚset_auto_axislabelrR   rS   Úzerosr   Ú	add_patchÚplot)r!   rU   r2   rL   Úrr   r   r   Útest_axisbelowK   s$    
  ÿ
"
zTestBasic.test_axisbelowc              	   C   sè   t dƒ}t |¡�}|d j}W 5 Q R X t| jƒ}tjdd�}|jddddgt| j	ƒdd�}| 
d	d
¡ | d	d
¡ |j|| |¡ddddgd� |jd jddd� |jd jddd� | 
dd¡ | dd¡ |jd  tj¡ |S )Núgalactic_center/gc_msx_e.fitsr   r5   r+   ç333333Ã?r7   r8   r9   r;   ç     „†@Úorangeç-Cëâ6ú>ç-Cëâ6
?ç-Cëâ6?)Ú	transformÚcolorsÚlevelsr@   r,   rA   r>   ç     €†@)r
   r   ÚopenÚdatar   r   r   r0   rD   r   rE   rF   ZcontourÚget_transformrG   rH   Úset_format_unitrI   rJ   ©r!   ÚpathÚpfrv   Zwcs_msxr2   rL   r   r   r   Útest_contour_overlayh   s0    

ýüzTestBasic.test_contour_overlayc              	   C   sæ   t dƒ}t |¡�}|d j}W 5 Q R X t| jƒ}tjdd�}|jddddgt| j	ƒdd�}| 
d	d
¡ | d	d
¡ |j|| |¡dddgd� |jd jddd� |jd jddd� | 
dd¡ | dd¡ |jd  tj¡ |S )Nrj   r   r5   r+   rk   r7   r8   r9   r;   rl   rn   ro   rp   )rq   rs   r@   r,   rA   r>   rt   )r
   r   ru   rv   r   r   r   r0   rD   r   rE   rF   Zcontourfrw   rG   rH   rx   rI   rJ   ry   r   r   r   Útest_contourf_overlayŽ   s.    

ý  ÿzTestBasic.test_contourf_overlayc                 C   sþ   t jdd�}|jddddgt| jƒdd�}|jd  d¡ |jd	  d
¡ |jddd	dd� |jd jdt	j
 dd	d� |jd jddd	d� |jd jddd� |jd jddd� |jj d¡ |jj d¡ |jj ¡ dksæt‚|jj ¡ dksút‚|S )Nr5   r+   ç      Ð?çÍÌÌÌÌÌä?r8   r9   r   zdd:mm:ssr,   zdd:mm:ss.ssssr]   ç      ð?Údashed©ÚcolorÚalphaZlwÚ	linestyleÚglonrQ   r@   )ÚspacingrB   rC   Úglaté	   )ÚnumberrB   rC   zGalactic Longitudegš™™™™™ù?)ZminpadzGalactic Latitudeg      è¿r-   )r   r0   rD   r   r   rG   Úset_major_formatterrc   rH   rI   ÚarcsecÚset_axislabelÚframeZ	set_colorZset_linewidthÚ	get_colorÚAssertionErrorZget_linewidthrK   r   r   r   Útest_overlay_features_image±   s$    
  ÿz%TestBasic.test_overlay_features_imagec                 C   sØ   t jdd�}|jddddgt| jƒdd�}| dd¡ | dd	¡ |jd
dddd� tddddd�}| 	|¡ tdddd| 
d¡d�}| 	|¡ tdddd| 
d¡d�}| 	|¡ tdddd| 
d¡d�}| 	|¡ |S )N)r)   r)   r+   r6   r7   r8   r9   r;   g     ø}@g     ðm@Úblackr€   r,   r�   r‚   )é,  éd   é(   ÚyellowÚnone)ÚradiusÚecÚfc)rY   ç      4@r›   rm   Zworld)r˜   r™   rš   rq   )r[   rZ   r]   Úfk5)g      D@r[   r\   Úgalactic)r   r0   rD   r   r   rE   rF   rc   r   rf   rw   )r!   r2   rL   Úpr   r   r   Ú#test_curvilinear_grid_patches_imageÕ   sH    
  ÿ
û
û
û
z-TestBasic.test_curvilinear_grid_patches_imagec                 C   sô   t  ¡ }|jddddgt| jƒddd�}| dd¡ | dd¡ |jd	  d
¡ |jd j	dt
j dd� |jd	 j	dt
j t
j dd� |jd jdd� |jd	 jdd� |jd jdddd� |jd jdddd� |jd	 jdddd� |S )Nr6   r7   ©é2   ÚyÚxr8   ©r/   Úslicesr:   r;   ç     @J@ç      Z@r-   zVelocity m/sr,   r?   )r‡   rC   i�  T©Zexclude_overlappingr   ÚcontoursÚpurpleÚsolid©Z	grid_typerƒ   r…   rm   r]   )r   r0   rD   r   r   rE   rF   rG   r�   rH   rI   ÚdegÚmÚsÚset_ticklabelrc   rK   r   r   r   Útest_cube_slice_image  s$    
ü zTestBasic.test_cube_slice_imagec                 C   s‚   t  ¡ }|jddddgt| jƒddd�}| dd¡ | dd¡ |jd jd	d
dd� |jd jd	ddd� |jd  	t
j¡ |S )Nr6   r7   )r£   r¢   r¡   r8   r¤   r;   r§   r   r©   Úbluer«   r¬   r,   r]   )r   r0   rD   r   r   rE   rF   rG   rc   rx   rI   rJ   rK   r   r   r   Útest_cube_slice_image_lonlat   s    
üz&TestBasic.test_cube_slice_image_lonlatc                 C   sž   t jdd�}|jddddgt| jƒdd�}| dd¡ | dd¡ td	tj	 d
tj	 ƒ}| 
|d¡}t|tƒsrt‚t|d tjjƒsˆt‚|jd  tj¡ |S )Nr5   r+   rk   r7   r8   r9   r;   rl   é
  éãÿÿÿÚor   )r   r0   rD   r   r   rE   rF   r   rI   r­   Ú
plot_coordÚ
isinstanceÚlistr�   Ú
matplotlibÚlinesZLine2DrG   rx   rJ   )r!   r2   rL   Úcr»   r   r   r   Útest_plot_coord;  s    
ýzTestBasic.test_plot_coordc                 C   s–   ddl m} tjdd�}|jddddgt| jƒdd�}| d	d
¡ | d	d
¡ t	dt
j dt
j ƒ}|j|dd�}t||ƒs€t‚|jd  t
j¡ |S )Nr   )ÚPathCollectionr5   r+   rk   r7   r8   r9   r;   rl   r´   rµ   r¶   )Úmarker)Zmatplotlib.collectionsr¾   r   r0   rD   r   r   rE   rF   r   rI   r­   Zscatter_coordr¸   r�   rG   rx   rJ   )r!   r¾   r2   rL   r¼   Úscr   r   r   Útest_scatter_coordU  s    
ýzTestBasic.test_scatter_coordc                 C   s€   t jdd�}|jddddgt| jƒdd�}| dd¡ | dd¡ td	d
gtj	 ddgtj	 ƒ}| 
|¡ |jd  tj¡ |S )Nr5   r+   rk   r7   r8   r9   r;   rl   r´   gÍÌÌÌÌ¬p@rµ   çfffffæ<Àr   )r   r0   rD   r   r   rE   rF   r   rI   r­   r·   rG   rx   rJ   )r!   r2   rL   r¼   r   r   r   Útest_plot_linep  s    
ý
zTestBasic.test_plot_linec                 C   sT  t  ¡ }|jddddgt| jƒd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 ¡ |jd  d¡ |jd jdd� |jd jdd� |jd jdd� |jd jdd� |S )Nr6   r7   r    r8   r¤   r;   r¦   r§   r   Ú r,   ÚlrÚlr-   ÚbtÚbzx.xxzVelocity km/s)rC   Tr¨   )r   r0   rD   r   r   rE   rF   rG   Úset_ticks_positionÚset_ticklabel_positionÚset_axislabel_positionr‹   rx   rI   Úkmr¯   r�   rH   r°   rK   r   r   r   Útest_changed_axis_units†  s4    
üz!TestBasic.test_changed_axis_unitsc                 C   s8  t  ¡ }|jddddgt| jƒd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 jdd� |jd jdd� |jd  d¡ |jd  d¡ |jd  d¡ |jd  d¡ |S )Nr6   r7   r    r8   r¤   r;   r¦   r§   r   rÄ   r,   rÅ   rÆ   r-   rÇ   rÈ   Tr¨   rO   rb   )r   r0   rD   r   r   rE   rF   rG   rÉ   rÊ   rË   r°   Údisplay_minor_ticksZset_minor_frequencyrK   r   r   r   Útest_minor_ticks¥  s2    
üzTestBasic.test_minor_ticksc                 C   s>  t jdd�}t|ddddgd d�}| |¡ | dd¡ | dd¡ |jd jd	d
ddd� |jd jddddd� |jd  d¡ |jd  d¡ |jd j	ddd� |jd j	ddddddd� |jd  
d¡ |jd  
d¡ |jd jdddddd d!� |jd jd"d#dd$d%d&� |jd  d¡ |jd  d¡ |S )'Nr5   r+   r6   çffffffæ?©Úwcsr;   r-   r   rb   r²   r?   r,   )rB   rƒ   r„   rC   é   r]   gÍÌÌÌÌÌì?r   zX-axis)rB   zY-axisr\   é   ZregularÚnormalZcmtt10)rƒ   rB   ÚweightÚstyleÚfamilyÚtrh   rª   é   ZlightZcmss10)rƒ   rB   r„   rÖ   r×   rØ   r’   é   ÚboldZcmr10)rƒ   rB   r„   rÖ   rØ   )r   r0   r   rD   rE   rF   rG   rH   rÉ   r�   rË   r°   rÊ   rK   r   r   r   Útest_ticks_labelsÃ  sL    

ú
ú
    ÿzTestBasic.test_ticks_labelsc                 C   sÎ   t ddddddddd	d
dddddddddœƒ�– tjdd�}t|ddddgd d�}| |¡ | dd¡ | dd¡ | ¡  | d¡ | 	d¡ |j
d jd
d� |j
d jd
d� |W  5 Q R £ S Q R X d S )Nrª   é   rÜ   rO   z0.5r\   r]   r)   ÚinTr@   rÓ   rb   r²   ú:r,   ç      à?)zaxes.labelcolorzaxes.labelsizezaxes.labelweightzaxes.linewidthzaxes.facecolorzaxes.edgecolorzxtick.colorzxtick.labelsizezxtick.directionzxtick.minor.visiblezxtick.minor.sizezxtick.major.sizezxtick.major.widthzxtick.major.padz
grid.colorzgrid.linestylezgrid.linewidthz
grid.alphar5   r+   rk   r6   rÐ   rÑ   r;   r-   zX labelzY labelr   r¨   )r   r   r0   r   rD   rE   rF   rc   Ú
set_xlabelÚ
set_ylabelrG   r°   rK   r   r   r   Útest_rcparamsé  s@    îÿ


zTestBasic.test_rcparamsc                 C   sÎ   t ƒ }ddg|j_ddg|j_ddg|j_ddg|j_d|j_d|j_tj	d	d
�}|j
ddddg|d�}| dd¡ | dd¡ |jdddd� |jd jddd� |jd jddd� |jd  tj¡ |S )NúRA---TANúDEC--TANéZ   éF   é   r,   ÚICRSç     @Ÿ@rN   r+   r6   r7   r.   éÿÿÿÿÚgrayrá   r«   ©rƒ   r„   r…   Úrar]   rÓ   ©rƒ   rB   Údecr   ©r   rÒ   ÚctypeÚcrvalÚcdeltÚcrpixZradesysZequinoxr   r0   rD   rE   rF   rc   rG   rH   rx   rI   rJ   ©r!   Úwr2   rL   r   r   r   Útest_tick_angles  s     zTestBasic.test_tick_anglesc                 C   sÎ   t ƒ }ddg|j_ddg|j_ddg|j_ddg|j_d|j_d|j_tj	d	d
�}|j
ddddg|d�}| dd¡ | dd¡ |jdddd� |jd jddd� |jd jddd� |jd  tj¡ |S )Nrå   ræ   rç   rè   ré   r,   rê   rë   )r*   rO   r+   r6   r7   r.   rì   rí   rá   r«   rî   rï   r]   rÓ   rð   rñ   r   rò   r÷   r   r   r   Ú test_tick_angles_non_square_axes(  s     z*TestBasic.test_tick_angles_non_square_axesc                 C   sª   t jdd�}|jddddgt| jƒdd�}| dd¡ | dd¡ |jd	  d
¡ |jd  d
¡ |jd	  	d¡ |jd  	d¡ |jd	 j
dd� |jd j
dd� |S )NrN   r+   r?   ç333333ã?r8   r9   r;   r<   r   Zscalarr,   zx.xxxTr¨   )r   r0   rD   r   r   rE   rF   rG   Úset_coord_typer‹   r°   rK   r   r   r   Útest_set_coord_typeB  s    
  ÿzTestBasic.test_set_coord_typec                 C   sÐ   t | jƒ}tjdd�}|jddddg|dd�}| ddgdd	gd¡d
 }|j|Ž  |jd jdt	j
 d� |jd
 jdt	j t	j d� |jd jdd� |jd
 jdd� |jd  d¡ |jd
  d¡ |S )NrN   r+   r~   rá   Úautor9   r   g     á@g     ˆó@r,   gü©ñÒMb`?©r‡   r@   )r„   r   )r   r   r   r0   rD   Zwcs_world2pixrF   rG   rH   rI   r­   rÌ   r¯   r°   rÊ   )r!   rÒ   r2   rL   Zlimitsr   r   r   Útest_ticks_regressionS  s    

zTestBasic.test_ticks_regressionc                 C   st   t | jƒ}tjdd�}|jddddg|dd�}|jd  d¡ |jd	  d
¡ |jd	  d¡ |jd	 j 	d¡ |S )NrN   r+   r~   rá   rþ   r9   r   zLabel 1r,   zLabel 2ÚalwaysF)
r   r   r   r0   rD   rG   r�   Zset_axislabel_visibility_ruleZ
ticklabelsZset_visible©r!   rÒ   r2   rL   r   r   r   Útest_axislabels_regressionh  s    
z$TestBasic.test_axislabels_regressionZbbox_inchesZtight)Zsavefig_kwargsc                 C   sü   t dd�}ddg|j_ddg|j_tjdd�}|jddd|d	�}|jt 	d
d
g¡dd� |j
d jddd� |j
d  d¡ |j
d  d¡ |j
d  d¡ |j
d jtjdd� |j
d jtjdd� |jddd� | |d ¡ | dd¡dksøt‚|S )Nr-   ©Únaxiszsolar-xzsolar-yrŒ   rN   r+   r,   r.   i   Úlower)Úoriginr   Z	longitudeé´   )Z
coord_wrapZlatitudezs.sF)Zshow_decimal_unitÚwhiter«   )rƒ   ZlsZnothingi   z513.0 513.0 (world))r   rÒ   ró   Úcunitr   r0   r1   rR   rS   re   rG   rü   r‹   rx   rI   rŒ   rc   ZsavefigZformat_coordr�   ©r!   Útmp_pathrÒ   r2   rL   r   r   r   Útest_noncelestial_angularw  s     
z#TestBasic.test_noncelestial_angularc           
   	   C   sî  t | jƒ}tjdd�}|jddddg|dd�}tddd	d
dd�}| |¡ tddddd| d¡d�}| |¡ tdddd| d¡d�}| |¡ |j	dddgdddgdddd� |j	dd| d¡dddd � t
d!tj d"tj fdtj d#d| d¡d�}| |¡ t
td!tj d"tj ƒdtj d#d| d¡d�}tjtd$d%��0 t
td&d'd(d)d*�dtj d#d| d¡d�}	W 5 Q R X |jd+  d,¡ |jd-  d,¡ | ¡ | ¡ k ¡ �s²t‚t | ¡ |	 ¡ ¡�sÌt‚t | ¡ d+ d!d.g¡�sêt‚|S )/NrN   r+   r~   rá   r8   r9   rX   r[   rZ   r\   r—   )r_   r^   )çfffff¦p@rÂ   ç333333Ó?Úcyanrœ   )r_   r^   rq   )r  çš™™™™=Àrk   Úmagentar•   r”   é‚   é   é<   r]   )r,   r   r   rá   )r¯   r_   r^   g¶ä „¬p@gÔHKåíÄ<Àr“   )rq   r¯   r_   r^   r  r  rª   zšReceived `center` of representation type <class 'astropy.coordinates.representation.CartesianRepresentation'> will be converted to SphericalRepresentation)ÚmatchgsÊPÓ6¬¿gî„,EÑçë¿g7ÿm ß¿Z	cartesian)r£   r¢   ÚzZrepresentation_typer   Fr,   g     @=À)r   r   r   r0   rD   r   rf   rw   r   Zscatterr   rI   r­   rJ   r   ÚpytestZwarnsr   rG   Úset_ticklabel_visibleZget_xyr   r�   rS   Zallclose)
r!   r  rÒ   r2   rL   rh   r¼   Úr1Úr2Zr3r   r   r   Útest_patches_distortion›  s”    

ú
û
û	ú
û
ûþüöz!TestBasic.test_patches_distortionc                 C   sÊ   t | jƒ}tjdd�}|jddddg|dd�}| dd¡ | d	d¡ td
tj	 dtj	 dtj	 ddd| 
d¡d�}| |¡ td
dddddd| 
d¡d�}| |¡ |jd  d¡ |jd  d¡ |S )NrN   r+   r~   rá   r8   r9   r   i'  iðØÿÿ)éÿ   iºÿÿÿr”   rÓ   r   r²   r—   Zicrs)Úlabelr_   r^   rq   r   r]   z--)r  r_   r^   r…   rq   Fr,   )r   r   r   r0   rD   rE   rF   r   rI   r­   rw   rf   r   rG   r  )r!   r  rÒ   r2   rL   Úqrh   r   r   r   Útest_quadrangle   s:    
ù	
ø

zTestBasic.test_quadranglec                 C   sv   t | jƒ}tjdd�}|jddddg|dd�}| dd¡ | dd¡ t|d	tj	 d
tj	 dtj
 dddddd�	 |S )N©rQ   rO   r+   r?   rû   r8   r9   éöÿÿÿrb   r-   r,   éâÿÿÿzbottom rightTr>   r€   r’   )ÚmajorÚminorZangleÚcornerrŽ   Ú	borderpadÚpadrƒ   )r   r   r   r0   rD   rE   rF   r   rI   ÚarcminrJ   r  r   r   r   Útest_beam_shape_from_args'  s"    
÷z#TestBasic.test_beam_shape_from_argsc                 C   s’   | j }dtj  tj¡j|d< dtj  tj¡j|d< d|d< t|ƒ}tjdd�}|j	d	d	d
d
g|dd�}| 
dd¡ | dd¡ t||d� |S )Nr-   ZBMAJr,   ZBMINrY   ZBPAr!  r+   r?   rû   r8   r9   r"  rb   )Úheader)r   rI   r)  ÚtorJ   Úvaluer   r   r0   rD   rE   rF   r   )r!   r  ÚhdrrÒ   r2   rL   r   r   r   Útest_beam_shape_from_header>  s    z%TestBasic.test_beam_shape_from_headerc                 C   sd   t | jƒ}tjdd�}|jddddg|dd�}| dd¡ | dd¡ t|d	tj	 d
dddd� |S )Nr!  r+   r?   rû   r8   r9   r"  rb   r-   z2'z	top rightr€   T)r  r&  r'  Z	label_top)
r   r   r   r0   rD   rE   rF   r   rI   r)  r  r   r   r   Útest_scalebarP  s    
ú	zTestBasic.test_scalebarc                 C   s2   t | jƒ}tjdd�}|jddddg|td� |S )N)r@   rO   r+   r?   rû   )r/   Zframe_class)r   r   r   r0   rD   r   )r!   rÒ   r2   r   r   r   Útest_elliptical_framed  s    
zTestBasic.test_elliptical_framec                 C   s^   t jdd�}|jddddgt| jƒdd�}| d	d
¡ | d	d
¡ |jd jdt	j
 d� |S ©NrN   r+   r  r?   r   rû   r8   r9   r;   rá   r   ç      @rÿ   ©r   r0   rD   r   r   rE   rF   rG   rH   rI   rŒ   rK   r   r   r   Útest_hms_labelsn  s    
  ÿzTestBasic.test_hms_labelsztext.usetex)r×   c                 C   s^   t jdd�}|jddddgt| jƒdd�}| d	d
¡ | d	d
¡ |jd jdt	j
 d� |S r2  r4  rK   r   r   r   Útest_latex_labelsz  s    
  ÿzTestBasic.test_latex_labelsc                 C   sº  t ƒ }ddg|j_tjdd�}|jddd|d�}tjdd	d
ddddd� |jd  d¡ |jd  d¡ |jddd|d�}tjddd	d
ddddddd�
 tjddddddddd� |jd  d¡ |jd  d¡ |jddd|d�}|jddd	d
d	dddddd�
 |jddddddddd� t 	¡  |jd  d¡ |jd  d¡ |jddd|d�}|jd jddddddd� |jd  
d¡ |jd jddd� |jd  d¡ |jd  d¡ |S ) NÚlonÚlatr5   r+   r-   r,   r.   rß   rÓ   r@   r*   r]   r²   )Ú	directionÚlengthrC   r(  Ú	labelsizerƒ   Ú
labelcolorr   FrQ   Trª   )
Úaxisr9  r:  rC   r(  r;  rƒ   r<  ÚbottomÚ
grid_colorÚoutr)   )r=  r9  r;  rƒ   r<  ÚleftÚrightr?  rO   r£   r¢   rm   rb   )r:  r(  rr   ZlabelbottomZlabeltopr;  r%  )Úwhichr:  )r   rÒ   ró   r   r0   r1   Ztick_paramsrG   rd   rc   rÎ   r  r   r   r   Útest_tick_params…  s     ù
öøöø

úzTestBasic.test_tick_paramsN)'r$   r%   r&   r	   r4   rM   rT   r  ÚmarkÚparametrizeri   r|   r}   r‘   rŸ   r±   r³   r½   rÁ   rÃ   rÍ   rÏ   rÝ   rä   rù   rú   rý   r   r  r  r  r   r*  r/  r0  r1  r5  r6  rD  r   r   r   r   r(   ,   s‚   



%
"
#
-







%
%





#
d
&



	


r(   c                  C   sJ   t dd�} dg| j_dg| j_dg| j_dg| j_dg| j_| j ¡  | S )Nr,   r  ZWAVEr®   r@   é-   )r   rÒ   ró   r
  rö   rõ   rô   ÚsetrÑ   r   r   r   Úwave_wcs_1dù  s    






rI  c                 C   sH   t  ¡ }|jddd| d�}| dddddg¡\}| d¡ | d¡ |S )Nr,   r.   rb   rP   rÞ   zthis is the x-axiszthis is the y-axis)r   r0   r1   rg   râ   rã   ©rI  r2   rL   r»   r   r   r   Útest_1d_plot_1d_wcs  s    

rK  c                 C   sD   t  ¡ }|jddd| d�}| dddddg¡\}|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.
    r,   r.   rb   rP   rÞ   r   Únm)r   r0   r1   rg   rG   rx   rJ  r   r   r   Útest_1d_plot_1d_wcs_format_unit  s
    rM  c                  C   sN   t dd�} ddg| j_dgd | j_dgd | j_dgd | j_| j ¡  | S )Nr-   r  zGLON-TANzGLAT-TANr3  rÚ   rZ   ©r   rÒ   ró   rö   rõ   rô   rH  rÑ   r   r   r   Úspatial_wcs_2d   s    

rO  c                 C   s¨   t  ¡ }|jddd| dd�}|jdddddgddd	�\}|jd
 jdd	� |jd
 jdd	� |jd
 jdd	� |jd jdd	� |jd jdd	� |jd jdd	� |S )Nr,   ©r£   r   ©r/   r¥   rb   rP   rÞ   ú-orm   ©rƒ   r†   r]   rˆ   r²   )r   r0   r1   rg   rG   rH   r°   rc   )rO  r2   rL   r»   r   r   r   Útest_1d_plot_2d_wcs_correlated+  s    rT  c                  C   sL   t dd�} ddg| j_dgd | j_ddg| j_dgd | j_| j ¡  | S )	zv
    This WCS has an almost linear correlation between the pixel and world axes
    close to the reference pixel.
    r-   r  zHPLN-TANzHPLT-TANr3  glÁlÁf?glÁlÁV?r   rN  rÑ   r   r   r   Úspatial_wcs_2d_small_angle<  s    

rU  zslices, bottom_axiszcustom:pos.helioprojective.lonzcustom:pos.helioprojective.latc                 C   s`   t  ¡ }|jddd| | d�}|jdddddgddd�\}t  ¡  |j| j ¡ d	gks\t‚|S )
zG
    Test that a SLLWCS through a coupled 2D WCS plots as line OK.
    r,   r.   rb   rP   rÞ   rR  rm   rS  rÈ   ©	r   r0   r1   rg   ZdrawrG   ZticksZget_visible_axesr�   ©rU  r¥   Zbottom_axisr2   rL   r»   r   r   r   Ú$test_1d_plot_1d_sliced_low_level_wcsK  s    rX  )rP  Zhpln))r   r£   Zhpltc                 C   s^   t  ¡ }|jddd| |d�}|jdddddgddd�\}t  ¡  |j| j ¡ d	gksZt‚|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.
    r,   rQ  rb   rP   rÞ   rR  rm   rS  rÈ   rV  rW  r   r   r   Ú+test_1d_plot_put_varying_axis_on_bottom_lonf  s    rY  c                  C   sø   t jdd�} d}dD ]Ê}dD ]À}|d7 }tdd�}||j_|df|j_d	|j_d
|j_| jdd||d�}| 	dd¡ |j
d jdtj d� |j
d  d¡ |j
d  d¡ |j
d  d¡ |j
d  d¡ |j
d  d¡ qq| jdddddd� | S )N)rQ   rQ   r+   r   ))zGLON-CARzGLAT-CAR)zHGLN-CARzHGLT-CAR)r   rç   r  i  r,   r-   r  )g     ˆv@ç     �f@)r;   rá   r)   r.   r;   g     |†@r¡   rÿ   rÈ   Fgš™™™™™©?gffffffî?r6   )ZhspacerA  rB  r>  Útop)r   r0   r   rÒ   ró   rô   rö   rõ   r1   rE   rG   rH   rI   r­   rÉ   rd   r  Zset_ticks_visibleZsubplots_adjust)r2   Zicenró   ZcenrÒ   rL   r   r   r   Útest_allsky_labels_wrap‚  s(    
r\  c                  C   sF  t ddddddddd	d
œ	ƒ} tƒ }|j| d�}| dd¡ | dd¡ |j\}}| ¡  | ¡  | d¡}|d jdt	j
 d� |d jdt	j
 d� |d  ddt	j
 ¡ |d  ddt	j
 ¡ |d jdd� |d  d¡ |d jdd� |d jddd� |d jdd� |d  d¡ |d jdd� |d jddd� |S )Nr-   ih  r  rZ  g      V@rì   r,   zRA---CARzDEC--CAR)	r  Znaxis1Znaxis2Zcrpix1Zcrpix2Zcdelt1Zcdelt2Zctype1Zctype2r.   r;   g     xv@g     °b@r�   r   r  rÿ   Úgr#  ú
const-glonr  rS  ÚgtzGalactic longituder²   )r^  rh   zGalactic latitude)r   r   r1   rE   rF   rG   rc   Zget_coords_overlayrH   rI   r­   Zadd_tickable_gridlinerÊ   r°   r�   )rÒ   r2   rL   r7  r8  Úoverlayr   r   r   Útest_tickable_gridlines£  sB    ÷ÿ

ra  )6Zmatplotlib.linesrº   Zmatplotlib.pyplotZpyplotr   ÚnumpyrS   r  r   Zmatplotlib.figurer   Zmatplotlib.patchesr   r   Zastropyr   rI   Zastropy.coordinatesr   Z
astropy.ior   Zastropy.tests.figuresr	   Zastropy.utils.datar
   Zastropy.utils.exceptionsr   Zastropy.visualization.wcsaxesr   r   r   Z#astropy.visualization.wcsaxes.framer   Z%astropy.visualization.wcsaxes.patchesr   r   Zastropy.wcsr   r   r(   ZfixturerI  rK  rM  rO  rT  rU  rE  rF  Zs_rX  rY  r\  ra  r   r   r   r   Ú<module>   sn          T






ýþ ÿ
 