ó
›ßÈ[c        	   @` s¡  d  d l  m Z m Z m Z m Z d d l m Z d  d l Z d  d l 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 m Z 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 d d l m Z d d l m Z d d l  m! Z! d e" f d „  ƒ  YZ# d e" f d „  ƒ  YZ$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) e e* ƒ d „  ƒ Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 e e j2 ƒ d „  ƒ Z3 d  „  Z4 d! „  Z5 d" „  Z6 d# „  Z7 e e j8 ƒ d$ „  ƒ Z9 d% „  Z: d& „  Z; d d  d' d  d( e= d) e> d* „ Z? d+ „  Z@ d, „  ZA d- „  ZB d. „  ZC d/ „  ZD d0 „  ZE d1 „  ZF d2 „  ZG d3 „  ZH d4 „  ZI d5 „  ZJ d6 „  ZK d7 „  ZL d8 „  ZM e jN jO d9 d: d; ƒd< „  ƒ ZP e jN jO d9 d: d; ƒd= „  ƒ ZQ d> „  ZR d? „  ZS d@ „  ZT dA „  ZU dB „  ZV dC „  ZW dD „  ZX dE „  ZY dF „  ZZ dG „  Z[ dH „  Z\ dI „  Z] dJ „  Z^ dK „  Z_ dL „  Z` dM „  Za d S(N   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsi   (   t   sixN(   t   datetime(   t   assert_allcloset   assert_array_almost_equalt   assert_array_almost_equal_nulpt   assert_array_equal(   t   raisest   catch_warnings(   t   wcsi   (   t   _wcs(   t   get_pkg_data_filenamest   get_pkg_data_contentst   get_pkg_data_filename(   t   NumpyRNGContext(   t   fits(   t   ranget   TestMapsc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` s   t  t d d d ƒƒ |  _ d  S(   Nu   mapst   patternu   *.hdr(   t   listR   t
   _file_list(   t   self(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   setup   s    c         C` s@   d } t  |  j ƒ | k s< t d j t  |  j ƒ | ƒ ƒ ‚ d  S(   Ni   u@   test_spectra has wrong number data files: found {}, expected  {}(   t   lenR   t   AssertionErrort   format(   R   t   n_data_files(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_consistency#   s    c         C` sÈ   xÁ |  j  D]¶ } t j j | ƒ } t t j j d | ƒ d d ƒ} t j | ƒ } | j d d g g d ƒ } t	 | d d g g d d ƒ| j
 d d g g d ƒ } t	 | d d g g d d	 ƒq
 Wd  S(
   Nu   mapst   encodingu   binaryia   i   g     Ðq@g     PÀt   decimali    (   R   t   ost   patht   basenameR   t   joinR   t   WCSt   wcs_pix2worldR   t   wcs_world2pix(   R   t   filenamet   headert   wcsobjt   worldt   pix(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt	   test_maps/   s    (   t   __name__t
   __module__R   R   R-   (    (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyR      s   		t   TestSpectrac           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` s   t  t d d d ƒƒ |  _ d  S(   Nu   spectraR   u   *.hdr(   R   R   R   (   R   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyR   @   s    c         C` s@   d } t  |  j ƒ | k s< t d j t  |  j ƒ | ƒ ƒ ‚ d  S(   Ni   u@   test_spectra has wrong number data files: found {}, expected  {}(   R   R   R   R   (   R   R   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyR   D   s    c         C` sr   xk |  j  D]` } t j j | ƒ } t t j j d | ƒ d d ƒ} t j | ƒ } t | ƒ d k s
 t	 ‚ q
 Wd  S(   Nu   spectraR   u   binaryi	   (
   R   R!   R"   R#   R   R$   R   t   find_all_wcsR   R   (   R   R(   R)   t   all_wcs(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_spectraP   s    (   R.   R/   R   R   R3   (    (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyR0   ?   s   		c          C` s¾   d „  }  t  t j ƒ  } |  ƒ  Wd QXt | ƒ d k s@ t ‚ xw | D]o } d t | j ƒ k rG d t | j ƒ k s} t ‚ d t | j ƒ k s˜ t ‚ d t | j ƒ k s¶ t ‚ qG qG Wd S(   u   
    From github issue #36
    c          S` sX   t  d d d ƒ}  y t j |  d d ƒ} Wn t j k
 rA n Xt sT t d ƒ ‚ d  S(   Nu   data/nonstandard_units.hdrR   u   binaryt   translate_unitsu   dhsu   Expected InvalidTransformError(   R   R   R%   t   InvalidTransformErrort   FalseR   (   R)   t   w(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   runa   s    Ni   u   unitfixu   Hzu   M/Su   m/s(   R   R   t   FITSFixedWarningR   R   t   strt   message(   R8   R7   t   item(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt
   test_fixes]   s    	
c          C` s¿   t  d d d ƒ}  t j |  ƒ } t j t j | j d d g g d ƒ ƒ ƒ sT t ‚ t j t j | j d d g g d ƒ ƒ ƒ s‡ t ‚ t j t j | j d d g g d ƒ ƒ ƒ s» t ‚ d	 S(
   u    
    From github issue #107
    u   data/outside_sky.hdrR   u   binaryg      Y@g     @@i    g      i@g     @@N(	   R   R   R%   t   npt   allt   isnanR&   R   t   any(   R)   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_outside_skyv   s    33c          C` s]  t  d ƒ }  t t j j ƒ . } t j |  ƒ } t | ƒ d k sH t ‚ Wd QXd } t j | ƒ t j	 d | f ƒ j
 } | j | d d t ƒ} | j | d | d d d t ƒd	 } t j d
 d g d d g g ƒ } t j t j | j j | ƒ | k  ƒ st ‚ t j d d g d d g d d g g ƒ } t j t j | | ƒ | k  ƒ sYt ‚ d S(   u!   
    From github issue #1463
    u   data/sip2.fitsi   Ni   i   i    t   ra_dec_order.g:Œ0âŽyE>gâ@'G^0?g„ö$+.?gxßÆ ò3.?gÙ\˜ùÌa0¿gì<C›Li@g°tº–G@gøÉd–Li@g*ÊcÕ¹–G@gWÜ,œLi@gB6¹–G@(   .i    (   .i   (   R   R   R   R9   R%   R   R   R>   t   aranget   onest   TR&   t   Truet   arrayR?   t   abst   pc(   R(   t   caught_warningst   wwt   nt   pixelst   resultt   close_enought   answer(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_pix2worldƒ   s     %!.	c          C` s   t  d ƒ }  t j |  ƒ } d  S(   Nu   data/sip.fits(   R   R   R%   (   t	   fits_nameR7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_load_fits_path¨   s    c          C` sÞ   t  j i  ƒ }  |  j d d d ƒ \ } } t | d d ƒ t | d d ƒ t  j i
 d d 6d d 6d	 d
 6d	 d 6d d 6d d 6d d 6d d 6d d 6d d 6ƒ }  |  j d d d ƒ \ } } t | d d ƒ t | d d ƒ d S(   uB   
    Test that WCS can be initialized with a dict-like object
    g     €D@g       @i   i
   u   GLON-CARu   CTYPE1u   GLAT-CARu   CTYPE2u   degu   CUNIT1u   CUNIT2u   CRPIX1u   CRPIX2g      D@u   CRVAL1g        u   CRVAL2gš™™™™™¹¿u   CDELT1gš™™™™™¹?u   CDELT2i    g      $Àg      4@N(   R   R%   R'   R   (   R7   t   xpt   yp(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_dict_init­   s"    c          C` sK   t  j ƒ  }  t d ƒ - t j j d d ƒ } |  j | d d ƒWd QXd S(   u   
    Issue #444
    iÍ[id   i   t   origini   N(   R   R%   R   R>   t   randomt   randR&   (   R7   t   data(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_extra_kwargÌ   s    c       
   C` s¡   t  j d d ƒ }  t d ƒ } t j j d d ƒ } |  j | d ƒ } | j d
 k s[ t ‚ |  j | d | d | d d ƒ } t	 | ƒ d k s— t ‚ Wd	 QXd	 S(   u   
    Issue #444
    t   naxisi   iÍ[id   i   .i    i   N(   id   i   (   .i    (   .i   (   .i   (
   R   R%   R   R>   RY   RZ   R&   t   shapeR   R   (   R7   R[   RO   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_3d_shapes×   s    c          C` sÄ   t  j d d ƒ }  t j j d ƒ } t j j d ƒ } |  j | | d ƒ \ } } | j d k sf t ‚ | j d	 k s{ t ‚ |  j | | d ƒ \ } } | j d
 k s« t ‚ | j d k sÀ t ‚ d  S(   NR]   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   R   R%   R>   RY   R&   R^   R   R'   (   R7   t   xt   yt   xwt   ywRU   RV   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_preserve_shapeå   s    c          C` ss   t  j d d ƒ }  t j j d ƒ } d } |  j | | d ƒ \ } } | j d k sZ t ‚ | j d k so t ‚ d  S(	   NR]   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   R   R%   R>   RY   R'   R^   R   (   R7   R`   Ra   RU   RV   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_broadcastingö   s    c       	   C` s_  t  j d d ƒ }  t j j d	 ƒ } t j j d
 ƒ } t j t ƒ " } |  j | | d ƒ \ } } Wd  QX| j j	 d d k s… t
 ‚ t j t ƒ " } |  j | | d ƒ \ } } Wd  QX| j j	 d d k sÔ t
 ‚ t  j d d ƒ }  t j j d ƒ } |  j | d ƒ } | j d k st
 ‚ t j j d ƒ } |  j | d ƒ \ } | j d k s[t
 ‚ d  S(   NR]   i   i   i   i   i    u5   Coordinate arrays are not broadcastable to each otheri*   (   i   i   i   (   i   i   i   (   i*   i   (   i*   i   (   i*   (   i*   (   R   R%   R>   RY   t   pytestR
   t
   ValueErrorR&   t   valuet   argsR   R'   R^   (   R7   R`   Ra   t   excRb   Rc   RU   RV   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_shape_mismatch  s     !!c          C` sÆ   t  j d d ƒ }  t j j d ƒ } t j t ƒ  } |  j | d ƒ } Wd  QX| j j	 d d k sj t
 ‚ t j j d ƒ } t j t ƒ  } |  j | d ƒ } Wd  QX| j j	 d d k sÂ t
 ‚ d  S(	   NR]   i   i   i   i    u?   When providing two arguments, the array must be of shape (N, 2)(   i   i   (   i   i   (   R   R%   R>   RY   Rf   R
   Rg   R&   Rh   Ri   R   (   R7   t   xyRj   t   xy2(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_invalid_shape  s    c          C` sÓ   d „  }  t  t j ƒ  } |  ƒ  Wd  QXt | ƒ d k s@ t ‚ x) | D]! } d t | j ƒ k sG t ‚ qG Wt  t j ƒ  } |  ƒ  Wd  QXt | ƒ d k s£ t ‚ x) | D]! } d t | j ƒ k sª t ‚ qª Wd  S(   Nc          S` s%   t  d d d ƒ}  t j |  ƒ } d  S(   Nu   data/defunct_keywords.hdrR   u   binary(   R   R   R%   (   R)   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyR8   -  s    i   u   PCi_ja(   R   R   R9   R   R   R:   R;   (   R8   R7   R<   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt#   test_warning_about_defunct_keywords,  s    	c          C` s?   d „  }  t  t j ƒ ! } t j d t j ƒ |  ƒ  Wd  QXd  S(   Nc          S` s%   t  d d d ƒ}  t j |  ƒ } d  S(   Nu   data/defunct_keywords.hdrR   u   binary(   R   R   R%   (   R)   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyR8   E  s    u   error(   R   R   R9   t   warningst   simplefilter(   R8   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt-   test_warning_about_defunct_keywords_exceptionC  s    	c          C` s–   d }  t  j ƒ  } t j j | j ƒ  j ƒ  ƒ } d | k rF | d =n  d | k r\ | d =n  t j j |  j ƒ  ƒ } t | ƒ t | ƒ k s’ t ‚ d  S(   Nuˆ  
    WCSAXES =                    2 / Number of coordinate axes                      CRPIX1  =                  0.0 / Pixel coordinate of reference point            CRPIX2  =                  0.0 / Pixel coordinate of reference point            CDELT1  =                  1.0 / Coordinate increment at reference point        CDELT2  =                  1.0 / Coordinate increment at reference point        CRVAL1  =                  0.0 / Coordinate value at reference point            CRVAL2  =                  0.0 / Coordinate value at reference point            LATPOLE =                 90.0 / [deg] Native latitude of celestial pole        ENDu   COMMENTu    (	   R   R%   R   t   Headert
   fromstringt   to_header_stringt   stript   dictR   (   t   header_stringR7   t   h0t   h1(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_to_header_stringO  s    

c          C` sy   t  j ƒ  }  |  j ƒ  } |  j ƒ  } t | t j ƒ s< t ‚ t | d t j ƒ sX t ‚ | | d j	 d k su t ‚ d  S(   Ni    iøÿÿÿ(
   R   R%   t	   to_headert   to_fitst
   isinstanceR   t   HDUListR   t
   PrimaryHDUR)   (   R7   Rx   t   wfits(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_to_fits]  s    c          C` so   t  d ƒ }  t j |  ƒ } t ƒ   } | j ƒ  Wd  QXt | ƒ d k sO t ‚ d t | d ƒ k sk t ‚ d  S(   Nu   data/sip.fitsi   u   A_ORDERi    (   R   R   R%   R   R|   R   R   R:   (   RS   R`   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_to_header_warningf  s    c          C` sÆ   t  j ƒ  }  |  j ƒ  } |  j  j | k s0 t ‚ d |  j  j j ƒ  | k sR t ‚ d | k sd t ‚ d } |  j d | ƒ } | | k sŽ t ‚ d | k s  t ‚ d |  j  j j ƒ  | k sÂ t ‚ d  S(   Nu   COMMENTu   Pt   key(   R   R%   R|   t   altR   Rv   (   R7   R)   t   wkey(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_no_comments_in_headero  s    "c          C` s@   t  t d ƒ ƒ  }  |  j ƒ  } Wd QXt j | d t ƒ} d S(   uD   
    Causes a double free without a recent fix in wcslib_wrap.C
    u   data/too_many_pv.hdrNt   fix(   t   openR   t   readR   R1   R6   (   t   fdR)   t   wcses(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_find_all_wcs_crash|  s    c          C` sõ   t  ƒ  æ t j t d ƒ ƒ }  t |  ƒ } t j j } | d d k re | d k r\ d } qk d } n d } t t | ƒ d ƒ i } | j ƒ  } t	 g  | D] } | j
 ƒ  ^ q™ ƒ t	 g  | j ƒ  D] } | j
 ƒ  ^ qÁ ƒ k så t ‚ Wd  QXWd  QXd  S(	   Nu   data/validate.fitsi    u   5u   5.13u   data/validate.5.13.txtu   data/validate.5.0.txtu   data/validate.txtu   r(   R   R   t   validateR   t   reprR   t   __version__R‰   t	   readlinest   setRv   t
   splitlinesR   (   t   resultst   results_txtt   versionR(   R‹   t   linesR`   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_validate‰  s    
		%c          C` s4   t  j t d ƒ ƒ }  d t j |  ƒ k s0 t ‚ d  S(   Nu   data/2wcses.hdru   WCS key 'A':(   R   RŽ   R   R   t	   text_typeR   (   R”   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_validate_with_2_wcses›  s    g-Cëâ6?i¨a  i   c         C` sY  |  d
 k r! t d ƒ }  d$ } n  t j j |  ƒ sK t d j |  ƒ ƒ ‚ n  t j |  ƒ } t	 j
 | | j | ƒ }	 | j ƒ  ~ |	 j	 j }
 |
 j d } t d% |
 j t j ƒ ƒ } t d& |
 j t j ƒ ƒ } t j g  t j t t | | ƒ Œ  D] } | j ƒ  ^ qó ƒ d } t d	 ƒ  t j j | | ƒ } Wd
 QXd |
 d d } |
 d | | d | } t j | | d d ƒ} |	 j | | ƒ } yF t j ƒ  } |	 j | | d | d | d | d | ƒ} t j ƒ  } Wnýt	 j	 j  k
 rÕ} t j ƒ  } d } | j! d
 k	 rØ| j! j d } t" d j | ƒ ƒ t" d j | j! ƒ ƒ t" d j | j# | j! ƒ ƒ t" d j t j$ t j% j& | j# | j! d d ƒƒ ƒ ƒ t" d j t j$ t j% j& | j' | j! d d ƒƒ ƒ ƒ n
 t" d ƒ d } | j( d
 k	 rP| j( j d } t" d j | ƒ ƒ t" d j | j( ƒ ƒ t" d j | j# | j( ƒ ƒ n
 t" d ƒ t" d j | j# j d | | ƒ ƒ t" d j | j# ƒ ƒ t" d  j | j' ƒ ƒ t" d! j | j) d | | ƒ ƒ | ‚ n Xt j* t j+ t j, | | d ƒ d d ƒƒ } t j$ | ƒ } t j- | ƒ } t" d" j | | | | ƒ ƒ | d# | k  sUt. ‚ d
 S('   u6   Test all_world2pix, iterative inverse of all_pix2worldu   data/j94f05bgq_flt.fitsu   SCIi   u4   Input file '{:s}' to 'test_all_world2pix' not found.i    g      @i   g      "@iÍ[Ni   g      ð?i   g      à?t   axist	   tolerancet   adaptivet   maxitert   detect_divergenceu!   There are {} diverging solutions.u"   Indices of diverging solutions:
{}u   Diverging solutions:
{}
u*   Mean radius of the diverging solutions: {}u-   Mean accuracy of the diverging solutions: {}
u!   There are no diverging solutions.u)   There are {} slowly converging solutions.u*   Indices of slowly converging solutions:
{}u    Slowly converging solutions:
{}
u*   There are no slowly converging solutions.
u!   There are {} converged solutions.u   Best solutions (all points):
{}u   Accuracy:
{}
uK   
Finished running 'test_all_world2pix' with errors.
ERROR: {}
Run time: {}
u^   
Finished running 'test_all_world2pix'.
Mean error = {0:e}  (Max error = {1:e})
Run time: {2}
g       @(   u   SCIi   g      Ü?g      â?(/   t   NoneR   R!   R"   t   isfilet   IOErrorR   R   R‰   R   R%   R)   t   closet   crpixR^   R   t   astypeR>   t   intt   dstackt   meshgridt   mapR   t   flattenR   RY   RZ   t   appendt   all_pix2worldR   t   nowt   all_world2pixt   NoConvergencet	   divergentt   printt   best_solutiont   meant   linalgt   normt   accuracyt	   slow_convRi   t   sqrtt   sumt   powert   amaxR   (   t   fnamet   extRœ   RX   t   random_nptsR   Rž   RŸ   t   hR7   R¤   t   ncoordt   naxesi_lt   naxesi_ut   it   img_pixt   rnd_pixt   mwidtht   test_pixt	   all_worldt   runtime_begint   all_pixt   runtime_endt   et   ndivt   nslowt   errorst   meanerrt   maxerr(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_all_world2pix¢  sŠ    		
	8			)	,
	
		
			
.	c          C` s8   t  d d d ƒ}  t j |  ƒ } | j d d d ƒ d S(   u`   
    Test parsing of WCS parameters with redundant SIP and SCAMP distortion
    parameters.
    u   data/validate.fitsR   u   binaryi    N(   R   R   R%   R¬   (   R)   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt$   test_scamp_sip_distortion_parameters  s    c          C` sD   t  d d d ƒ}  t j t j ƒ  t j |  d t ƒ} Wd QXd S(   u!   
    From github issue #1854
    u   data/nonstandard_units.hdrR   u   binaryRˆ   N(   R   Rf   R
   R   R5   R%   R6   (   R)   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_fixes2  s    c          C` sA   t  d d d ƒ}  t j |  ƒ } | j j d d k s= t ‚ d S(   u!   
    From github issue #1918
    u   data/unit.hdrR   u   binaryi   u   m/sN(   R   R   R%   t   cunitR   (   R)   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_unit_normalization#  s    c      
   C` s  t  j i
 d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6ƒ } t |  j d ƒ ƒ } | j | ƒ t | d ƒ  } | j ƒ  } Wd QXt | ƒ d k s³ t ‚ | d d k sÉ t ‚ d | d k sß t ‚ | j | d d d d ƒt | d ƒ  } | j ƒ  } Wd QXt | ƒ d k s4t ‚ | d d  k sJt ‚ d! | d k s`t ‚ t	 j
 t ƒ  | j | d d" ƒWd QXd S(#   u!   
    From github issue #1912
    u   RA---ZPNu   CTYPE1u   degu   CRUNIT1gËgy\ïtÀu   CRPIX1g„çÞCés@u   CRVAL1u   DEC--ZPNu   CTYPE2u   CRUNIT2gW[±¿ÌÊ§@u   CRPIX2g(DÀ!TñE@u   CRVAL2g      ð?u   PV2_1g     €k@u   PV2_3u   test.txtu   rNi   i   u   ICRS
u   color=greeni   t   coordsysu   FK5t   coloru   redu   FK5
u	   color=redu   FOO(   R   R%   R:   R$   t   footprint_to_fileR‰   R‘   R   R   Rf   R
   Rg   (   t   tmpdirR7   t   testfilet   fR—   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_footprint_to_file-  s(    c          C` s^   t  j ƒ  }  d |  d <d |  d <t  j d g g d |  ƒ} t  j | g ƒ } t j | ƒ d S(   u!   
    From github issue #2053
    u   ICRSu   RADESYSAg      ð?u   PV2_1i    R)   N(   R   Rs   R€   R   R   RŽ   (   R¿   t   hdut   hdulist(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_validate_faulty_wcsO  s    

c          C` s_   t  d d d ƒ}  t j t j ƒ 5 t j |  d t ƒ} | j d d g g d ƒ } Wd  QXd  S(   Nu   data/invalid_header.hdrR   u   binaryt   _do_setg     À€@g     ð‹@i    (   R   Rf   R
   R   R5   R%   R6   R¬   (   R)   R7   t   c(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_error_message]  s
    c          C` s±   t  d d d ƒ}  t j |  ƒ } | j d d d ƒ \ } } t j | ƒ sQ t ‚ t j | ƒ sf t ‚ | j d d d ƒ \ } } t j | ƒ s— t ‚ t j | ƒ s­ t ‚ d  S(   Nu   data/zpn-hole.hdrR   u   binaryin   i    (   R   R   R%   R&   R>   R@   R   (   R)   R7   t   rat   dec(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_out_of_boundsh  s    c          C` sw   t  d ƒ }  t j |  ƒ } d } t j d d g d d g d d	 g d
 d g g ƒ } | j d | ƒ } t | | ƒ d  S(   Nu   data/sip.fitsiè  i  g­¤”Li@g ,k¹–G@gOhå Wi@g–Ò¯„ yG@gñý¢>H^i@g9Ö¤_K”G@gçèWi@gÖ)$Ó€°G@t   axes(   iè  i  (   R   R   R%   R>   RH   t   calc_footprintR   (   R   R7   Rç   t   reft	   footprint(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_calc_footprint_1x  s    		c          C` s}   t  d ƒ }  t j |  ƒ } d } t j d d g d d g d d	 g d
 d g g ƒ } | j d | d t ƒ } t | | ƒ d S(   u)    Test calc_footprint without distortion. u   data/sip.fitsiè  i  gì<C›Li@g°tº–G@gÀÅÔ§æWi@gLÙm@uG@g²ð­ci@g9}ûBa’G@gKÃø‚YXi@gÈ…Ú¡'´G@Rç   t	   undistortN(   iè  i  (   R   R   R%   R>   RH   Rè   R6   R   (   R   R7   Rç   Ré   Rê   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_calc_footprint_2…  s    		c          C` sª   t  j ƒ  }  d d g |  j  _ d d g |  j  _ d d g |  j  _ d } t j d d	 g d d
 g d d
 g d d	 g g ƒ } |  j d | d t d t ƒ } t	 | | ƒ d S(   u.    Test calc_footprint with corner of the pixel.u   GLON-CARu   GLAT-CARg      ø?g      @gš™™™™™¹¿gš™™™™™¹?i   i
   g      à¿g      à?gfffff~v@Rç   Rì   t   centerN(   i   i
   (
   R   R%   t   ctypeR¤   t   cdeltR>   RH   Rè   R6   R   (   R7   Rç   Ré   Rê   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_calc_footprint_3“  s    		c          C` s›   t  d d d ƒ}  t j |  ƒ } | j d d d ƒ \ } } t d | d ƒ t d | d ƒ | j | | d ƒ \ } } t d | d ƒ t d | d ƒ d  S(   Nu   data/irac_sip.hdrR   u   binaryiÈ   i    iH   gü©ñÒMbP?(   R   R   R%   t   sip_pix2focR   t   sip_foc2pix(   R)   R7   t   x0t   y0t   x1t   y1(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_sip£  s    c          C` sZ   t  d d d ƒ}  t j |  ƒ } | j ƒ  t  d d d ƒ}  t j |  ƒ } | j ƒ  d S(   u%   
    Just make sure that it runs
    u   spectra/orion-freq-1.hdrR   u   binaryu   data/3d_cd.hdrN(   R   R   R%   t   printwcs(   R¿   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_printwcs³  s    
c          C` s‚   t  j d ƒ }  t j |  ƒ } t j j | ƒ }  t j |  ƒ } | j	 d d d ƒ \ } } t
 j | ƒ rx t
 j | ƒ s~ t ‚ d  S(   Nuò  
SIMPLE  =                    T / conforms to FITS standard
BITPIX  =                    8 / array data type
WCSAXES =                    2 / no comment
CTYPE1  = 'RA---TAN' / TAN (gnomic) projection
CTYPE2  = 'DEC--TAN' / TAN (gnomic) projection
EQUINOX =               2000.0 / Equatorial coordinates definition (yr)
LONPOLE =                180.0 / no comment
LATPOLE =                  0.0 / no comment
CRVAL1  =        16.0531567459 / RA  of reference point
CRVAL2  =        23.1148929108 / DEC of reference point
CRPIX1  =                 2129 / X reference pixel
CRPIX2  =                 1417 / Y reference pixel
CUNIT1  = 'deg     ' / X pixel scale units
CUNIT2  = 'deg     ' / Y pixel scale units
CD1_1   =    -0.00912247310646 / Transformation matrix
CD1_2   =    -0.00250608809647 / no comment
CD2_1   =     0.00250608809647 / no comment
CD2_2   =    -0.00912247310646 / no comment
IMAGEW  =                 4256 / Image width,  in pixels.
IMAGEH  =                 2832 / Image height, in pixels.
iÓ   iæÿÿÿi    (   R   R™   t   iot   StringIOR   Rs   t   fromtextfileR   R%   R'   R>   R@   R   (   R)   RÜ   R7   R`   Ra   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_invalid_spherical¿  s    	c          C` sº   t  j d d ƒ }  t j t ƒ  } t |  ƒ Wd  QX| j j d d k sP t ‚ d t  j f d „  ƒ  Y} | d d ƒ }  t j t ƒ  } t |  ƒ Wd  QX| j j d d k s¶ t ‚ d  S(   NR]   i   i    u   'WCS' object is not iterablet   NewWCSc           B` s   e  Z RS(    (   R.   R/   (    (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyRÿ   é  s   u   'NewWCS' object is not iterable(	   R   R%   Rf   R
   t	   TypeErrort   iterRh   Ri   R   (   R7   Rj   Rÿ   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_no_iterationß  s    u   _wcs.__version__[0] < "5"t   reasonu'   TPV only works with wcslib 5.x or laterc          C` sj  t  t j j d d ƒ d d ƒ}  t  t j j d d ƒ d d ƒ} t j |  ƒ } t j | ƒ } t | j | j j g d ƒ | j | j j g d ƒ ƒ t j | j	 ƒ  ƒ } t j | j	 ƒ  ƒ } t | j | j j g d ƒ | j | j j g d ƒ ƒ t | j | j j g d ƒ | j | j j g d ƒ ƒ t | j | j j g d ƒ | j | j j g d ƒ ƒ d  S(   Nu   datau   siponly.hdrR   u   binaryu   tpvonly.hdri   (
   R   R!   R"   R$   R   R%   R   R¬   R¤   R|   (   t
   sip_headert
   tpv_headert   w_sipt   w_tpvt   w_sip2t   w_tpv2(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_sip_tpv_agreementó  s(    c          C` s½   t  t j j d d ƒ d d ƒ}  t j |  ƒ } | j d d d g d d d g d ƒ \ } } | d | d	 k r… | d	 | d
 k s‹ t ‚ | d | d	 k r³ | d	 | d
 k s¹ t ‚ d  S(   Nu   datau   tpvonly.hdrR   u   binaryi    id   iÈ   iœÿÿÿi   i   (   R   R!   R"   R$   R   R%   R&   R   (   R  R  Rä   Rå   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_tpv_copy  s    -.c          C` s   t  d ƒ }  t j |  ƒ } t j | d j | ƒ } | j d d d g d d d g d ƒ | j d d d g d d d g d ƒ | j | _ | j	 | _	 | j
 | _
 | j | _ | j | _ | j j | j _ | j j | j _ | j j | j _ | j j | j _ | j j d k st ‚ | j j d k s2t ‚ | j j d k sJt ‚ | j j d k sbt ‚ t | j j d d	 g ƒ t j | d j | ƒ | j ƒ  d  S(
   Nu   data/dist_lookup.fits.gzi   i    id   iÈ   iœÿÿÿi   g       @g      @(   R   R   R‰   R   R%   R)   t
   p4_pix2foct   det2imt   cpdis1t   cpdis2t   det2im1t   det2im2t   sipRð   R¤   t   crvalR[   t   a_orderR   t   b_ordert   ap_ordert   bp_orderR	   R£   (   R"   Rß   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_hst_wcs  s*    %%c          C` s2  t  d ƒ }  t j |  ƒ } t j | d j | d d g ƒ} | j d k sR t ‚ | j j d k sj t ‚ t  d ƒ }  t |  d ƒ  } | j ƒ  } Wd  QXt j | d d g ƒ} | j d k sÇ t ‚ | j j d k sß t ‚ t j | d d g ƒ} | j d	 k st ‚ | j j d	 k s$t ‚ | j	 ƒ  d  S(
   Nu   data/dist_lookup.fits.gzi   R]   u	   celestiali   u   maps/1904-66_SIN.hdru   rbu   spectrali    (
   R   R   R‰   R   R%   R)   R]   R   RŠ   R£   (   R"   Rß   R7   R‹   t   content(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_list_naxisB  s    "c          C` s   t  d ƒ }  t j |  ƒ } d  S(   Nu   data/sip-broken.hdr(   R   R   R%   (   t   hdrR7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_sip_brokenY  s    c          C` sß   t  j d d ƒ }  d d d g |  j  _ d d d g |  j  _ d d d	 g |  j  _ |  j  j ƒ  |  j ƒ  } xn t d ƒ D]` } | d
 j | d ƒ |  j  j | k sª t	 ‚ | d j | d ƒ |  j  j | k sw t	 ‚ qw Wd S(   uL   
    Regression test for https://github.com/astropy/astropy/issues/4612
    R]   i   i2   g  Xôd¸HBgü©ñÒMbP?g    „×—Au   RA---TANu   DEC--TANu   FREQu   CRVAL{0}i   u   CDELT{0}N(
   R   R%   R  Rð   Rï   R’   R|   R   R   R   (   R7   R)   t   ii(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_no_truncate_crvala  s    -c          C` s  t  j d d ƒ }  d d d g |  j  _ d d d g |  j  _ d d d	 g |  j  _ d
 d
 d g |  j  _ d d d g |  j  _ d |  j  _ |  j  j ƒ  |  j	 ƒ  } xn t
 d ƒ D]` } | d j | d ƒ |  j  j | k sà t ‚ | d j | d ƒ |  j  j | k s­ t ‚ q­ Wd S(   uL   
    Regression test for https://github.com/astropy/astropy/issues/4612
    R]   i   i2   g  Xôd¸HBgñhãˆµøä>g     jø@u   RA---SINu   DEC--SINu   FREQu   degu   Hzi   g   R¾=KBu   CRVAL{0}u   CDELT{0}N(   R   R%   R  Rð   Rï   RÕ   R¤   t   restfrqR’   R|   R   R   R   (   R7   R)   R  (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_no_truncate_crval_try2q  s    -c          C` sú   t  j d d ƒ }  d d g |  j  _ d d g |  j  _ d d g |  j  _ |  j  j ƒ  |  j ƒ  } | d |  j  j d k s t ‚ | d	 |  j  j d
 k s¡ t ‚ |  j d t  j ƒ } | d |  j  j d k sÖ t ‚ | d	 |  j  j d
 k sö t ‚ d S(   uL   
    Regression test for https://github.com/astropy/astropy/issues/5162
    R]   i   g{£›nÍI@gü©ñÒMbP?u   RA---TANu   DEC--TANu   CRVAL1i    u   CRVAL2i   t   relaxN(	   R   R%   R  Rð   Rï   R’   R|   R   t
   WCSHDO_P17(   R7   R)   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_no_truncate_crval_p17„  s       c          C` sŠ   t  j d d ƒ }  d d d g |  j  _ d d d g |  j  _ d d	 d
 g |  j  _ |  j  j ƒ  t  j |  j ƒ  ƒ } |  j  j | j  ƒ d S(   u’   
    Regression test for https://github.com/astropy/astropy/issues/4612

    This one uses WCS.wcs.compare and some slightly different values
    R]   i   gßiJÅn@i2   g  Xôd¸HBgü©ñÒMbP?g    „×—Au   RA---TANu   DEC--TANu   FREQN(   R   R%   R  Rð   Rï   R’   R|   t   compare(   R7   t   w2(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_no_truncate_using_compare–  s    c          C` s±   t  d ƒ }  t j |  ƒ } t j | d ƒ } t j | d j ƒ } | j j | j ƒ s_ t ‚ t j | d ƒ } t j | d j ƒ } | j j | j ƒ s£ t ‚ | j ƒ  d S(   uj   
    Passing ImageHDU or PrimaryHDU and comparing it with
    wcs initialized from header. For #4493.
    u   data/validate.fitsi    i   N(	   R   R   R‰   R   R%   R)   R$  R   R£   (   R"   Rß   t   wcs_hdut
   wcs_header(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_passing_ImageHDU¥  s    c          C` s#  t  d ƒ }  t j |  ƒ } | j d d ƒ } t j | ƒ } t d „  | j j Dƒ ƒ s^ t ‚ | j d t ƒ } d | k s‚ t ‚ t j | ƒ } t d „  | j j Dƒ ƒ s³ t ‚ | j d d ƒ } d | k s× t ‚ t j | d d ƒ} t d „  | j j Dƒ ƒ st ‚ | j d d	 ƒ } t j | ƒ } t d
 „  | j j Dƒ ƒ sQt ‚ | j d t	 ƒ } t j | ƒ } t d „  | j j Dƒ ƒ s”t ‚ d | k s¦t ‚ | j
 d k	 s»t ‚ t j |  ƒ } d d g | j _ | j d t	 ƒ } t j | ƒ } t d „  | j j Dƒ ƒ st ‚ d S(   u   
    Test for #4814
    u   data/sip-broken.hdrR!  c         s` s   |  ] } | j  d  ƒ Vq d S(   u   -SIPN(   t   endswith(   t   .0t   ctyp(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pys	   <genexpr>¾  s    u   A_0_2c         s` s   |  ] } | j  d  ƒ Vq d S(   u   -SIPN(   R*  (   R+  R,  (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pys	   <genexpr>Ã  s    R„   u   Cc         s` s   |  ] } | j  d  ƒ Vq d S(   u   -SIPN(   R*  (   R+  R,  (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pys	   <genexpr>È  s    u    c         s` s   |  ] } | j  d  ƒ Vq d S(   u   -SIPN(   R*  (   R+  R,  (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pys	   <genexpr>Ì  s    c         s` s   |  ] } | j  d  ƒ Vq d S(   u   -SIPN(   R*  (   R+  R,  (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pys	   <genexpr>Ñ  s    u   RA---TANu   DEC--TANc         s` s   |  ] } | j  d  ƒ Vq d S(   u   -SIPN(   R*  (   R+  R,  (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pys	   <genexpr>Ý  s    N(   R   R   R%   R|   R    R?   Rï   R   R6   RG   R  (   R  R7   t   newhdrt   wnew(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_inconsistent_sipµ  s4    """""c          C` s¦   t  j d d ƒ }  d d g |  j  _ d d g |  j  _ d d g |  j  _ d d g |  j  _ |  j  j t t ƒ |  j d	 d
 d
 ƒ \ } } t	 | d ƒ t	 | d ƒ d S(   u   Test for #4957R]   i   u   RA---CARu   DEC--CARi
   i¦ÿÿÿiZ   i   i,  i    iLÿÿÿiâÿÿÿN(
   R   R%   Rï   Rð   R  R¤   t   bounds_checkR6   R&   R   (   R7   Rä   Rå   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_bounds_checkà  s    c          C` s²   t  j d d ƒ }  d d g |  j  _ d d g |  j  _ d d g |  j  _ d d g |  _ |  j d k sl t ‚ |  j d k s t ‚ d |  _ d |  _ |  j d d g k s® t ‚ d  S(	   NR]   i   i   gš™™™™™¹?iè  iô  ic   i;   (	   R   R%   R  Rð   R¤   t   _naxist   _naxis1R   t   _naxis2(   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt
   test_naxisí  s    		c          C` sÅ   t  j t d ƒ ƒ  }  t j |  d j ƒ } Wd QX| j d t d d ƒ } | j d t ƒ } d | d <d	 | d
 <| j	 | ƒ t j | d d ƒ} | j j
 t j d d	 g ƒ k j ƒ  sÁ t ‚ d S(   uŽ   
    Test that when creating a WCS object using a key, CTYPE with
    that key is looked at and not the primary CTYPE.
    fix for #5443.
    u   data/sip.fitsi    NR!  R„   u   Au   RA---SIN-SIPu   CTYPE1Au   DEC--SIN-SIPu   CTYPE2A(   R   R‰   R   R   R%   R)   R|   RG   R6   t   updateRï   R>   RH   R?   R   (   RÜ   R7   Rz   t   h2(    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_sip_with_altkeyü  s    

c          C` s{   t  d ƒ }  t j |  ƒ } | j ƒ  } t | t j ƒ s? t ‚ t | d t j ƒ s[ t ‚ t | d t j	 ƒ sw t ‚ d S(   u5   
    Test to_fits() with LookupTable distortion.
    u   data/dist.fitsi    i   N(
   R   R   R%   R}   R~   R   R   R   R€   t   ImageHDU(   RS   R7   R   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_to_fits_1  s    c          C` s§   t  d ƒ }  t j j |  ƒ } | t d ƒ =| t d ƒ =t j d | d d ƒ } t | j t j	 ƒ sk t
 ‚ | j j d d k s‡ t
 ‚ | j j d	 d
 k s£ t
 ‚ d S(   u*   
    Test sip reading with extra key.
    u   data/sip-broken.hdru   CRPIX1u   CRPIX2R)   R„   u   Ai    i   i   i  N(   R   R   Rs   t   fromfileR:   R   R%   R~   R  t   SipR   R¤   (   t   hdr_nameR)   R7   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_keyedsip  s    c          C` s  t  j t d ƒ ƒ  }  t j |  d j ƒ } Wd  QXt j d ƒ } t | | j	 | d ƒ ƒ t | | j
 | d ƒ ƒ g  d g f } | j	 g  d g d ƒ } t | d | d ƒ t | d | d ƒ | j
 g  d g d ƒ } t | d | d ƒ t | d | d ƒ d  S(   Nu   data/sip.fitsi    i   i   (   i    i   (   R   R‰   R   R   R%   R)   R>   t   zerosR	   R¬   R®   (   RÜ   R7   t   inpRO   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_zero_size_input(  s    c          C` s¤   t  j d d ƒ }  |  j d d ƒ } t | t j d ƒ g ƒ | d j d k sV t ‚ |  j d g d ƒ } t | t j d g ƒ g ƒ | d j d k s  t ‚ d S(	   u   
    Issue #7845
    R]   i   i   g       @i    N(    (   i   (   R   R%   R¬   R	   R>   RH   R^   R   (   R*   RO   (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   test_scalar_inputs:  s    (b   t
   __future__R    R   R   R   t   externR   Rû   R!   Rp   R   Rf   t   numpyR>   t   numpy.testingR   R   R   R	   t   tests.helperR
   R   t    R   R   t
   utils.dataR   R   R   t
   utils.miscR   R   t   extern.six.movesR   t   objectR   R0   R=   RB   RR   RT   RW   R   R\   R_   Rd   Re   Rk   Rn   Ro   R9   Rr   R{   R‚   Rƒ   R‡   R5   R   R˜   Rš   R    R6   RG   RÒ   RÓ   RÔ   RÖ   RÝ   Rà   Rã   Ræ   Rë   Rí   Rñ   Rø   Rú   Rþ   R  t   markt   skipifR
  R  R  R  R  R  R   R#  R&  R)  R/  R1  R5  R8  R:  R>  RA  RB  (    (    (    s9   lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyt   <module>   s˜   ""!			%																h		
	
	"									 		#								+						