ó
šßÈ[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
 d d l 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
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d  „  Z- d! „  Z. d" „  Z/ d# „  Z0 d S($   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   assert_allcloset   assert_array_almost_equal_nulpi   (   t   biweight_locationt   biweight_scalet   biweight_midvariancet   biweight_midcovariancet   biweight_midcorrelationi   (   t   range(   t   catch_warnings(   t   NumpyRNGContextc          C` sQ   t  d ƒ ? t j j d ƒ }  t |  ƒ } t | d ƒ d k  sG t ‚ Wd  QXd  S(   Ni90  i'  i    g{®Gáz„?(   R   t   npt   randomt   randnR   t   abst   AssertionError(   t   randvart   cbl(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_location   s    c          C` s+   t  t j d ƒ ƒ }  |  d k s' t ‚ d  S(   Ni
   i   g      ð?(   i
   i   (   R   R   t   onesR   (   R   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_location_constant   s    c          C` sà   d }  t  j |  ƒ } t | d d ƒ} t | t  j |  d ƒ ƒ t | d d ƒ} t | t  j |  d ƒ ƒ d } d } t  j d ƒ j d d ƒ } | | d	 <| | d
 <t | d d ƒ} t | d	 | ƒ t | d
 | ƒ d  S(   Ni
   i   t   axisi    i   g      Y@g       @i2   i   i   (   i
   i   (   R   R   R   R   t   aranget   reshape(   t   shapet   dataR   t   val1t   val2(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt'   test_biweight_location_constant_axis_2d   s    

c          C` s»   d }  t  j |  ƒ } t | d d ƒ} t | t  j |  d |  d f ƒ ƒ t | d d ƒ} t | t  j |  d |  d f ƒ ƒ t | d d ƒ} t | t  j |  d |  d f ƒ ƒ d  S(   Ni
   i   i   R   i    i   (   i
   i   i   (   R   R   R   R   (   R   R   R   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt'   test_biweight_location_constant_axis_3d1   s    $$c          C` s;   t  d d d d d g ƒ }  t |  d ƒ d k  s7 t ‚ d  S(   Ni   i   i   iô  i   gö(\Âõ@gü©ñÒMbP?(   R   R   R   (   R   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_location_small<   s    c          C` s  t  d ƒ d }  d } t j j d d |  | f ƒ } t | d d ƒ} g  } x7 t | ƒ D]) } | j t | d d … | f ƒ ƒ q\ Wt j | ƒ } t | | ƒ t | d d	 ƒ} g  } x7 t |  ƒ D]) } | j t | | d d … f ƒ ƒ qÊ Wt j | ƒ } t | | ƒ Wd QXd S(
   u&   Test a 2D array with the axis keyword.i90  id   iÈ   i   i   R   i    Ni   (	   R   R   R   t   normalR   R   t   appendt   arrayR   (   t   nyt   nxR   t   bwt   bwit   i(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_location_axisA   s     ''c          C` sà   t  d ƒ Î d }  d } d } t j j d d |  | | f ƒ } t | d d ƒ} | j | | f k sm t ‚ d } g  } x: t | ƒ D], } | j t | d d … | | f ƒ ƒ q† Wt j	 | ƒ } t
 | | | ƒ Wd QXd S(	   u&   Test a 3D array with the axis keyword.i90  i   i   i   i   R   i    N(   R   R   R   R"   R   R   R   R   R#   R$   R   (   t   nzR%   R&   R   R'   t   yR(   R)   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_location_axis_3dW   s    !*c          C` sG   d d d d d g }  t  |  ƒ } t |  ƒ } t | t j | ƒ ƒ d  S(   Ni   i   i   iô  i   (   R   R   R   R   t   sqrt(   R   t   sclt   var(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_scalei   s    c       	   C` sH   t  d ƒ 6 t j j d ƒ }  t |  ƒ } t | d d d ƒWd  QXd  S(   Ni90  i'  g      ð?t   rtolg{®Gáz”?(   R   R   R   R   R   R   (   R   R0   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_midvarianceq   s    c          C` sQ   d d d d d g }  t  |  ƒ } t | d ƒ t  |  d t ƒ} t | d ƒ d  S(	   Ni   i   i   iô  i   gmt)	d@t   modify_sample_sizeg¶¼r½m¶@(   R   R   t   True(   R   R0   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_midvariance_smally   s
    c          C` sM   t  j j d ƒ }  |  j d d d d d d	 ƒ } t | ƒ } t | d ƒ d  S(
   Ni90  t   locg        t   scaleg      4@t   sizeid   g´Òtémy@(   id   id   (   R   R   t   RandomStateR"   R   R   (   t   randR   R0   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_midvariance_5127‚   s    c          C` s  t  d ƒ d }  d } t j j d d |  | f ƒ } t | d d ƒ} g  } x7 t | ƒ D]) } | j t | d d … | f ƒ ƒ q\ Wt j | ƒ } t | | ƒ t | d d	 ƒ} g  } x7 t |  ƒ D]) } | j t | | d d … f ƒ ƒ qÊ Wt j | ƒ } t | | ƒ Wd QXd S(
   u&   Test a 2D array with the axis keyword.i90  id   iÈ   i   i   R   i    Ni   (	   R   R   R   R"   R   R   R#   R$   R   (   R%   R&   R   R'   R(   R)   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_midvariance_axisŠ   s     ''c          C` sà   t  d ƒ Î d }  d } d } t j j d d |  | | f ƒ } t | d d ƒ} | j | | f k sm t ‚ d } g  } x: t | ƒ D], } | j t | d d … | | f ƒ ƒ q† Wt j	 | ƒ } t
 | | | ƒ Wd QXd S(	   u&   Test a 3D array with the axis keyword.i90  i   i   i   i   R   i    N(   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/stats/tests/test_biweight.pyt!   test_biweight_midvariance_axis_3d    s    !*c          C` s+   t  t j d ƒ ƒ }  |  d k s' t ‚ d  S(   Ni
   i   g        (   i
   i   (   R   R   R   R   (   R'   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt'   test_biweight_midvariance_constant_axis²   s    c          C` sÔ   d }  t  j |  ƒ } t | d d ƒ} t | t  j |  d ƒ ƒ t | d d ƒ} t | t  j |  d ƒ ƒ t  j d ƒ j d d ƒ } d | d <d	 | d
 <t | d d ƒ} t | d d ƒ t | d
 d ƒ d  S(   Ni
   i   R   i    i   i2   g      Y@i   g       @i   g        (   i
   i   (   R   R   R   R   t   zerosR   R   (   R   R   R   R'   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt*   test_biweight_midvariance_constant_axis_2d·   s    

c          C` s»   d }  t  j |  ƒ } t | d d ƒ} t | t  j |  d |  d f ƒ ƒ t | d d ƒ} t | t  j |  d |  d f ƒ ƒ t | d d ƒ} t | t  j |  d |  d f ƒ ƒ d  S(   Ni
   i   i   R   i    i   (   i
   i   i   (   R   R   R   R   R@   (   R   R   R   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt*   test_biweight_midvariance_constant_axis_3dÇ   s    $$c          C` s>   d d d g }  t  |  ƒ } t |  ƒ } t | | g g ƒ d  S(   Ni    i   i   (   R	   R   R   (   t   dt   covR0   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_midcovariance_1dÒ   s    c          C` sÏ   d d d g d d d g g }  t  |  ƒ } d } t | | | g | | g g ƒ d d d g d d d g g }  t  |  ƒ } t | d d	 g d	 d
 g g ƒ t  |  d t ƒ} t | d d g d d g g ƒ d  S(   Ni    i   i   g<}ë`pæ?i   i
   iô  gQî©bK-@gÐ©–:)ÀgŒ½´4ù®@R4   gchŽ'ÆÀgáäé"¦t@(   R	   R   R5   (   RC   RD   t   val(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_midcovariance_2dÙ   s    !c          C` s5   t  j d ƒ }  t |  ƒ } t | t  j d ƒ ƒ d  S(   Ni   i
   (   i   i
   (   i   i   (   R   R   R	   R   R@   (   R   RD   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt$   test_biweight_midcovariance_constanté   s    c          C` s¶   t  j j d ƒ }  |  j d d d d	 ƒ} t | ƒ } g  | D] } t | ƒ ^ q= } t | j ƒ  | ƒ t | d t ƒ} g  | D] } t | d t ƒ^ q } t | j ƒ  | ƒ d S(
   ua   
    Test that biweight_midcovariance diagonal elements agree with
    biweight_midvariance.
    i   i    i   R9   id   i   R4   N(   id   i   (	   R   R   R:   R"   R	   R   R   t   diagonalR5   (   t   rngRC   RD   t   aR0   t   cov2t   var2(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt'   test_biweight_midcovariance_midvarianceï   s    "c          C` s_   t  j d ƒ j d d d ƒ }  t j t ƒ  } t |  ƒ Wd QXd t | j ƒ k s[ t	 ‚ d S(   uH   
    Test that biweight_midcovariance raises error with a 3D array.
    i   i   Nu!   The input array must be 2D or 1D.(
   R   R   R   t   pytestt   raisest
   ValueErrorR	   t   strt   valueR   (   RC   t   e(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_midcovariance_shape  s    c          C` sn   d d d g }  d d g d d g g } t  j t ƒ  } t |  d | ƒWd QXd t | j ƒ k sj t ‚ d S(   u_   
    Test that biweight_midcovariance raises error when M is not a scalar
    or 1D array.
    i    i   i   i   t   MNu   M must be a scalar or 1D array.(   RO   RP   RQ   R	   RR   RS   R   (   RC   RV   RT   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_midcovariance_M_shape  s
    c          C` sx   t  j j d ƒ }  |  j d d d d
 ƒ} t | ƒ } t | | j d d ƒt | d t ƒ} t | | j d d ƒd	 S(   u|   
    Regression test to ensure that midcovariance matrix is symmetric
    when ``modify_sample_size=True`` (see #5972).
    i   i   R9   i   iô  t   nulpi   R4   N(   i   iô  (   R   R   R:   t   gammaR	   R   t   TR5   (   RJ   RC   RD   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt%   test_biweight_midcovariance_symmetric  s    c          C` sŽ   d d d g }  d d d g } t  t |  |  ƒ d ƒ t  t |  | ƒ d ƒ d d d d d	 g }  d
 d d d d g } t  t |  | ƒ d ƒ d  S(   Ni    i   i   g      ð?g      ð¿i   i
   gÍÌÌÌÌÌ(@gffffff*@iô  gffffff@gÍÌÌÌÌÌì?glˆ‘5rÂ¿(   R   R
   (   t   xR,   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   test_biweight_midcorrelation(  s    c       	   C` sñ   t  j d ƒ }  t  j d ƒ } t  j d ƒ } t j t ƒ / } t |  | ƒ d t | j ƒ k sg t ‚ Wd  QXt j t ƒ / } t | |  ƒ d t | j ƒ k s§ t ‚ Wd  QXt j t ƒ / } t | | ƒ d t | j ƒ k sç t ‚ Wd  QXd  S(   Ni   i   i   u   x must be a 1D array.u   y must be a 1D array.u!   x and y must have the same shape.(   i   i   (	   R   R   RO   RP   RQ   R
   RR   RS   R   (   t   a1t   a2t   a3RT   (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt#   test_biweight_midcorrelation_inputs4  s    !!c          C` s­   t  d ƒ › t j j d ƒ j t j ƒ }  d |  d <t t ƒ ) } t |  ƒ t | ƒ d k sf t	 ‚ Wd QXt t ƒ ) } t
 |  ƒ t | ƒ d k s t	 ‚ Wd QXWd QXd S(   u   Regression test for #6905.i90  id   g     LÝ@i2   i    N(   R   R   R   t   astypet   float32R   t   RuntimeWarningR   t   lenR   R   (   R   t   warning_lines(    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt$   test_biweight_32bit_runtime_warningsF  s    


(1   t
   __future__R    R   R   R   RO   t   numpyR   t   numpy.testingR   R   t   biweightR   R   R   R	   R
   t   extern.six.movesR   t   tests.helperR   t
   utils.miscR   R   R   R   R    R!   R*   R-   R1   R3   R6   R<   R=   R>   R?   RA   RB   RE   RG   RH   RN   RU   RW   R[   R]   Ra   Rg   (    (    (    s@   lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyt   <module>   sB   "(																										