U
    e»{jÎ  ã                   @   s&   d dl Zd dlmZ G dd„ dƒZdS )é    N)Úfitsc                   @   sH   e Zd Zddddgddgddgdddœfdd„Zdd„ Zed	d
„ ƒZdS )ÚSimModelTABé–   éÈ   é   )ZPC1_1ZPC2_2c                 C   s<   |dkr|dkst ‚|| _|| _|| _|| _|| _|| _dS )z=set essential parameters of the model (coord transformations)é   r   N)ÚAssertionErrorÚnxÚnyÚcrpixÚcrvalÚcdeltÚpc)Úselfr	   r
   r   r   r   r   © r   úW/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/wcs/tests/helper.pyÚ__init__   s    
zSimModelTAB.__init__c                 C   sâ  d| j d  }t d||| j d g¡}t d| jd g¡}| jd | jd || jd    }| jd | jd || jd    }t ddddg¡}t dd	g¡}t |¡}|d d …df }	|d d …df }
|	|d k |
|d k B |	|d
 kB |
|d
 kB }t |¡}d|	|k 	t
¡ }| jd | jd |	| jd    }| jd | jd |
| jd    }|||  ||d  ||   }||d  |d |d   }|| |||d  ||    }|d ||d |d    }t ||g¡d S )Nr   é   r   ç        ç¤p=
×£Ð?çš™™™™™é?ç      ð?ç      à¿ç      à?éÿÿÿÿr   )r	   ÚnpÚarrayr
   r   r   r   Z
atleast_2dZlogical_notZastypeÚintÚdstack)r   ZxyÚxbÚpxÚpyÚxiÚyiZcxÚcyÚxÚyZmbadZmgoodÚiZpsixZpsiyZcfxZcfyÚraÚdecr   r   r   Úfwd_eval   s(    ""
0
""  zSimModelTAB.fwd_evalc                 C   s^  t  ddddgddddgg¡}t  ddddgddddgg¡}t  ||g¡}d| jd  }t  d||| jd g¡}t  d| jd g¡}| jd	 | jd	 || jd	    }| jd | jd || jd    }t j|||fgd
t j|j	fdt j
|jffdt j
|jffgd�}	t |	¡}
d|
jd< t j| j| jft jd�}t |¡}d|jd< d|jd< | j|jd< | j|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	 |jd < | jd |jd!< | jd	 |jd"< | jd |jd#< | jd	 |jd$< | jd |jd%< d|jd&< d|jd'< | j ¡ D ]\}}||j|< �q6t ||
g¡}|S )(zgSimulates 2D data with a _spatial_ WCS that uses the ``-TAB``
        algorithm with indexing.
        r   r   r   r   r   r   r   r   r   Z
wavelengthr"   r#   )Zdtypez	WCS-TABLEZEXTNAMEzRA---TABZctype1zDEC--TABZctype2Znaxis1Znaxis2ZPS1_0ZPS2_0ZPS1_1ZPS2_1ZPV1_3r   ZPV2_3ÚdegZCUNIT1ZCUNIT2ZCDELT1ZCDELT2ZCRPIX1ZCRPIX2ZCRVAL1ZCRVAL2ZPS1_2ZPS2_2)r   r   r   r	   r
   r   r   r   Zfloat64ÚshapeÚdoubleÚsizer   ZBinTableHDUÚheaderZonesZfloat32Z
PrimaryHDUr   ÚitemsZHDUList)r   r%   r&   Úcr   r    r!   r"   r#   ZarrZbtZ
image_dataZpuÚkÚvÚhdulistr   r   r   r4   9   sV    ""
ýþ















zSimModelTAB.hdulistN)Ú__name__Ú
__module__Ú__qualname__r   r*   Úpropertyr4   r   r   r   r   r      s   ù
r   )Únumpyr   Z
astropy.ior   r   r   r   r   r   Ú<module>   s   