ó
›ßÈ[c        
   @` s0  d  d l  m Z m Z m Z m Z d d l m Z m Z d d l m	 Z	 m
 Z
 m Z d d l m Z m Z m Z m Z m Z m Z m Z d d l m Z d d l m 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 „  Z! d „  Z" e j# j$ d d; ƒ d „  ƒ Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 e j# j$ d d< ƒ d! „  ƒ Z1 e j# j$ d d= ƒ d" „  ƒ Z2 e j# j$ d> d& d' g e j3 d ƒ e j4 d& d' g ƒ f d& d' d( g e j3 d ƒ e j4 d& d' d( g ƒ f d) d) d) g e j4 d& d' d( g ƒ e j4 d& d' d( g ƒ f f ƒ d* „  ƒ Z5 e j# j$ d? d- d. g e6 f d- d. d/ g e7 f d- d/ g e7 f f ƒ d0 „  ƒ Z8 e j# j$ d@ d- d. g e6 f d- d. d/ g e6 f d- d/ g e7 f f ƒ d1 „  ƒ Z9 e j# j$ dA e j: d& d' g ƒ e j3 d ƒ e j3 d ƒ f e j: d) d) g ƒ e j4 d& d' g ƒ e j3 d ƒ f e j: d& d' g ƒ e j3 d ƒ d
 f e j: d& d' g ƒ d
 e j3 d ƒ f f ƒ d3 „  ƒ Z< e j# j$ d4 d5 d6 g ƒ d7 „  ƒ Z= d8 „  Z> d9 „  Z? e j# j$ d4 d5 d6 g ƒ d: „  ƒ Z@ d
 S(B   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsi   (   t   get_pkg_data_contentst   get_pkg_data_filename(   t   WCSt   WCSSUB_LONGITUDEt   WCSSUB_LATITUDEi   (   t   proj_plane_pixel_scalest   is_proj_plane_distortedt   non_celestial_pixel_scalest   wcs_to_celestial_framet   skycoord_to_pixelt   pixel_to_skycoordt   add_stokes_axis_to_wcs(   t   range(   t   Time(   t   unitsN(   t   assert_almost_equal(   t   assert_allclosec          C` sÏ  t  d d ƒ }  t j d d g ƒ |  j _ t j |  j j t j d d ƒ ƒ |  j j } |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ s£ t ‚ |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ sî t ‚ |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ s9t ‚ |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ s„t ‚ t  d d ƒ }  | |  j _ |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ sêt ‚ |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ s5t ‚ |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ s€t ‚ |  j d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d g ƒ k ƒ sËt ‚ d  S(   Nt   naxisi   i   i   i    i   i   (   R   t   npt   zerost   wcst   pct   fill_diagonalt   aranget   dropaxist   allt   get_pct   diagonalt   arrayt   AssertionErrort   cd(   R   R   t   dropped(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_wcs_dropping   s,    "<<<<<<<c          C` s]  t  d d ƒ }  t j d d g ƒ |  j _ t j |  j j t j d d ƒ ƒ |  j j } |  j d d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d d g ƒ k ƒ s© t ‚ |  j d d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d d g ƒ k ƒ sú t ‚ |  j d d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d d g ƒ k ƒ sKt ‚ t  d d ƒ }  | |  j _ |  j d d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d d g ƒ k ƒ s·t ‚ |  j d d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d d g ƒ k ƒ st ‚ |  j d d ƒ } t j | j j	 ƒ  j
 ƒ  t j d d d d g ƒ k ƒ sYt ‚ d  S(   NR   i   i   i   i    i   i   (   R   R   R   R   R   R   R   t   swapaxesR   R   R   R    R!   R"   (   R   R   t   swapped(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_wcs_swapping2   s$    "?????u   ndimc         C` s‘   t  d |  ƒ } x{ t |  d ƒ D]i } t | | ƒ } | j j |  d k sQ t ‚ | j j | d k sm t ‚ | j j | d k s  t ‚ q  Wd  S(   NR   i   u   STOKES(   R   R   R   R   R   R!   t   ctypet   cname(   t   ndimR   t   iit   outwcs(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_add_stokesJ   s    c          C` sž  t  d d ƒ }  d d g |  j _ d d g |  j _ d d g |  j _ d d g |  _ |  j t d d  ƒ t d d  ƒ g ƒ } t j	 | j j t j
 d d g ƒ k ƒ s« t ‚ | j d d g k sÆ t ‚ |  j t d d  d ƒ t d d  d	 ƒ g ƒ } t j	 | j j t j
 d
 d g ƒ k ƒ s#t ‚ t j	 | j j t j
 d d g ƒ k ƒ sSt ‚ | j d d g k snt ‚ |  j t d  d  d ƒ t d d  d ƒ g ƒ } t j	 | j j t j
 d d g ƒ k ƒ sËt ‚ | j d d g k sæt ‚ |  j t d ƒ t d ƒ g ƒ } | j d d g k s"t ‚ |  j t d ƒ t d ƒ g ƒ } | j d d g k s^t ‚ |  j t d ƒ t d ƒ g ƒ } | j d d g k sšt ‚ d  S(   NR   i   i   gš™™™™™¹?iè  iô  i    ió  i   g      ä?g      Ð?gš™™™™™Ù?gš™™™™™É?iú   g      I@g      4@i   i2   g     €4@(   R   R   t   crvalt   cdeltt   crpixt   _naxist   slicet   NoneR   R   R    R!   (   t   mywcst	   slice_wcs(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt
   test_sliceU   s*    '0-00-0!!!c          C` sÒ  t  d d ƒ }  d d g |  j _ d d g |  j _ d d g |  j _ |  d d  d … d d  d … f } t j | j j t j d d g ƒ k ƒ s— t ‚ t j | j j t j d	 d
 g ƒ k ƒ sÇ t ‚ d d g |  j _ |  d d  d … d d  d … f } t j | j j t j d d g ƒ k ƒ s+t ‚ t j | j j t j d	 d
 g ƒ k ƒ s[t ‚ |  d d  d … } t j | j j t j d d g ƒ k ƒ sžt ‚ t j | j j t j d d
 g ƒ k ƒ sÎt ‚ d  S(   NR   i   i   gš™™™™™¹?i    i   g      ä?g      Ð?gš™™™™™Ù?gš™™™™™É?g      ì?g      è?(	   R   R   R.   R/   R0   R   R   R    R!   (   R4   R5   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_slice_getitemr   s    "00"000c          C` s½  t  d d ƒ }  d d g |  j _ d d g |  j _ d d g |  j _ |  j t d d  ƒ t d d  ƒ g d t ƒ} t j	 | j j t j
 d d g ƒ k ƒ s¢ t ‚ |  j t d d  d ƒ t d d  d ƒ g d t ƒ} t j	 | j j t j
 d d	 g ƒ k ƒ st ‚ t j	 | j j t j
 d
 d g ƒ k ƒ s5t ‚ |  j t d d  d ƒ g d t ƒ} t j	 | j j t j
 d d g ƒ k ƒ s‰t ‚ t j	 | j j t j
 d
 d g ƒ k ƒ s¹t ‚ d  S(   NR   i   i   gš™™™™™¹?i    t   numpy_orderi   g      Ð?g      ä?gš™™™™™É?gš™™™™™Ù?(   R   R   R.   R/   R0   R2   R3   t   FalseR   R   R    R!   (   R4   R5   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_slice_fitsorder‡   s    -0300$0c       
   C` sš   t  d d ƒ }  t j t ƒ  } |  d Wd  QX| j j d d k sK t ‚ t j t ƒ  } |  d d  d  d … f Wd  QX| j j d d k s– t ‚ d  S(   NR   i   i    u_   Cannot downsample a WCS with indexing.  Use wcs.sub or wcs.dropaxis if you want to remove axes.(   R   t   pytestt   raisest
   ValueErrort   valuet   argsR!   (   R4   t   exc(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_invalid_slice™   s    c          C` s…   t  d d ƒ }  d d d d g |  j _ |  j d d d	 d g k sH t ‚ d d d	 d g |  j _ |  j d d d	 d g k s t ‚ d  S(
   NR   i   u   RA---TANu   DEC--TANu   VOPT-LSRu   STOKESu   RAu   DECu   VOPT(   R   R   R(   t   axis_type_namesR!   R)   (   R4   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_axis_names©   s
    !c          C` ss   t  d d ƒ }  d d d d g |  j _ |  j } t | j j ƒ d d g k sT t ‚ | j d d g k so t ‚ d  S(	   NR   i   u   RA---TANu   DEC--TANu   VOPTu   STOKESu   RAu   DEC(   R   R   R(   t	   celestialt   listR!   RB   (   R4   t   cel(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_celestial´   s
    	$c          C` s  d d l  m }  m } m } m } t d d ƒ } | j j ƒ  t j	 t
 ƒ  } t | ƒ d  k sh t ‚ Wd  QX| j j d d k sŠ t ‚ t d d ƒ } d d g | j _ | j j ƒ  t j	 t
 ƒ  t | ƒ d  k sà t ‚ Wd  QXt d d ƒ } d	 d
 g | j _ | j j ƒ  t | ƒ } t | |  ƒ s5t ‚ t d d ƒ } d	 d
 g | j _ d | j _ | j j ƒ  t | j ƒ  ƒ t | ƒ } t | | ƒ s t ‚ | j t d d d ƒk sÁt ‚ t d d ƒ } d	 d
 g | j _ d | j _ | j j ƒ  t | ƒ } t | | ƒ st ‚ | j t d d d ƒk s=t ‚ t d d ƒ } d d g | j _ | j j ƒ  t | ƒ } t | | ƒ sŒt ‚ x t j d d g D]m } t d d ƒ } d	 d
 g | j _ d | j _ | | j _ | j j ƒ  t | ƒ } t | |  ƒ sŸt ‚ qŸWt d d ƒ } d
 d	 g | j _ | j j ƒ  t | ƒ } t | |  ƒ s_t ‚ t d d ƒ } d
 d d	 g | j _ | j j ƒ  t | ƒ } t | |  ƒ s±t ‚ t d d ƒ } d d d g | j _ | j j ƒ  t | ƒ } t | | ƒ st ‚ d  S(   Ni   (   t   ICRSt   FK5t   FK4t   GalacticR   i   i    uM   Could not determine celestial frame corresponding to the specified WCS objectu   XOFFSETu   YOFFSETu   RA---TANu   DEC--TANg     Ÿ@t   formatu   jyeari¾  g     øž@u   byearu   GLON-SINu   GLAT-SINiÃ  u   ICRSu   VELOCITYu   GLAT-CARu   GLON-CAR(   t   coordinates.builtin_framesRH   RI   RJ   RK   R   R   t   setR;   R<   R=   R   R3   R!   R>   R?   R(   t
   isinstancet   equinoxt   printt	   to_headerR   R   t   nant   radesys(   RH   RI   RJ   RK   R4   R@   t   frameRP   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_wcs_to_celestial_frame¼   sv    "!!c          ` sÛ   t  d d ƒ }  d d g |  j _ |  j j ƒ  t j t ƒ  t |  ƒ Wd  QXd t f d „  ƒ  Y‰  ‡  f d †  } d d l	 m
 } | | ƒ  t |  ƒ } Wd  QXt | ˆ  ƒ s· t ‚ t j t ƒ  t |  ƒ Wd  QXd  S(	   NR   i   u   XOFFSETu   YOFFSETt   OffsetFramec           B` s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyRW     s   c         ` s=   |  j  j d j d ƒ r9 |  j  j d j d ƒ r9 ˆ  ƒ  Sd  S(   Ni    u   OFFSETi   (   R   R(   t   endswith(   R   (   RW   (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   identify_offset  s    2(   t   custom_frame_mappings(   R   R   R(   RN   R;   R<   R=   R   t   objectt   utilsR\   RO   R!   (   R4   R[   R\   RU   (    (   RW   s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt"   test_wcs_to_celestial_frame_extend  s    c          C` so   t  d d ƒ }  d d g |  j _ d d g |  j _ t t |  ƒ d ƒ d d g |  j _ t t |  ƒ d	 ƒ d  S(
   NR   i   gš™™™™™¹?gš™™™™™É?u   RA---TANu   DEC--TANgš™™™™™¹¿(   gš™™™™™¹?gš™™™™™É?(   gš™™™™™¹?gš™™™™™É?(   R   R   R/   R(   R   R	   (   R4   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_pixscale_nodrop!  s    c          C` s~   t  d d ƒ }  d d d g |  j _ d d d g |  j _ t t |  j ƒ d
 ƒ d	 d d g |  j _ t t |  j ƒ d ƒ d  S(   NR   i   gš™™™™™¹?gš™™™™™É?i   u   RA---TANu   DEC--TANu   VOPTgš™™™™™¹¿(   gš™™™™™¹?gš™™™™™É?(   gš™™™™™¹?gš™™™™™É?(   R   R   R/   R(   R   R	   RD   (   R4   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_pixscale_withdrop+  s    c          C` sV   t  d d ƒ }  d d g d d g g |  j _ d d g |  j _ t t |  ƒ d	 ƒ d  S(
   NR   i   gš™™™™™¹¿i    gš™™™™™É?u   RA---TANu   DEC--TANgš™™™™™¹?(   gš™™™™™¹?gš™™™™™É?(   R   R   R"   R(   R   R	   (   R4   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_pixscale_cd5  s    u   anglei   i-   i<   iK   c         C` s¢   t  d d ƒ } |  d t j } d } | t j | ƒ | t j | ƒ g | t j | ƒ | t j | ƒ g g | j _ d d g | j _ t t	 | ƒ d ƒ d  S(   NR   i   g     €f@gš™™™™™¹?u   RA---TANu   DEC--TAN(   gš™™™™™¹?gš™™™™™¹?(
   R   R   t   pit   cost   sinR   R"   R(   R   R	   (   t   angleR4   t   rhot   scale(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_pixscale_cd_rotated<  s    $/c         C` s¥   t  d d ƒ } |  d t j } d } | | g | j _ t j | ƒ t j | ƒ g t j | ƒ t j | ƒ g g | j _ d d g | j _ t	 t
 | ƒ d ƒ d  S(   NR   i   g     €f@gš™™™™™¹?u   RA---TANu   DEC--TAN(   gš™™™™™¹?gš™™™™™¹?(   R   R   Rc   R   R/   Rd   Re   R   R(   R   R	   (   Rf   R4   Rg   Rh   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_pixscale_pc_rotatedH  s    'u   cdeltu   pcu   pccdgš™™™™™¹?gš™™™™™É?g333333Ó?i   c         C` sA   t  d t |  ƒ ƒ } |  | j _ | | j _ t | j | ƒ d  S(   NR   (   R   t   lenR   R/   R   R   t   pixel_scale_matrix(   R/   R   t   pccdR4   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_pixel_scale_matrixU  s    u   ctypeu   celu   RA---TANu   DEC--TANu   FREQc         C` s:   t  d t |  ƒ ƒ } |  | j _ | j | k s6 t ‚ d  S(   NR   (   R   Rk   R   R(   t   is_celestialR!   (   R(   RF   R4   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_is_celestialc  s    c         C` s:   t  d t |  ƒ ƒ } |  | j _ | j | k s6 t ‚ d  S(   NR   (   R   Rk   R   R(   t   has_celestialR!   (   R(   RF   R4   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_has_celestialn  s    u   cdc         C` s›   t  d d ƒ } | d  k	 r* | | j _ n  | d  k	 rE | | j _ n  |  | j _ d d g | j _ t | ƒ } t | j	 t
 j ƒ t j d d g ƒ ƒ d  S(   NR   i   u   RA---TANu   FREQgš™™™™™¹?gš™™™™™É?(   R   R3   R   R"   R   R/   R(   R   R   t   to_valuet   ut   degR   R    (   R/   R   R"   R4   t   ps(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_noncelestial_scaley  s    u   modeu   allu   wcsc         C` sW  d d l  m } d d l m } t d d d ƒ} t | ƒ } | d | j d | j d	 d
 ƒ} t | | d |  ƒ\ } } t | | | d |  ƒj	 d
 ƒ } t
 | j j | j j ƒ t
 | j j | j j ƒ d | f d „  ƒ  Y}	 t | | | d |  d |	 ƒj	 d
 ƒ }
 |
 j |	 k s!t ‚ t
 |
 j j | j j ƒ t
 |
 j j | j j ƒ d  S(   Ni   (   R   (   t   SkyCoordu   maps/1904-66_TAN.hdrt   encodingu   binarygš™™™™™¹?g     @VÀRU   u   icrst   modet	   SkyCoord2c           B` s   e  Z RS(    (   RX   RY   (    (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyR{   £  s   t   cls(   t    R   t   coordinatesRx   R   R   Ru   R   R   t   transform_toR   t   rat   degreet   dect	   __class__R!   (   Rz   Rt   Rx   t   headerR   t   reft   xpt   ypt   newR{   t   new2(    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_skycoord_to_pixel  s    #!c          C` s  d d l  m }  t d d d ƒ} t | ƒ } | j t t g ƒ } |  d t j d t j d d	 ƒ} t	 | | ƒ \ } } t	 | | ƒ \ } } t
 | | ƒ t
 | | ƒ t | | | ƒ j d	 ƒ }	 t | | | ƒ j d	 ƒ }
 t
 |	 j j |
 j j ƒ t
 |	 j j |
 j j ƒ d  S(
   Ni   (   Rx   u   maps/1904-66_TAN.hdrRy   u   binarygš™™™™™¹?g     @VÀRU   u   icrs(   R~   Rx   R   R   t   subR   R   Rt   Ru   R   R   R   R   R€   R   R‚   (   Rx   R„   R   t   wcs_swappedR…   t   xp1t   yp1t   xp2t   yp2t   new1R‰   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_skycoord_to_pixel_swapped®  s    #c          C` s°   t  d d ƒ }  d d g d d g g |  j _ d d g |  j _ t |  ƒ sQ t ‚ d d
 g d d g g |  j _ t |  ƒ s‚ t ‚ t d ƒ } t  | ƒ }  t |  ƒ s¬ t ‚ d  S(   NR   i   gš™™™™™¹¿i    gš™™™™™É?u   RA---TANu   DEC--TANgš™™™™™¹?gH¯¼šò×Š>gý”SÐ'Ñ†>g+i¤)+€>gïqÇÄr>u   data/sip.fitsgòì—ôœ™¹?g¡Ak—™¹?(   R   R   R"   R(   R
   R!   R   (   R   R„   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   test_is_proj_plane_distortedÌ  s    c   	      C` sÍ   d d l  m } d d l m } t d ƒ } t | ƒ } | d | j d | j d d ƒ} t | | d	 |  ƒ\ } } t | | | d	 |  ƒj	 d ƒ } t
 | j j | j j ƒ t
 | j j | j j ƒ d  S(
   Ni   (   R   (   Rx   u   data/sip.fitsg     Pi@g¸…ëQ˜G@RU   u   icrsRz   (   R}   R   R~   Rx   R   R   Ru   R   R   R   R   R€   R   R‚   (	   Rz   Rt   Rx   R„   R   R…   R†   R‡   Rˆ   (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt"   test_skycoord_to_pixel_distortionsÝ  s    #!(   i   i   (   i   i-   i<   iK   (   i   i-   i<   iK   (   u   cdeltu   pcu   pccd(   u   ctypeu   cel(   u   ctypeu   cel(   u   cdeltu   pcu   cd(A   t
   __future__R    R   R   R   t
   utils.dataR   R   R   R   R   R   R^   R	   R
   R   R   R   R   R   t   extern.six.movesR   t   timeR   R}   R   Rt   R;   t   numpyR   t   numpy.testingR   R   R$   R'   t   markt   parametrizeR-   R6   R7   R:   RA   RC   RG   RV   R_   R`   Ra   Rb   Ri   Rj   t   eyet   diagRn   t   TrueR9   Rp   Rr   R    R3   Rw   RŠ   R’   R“   R”   (    (    (    s;   lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyt   <module>   sb   "4									K		
	
	*0K!!-3$6$		