U
    e»{jÒª  ã                   @   s>  d Z ddlZddlmZ 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 dd	lmZ dd
lmZ dd„ Zdd„ ZddgZej ejejdddd¡Zdd„ ej D ƒZ!e! "d¡ ej# $de!¡dd„ ƒZ%ej# $de!¡dd„ ƒZ&ej# $de!¡dd„ ƒZ'ej# $de!¡dd „ ƒZ(ej# $de!¡d!d"„ ƒZ)G d#d$„ d$ƒZ*G d%d&„ d&ƒZ+d'd(„ Z,d)d*„ Z-d+d,„ Z.d-d.„ Z/d/d0„ Z0d1d2„ Z1d3d4„ Z2d5d6„ Z3d7d8„ Z4d9d:„ Z5d;d<„ Z6d=d>„ Z7d?d@„ Z8dAdB„ Z9dCdD„ Z:dEdF„ Z;dGdH„ Z<dIdJ„ Z=dKdL„ Z>dMdN„ Z?dOdP„ Z@dQdR„ ZAdSdT„ ZBdUdV„ ZCdWdX„ ZDdYdZ„ ZEd[d\„ ZFd]d^„ ZGd_d`„ ZHdadb„ ZIdcdd„ ZJdedf„ ZKdgdh„ ZLdidj„ ZMdkdl„ ZNdmdn„ ZOdodp„ ZPdqdr„ ZQdsdt„ ZRdudv„ ZSdwdx„ ZTdydz„ ZUd{d|„ ZVd}d~„ ZWdd€„ ZXd�d‚„ ZYdƒd„„ ZZd…d†„ Z[d‡dˆ„ Z\d‰dŠ„ Z]d‹dŒ„ Z^d�dŽ„ Z_d�d�„ Z`d‘d’„ Zad“d”„ Zbd•d–„ Zcd—d˜„ Zdd™dš„ Zed›dœ„ ZfdS )�z,Test sky projections defined in WCS Paper IIé    N)Úassert_allcloseÚassert_almost_equal)Úunits)Úwcs)Úfits)Úprojections)ÚInputParameterError)Úassert_quantity_allclose)Úget_pkg_data_filenamec                   C   s    t tjƒ tjtj ¡rt‚d S )N)Úsetr   Z	PRJ_CODESÚsymmetric_differencer   Ú	projcodesZ_NOT_SUPPORTED_PROJ_CODESÚAssertionError© r   r   úf/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/modeling/tests/test_projections.pyÚtest_new_wcslib_projections   s    

ÿr   c                  C   s(   t  ¡ } | jdkst‚| jdks$t‚d S )Né   )r   ÚSky2Pix_PlateCarreeZn_inputsr   Z	n_outputs)Z
projectionr   r   r   Útest_Projection_properties   s    r   éöÿÿÿé   r   ZtestsÚdataÚmapsc                 C   s   g | ]
}|f‘qS r   r   )Ú.0Úxr   r   r   Ú
<listcomp>'   s     r   )ZXPH)Úcodec                 C   s6  t j td| › d�¡}t|ƒ}tjj|ddd�}g }tdƒD ](}d|d › �}||kr<| 	|| ¡ q<t
 |¡}ddg|j
_d	d	g|j
_ddg|j
_|j
 tgd¡}|j
 |d
 d¡d }	ttd|  ƒ}
|
|Ž }||d |d ƒ\}}tt |¡|	dd…d	f ƒ tt |¡|	dd…df ƒ t|jt
jƒ�s2t‚dS ©ú,Check astropy model eval against wcslib evalú1904-66_ú.hdrF©ZendcardÚpaddingé   ÚPV2_é   ç        r   ÚworldÚpixcrdÚSky2Pix_ÚphiÚthetaN)ÚosÚpathÚjoinÚMAPS_DIRr
   r   ÚHeaderÚfromfileÚrangeÚappendr   ÚWCSÚcrvalÚcrpixÚcdeltÚp2sÚPIX_COORDINATESÚs2pÚgetattrr   r   ÚnpÚasarrayÚ
