ó
šßÈ[c           @` sÿ  d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l Z d d l	 m
 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 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" i d d 6d d 6d d 6d d 6Z# d Z$ d Z% d Z& d „  Z' e j( d „  ƒ Z) d „  Z* d „  Z+ d „  Z, d „  Z- e j. j/ d ƒ d „  ƒ Z0 d  „  Z1 e j. j/ d ƒ d! „  ƒ Z2 d" „  Z3 d# „  Z4 d$ „  Z5 d% „  Z6 d& „  Z7 d' „  Z8 d( „  Z9 d) „  Z: d* „  Z; d+ „  Z< d, „  Z= d- „  Z> d. „  Z? d/ „  Z@ d0 „  ZA d1 „  ZB d2 „  ZC d3 „  ZD d4 „  ZE d5 „  ZF e j. jG d6 d7 eH f d8 eH f g ƒ e j. jG d9 d: d e jI d e jJ e jK g ƒ e j. jG d; eH eL g ƒ e j. jM e jK ƒ d< „  ƒ ƒ ƒ ƒ ZN e j. jG d6 d= eL f d> eL f g ƒ e j. jG d? d: e jO f d e jI e jO f d e jK eL f g ƒ e j. jG d; eH eL g ƒ e j. jM e jK ƒ d@ „  ƒ ƒ ƒ ƒ ZP dA „  ZQ dB „  ZR dC „  ZS dD „  ZT dE „  ZU dF „  ZV dG „  ZW dH „  ZX dI „  ZY dJ „  ZZ dK „  Z[ dL „  Z\ dM „  Z] dN „  Z^ dO „  Z_ dP „  Z` dQ „  Za dR „  Zb e j. jG dS d7 d8 d= d> g ƒ dT „  ƒ Zc dU „  Zd e j. jG dS d7 d8 d= d> g ƒ dV „  ƒ Ze dW „  Zf dX „  Zg dY „  Zh dZ „  Zi d[ „  Zj d\ „  Zk d] „  Zl d^ „  Zm d_ „  Zn d S(`   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsNi   (   t   six(   t   fitsi   (   t   StdDevUncertaintyt   MissingDataAssociationException(   t   units(   t   log(   t   WCSt   FITSFixedWarning(   t   catch_warnings(   t   NumpyRNGContext(   t   get_pkg_data_filenamet   get_pkg_data_filenamest   get_pkg_data_contents(   t   CCDData(   t   Tablei{   u   seedid   u	   data_sizeg      ð?u
   data_scaleg        u	   data_meanc         C` s:   y | j  |  j d } Wn t k
 r5 t |  } n X| S(   Ni    (   t   keywordst   argst   KeyErrort   DEFAULTS(   t   keyt   requestt   val(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   value_from_markers'   s
    c         C` s¡   t  d |  ƒ } t  d |  ƒ } t  d |  ƒ } t t d ƒ , t j j d | d | | g d | ƒ } Wd QXi d	 d
 6d d 6} t | d t j ƒ} | | _	 | S(   uR  
    Return a CCDData object with units of ADU.

    The size of the data array is 100x100 but can be changed using the marker
    @pytest.mark.data_size(N) on the test function, where N should be the
    desired dimension.

    Data values are initialized to random numbers drawn from a normal
    distribution with mean of 0 and scale 1.

    The scale can be changed with the marker @pytest.marker.scale(s) on the
    test function, where s is the desired scale.

    The mean can be changed with the marker @pytest.marker.scale(m) on the
    test function, where m is the desired mean.
    u	   data_sizeu
   data_scaleu	   data_meanu   seedt   loct   sizet   scaleNi*   u   my_keyu   not 42u   your_keyt   unit(
   R   R   R   t   npt   randomt   normalR   t   ut   adut   header(   R   R   R   t   meant   datat	   fake_metat   ccd(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   ccd_data/   s    -	c           C` s!   t  j t ƒ  t ƒ  Wd  QXd  S(   N(   t   pytestt   raisest	   TypeErrorR   (    (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_ccddata_emptyN   s    c           C` s3   t  j t ƒ  t t j d d g ƒ ƒ Wd  QXd  S(   Nid   (   R*   R+   t
   ValueErrorR   R   t   zeros(    (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_ccddata_must_have_unitS   s    c         C` s#   t  j t ƒ  d  |  _ Wd  QXd  S(   N(   R*   R+   R,   t   NoneR   (   R)   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt'   test_ccddata_unit_cannot_be_set_to_noneX   s    c          C` sg   t  j t ƒ R }  t d d d g d d d i d d 6d i d d 6ƒd t |  ƒ k s] t ‚ Wd  QXd  S(	   Ni   i   i   R   u    t   metaR$   u    can't have both header and meta.(   R*   R+   R.   R   t   strt   AssertionError(   t   exc(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt!   test_ccddata_meta_header_conflict]   s    3i
   c         C` sL   |  j  d k s t ‚ |  j d k s* t ‚ |  j t j t ƒ k sH t ‚ d  S(   Ni
   id   (   i
   i
   (   t   shapeR5   R   t   dtypeR   t   float(   R)   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_ccddata_simplec   s    c          C` s7   t  t j d ƒ d d ƒ}  |  j t j k s3 t ‚ d  S(   Ni
   R   u   electron(   i
   i
   (   R   R   R/   R   R"   t   electronR5   (   R(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt+   test_ccddata_init_with_string_electron_unitj   s    c         C` sà   t  j |  ƒ } t  j | g ƒ } | j d ƒ j } | j | ƒ t j | d t j	 ƒ} | j
 d k sm t ‚ | j d k s‚ t ‚ t j | j j t j ƒ s£ t ‚ x6 | j j ƒ  D]% \ } } | j | | k s³ t ‚ q³ Wd  S(   Nu
   afile.fitsR   i
   id   (   i
   i
   (   R   t
   PrimaryHDUt   HDUListt   joint   strpatht   writetoR   t   readR"   R<   R8   R5   R   R   t
   issubdtypeR&   R9   t   floatingR$   t   itemsR3   (   R)   t   tmpdirt   hdut   hdulistt   filenamet   cdt   kt   v(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_initialize_from_FITSo   s    !c         C` s±   t  j j d d ƒ } t j | ƒ } t j j ƒ  | j d <|  j d ƒ j	 } | j
 | ƒ t j | ƒ } | j t j k s€ t ‚ t j | d d ƒ} | j t j k s­ t ‚ d  S(   NR   id   u   bunitu
   afile.fitsR   u   photon(   id   id   (   R   R    R   R>   R"   R#   t	   to_stringR$   R@   RA   RB   R   RC   R   R5   t   photon(   RG   t   fake_imgRH   RJ   R(   t   ccd2(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt-   test_initialize_from_fits_with_unit_in_header}   s    c         C` s{   t  j j d d ƒ } t j | ƒ } d | j d <|  j d ƒ j } | j | ƒ t j	 | ƒ } | j
 t j k sw t ‚ d  S(   NR   id   u   ADUu   bunitu
   afile.fits(   id   id   (   R   R    R   R>   R$   R@   RA   RB   R   RC   R   R"   R#   R5   (   RG   RQ   RH   RJ   R(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt,   test_initialize_from_fits_with_ADU_in_headerŒ   s    c         C` sk   t  j t j d ƒ ƒ } d | j d <|  j d ƒ j } | j | ƒ t j	 t
 ƒ  t j | ƒ Wd  QXd  S(   Ni   u   definetely-not-a-unitu   bunitu
   afile.fits(   i   i   (   R   R>   R   t   onesR$   R@   RA   RB   R*   R+   R.   R   RC   (   RG   RH   RJ   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt5   test_initialize_from_fits_with_invalid_unit_in_header—   s    c         C` sß   t  j j d d ƒ } t j ƒ  } t j | ƒ } t j | | g ƒ } |  j d ƒ j } | j | ƒ t	 t
 ƒ  } t j | d d ƒ} Wd  QXt | ƒ d k s¦ t ‚ t  j j | j | ƒ | j | j | j k sÛ t ‚ d  S(   NR   id   u
   afile.fitsR   u   adui    (   id   id   (   R   R    R   R>   t   ImageHDUR?   R@   RA   RB   R   R   R   RC   t   lenR5   t   testingt   assert_array_equalR&   R$   (   RG   RQ   t   hdu1t   hdu2t   hdusRJ   t   wR(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt:   test_initialize_from_fits_with_data_in_different_extension    s    c   	      C` sÀ   t  j j d d ƒ } t  j j d d	 ƒ } t j ƒ  } t j | ƒ } t j | ƒ } t j | | | g ƒ } |  j d ƒ j } | j | ƒ t	 j
 | d d d d ƒ} t  j j | j | ƒ d  S(
   NR   id   u
   afile.fitsRH   i   R   u   adu(   id   id   (   id   id   (   R   R    R   R>   RW   R?   R@   RA   RB   R   RC   RY   RZ   R&   (	   RG   t	   fake_img1t	   fake_img2t   hdu0R[   R\   R]   RJ   R(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt(   test_initialize_from_fits_with_extension°   s    c         C` sU   |  j  } |  j ƒ  } d | d j k s. t ‚ | d j d | j ƒ  k sQ t ‚ d  S(   Nu   buniti    (   R   t   to_hduR$   R5   RO   (   R)   RG   t   ccd_unitRI   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_write_unit_to_hdu¾   s    	c         C` s‡   | j  d ƒ j } |  j | ƒ t j t ƒ ! t j | d |  j d t	 ƒWd  QXt j t ƒ ! t j | d |  j d t	 ƒWd  QXd  S(   Nu	   test.fitsR   t   do_not_scale_image_datat
   scale_back(
   R@   RA   t   writeR*   R+   R,   R   RC   R   t   True(   R)   RG   RJ   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt2   test_initialize_from_FITS_bad_keyword_raises_errorÅ   s    c         C` sT   | j  d ƒ j } |  j | ƒ t j | d |  j ƒ} t j j |  j	 | j	 ƒ d  S(   Nu	   test.fitsR   (
   R@   RA   Ri   R   RC   R   R   RY   RZ   R&   (   R)   RG   RJ   t   ccd_disk(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_ccddata_writerÒ   s    c         C` sb   d } d |  j  | <| j ƒ  |  j  k s. t ‚ | j ƒ  |  j  k sI t ‚ | |  j  k s^ t ‚ d  S(   Nu   SoMeKEYi
   (   R3   t   lowerR5   t   upper(   R)   R   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt#   test_ccddata_meta_is_case_sensitiveÚ   s
    c         C` s0   i d d 6|  _  t |  j  t j ƒ s, t ‚ d  S(   Nu   Edwin Hubbleu   OBSERVER(   R3   t
   isinstanceR   t   HeaderR5   (   R)   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt$   test_ccddata_meta_is_not_fits_headerâ   s    c         C` sÐ   t  j |  ƒ } t  j d |  j ƒ } t  j | ƒ } | j | ƒ | j d ƒ j } | j | ƒ t j	 | d t
 j ƒ} t j j | j |  j ƒ t j	 | d d d t
 j ƒ} t j j | j d |  j ƒ d  S(   Ni   u
   afile.fitsR   RH   i   (   R   R>   R&   R?   t   appendR@   RA   RB   R   RC   R"   R<   R   RY   RZ   (   R)   RG   RH   R\   RI   RJ   RK   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_fromMEFç   s    c         C` s}   t  j j ƒ  } d | d <d | d <t t j d	 ƒ d | d t j ƒ} | j d d k s` t	 ‚ | j d d k sy t	 ‚ d  S(
   Nu   Edwin Hubbleu   observeru   3600u   exptimei   R3   R   u   OBSERVER(   i   i   (
   R   R$   Rr   R   R   RU   R"   R<   R3   R5   (   R)   t   hdrt   d1(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_metafromheaderö   s    

$c          C` sU   i d d 6d d 6}  t  t j d ƒ d |  d t j ƒ} | j d d k sQ t ‚ d  S(	   Nu   Edwin Hubbleu   OBSERVERi  u   EXPTIMEi   R3   R   (   i   i   (   R   R   RU   R"   R<   R3   R5   (   t   dicRw   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_metafromdict   s    $c          C` s€   t  j j ƒ  }  d |  d <d |  d <t t j d ƒ d t j ƒ} |  | _ | j d d k sc t	 ‚ | j d d k s| t	 ‚ d  S(	   Nu   Edwin Hubbleu   observeru   3600u   exptimei   R   u   OBSERVER(   i   i   (
   R   R$   Rr   R   R   RU   R"   R<   R3   R5   (   Rv   Rw   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_header2meta  s    

	c       
   C` sB   d }  t  j t ƒ ' t t j d ƒ d |  d t j ƒWd  QXd  S(   Nu   this is not a valid headeri   R3   R   (   i   i   (   R*   R+   R,   R   R   RU   R"   R#   (   Rv   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_metafromstring_fail  s    c         C` s#   t  j t ƒ  d |  _ Wd  QXd  S(   Ni
   (   R*   R+   R,   t   uncertainty(   R)   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt)   test_setting_bad_uncertainty_raises_error  s    c         C` sP   d  |  _ t j t j |  j ƒ ƒ } | j ƒ  |  _ t j j |  j j	 | ƒ d  S(   N(
   R1   R}   R   t   sqrtt   absR&   t   copyRY   RZ   t   array(   R)   t   fake_uncertainty(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt#   test_setting_uncertainty_with_array  s    	c         C` s2   t  j t ƒ  t j j d d ƒ |  _ Wd  QXd  S(   NR   i   i   (   i   i   (   R*   R+   R.   R   R    R}   (   R)   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt1   test_setting_uncertainty_wrong_shape_raises_error$  s    c         C` s’   i d d 6|  _  |  j ƒ  } t | t j ƒ s4 t ‚ x: |  j  j ƒ  D]) \ } } | d j | | k sD t ‚ qD Wt j	 j
 | d j |  j ƒ d  S(   Nu   Edwin Hubbleu   observeri    (   R3   Rd   Rq   R   R?   R5   RF   R$   R   RY   RZ   R&   (   R)   t   fits_hdulistRL   RM   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_to_hdu)  s    !c         C` sY   |  j  ƒ  } t j j | j |  j ƒ | j |  j k s= t ‚ | j |  j k sU t ‚ d  S(   N(   R   R   RY   RZ   R&   R   R5   R3   (   R)   t   ccd_copy(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt	   test_copy2  s    u   operation,affects_uncertaintyu   multiplyu   divideu   operandg       @u   with_uncertaintyc   
      C` s¶  | r! t  t j |  ƒ ƒ |  _ n  |  j | ƒ } t j | ƒ } | | ƒ } | |  k	 s] t ‚ t | t ƒ sr t ‚ | j d  k s™ t | j t  ƒ s™ t ‚ y | j	 } Wn t
 k
 r¿ | } n Xt j j | j | |  j | ƒ ƒ | r;| rt j j | j j | |  j j | ƒ ƒ qPt j j | j j |  j j ƒ n | j d  k sPt ‚ t | t j ƒ rš| d |  j d | j ƒ j }	 | j |	 k s²t ‚ n | j |  j k s²t ‚ d  S(   Ni   (   R   R   t	   ones_likeR}   t   __getattribute__R5   Rq   R   R1   t   valuet   AttributeErrorRY   RZ   R&   R‚   R"   t   QuantityR   (
   R)   t   operandt   with_uncertaintyt	   operationt   affects_uncertaintyt   methodt	   np_methodt   resultt   op_valuet   expected_unit(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_mult_div_overload9  s6    
 u   addu   subtractu   operand,expect_failurec   
      C` s×  | r! t  t j |  ƒ ƒ |  _ n  |  j | ƒ } t j | ƒ } | rk t j | ƒ  | | ƒ } Wd  QXd  S| | ƒ } | |  k	 s‰ t ‚ t | t	 ƒ sž t ‚ | j d  k sÅ t | j t  ƒ sÅ t ‚ y | j }	 Wn t k
 rë | }	 n Xt j j | j | |  j |	 ƒ ƒ | rg| rEt j j | j j | |  j j |	 ƒ ƒ q|t j j | j j |  j j ƒ n | j d  k s|t ‚ t | t j ƒ r»| j |  j k r²| j | j k sÓt ‚ n | j |  j k sÓt ‚ d  S(   N(   R   R   RŠ   R}   R‹   R*   R+   R5   Rq   R   R1   RŒ   R   RY   RZ   R&   R‚   R"   RŽ   R   (
   R)   R   t   expect_failureR   R‘   R’   R“   R”   R•   R–   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_add_sub_overloadl  s<    
-c      	   C` s   t  j t ƒ  |  j d ƒ Wd  QXt  j t ƒ  |  j d ƒ Wd  QXt  j t ƒ  |  j d ƒ Wd  QXt  j t ƒ  |  j d ƒ Wd  QXd  S(   Nu   five(   R*   R+   R,   t   multiplyt   dividet   addt   subtract(   R)   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_arithmetic_overload_fails¡  s    c          C` s¯   t  t j d ƒ d d ƒ}  |  j |  d d  ƒj d  k s? t ‚ |  j |  d d  ƒj d  k sc t ‚ |  j |  d d  ƒj d  k s‡ t ‚ |  j	 |  d d  ƒj d  k s« t ‚ d  S(   Ni
   R   u    t   compare_wcs(   i
   i
   (
   R   R   RU   R   R1   t   wcsR5   Rž   R›   Rœ   (   R(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_arithmetic_no_wcs_compare¯  s
    $$$c          C` sß   d „  }  t  t j d	 ƒ d d d d ƒ} t  t j d
 ƒ d d d d ƒ} | j | d |  ƒj d k so t ‚ | j | d |  ƒj d k s“ t ‚ | j | d |  ƒj d k s· t ‚ | j | d |  ƒj d k sÛ t ‚ d  S(   Nc         S` s   t  |  | ƒ d k S(   Ni   (   R€   (   t   firstt   second(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   return_diff_smaller_3¸  s    i
   R   u    R¡   i   i   R    (   i
   i
   (   i
   i
   (	   R   R   RU   R   R¡   R5   Rž   R›   Rœ   (   R¥   t   ccd1RR   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt    test_arithmetic_with_wcs_compare·  s    	!!$$$c          C` sÿ   d „  }  t  t j d	 ƒ d d d d ƒ} t  t j d
 ƒ d d d d ƒ} t j t ƒ  | j | d |  ƒj Wd  QXt j t ƒ  | j | d |  ƒj Wd  QXt j t ƒ  | j	 | d |  ƒj Wd  QXt j t ƒ  | j
 | d |  ƒj Wd  QXd  S(   Nc         S` s   t  |  | ƒ d k S(   Ni   (   R€   (   R£   R¤   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   return_diff_smaller_1Ä  s    i
   R   u    R¡   i   i   R    (   i
   i
   (   i
   i
   (   R   R   RU   R*   R+   R.   R   R¡   Rž   R›   Rœ   (   R¨   R¦   RR   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt%   test_arithmetic_with_wcs_compare_failÃ  s    	!!c         C` s%  t  t j |  ƒ ƒ |  _ |  j ƒ  } |  j | ƒ } t | j ƒ d k sN t ‚ t j	 j
 | j d |  j ƒ t j	 j
 | j j t j d ƒ |  j j ƒ |  j | ƒ } t | j ƒ d k sÁ t ‚ t j	 j
 | j d |  j ƒ t j	 j
 | j j t j d ƒ |  j j ƒ |  j | ƒ } t | j ƒ d k s4t ‚ t j	 j
 | j |  j d ƒ t j d ƒ t j |  j ƒ |  j j } t j	 j | j j | ƒ |  j | ƒ } t | j ƒ d k s½t ‚ t j	 j
 | j t j |  j ƒ ƒ t j d ƒ t j |  j ƒ |  j j } t j	 j | j j | ƒ d  S(   Ni    i   (   R   R   RŠ   R}   R   R   RX   R3   R5   RY   RZ   R&   R‚   R   Rž   R›   R€   t   assert_allcloseRœ   (   R)   R   R•   t   expected_uncertainty(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt(   test_arithmetic_overload_ccddata_operandÓ  s<    c          C` s®  t  j d d d g ƒ t j }  t  j d d d g ƒ t j } t |  ƒ } | j | ƒ } t  j j | j	 t  j |  | ƒ j
 ƒ | j t  j |  | ƒ j k s¢ t ‚ | j | ƒ } t  j j | j	 t  j |  | ƒ j
 ƒ | j t  j |  | ƒ j k sú t ‚ | j | ƒ } t  j j | j	 t  j |  | ƒ j
 ƒ | j t  j |  | ƒ j k sRt ‚ | j | ƒ } t  j j | j	 t  j |  | ƒ j
 ƒ | j t  j |  | ƒ j k sªt ‚ d  S(   Ni   i   i   (   R   R‚   R"   t   mt   cmR   R   RY   t   assert_array_almost_equalR&   RŒ   R   R5   Rž   R›   Rœ   (   t   at   bt   ccddatat   res(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt(   test_arithmetic_overload_differing_units÷  s    %$%$%$%c          C` s¤   t  t j d ƒ d d ƒ}  |  j t j d ƒ ƒ } t j j | j d d d g g d ƒ t  t j d ƒ d d ƒ}  t j	 t
 ƒ  |  j t j d ƒ ƒ Wd  QXd  S(	   Ni   R   u    i   i   u   adu(   i   i   (   i   i   (   R   R   RU   R   t   arangeRY   RZ   R&   R*   R+   R.   (   R(   R³   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_arithmetic_add_with_array  s    &c          C` s¤   t  t j d ƒ d d ƒ}  |  j t j d ƒ ƒ } t j j | j d d d g g d ƒ t  t j d	 ƒ d d ƒ}  t j	 t
 ƒ  |  j t j d ƒ ƒ Wd  QXd  S(
   Ni   R   u    i   i    iÿÿÿÿu   adu(   i   i   (   i   i   (   R   R   RU   Rž   Rµ   RY   RZ   R&   R*   R+   R.   (   R(   R³   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt#   test_arithmetic_subtract_with_array  s    &c          C` s€   t  t j d ƒ d d t j ƒ}  |  j t j d ƒ d ƒ } t j j | j d d d g g d ƒ | j	 |  j	 k s| t
 ‚ d  S(   Ni   R   i   i   (   i   i   (   i   i   (   R   R   RU   R"   R­   R›   RY   RZ   R&   R   R5   (   R(   R³   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt#   test_arithmetic_multiply_with_array"  s    "&c          C` s|   t  t j d ƒ d t j ƒ}  |  j t j d ƒ d ƒ } t j j | j d d d g g d ƒ | j	 |  j	 k sx t
 ‚ d  S(   Ni   R   i   g      à?(   i   i   (   i   i   (   R   R   RU   R"   R­   Rœ   RY   RZ   R&   R   R5   (   R(   R³   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt!   test_arithmetic_divide_with_array)  s    &c         C` sÂ   t  j j d d ƒ } t j | ƒ } d | j d <d | j d <d | j d <t | j d ƒ d k sj t ‚ |  j d ƒ j } | j	 | ƒ t
 j | d	 d
 ƒ} | j d | j d k s¾ t ‚ d  S(   NR   id   u   oneu   historyu   twou   threei   u	   temp.fitsR   u   adu(   id   id   (   R   R    R   R>   R$   RX   R5   R@   RA   RB   R   RC   (   RG   RQ   RH   t   tmp_filet   ccd_read(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt1   test_history_preserved_if_metadata_is_fits_header0  s    c         C` s|   | j  d ƒ } |  j | j ƒ t j d ƒ d } t j ƒ  8 } t j | j d | ƒ} | | d j k sr t	 ‚ Wd  QXd  S(   Nu	   temp.fitsu   INFOu   photonR   i    (
   R@   Ri   RA   R	   t   setLevelt   log_to_listR   RC   t   messageR5   (   R)   RG   t   tmpfilet   explicit_unit_namet   log_listt   ccd_from_disk(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt(   test_infol_logged_if_unit_in_fits_header>  s    c         C` sQ  | j  d ƒ } t d d ƒ } t j |  j ƒ d | j _ t j d d g ƒ | j _ d d g | j _ d d	 g | j _	 | j j
 d g ƒ |  j ƒ  d j |  _ |  j j | j ƒ  d t ƒ|  j | j ƒ t |  j ƒ } t j | j ƒ } | j d k	 st ‚ | j j | j k st ‚ | j ƒ  d } t | j ƒ | k sJt ‚ t |  j d | d d ƒ} | j ƒ  d } | j ƒ  }	 xX |	 j ƒ  D]J }
 |
 d k r¦qŽn  |
 | j k s»t ‚ | j |
 |	 |
 k sŽt ‚ qŽW| j j j d 9_ | j ƒ  d } | j d | j j j d k s't ‚ | j d | j j j d
 k sMt ‚ d S(   u$  
    Check that WCS attribute gets added to header, and that if a CCDData
    object is created from a FITS file with a header, and the WCS attribute
    is modified, then the CCDData object is turned back into an hdu, the
    WCS object overwrites the old WCS information in the header.
    u	   temp.fitst   naxisi   gNñ¸¨±¿gNñ¸¨±?i    i¦ÿÿÿu   RA---AIRu   DEC--AIRi   g     €F@t	   useblanksR¡   R   u   aduu    u   COMMENTu   HISTORYu   CDELT1u   CDELT2N(   i   i   g     €F@(   u    u   COMMENTu   HISTORY(   R@   R
   R   R‚   R8   R¡   t   crpixt   cdeltt   crvalt   ctypet   set_pvRd   R$   t   extendt	   to_headert   FalseRi   RA   RX   R   RC   R1   R5   R&   t   keys(   R)   RG   RÀ   R¡   t   original_header_lengtht   ccd_newt   ccd_new_hdut   ccd_wcs_not_in_headerRH   t
   wcs_headerRL   t   ccd_new_hdu_mod_wcs(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_wcs_attributeH  s8    !&c          C` s   d d l  m }  t |  ƒ } t d ƒ } t j | ƒ } | j j ƒ  } t | ƒ t | j ƒ | @sj t	 ‚ t d ƒ } t j | d d ƒ} d S(   ut   
    Test, for the file included with the nddata tests, that WCS keywords are
    properly removed from header.
    i   (   t   _KEEP_THESE_KEYWORDS_IN_HEADERu   data/sip-wcs.fitsu+   ../../io/fits/tests/data/o4sp040b0_raw.fitsR   u   countN(
   R²   R×   t   setR   R   RC   R¡   RÍ   R3   R5   (   R×   t   keeperst	   data_fileR(   RÔ   t
   data_file1(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt%   test_wcs_keywords_removed_from_header„  s    $c          C` sW  d d l  m }  d d l  m } t | ƒ } t d d d ƒ} x| D]
} d | k sE d | k sE d	 | k ru qE n  t | ƒ } t | ƒ } | j d
 t ƒ } |  | ƒ \ } }	 t | ƒ t |	 j d
 t ƒ ƒ | @sÞ t	 ‚ |	 j d
 t ƒ }
 x\ |
 j
 ƒ  D]N \ } } t | t j ƒ r4| | | k sKt	 ‚ qý t j j | | | ƒ qý WqE Wd S(   u±   
    Test, for the WCS test files, that keyword removall works as
    expected. Those cover a much broader range of WCS types than
    test_wcs_keywords_removed_from_header
    i   (   t   _generate_wcs_and_update_header(   R×   u   ../../wcs/tests/datat   patternu   *.hdru   invalidu   nonstandardu   segfaultt   relaxN(   R²   RÝ   R×   RØ   R   R   R
   RÍ   Rj   R5   RF   Rq   R   t   string_typesR   RY   t   assert_almost_equal(   RÝ   R×   RÙ   t   wcs_headersRv   t   header_stringR¡   R$   t
   new_headert   new_wcst   new_wcs_headerRL   RM   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt+   test_wcs_keyword_removal_for_wcs_test_files–  s(    		$	c         C` s±   t  j d ƒ } t t ƒ  t j j | d d ƒ} Wd  QXt j t j t	 j
 d
 ƒ d | ƒg ƒ } |  j d ƒ j } | j | ƒ t j | d d	 ƒ} | j d  k s­ t ‚ d  S(   Nu<  
    SIMPLE  =                    T / Fits standard
    BITPIX  =                   16 / Bits per pixel
    NAXIS   =                    2 / Number of axes
    NAXIS1  =                 1104 / Axis length
    NAXIS2  =                 4241 / Axis length
    CRVAL1  =         164.98110962 / Physical value of the reference pixel X
    CRVAL2  =          44.34089279 / Physical value of the reference pixel Y
    CRPIX1  =                -34.0 / Reference pixel in X (pixel)
    CRPIX2  =               2041.0 / Reference pixel in Y (pixel)
    CDELT1  =           0.10380000 / X Scale projected on detector (#/pix)
    CDELT2  =           0.10380000 / Y Scale projected on detector (#/pix)
    CTYPE1  = 'RA---TAN'           / Pixel coordinate system
    CTYPE2  = 'WAVELENGTH'         / Pixel coordinate system
    CUNIT1  = 'degree  '           / Units used in both CRVAL1 and CDELT1
    CUNIT2  = 'nm      '           / Units used in both CRVAL2 and CDELT2
    CD1_1   =           0.20760000 / Pixel Coordinate translation matrix
    CD1_2   =           0.00000000 / Pixel Coordinate translation matrix
    CD2_1   =           0.00000000 / Pixel Coordinate translation matrix
    CD2_2   =           0.10380000 / Pixel Coordinate translation matrix
    C2YPE1  = 'RA---TAN'           / Pixel coordinate system
    C2YPE2  = 'DEC--TAN'           / Pixel coordinate system
    C2NIT1  = 'degree  '           / Units used in both C2VAL1 and C2ELT1
    C2NIT2  = 'degree  '           / Units used in both C2VAL2 and C2ELT2
    RADECSYS= 'FK5     '           / The equatorial coordinate system
    t   sepu   
i‘  iP  R$   u
   afile.fitsR   u   adu(   i‘  iP  (   t   textwrapt   dedentR   R   R   Rr   t
   fromstringR?   R>   R   RU   R@   RA   RB   R   RC   R¡   R1   R5   (   RG   t   hdr_txt_example_WCSRv   t   hdulRJ   R(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_read_wcs_not_creatable¸  s    	*c         C` s8   i d d 6} t  |  d | ƒ} | j | k s4 t ‚ d  S(   Nu   Hubbleu   ObserverR$   (   R   R3   R5   (   R)   R°   R(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_headerß  s    c         C` s1   d |  _  |  j d ƒ } | j  d k s- t ‚ d  S(   Ni   g      ð?(   R¡   R›   R5   (   R)   R•   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_wcs_arithmeticå  s    	u	   operationc         C` sa   |  j  ƒ  } d |  _ |  j | ƒ } | | ƒ } | j |  j k sH t ‚ | j d  k s] t ‚ d  S(   Ni   (   R   R¡   R‹   R5   R1   (   R)   R‘   t	   ccd_data2R“   R•   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_wcs_arithmetic_ccdë  s    	c          C` s  t  d ƒ }  d „  } t j |  ƒ } t j |  ƒ  } | | d j ƒ } Wd QXt | ƒ sa t ‚ | j ƒ  } | | d j ƒ } t | ƒ s’ t ‚ | j d t	 ƒ } | | d j ƒ } t
 | ƒ sÊ t ‚ | d j d d k sç t ‚ | d j d d	 k st ‚ d S(
   uc   
    Check whether the ctypes RA---TAN-SIP and DEC--TAN-SIP survive
    a roundtrip unchanged.
    u   data/sip-wcs.fitsc         S` sA   i d d 6d d 6} g  | j  ƒ  D] \ } } |  | | k ^ q! S(   Nu   RA---TAN-SIPu   CTYPE1u   DEC--TAN-SIPu   CTYPE2(   RF   (   R$   t   expected_wcs_ctypesRL   RM   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   check_wcs_ctypesý  s    
i    Nt	   wcs_relaxu   CTYPE1u   RA---TANu   CTYPE2u   DEC--TAN(   R   R   RC   R   t   openR$   t   allR5   Rd   RÎ   t   any(   RÚ   Rô   t   ccd_originalt   rawt
   good_ctypeRÑ   t   ccd_no_relax(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_wcs_sip_handlingö  s    	c         C` sV   |  j  ƒ  } |  j d k |  _ |  j | ƒ } | | ƒ } t j j | j |  j ƒ d  S(   Ni    (   R   R&   t   maskR‹   R   RY   t   assert_equal(   R)   R‘   Rñ   R“   R•   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_mask_arithmetic_ccd  s
    c         C` sr   |  j  d k |  _ | j d ƒ j } |  j | ƒ t j | ƒ } | j d  k	 sU t ‚ t	 j
 j |  j | j ƒ d  S(   Ni
   u
   afile.fits(   R&   Rþ   R@   RA   Ri   R   RC   R1   R5   R   RY   RZ   (   R)   RG   RJ   t	   ccd_after(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt/   test_write_read_multiextensionfits_mask_default%  s    c         C` s|   t  |  j d ƒ |  _ | j d ƒ j } |  j | ƒ t j | ƒ } | j d  k	 sY t	 ‚ t
 j j |  j j | j j ƒ d  S(   Ni
   u
   afile.fits(   R   R&   R}   R@   RA   Ri   R   RC   R1   R5   R   RY   RZ   R‚   (   R)   RG   RJ   R  (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt6   test_write_read_multiextensionfits_uncertainty_default/  s    c         C` s   |  j  d k |  _ t |  j  d ƒ |  _ | j d ƒ j } |  j | d d  d d  ƒt j	 | ƒ } | j d  k sw t
 ‚ | j d  k sŒ t
 ‚ d  S(   Ni
   u
   afile.fitst   hdu_maskt   hdu_uncertainty(   R&   Rþ   R   R}   R@   RA   Ri   R1   R   RC   R5   (   R)   RG   RJ   R  (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt&   test_write_read_multiextensionfits_not:  s    c         C` s  |  j  d k |  _ t |  j  d ƒ |  _ | j d ƒ j } |  j | d d d d ƒt j | ƒ } | j d  k sw t
 ‚ | j d  k sŒ t
 ‚ t j | d d d d ƒ} | j d  k	 s¼ t
 ‚ | j d  k	 sÑ t
 ‚ t j j |  j | j ƒ t j j |  j j | j j ƒ d  S(   Ni
   u
   afile.fitsR  u   FunR  u   NoFun(   R&   Rþ   R   R}   R@   RA   Ri   R   RC   R1   R5   R   RY   RZ   R‚   (   R)   RG   RJ   R  (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt3   test_write_read_multiextensionfits_custom_ext_namesE  s    c         C` s"   d |  _  |  j  d k s t ‚ d  S(   Ni   (   R¡   R5   (   R)   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_wcsZ  s    	c         C` s|   d d d g } xf | D]^ } | j  d j | ƒ ƒ } |  j | j ƒ t j | j ƒ } |  j | j k j ƒ  s t ‚ q Wd  S(   Nu   fitu   fitsu   ftsu   test.{}(	   R@   t   formatRi   RA   R   RC   R&   R÷   R5   (   R)   RG   t   supported_extensionst   extt   patht	   from_disk(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt+   test_recognized_fits_formats_for_read_write_  s    c           C` s0   t  j t ƒ  t t j d ƒ ƒ j Wd  QXd  S(   Ni
   (   i
   i
   (   R*   R+   R   R   R   RU   t   parent_nddata(    (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt2   test_stddevuncertainty_compat_descriptor_no_parentj  s    c          C` s[   t  t j d ƒ d d ƒ}  t t j d ƒ ƒ } |  | _ | j |  k sN t ‚ d  | _ d  S(   Ni
   R   u    (   i
   i
   (   i
   i
   (   R   R   RU   R   t   _parent_nddataR  R5   R1   (   R(   t   uncert(    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt3   test_stddevuncertainty_compat_descriptor_no_weakrefo  s
    	c         C` s¹   t  t j d ƒ j d d ƒ ƒ } t j d ƒ } t j d t j ƒ  t j | j ƒ  ƒ t j	 | ƒ g ƒ } |  j
 d ƒ j } | j | ƒ t j | d d ƒ} | j j d	 k sµ t ‚ d  S(
   Ni
   i   i   R]   u   table_image.fitsR   u   adu(   i   i   (   i   i   (   R   R   RU   t   reshapeR   R?   R>   t   TableHDUt   as_arrayRW   R@   RA   RB   R   RC   R&   R8   R5   (   RG   t   tblt   imgRí   RJ   R(   (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   test_read_returns_image{  s    !$(o   t
   __future__R    R   R   R   Ré   t   numpyR   R*   t   externR   t   ioR   t   nduncertaintyR   R   t    R   R"   R	   R¡   R
   R   t   tests.helperR   t   utilsR   t
   utils.dataR   R   R   R²   R   t   astropy.tableR   R   t   DEFAULT_SEEDt   DEFAULT_DATA_SIZEt   DEFAULT_DATA_SCALER   t   fixtureR)   R-   R0   R2   R7   t   markt	   data_sizeR;   R=   RN   RS   RT   RV   R_   Rc   Rf   Rk   Rm   Rp   Rs   Ru   Rx   Rz   R{   R|   R~   R„   R…   R‡   R‰   t   parametrizeRj   t   dimensionless_unscaledRP   R#   RÎ   t	   data_unitR˜   t
   UnitsErrorRš   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  (    (    (    s@   lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyt   <module>   sÒ   "
																			
										
	''		')					$		
	
				
	<		"	'		
	%		
							