U
    e»{j…  ã                   @   sr  d Z ddlZddl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mZmZmZmZmZ ejdd	d
�Zejddd
�Zejddd
�Zejddd
�Zeddd
�Zeddd
�Zeddd
�Zejddd
�Zejddd
�Z ejddd
�Z!ej"ddd
�Z#e $ddddg¡e $ddddgddddgddddgddddgg¡fZ%ee@ ee@ B ee@ e@ B e $dddg¡e $ddgddgddgg¡ffee@ eB eB e e!@ B e $ddg¡e $ddgddgg¡ffeee@ B e $dddg¡e $ddgddgddgg¡ffee@ eB ee@ B e $dddg¡e $ddgddgddgg¡ffeee@ B ee@ B e $ddg¡e $dgdgg¡ffee e@ B e $ddg¡e $ddgddgg¡ffeee@ @ e%fee@ e@ e%fee@ e@ e%fee@ ee@ @ e $dddddg¡e $dddddgdddddgdddddgdddddgdddddgg¡ffdœ
Z&dd„ Z'dd„ Z(d d!„ Z)d"d#„ Z*ej+ ,d$e& -¡ ¡d%d&„ ƒZ.d'd(„ Z/dS ))z
Test separability of models.

é    N)Úassert_allclose)Úcustom_modelÚmodels)ÚModelDefinitionError)ÚMapping)Ú_arith_operÚ_cdotÚ_coord_matrixÚ_cstackÚis_separableÚseparability_matrixé   Zshift1)Únameé   Úsh2Úscl1Úscl2)r   r   r   r   Úmap1)r   r   r   Úmap2©r   r   Úmap3ZrotationÚp2Úp22Úp1FT)
Zcm1Zcm2Zcm3Zcm4Zcm5Zcm7Zcm8Zcm9Zcm10Zcm11c                  C   sT  t tddƒ} tt ddgddgg¡| ƒ t tddƒ} tt ddgddgg¡| ƒ t tddƒ} tt dgdgg¡| ƒ t tddƒ} tt dgg¡| ƒ t tddƒ} tt dgdgg¡| ƒ t tddƒ} tt dgdgg¡| ƒ t tddƒ} tt dgdgdgg¡| ƒ t tddƒ} tt dgdgg¡| ƒ t tddƒ} tt dgdgdgg¡| ƒ d S )NÚleftr   r   r   Úrighté   )r	   r   r   ÚnpÚarrayr   Úsh1r   )Úc© r!   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/modeling/tests/test_separable.pyÚtest_coord_matrixi   s$    r#   c               	   C   s²   t ttƒ} t| t dgg¡ƒ t ttƒ} t| t ddgg¡ƒ t ttƒ} t| t ddgddgg¡ƒ t tdƒtƒ} t| t dgdgg¡ƒ t	j
tdd�� t ttƒ W 5 Q R X d S )Nr   r   r   z5Models cannot be combined with the \"|\" operator; .*©Úmatch)r   r   r   r   r   r   Úrotr   r   ÚpytestÚraisesr   r   ©Úresultr!   r!   r"   Ú	test_cdot~   s    


þr+   c               	   C   sŽ   t ttƒ} t| t ddgddgg¡ƒ t ttƒ} t| t dddgdddgdddgg¡ƒ t ttƒ} t| t dddgdddgdddgg¡ƒ d S )Nr   r   )r
   r   r   r   r   r   r&   r)   r!   r!   r"   Útest_cstack’   s    

(
r,   c               	   C   s¶   t ttƒ} t| t dgg¡ƒ t ttƒ} t| t ddgddgg¡ƒ t t ddgddgg¡t ddgddgg¡ƒ} t| t ddgddgg¡ƒ tjt	dd�� t tt
ƒ W 5 Q R X d S )Nr   r   r   é   z0Unsupported operands for arithmetic operator: .*r$   )r   r   r   r   r   r   r&   r'   r(   r   r   r)   r!   r!   r"   Útest_arith_operœ   s    

. ÿr.   ©Zcompound_modelr*   c                 C   s(   t t| ƒ|d ƒ t t| ƒ|d ƒ d S )Nr   r   )r   r   r   r/   r!   r!   r"   Útest_separable®   s    r0   c                  C   sP   t dd„ ƒ} | ƒ jst‚t dd„ ƒ}|ƒ jr0t‚t t|ƒ ƒddgk¡sLt‚d S )Nc                 S   s   | S ©Nr!   )Úxr!   r!   r"   Úmodel_aµ   s    z,test_custom_model_separable.<locals>.model_ac                 S   s   | | S r1   r!   )r2   Úyr!   r!   r"   Úmodel_c»   s    z,test_custom_model_separable.<locals>.model_cT)r   Z	separableÚAssertionErrorr   Úallr   )r3   r5   r!   r!   r"   Útest_custom_model_separable´   s    

r8   )0Ú__doc__Únumpyr   r'   Znumpy.testingr   Zastropy.modelingr   r   Zastropy.modeling.corer   Zastropy.modeling.modelsr   Zastropy.modeling.separabler   r   r	   r
   r   r   ZShiftr   r   ZScaler   r   r   r   r   Z
Rotation2Dr&   ZPolynomial2Dr   r   ZPolynomial1Dr   r   Zcm_4d_expectedZcompound_modelsr#   r+   r,   r.   ÚmarkZparametrizeÚvaluesr0   r8   r!   r!   r!   r"   Ú<module>   s”    	



üÿþþþ"þ
þþþþþ
"þûÿþþÛ7