isinstanceZprjprmZPrjprmr   ©r   Úwcs_mapÚ	test_fileÚheaderÚparamsÚiÚkeyÚwÚ	wcsliboutÚwcs_pixÚmodelÚtinvr   Úyr   r   r   Útest_Sky2Pix-   s(    
rL   c                 C   sú   t j td| › d�¡}t|ƒ}tjj|ddd�}g }tdƒD ](}d|d › �}||kr<| 	|| ¡ q<t
 |¡}ddg|j
_d	d	g|j
_ddg|j
_|j
 tgd¡}|d
 }	|d }
ttd|  ƒ}||Ž }|tŽ \}}tt |¡|	ƒ tt |¡|
ƒ dS ©r   r   r    Fr!   r#   r$   r%   r&   r   r*   r+   ÚPix2Sky_N)r,   r-   r.   r/   r
   r   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r;   r   r   r<   r=   ©r   r@   rA   rB   rC   rD   rE   rF   rG   Úwcs_phiÚ	wcs_thetarI   Ztanprjr*   r+   r   r   r   Útest_Pix2SkyJ   s(    
rR   c                 C   s.  t j td| › d�¡}t|ƒ}tjj|ddd�}g }tdƒD ](}d|d › �}||kr<| 	|| ¡ q<t
 |¡}ddg|j
_d	d	g|j
_ddg|j
_|j
 tgd¡}|j
 |d
 d¡d }	ttd|  ƒ}
|
|Ž }||d tj |d tj ƒ\}}t||	dd…d	f tj ƒ t||	dd…df tj ƒ dS r   )r,   r-   r.   r/   r
   r   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r;   r   ÚuÚdegr	   r?   r   r   r   Útest_Sky2Pix_unitf   s&    
"rU   c                 C   st  t j td| › d�¡}t|ƒ}tjj|ddd�}g }tdƒD ](}d|d › �}||kr<| 	|| ¡ q<t
 |¡}ddg|j
_d	d	g|j
_ddg|j
_|j
 tgd¡}|d
 }	|d }
ttd|  ƒ}||Ž }|ttj Ž \}}t||	tj ƒ t||
tj ƒ |ttj  tj¡Ž \}}t||	tj ƒ t||
tj ƒ |ttj  tj¡Ž \}}t||	tj ƒ t||
tj ƒ dS rM   )r,   r-   r.   r/   r
   r   r0   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r;   r   rS   rT   r	   ÚtoZradZarcminrO   r   r   r   Útest_Pix2Sky_unit�   s4    
rW   c                 C   sH   t td|  ƒ}|ƒ }|ddƒ\}}t td|  ƒ}|ƒ }|ddƒ\}}dS )z0Check astropy model eval with default parametersr)   é-   rN   r   N)r;   r   )r   rI   rJ   r   rK   r   r   r   Útest_projection_default£   s    rY   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestZenithalPerspectivez$Test Zenithal Perspective projectionc                 C   s¦   d}t j td|› d�¡}t|ƒ}tjj|ddd�}t 	|¡| _
t ddg¡| j
j_t ddg¡| j
j_t ddg¡| j
j_dd	„ | j
j ¡ D ƒ| _tj| jŽ | _d S )
NZAZPr   r    Fr!   r&   ç      ð?c                 S   s   g | ]}|d  ‘qS ©r   r   ©r   Úkwr   r   r   r   ¾   s     z7TestZenithalPerspective.setup_class.<locals>.<listcomp>)r,   r-   r.   r/   r
   r   r0   r1   r   r4   Úwazpr<   Úarrayr6   r5   r7   Úget_pvÚpv_kwr   ÚPix2Sky_ZenithalPerspectiveÚazp©ÚselfZIDr@   rA   rB   r   r   r   Úsetup_classµ   s    z#TestZenithalPerspective.setup_classc                 C   sZ   | j j ddggd¡}|d }|d }|  dd¡\}}tt |¡|ƒ tt |¡|ƒ d S ©Nr   r   r%   r*   r+   ©r_   r   r8   rd   r   r<   r=   ©rf   rG   rP   rQ   r*   r+   r   r   r   Útest_AZP_p2sÁ   s    z$TestZenithalPerspective.test_AZP_p2sc                 C   s„   | j j ddggd¡}| j j |d d¡d }| j |d |d ¡\}}tt |¡|d d …df ƒ tt |¡|d d …df ƒ d S ©	Nr   r   r%   r'   r(   r*   r+   r   ©	r_   r   r8   r:   rd   Úinverser   r<   r=   ©rf   rG   rH   r   rK   r   r   r   Útest_AZP_s2pÉ   s
    z$TestZenithalPerspective.test_AZP_s2pc              	   C   s˜   d}t jt|d�� t d¡ W 5 Q R X t jt|d�� t d¡ W 5 Q R X t jt|d�� t d¡ W 5 Q R X t jt|d�� t d¡ W 5 Q R X d S )Nz:Zenithal perspective projection is not defined for mu = -1©Úmatchéÿÿÿÿ)ÚpytestÚraisesr   r   rc   ÚSky2Pix_ZenithalPerspectiveÚ Pix2Sky_SlantZenithalPerspectiveÚ Sky2Pix_SlantZenithalPerspective)rf   ÚMESSAGEr   r   r   Útest_validateÐ   s    z%TestZenithalPerspective.test_validateN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rg   rk   rp   rz   r   r   r   r   rZ   ²   s
   rZ   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestCylindricalPerspectivez'Test cylindrical perspective projectionc                 C   s¦   d}t j td|› d�¡}t|ƒ}tjj|ddd�}t 	|¡| _
