ó
šßÈ[c           @` s)  d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l m	 Z	 m
 Z
 y d  d l m Z Wn e k
 r} e Z n Xe Z d d l m Z m Z m Z d d l m Z d	 „  Z e j j d
 ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   assert_equalt   assert_allclose(   t   statsi   (   t
   sigma_clipt	   SigmaClipt   sigma_clipped_statsi   (   t   NumpyRNGContextc          C` sl  t  d ƒ Zt j j d ƒ }  t |  d d d d ƒ} t | j ƒ d k sR t ‚ t | j ƒ |  j k  sq t ‚ t |  d d d d d t j	 ƒ} t j
 | j | j k ƒ s´ t ‚ t |  d d d d d	 t j ƒ} t j
 | j | j k ƒ s÷ t ‚ t |  d d
 d d  ƒ} | j d |  d k s,t ‚ | j d c d 7<| j d |  d k s\t ‚ t |  d d
 d d  d t ƒ} | j d |  d k s—t ‚ | j d c d 7<| j d |  d k sÇt ‚ t j d ƒ t j j d d d ƒ t j t j d ƒ ƒ } t | d d d d ƒ} | j ƒ  d k s2t ‚ t | d d d d ƒ} | j ƒ  d k sbt ‚ Wd  QXd  S(   Ni90  i'  t   sigmai   t   itersi   i    t   stdfunct   cenfunci   g      ð?t   copyi   g        gš™™™™™©?t   axisgffffff@i   i   (   i   i   (   R
   t   npt   randomt   randnR   t   sumt   maskt   AssertionErrort   sizet   vart   allt   meant   Nonet   datat   Falset   aranget   normalt   diagt   onest   count(   t   randvart   filtered_datat   filtered_data2t   filtered_data3R   (    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigma_clip   s0    !"""u   not HAS_SCIPYc          C` s™   t  d ƒ ‡ t j j d ƒ }  t |  d d d d  d t j ƒ} t j |  d d ƒ d } | j	 ƒ  t
 | ƒ k sw t ‚ t | | j j | ƒ Wd  QXd  S(   Ni90  i'  R   i   R   R   i    (   R
   R   R   R   R   R   R   R   t	   sigmaclipR"   t   lenR   R   R   R   (   R#   t
   astropyrest   scipyres(    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_compare_to_scipy_sigmaclipC   s    !c          C` sC   t  j d ƒ }  t |  d d d d ƒ} | j j d k s? t ‚ d S(   u,   Test that the returned mask is not a scalar.i   R   g      Y@R   i   N(    (   R   R   R   R   t   shapeR   (   R   t   result(    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigma_clip_scalar_maskS   s    c       
   C` ss   t  d ƒ a t j j d ƒ }  d |  d <t d d d d ƒ } t |  d d d d ƒ} t | |  ƒ | ƒ Wd  QXd  S(	   Ni90  id   g     jø@i
   R   i   R   i   (   R
   R   R   R   R   R   R   (   R   t   sobjt   sfunc(    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigma_clip_classZ   s    
c          C` s’  d d g }  t  j t t g ƒ } t |  d | ƒ} t | d t ƒ sL t ‚ | d k s^ t ‚ t |  d d ƒ} t | d t ƒ s‰ t ‚ | d k s› t ‚ d d g }  t |  ƒ } t | d t ƒ sÌ t ‚ | d k sÞ t ‚ t  j d ƒ } t  j	 j
 | | d | g ƒ }  t |  d	 d d
 d ƒj d	 d ƒ } t | | ƒ t |  d	 d d
 d ƒ\ } } } t | | ƒ t | | ƒ t | t  j | ƒ ƒ d S(   u5   Test list data with input mask or mask_value (#3268).i    i   R   g      ð?g        t
   mask_valuei   i
   R   R   N(   g      ð?g      ð?g        (   g      ð?g      ð?g        (   g      ð?g      ð?g      ð?(   R   t   arrayt   TrueR   R	   t
   isinstancet   floatR   R   t   mat   MaskedArrayR   R   R   t
   zeros_like(   R   R   R.   t   _dataR   t   mediant   stddev(    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigma_clipped_statsc   s(    $!c          C` s¡   t  d ƒ  t j j d ƒ }  d |  d <t |  ƒ \ } } } t |  d d ƒ\ } } } | | k sk t ‚ | | k s} t ‚ t | d ƒ t | d ƒ Wd  QXd  S(	   Ni90  i'  g     jø@i
   t   std_ddofi   güªjiï?gZø·hiï?(   R
   R   R   R   R	   R   R   (   R   t   mean1t   median1t   stddev1t   mean2t   median2t   stddev2(    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigma_clipped_stats_ddof‚   s    
c          C` s|   t  j d ƒ }  d |  d	 <t  j |  d
 <t  j |  d <t |  ƒ } | j d sR t ‚ | j d se t ‚ | j d sx t ‚ d S(   u2   Test sigma_clip of data containing invalid values.i   iè  i   i   i   i   N(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R!   t   nant   infR   R   R   (   R   R.   (    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_invalid_sigma_clipŽ   s    
c          C` s#   t  j d ƒ }  t |  d d ƒd S(   uE   Test that dimensions are expanded correctly even if axis is negative.i   i   R   iÿÿÿÿN(   i   i   (   R   R!   R   (   R   (    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigmaclip_negative_axis¡   s    c          C` sb   t  j j d d d g d d g g d t t g t t g g ƒ }  t |  ƒ } t  j j |  | ƒ d S(   u]   Make sure a fully masked array is returned when sigma clipping a fully
    masked array.
    R   g      ð?g        R   N(   R   R8   R9   R5   R   t   allequal(   R   t   clipped_data(    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigmaclip_fully_masked¨   s    $c          C` s>   t  j j d g  d g  ƒ }  t |  ƒ } t  j j |  | ƒ d S(   u^   Make sure a empty masked array is returned when sigma clipping an empty
    masked array.
    R   R   N(   R   R8   R9   R   RK   (   R   RL   (    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigmaclip_empty_masked³   s    c          C` s,   t  j g  ƒ }  t |  ƒ } t |  | ƒ d S(   uL   Make sure a empty array is returned when sigma clipping an empty array.
    N(   R   R4   R   R   (   R   RL   (    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   test_sigmaclip_empty½   s    ($   t
   __future__R    R   R   R   t   pytestt   numpyR   t   numpy.testingR   R   t   scipyR   t   ImportErrorR   t	   HAS_SCIPYR5   t   sigma_clippingR   R   R	   t
   utils.miscR
   R'   t   markt   skipifR,   R/   R2   R>   RF   RI   RJ   RM   RN   RO   (    (    (    sF   lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyt   <module>   s*   "
	-									
