U
    e»{jš  ã                   @   s  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
 d dlmZ d dlmZ dd	lmZ eejƒZd
d„ Zdd„ Zejjeedƒk dd�dd„ ƒZejjeedƒk dd�dd„ ƒZejjeedƒk dd�ejjedƒe  koôedƒk n  dd�dd„ ƒƒZdS )é    )ÚdeepcopyN)ÚVersion)Úwcs)Úfits)Úget_pkg_data_filename)Ú_wcsé   )ÚSimModelTABc                 C   s‚   | j \}}tj d¡ d|d |d gtj d¡  }|  |d¡}|  |d¡}tjt |¡jŽ }tj	|| || ddd�s~t
‚d S )Nr   çR¸…ëQà?ç®Gáz®ï?©éd   é   r   çH¯¼šò×z>©ZrtolZatol)Zpixel_shapeÚnpÚrandomÚseedÚwcs_pix2worldÚwcs_world2pixÚlogical_andÚisfiniteÚTÚallcloseÚAssertionError)Ztab_wcs_2diÚnxÚnyÚxyÚrdZxy_roundtrippedÚm© r    úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/wcs/tests/test_tab.pyÚtest_2d_spatial_tab_roundtrip   s    
 r"   c                  C   sˆ   d} d}t | |d�}|j}t |d j|¡}tj d¡ d| d |d gtj d¡  }| |d¡}| 	|¡}tj
||dd	d
�s„t‚d S )Né–   éÈ   )r   r   r   r   r
   r   r   r   r   )r	   Úhdulistr   ÚWCSÚheaderr   r   r   r   Zfwd_evalr   r   )r   r   Úmodelr%   Úwr   r   Zrd_modelr    r    r!   Útest_2d_spatial_tab_vs_model   s     
r*   z7.6z>Only in WCSLIB 7.6 a 1D -TAB axis roundtrips unless first axis)Úreasonc               	   C   sl   t dƒ} t | ¡�}t |d j|¡}W 5 Q R X tj d¡dddgg }t || 	| 
|d¡d¡¡sht‚d S )Núdata/tab-time-last-axis.fitsr   )é
   é   iÿ  é   )r   r   Úopenr   r&   r'   r   r   r   r   r   r   )ÚfilenameÚhdulr)   Zptsr    r    r!   Ú&test_mixed_celest_and_1d_tab_roundtrip0   s
    r3   z7.8z6Requires WCSLIB >= 7.8 for swapping -TAB axes to work.c               	   C   s^   t dƒ} t | ¡�.}t |d j|¡}d|jjd< |j ¡  W 5 Q R X | dd¡}t	|ƒ d S )Nr,   r   úFREQ-TABéÿÿÿÿr   )
r   r   r0   r   r&   r'   ÚctypeÚsetZswapaxesr   )r1   r2   r)   Zwswpr    r    r!   Útest_wcstab_swapaxes?   s    r8   z7.10zFRequires WCSLIB >= 7.10 for swapped -TAB axes to produce same results.c            
   	   C   sê   t dƒ} dddg}tdd„ |D ƒƒ}t | ¡�8}t |d j|¡}d|jjd	< |j ¡  | 	|¡}W 5 Q R X t
 dd
dg¡}|| }| |gd¡d }| |gd¡d }	t
j|| |	ddd�sÂt‚t
j| |gd¡d |ddd�sæt‚d S )Nr,   r.   r   r   c                 s   s   | ]}|d  V  qdS )r   Nr    )Ú.0Úir    r    r!   Ú	<genexpr>[   s     z:test_wcstab_swapaxes_same_val_roundtrip.<locals>.<genexpr>r   r4   r5   é   é   g:Œ0âŽyE>r   )r   Úlistr   r0   r   r&   r'   r6   r7   Úsubr   Úarrayr   r   r   r   )
r1   Z
axes_orderZaxes_order0r2   r)   ÚwsZimcoordZimcoordsZval_refZval_swappedr    r    r!   Ú'test_wcstab_swapaxes_same_val_roundtripO   s    	

rB   )Úcopyr   Únumpyr   ZpytestZpackaging.versionr   Zastropyr   Z
astropy.ior   Zastropy.utils.datar   Zastropy.wcsr   Úhelperr	   Ú__version__Z_WCSLIB_VERr"   r*   ÚmarkZskipifr3   r8   ZxfailrB   r    r    r    r!   Ú<module>   s<   

þ

þ

þþ