t ddg¡| j
j_t ddg¡| j
j_t ddg¡| j
j_dd	„ | j
j ¡ D ƒ| _tj| jŽ | _d S )
NZCYPr   r    Fr!   r&   r[   c                 S   s   g | ]}|d  ‘qS r\   r   r]   r   r   r   r   ì   s     z:TestCylindricalPerspective.setup_class.<locals>.<listcomp>)r,   r-   r.   r/   r
   r   r0   r1   r   r4   r_   r<   r`   r6   r5   r7   ra   rb   r   ÚPix2Sky_CylindricalPerspectiverd   re   r   r   r   rg   ã   s    z&TestCylindricalPerspective.setup_classc                 C   sZ   | j j ddggd¡}|d }|d }|  dd¡\}}tt |¡|ƒ tt |¡|ƒ d S rh   ri   rj   r   r   r   Útest_CYP_p2sï   s    z'TestCylindricalPerspective.test_CYP_p2sc                 C   s„   | j j ddggd¡}| j j |d d¡d }| j |d |d ¡\}}tt |¡|d d …df ƒ tt |¡|d d …df ƒ d S rl   rm   ro   r   r   r   Útest_CYP_s2p÷   s
    z'TestCylindricalPerspective.test_CYP_s2pc              	   C   s8  d}d}d}t jt|d�� t dd¡ W 5 Q R X t jt|d�� t dd¡ W 5 Q R X t ¡ }t jt|d�� d|_W 5 Q R X t jt|d�� d|_W 5 Q R X t jt|d�� t dd¡ W 5 Q R X t jt|d�� t dd¡ W 5 Q R X t ¡ }t jt|d�� d|_W 5 Q R X t jt|d�� d|_W 5 Q R X d S )Nz$CYP projection is not defined for .*z.CYP projection is not defined for mu = -lambdaz.CYP projection is not defined for lambda = -murq   r%   rs   )rt   ru   r   r   r€   ÚmuÚlamÚSky2Pix_CylindricalPerspective)rf   ry   ZMESSAGE0ZMESSAGE1rI   r   r   r   rz   þ   s*    z(TestCylindricalPerspective.test_validateN)r{   r|   r}   r~   rg   r�   r‚   rz   r   r   r   r   r   à   s
   r   c            	   
   C   s.  t jddgddggddgd�} ddgddgddgddgg}t|Ž \}}t | ||ƒ¡j}t |ddgddgddgddggk¡s‚t‚d}tj	t
|d��$ dddgd	d
dgdddgg| _W 5 Q R X d}tj	t
|d�� dddg| _W 5 Q R X tj	t
|d�� dgdgg| _W 5 Q R X tj	t
|d�� dddgg| _W 5 Q R X t dgdgdgd	gg¡}| ¡ }tjjtdd||gd��b}d}tj	t|d�� | ||ƒ W 5 Q R X tj	t|d�� | ||ƒ W 5 Q R X |jdk�sÐt‚W 5 Q R X t ddg¡}t dddg¡}d}tj	t|d�� |  ||| j| j¡ W 5 Q R X d S )Nr   r   r%   ©ÚmatrixÚtranslationr#   é   z0Expected transformation matrix to be a 2x2 arrayrq   é   é   é   é   é	   zHExpected translation vector to be a 2 element row or column vector arrayÚvstackT)ZautospecZside_effectzIncompatible input shapesz,Expected input arrays to have the same shape)r   ÚAffineTransformation2DÚzipr<   r�   ÚTÚallr   rt   ru   r   r‡   rˆ   r`   ZravelÚmkÚpatchÚobjectÚ
ValueErrorZ
call_countÚevaluate)	rI   Úrectr   rK   Znew_rectry   ÚaÚbZ	mk_vstackr   r   r   Útest_AffineTransformation2D  sB     ÿ*(ÿrœ   c            
   	   C   st  t jddgddggd�} d}tjt|d�� | j W 5 Q R X t jddgddggd	d
gd�}ddgddgddgddgg}t|Ž \}}|j|||ƒŽ \}}t||g||gdd� t jddgddggtj	 d	d
gtj	 d�}|j||tj	 |tj	 ƒŽ \}}t||g||gdd� t jddgddggtj	 d	d
gtj
 d�}	d}tjt|d��" |	j|	|tj	 |tj	 ƒŽ  W 5 Q R X d S )Nr%   ©r‡   zDTransformation matrix is singular; .* model does not have an inverserq   g333333ó?g333333@gffffff@g333333@g333333"@g¸…ëQ8$@r†   r   r#   g»½×Ùß|Û=©Zatolz/matrix and translation must have the same units)r   r�   rt   ru   r   rn   r‘   r   rS   ÚmÚkmr—   )
Zmodel1ry   Zmodel2r™   r   rK   Zx_newZy_newZmodel3Zmodel4r   r   r   Ú#test_AffineTransformation2D_inverseN  s2     ÿ ÿ  ÿr¡   c                  C   sn   t  d¡ d¡} t dd¡}|| d d …df | d d …df ƒ\}}t|ddd	d
dgƒ t|dddddgƒ d S )Né
   ©r‹   r   r   r   r   r%   r&   gÁÉ‘)z;@g,6œè©ô@gª–Û€@g’®™|³]!@gð×	ÔSÀgÊB*{×RÀg­RÕ_
ˆRÀg,ôÁ262RÀgy�ÃkÍÕQÀ)r<   ZarangeZreshaper   rv   r   )ZcoordsrI   r*   r+   r   r   r   Útest_c_projection_stridingq  s    & ÿr¤   c            	      C   s’   d\} }t  dd| ¡}t  dd|¡}t  ||¡\}}t ¡ }|||ƒ\}}t|dddddgdddd	d
ggƒ t|dddddgdddddggƒ d S )Nr£   r   r%   r&   g     €V@g     €f@g5ï×¾d@g®ªÉë-c@g?LgÌ)äa@g     à`@gß?« pV@g¤È95 `V@gÁ\¤³ PV@gEÎ©@V@gl¾¾”	>V@g6	œtt8V@gÕ�?0V@g®�:‚%V@)r<   ÚlinspaceZmeshgridr   ZPix2Sky_TANr   )	ÚnxÚnyr   rK   ZxvZyvrI   r*   r+   r   r   r   Útest_c_projections_shaped�  s$    þþþþr¨   c               	   C   s®  d} d}| t j jt jt  dt j t j ¡d�}|t j jt jt  dt j t j ¡d�}| t j }|t j }tjddgddggt j d�}d}tjt	|d��B |||t  dt j t j ¡t  dt j t j ¡dœd�\}}	W 5 Q R X tjddgddggt j ddgt j d	�}|||t  dt j t j ¡t  dt j t j ¡dœd�\}}	tjddgddggddgd	�}
|
|j
|j
ƒ\}}t||t j ƒ t|	|t j ƒ t d
dgdd
gg¡}t ddgddgg¡}|| }tj|t j ddgt j d	�}tj |¡}tj|t j ddgt j d	�}||_|||t  dt j t j ¡t  dt j t j ¡dœd�\}}	|j||	t  dt j t j ¡t  dt j t j ¡dœd�\}}t||ƒ t||ƒ d S )Nr%   r   g      @)Zequivalenciesr�   zWTo use AffineTransformation with quantities, both matrix and unit need to be quantitiesrq   )r   rK   r†   góödµë?g´¹jš`à?g´¹jš`à¿g�KßÂ5 ?g‚fòP< ?r   )rS   ZpixrV   rT   Zpixel_scaler   r�   rt   ru   r—   Úvaluer	   r<   r`   ZlinalgÚinvrn   )r   rK   ZxdegZydegZxpixZypixZqaffry   Zqx1Zqy1ZaffÚx1Úy1Zpcr7   r‡   Z
inv_matrixZinv_qaffr   r   r   Útest_affine_with_quantitiesœ  s�    ((

ÿþý
 ÿþý
 ÿþÿþÿ ÿ ÿþý
þý

r­   c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S ©Nr   r   r   r%   éd   çê-�™—q=rž   )r   rc   rn   r>   rv   r   rƒ   r   Úgammar<   r¥   ©rI   rn   r   rK   rš   r›   r   r   r   Ú(test_Pix2Sky_ZenithalPerspective_inverseò  s    r³   c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   rv   rn   r>   ZPix2Sky_AZPr   rƒ   r   r±   r<   r¥   r²   r   r   r   Ú(test_Sky2Pix_ZenithalPerspective_inverse  s    r´   c                  C   sÚ   t  ddd¡} | j}t|t jƒs$t‚|j| j  kr<dksBn t‚t|j| jƒ t|j	| j	ƒ t
 ddd¡}t
 ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S ©	Nr   r   é(   r   r%   r¯   r°   rž   )r   rw   rn   r>   rx   r   rƒ   r   Úphi0Útheta0r<   r¥   r²   r   r   r   Ú-test_Pix2Sky_SlantZenithalPerspective_inverse  s    r¹   c                  C   sÚ   t  ddd¡} | j}t|t jƒs$t‚|j| j  kr<dksBn t‚t|j| jƒ t|j	| j	ƒ t
 ddd¡}t
 ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S rµ   )r   rx   rn   r>   rw   r   rƒ   r   r·   r¸   r<   r¥   r²   r   r   r   Ú-test_Sky2Pix_SlantZenithalPerspective_inverse(  s    rº   c                  C   sl   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}|| ||ƒŽ \}}t||dd� t||dd� d S ©Nr   r%   r¯   r°   rž   )	r   ÚPix2Sky_Gnomonicrn   r>   ÚSky2Pix_Gnomonicr   r<   r¥   r   r²   r   r   r   Útest_Pix2Sky_Gnomonic_inverse:  s    r¾   c                  C   sl   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� d S r»   )	r   r½   rn   r>   r¼   r   r<   r¥   r   r²   r   r   r   Útest_Sky2Pix_Gnomonic_inverseF  s    r¿   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_Stereographicrn   r>   ÚSky2Pix_Stereographicr   r<   r¥   r   r²   r   r   r   Ú"test_Pix2Sky_Stereographic_inverseR  s    rÂ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rÁ   rn   r>   rÀ   r   r<   r¥   r   r²   r   r   r   Ú"test_Sky2Pix_Stereographic_inversea  s    rÃ   c                  C   s¬   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚|j| j  krXdks^n t‚t 	ddd¡}t 	ddd¡}|| ||ƒŽ \}}t
||dd� t
||dd� d S ©Nr   r   r   r%   r¯   g:Œ0âŽyE>rž   )r   ÚPix2Sky_SlantOrthographicrn   r>   ÚSky2Pix_SlantOrthographicr   ÚxiÚetar<   r¥   r   r²   r   r   r   Ú&test_Pix2Sky_SlantOrthographic_inversep  s    rÉ   c                  C   s¬   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚|j| j  krXdks^n t‚t 	ddd¡}t 	ddd¡}| |||ƒŽ \}}t
||dd� t
||dd� d S rÄ   )r   rÆ   rn   r>   rÅ   r   rÇ   rÈ   r<   r¥   r   r²   r   r   r   Ú&test_Sky2Pix_SlantOrthographic_inverse~  s    rÊ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_ZenithalEquidistantrn   r>   ÚSky2Pix_ZenithalEquidistantr   r<   r¥   r   r²   r   r   r   Ú(test_Pix2Sky_ZenithalEquidistant_inverseŒ  s    rÍ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rÌ   rn   r>   rË   r   r<   r¥   r   r²   r   r   r   Ú(test_Sky2Pix_ZenithalEquidistant_inverse›  s    rÎ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_ZenithalEqualArearn   r>   ÚSky2Pix_ZenithalEqualArear   r<   r¥   r   r²   r   r   r   Ú&test_Pix2Sky_ZenithalEqualArea_inverseª  s    rÑ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rÐ   rn   r>   rÏ   r   r<   r¥   r   r²   r   r   r   Ú&test_Sky2Pix_ZenithalEqualArea_inverse¹  s    rÒ   c                  C   sº   t  d¡} | j}t|t jƒs t‚|j| j  kr8dks>n t‚t ddd¡}t ddd¡}| |||ƒŽ \}}t	||dd� t	||dd� || ||ƒŽ \}}t	||dd� t	||dd� d S ©Nr   r   r%   r¯   r°   rž   )
r   ÚPix2Sky_Airyrn   r>   ÚSky2Pix_Airyr   Útheta_br<   r¥   r   r²   r   r   r   Útest_Pix2Sky_Airy_inverseÈ  s    
r×   c                  C   sº   t  d¡} | j}t|t jƒs t‚|j| j  kr8dks>n t‚t ddd¡}t ddd¡}| |||ƒŽ \}}t	||dd� t	||dd� || ||ƒŽ \}}t	||dd� t	||dd� d S rÓ   )
r   rÕ   rn   r>   rÔ   r   rÖ   r<   r¥   r   r²   r   r   r   Útest_Sky2Pix_Airy_inverseØ  s    
rØ   c                  C   sÚ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚|j| j  krXdks^n t‚t 	ddd¡}t 	ddd¡}| |||ƒŽ \}}t
||dd� t
||dd� || ||ƒŽ \}}t
||dd� t
||dd� d S r®   )r   r€   rn   r>   r…   r   rƒ   r„   r<   r¥   r   r²   r   r   r   Ú+test_Pix2Sky_CylindricalPerspective_inverseè  s    rÙ   c                  C   sÚ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚|j| j  krXdks^n t‚t 	ddd¡}t 	ddd¡}| |||ƒŽ \}}t
||dd� t
||dd� || ||ƒŽ \}}t
||dd� t
||dd� d S r®   )r   r…   rn   r>   r€   r   rƒ   r„   r<   r¥   r   r²   r   r   r   Ú+test_Sky2Pix_CylindricalPerspective_inverseù  s    rÚ   c                  C   sB   t  d¡} | j}t|t jƒs t‚|j| j  kr8dks>n t‚d S )Ng¾Ÿ/Ý$â?)r   ÚPix2Sky_CylindricalEqualArearn   r>   ÚSky2Pix_CylindricalEqualArear   r„   ©rI   rn   r   r   r   Ú)test_Pix2Sky_CylindricalEqualArea_inverse
  s    
rÞ   c                  C   sB   t  d¡} | j}t|t jƒs t‚|j| j  kr8dks>n t‚d S )Ng{®Gázè?)r   rÜ   rn   r>   rÛ   r   r„   rÝ   r   r   r   Ú)test_Sky2Pix_CylindricalEqualArea_inverse  s    
rß   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_PlateCarreern   r>   r   r   r<   r¥   r   r²   r   r   r   Ú test_Pix2Sky_PlateCarree_inverse  s    rá   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   r   rn   r>   rà   r   r<   r¥   r   r²   r   r   r   Ú test_Sky2Pix_PlateCarree_inverse'  s    râ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_Mercatorrn   r>   ÚSky2Pix_Mercatorr   r<   r¥   r   r²   r   r   r   Útest_Pix2Sky_Mercator_inverse6  s    rå   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rä   rn   r>   rã   r   r<   r¥   r   r²   r   r   r   Útest_Sky2Pix_Mercator_inverseE  s    ræ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_SansonFlamsteedrn   r>   ÚSky2Pix_SansonFlamsteedr   r<   r¥   r   r²   r   r   r   Ú$test_Pix2Sky_SansonFlamsteed_inverseT  s    ré   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rè   rn   r>   rç   r   r<   r¥   r   r²   r   r   r   Ú$test_Sky2Pix_SansonFlamsteed_inversec  s    rê   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_Parabolicrn   r>   ÚSky2Pix_Parabolicr   r<   r¥   r   r²   r   r   r   Útest_Pix2Sky_Parabolic_inverser  s    rí   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rì   rn   r>   rë   r   r<   r¥   r   r²   r   r   r   Útest_Sky2Pix_Parabolic_inverse�  s    rî   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_Molleweidern   r>   ÚSky2Pix_Molleweider   r<   r¥   r   r²   r   r   r   Útest_Pix2Sky_Molleweide_inverse�  s    rñ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rð   rn   r>   rï   r   r<   r¥   r   r²   r   r   r   Útest_Sky2Pix_Molleweide_inverseŸ  s    rò   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_HammerAitoffrn   r>   ÚSky2Pix_HammerAitoffr   r<   r¥   r   r²   r   r   r   Ú!test_Pix2Sky_HammerAitoff_inverse®  s    rõ   c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   rô   rn   r>   ró   r   r<   r¥   r   r²   r   r   r   Ú!test_Sky2Pix_HammerAitoff_inverse½  s    rö   c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   ÚPix2Sky_ConicPerspectivern   r>   ÚSky2Pix_ConicPerspectiver   Úsigmar   Údeltar<   r¥   r²   r   r   r   Ú%test_Pix2Sky_ConicPerspective_inverseÌ  s    rû   c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   rø   rn   r>   r÷   r   rù   r   rú   r<   r¥   r²   r   r   r   Ú%test_Sky2Pix_ConicPerspective_inverseÞ  s    rü   c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   ÚPix2Sky_ConicEqualArearn   r>   ÚSky2Pix_ConicEqualArear   rù   r   rú   r<   r¥   r²   r   r   r   Ú#test_Pix2Sky_ConicEqualArea_inverseð  s    rÿ   c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   rþ   rn   r>   rý   r   rù   r   rú   r<   r¥   r²   r   r   r   Ú#test_Sky2Pix_ConicEqualArea_inverse  s    r   c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   ÚPix2Sky_ConicEquidistantrn   r>   ÚSky2Pix_ConicEquidistantr   rù   r   rú   r<   r¥   r²   r   r   r   Ú%test_Pix2Sky_ConicEquidistant_inverse  s    r  c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   r  rn   r>   r  r   rù   r   rú   r<   r¥   r²   r   r   r   Ú%test_Sky2Pix_ConicEquidistant_inverse&  s    r  c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   ÚPix2Sky_ConicOrthomorphicrn   r>   ÚSky2Pix_ConicOrthomorphicr   rù   r   rú   r<   r¥   r²   r   r   r   Ú&test_Pix2Sky_ConicOrthomorphic_inverse8  s    r  c                  C   sÖ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚t|j| jƒ t|jdƒ t	 
ddd¡}t	 
ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r®   )r   r  rn   r>   r  r   rù   r   rú   r<   r¥   r²   r   r   r   Ú&test_Sky2Pix_ConicOrthomorphic_inverseJ  s    r  c                  C   sº   t  d¡} | j}t|t jƒs t‚|j| j  kr8dks>n t‚t ddd¡}t ddd¡}| |||ƒŽ \}}t	||dd� t	||dd� || ||ƒŽ \}}t	||dd� t	||dd� d S ©Nr   r   r%   r¯   r°   rž   )
r   ÚPix2Sky_BonneEqualArearn   r>   ÚSky2Pix_BonneEqualArear   Útheta1r<   r¥   r   r²   r   r   r   Ú#test_Pix2Sky_BonneEqualArea_inverse\  s    
r  c                  C   sº   t  d¡} | j}t|t jƒs t‚|j| j  kr8dks>n t‚t ddd¡}t ddd¡}| |||ƒŽ \}}t	||dd� t	||dd� || ||ƒŽ \}}t	||dd� t	||dd� d S r	  )
r   r  rn   r>   r
  r   r  r<   r¥   r   r²   r   r   r   Ú#test_Sky2Pix_BonneEqualArea_inversel  s    
r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_Polyconicrn   r>   ÚSky2Pix_Polyconicr   r<   r¥   r   r²   r   r   r   Útest_Pix2Sky_Polyconic_inverse|  s    r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   r  rn   r>   r  r   r<   r¥   r   r²   r   r   r   Útest_Sky2Pix_Polyconic_inverse‹  s    r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_TangentialSphericalCubern   r>   ÚSky2Pix_TangentialSphericalCuber   r<   r¥   r   r²   r   r   r   Ú,test_Pix2Sky_TangentialSphericalCube_inverseš  s    r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   r  rn   r>   r  r   r<   r¥   r   r²   r   r   r   Ú,test_Sky2Pix_TangentialSphericalCube_inverse©  s    r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S ©Nr   r%   r¯   gü©ñÒMbP?rž   )	r   ÚPix2Sky_COBEQuadSphericalCubern   r>   ÚSky2Pix_COBEQuadSphericalCuber   r<   r¥   r   r²   r   r   r   Ú*test_Pix2Sky_COBEQuadSphericalCube_inverse¸  s    r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r  )	r   r  rn   r>   r  r   r<   r¥   r   r²   r   r   r   Ú*test_Sky2Pix_COBEQuadSphericalCube_inverseÇ  s    r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_QuadSphericalCubern   r>   ÚSky2Pix_QuadSphericalCuber   r<   r¥   r   r²   r   r   r   Ú&test_Pix2Sky_QuadSphericalCube_inverseÖ  s    r  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   r  rn   r>   r  r   r<   r¥   r   r²   r   r   r   Ú&test_Sky2Pix_QuadSphericalCube_inverseå  s    r  c                  C   sÚ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚|j| j  krXdks^n t‚t 	ddd¡}t 	ddd¡}| |||ƒŽ \}}t
||dd� t
||dd� || ||ƒŽ \}}t
||dd� t
||dd� d S r®   )r   ÚPix2Sky_HEALPixrn   r>   ÚSky2Pix_HEALPixr   ÚHÚXr<   r¥   r   r²   r   r   r   Útest_Pix2Sky_HEALPix_inverseô  s    r$  c                  C   sÚ   t  dd¡} | j}t|t jƒs"t‚|j| j  kr:dks@n t‚|j| j  krXdks^n t‚t 	ddd¡}t 	ddd¡}| |||ƒŽ \}}t
||dd� t
||dd� || ||ƒŽ \}}t
||dd� t
||dd� d S r®   )r   r!  rn   r>   r   r   r"  r#  r<   r¥   r   r²   r   r   r   Útest_Sky2Pix_HEALPix_inverse  s    r%  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   ÚPix2Sky_HEALPixPolarrn   r>   ÚSky2Pix_HEALPixPolarr   r<   r¥   r   r²   r   r   r   Ú!test_Pix2Sky_HEALPixPolar_inverse  s    r(  c                  C   sš   t  ¡ } | j}t|t jƒst‚t ddd¡}t ddd¡}| |||ƒŽ \}}t||dd� t||dd� || ||ƒŽ \}}t||dd� t||dd� d S r»   )	r   r'  rn   r>   r&  r   r<   r¥   r   r²   r   r   r   Ú!test_Sky2Pix_HEALPixPolar_inverse%  s    r)  )gr~   r,   Zunittest.mockZmockr”   Únumpyr<   rt   Znumpy.testingr   r   Zastropyr   rS   r   Z
astropy.ior   Zastropy.modelingr   Zastropy.modeling.parametersr   Zastropy.tests.helperr	   Zastropy.utils.datar
   r   r   r9   r-   r.   Úpardirr/   r   ZparsÚremoveÚmarkZparametrizerL   rR   rU   rW   rY   rZ   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á   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  r  r  r$  r%  r(  r)  r   r   r   r   Ú<module>   s²   




!
.<2#V