
U\c           @` s  d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l Z d  d l	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l Z e j e j e j e j e j e j g Z e j e j e j e j e j e j g Z d Z d Z e j e f e j e f e j e f e j e f e j e f e j e f g Z y: e e j  g 7Z e e j g 7Z e e j  e f g 7Z Wn e! k
 rn Xe j"   Z" d e" k re" j# d  n  g  Z$ x\ e" D]T Z% e j&   @ e j' d e(  e) e j* e%  e j+  se$ j, e%  n  Wd QXqWx e$ D] Z- e" j# e-  q&Wd	   Z. d
   Z/ d   Z0 d   Z1 d   Z2 d   Z3 d   Z4 d   Z5 d   Z6 d   Z7 e j8 d    Z9 d   Z: d   Z; d   Z< d   Z= d   Z> d   Z? d   Z@ d   ZA d   ZB d   ZC d   ZD d   ZE d    ZF d!   ZG d"   ZH d#   ZI d$   ZJ e j8 d%    ZK d&   ZL d'   ZM d(   ZN d)   ZO d*   ZP d+   ZQ d,   ZR d-   ZS d.   ZT d/   ZU d0   ZV d1   ZW d2   ZX d3   ZY d4   ZZ d5   Z[ d6   Z\ d7   Z] d8   Z^ d9   Z_ d:   Z` d;   Za d<   Zb d=   Zc d>   Zd d?   Ze d@   Zf dA   Zg dB   Zh dC   Zi dD   Zj dE   Zk dF   Zl dG   Zm dH   Zn dI   Zo ep dJ k re
   n  d S(K   i    (   t   divisiont   print_functiont   absolute_importN(   t   combinations(
   t   run_module_suitet   assert_almost_equalt   assert_allcloset   assert_t   assert_equalt   assert_raisest   assert_raises_regext   dect   assert_array_equalt   assert_warnsgư>gvIh%<=t   dmeyt   ignorec          C` s   d d d d d d d d g }  t  j d  } t  j |  |  \ } } } } t | d	 g  t | d
 g  t | d d g  t | d d d d g  t t  j t |   |  d k  d  S(   Ni   i   i   ii   i   i   t   db1ga{!@g'eֿg      @g      g'ei    gZo̙g'e(   t   pywtt   Wavelett   wavedecR   R   R   t   dwt_max_levelt   len(   t   xR   t   cA3t   cD3t   cD2t   cD1(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedec<   s    c          C` s   t  t t j t j d  d  t  t t j g  d  d d d d d d d d	 g }  t j |  d
  } t j |  \ } } t j | |  } d } t	 t
 | t j | d  d  S(   Ni   t   haari   i   i   ii   i   i   R   sa   Wrong coefficient format, if using 'array_to_coeffs' please specify the 'output_format' parameter(   R	   t
   ValueErrorR   t   waverect   npt   onesR   t   coeffs_to_arrayt   array_to_coeffsR
   t   AttributeError(   R   t   coeffst   arrt   coeff_slicest   coeffs_from_arrt   message(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_invalid_inputsG   s    c          C` s   t  j j d  }  |  j d  } x t D] \ } } | j |  } t  j |  r{ | d |  j d  j | j j  7} n  t	 j
 | d  } t t	 j | d  | d | d | q( Wd  S(   Ni  i   y              ?R   t   atolt   rtol(   R   t   randomt   RandomStatet   randnt   dtypes_and_tolerancest   astypet   iscomplexobjt   realt   dtypeR   R   R   R   (   t   rstatet   x0t   dtt   tolR   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_accuraciesW   s    )c          C` sj   d d d d d d d d g }  t  j |  d  } d  | d	 <d  | d
 <t t  j | d  j t |    d  S(   Ni   i   i   ii   i   i   R   i   i    (   R   R   t   NoneR   R   t   sizeR   (   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_noneb   s
    

c          C` sM   d d d d d d g }  t  j |  d  } t t  j | d  |  d d d  S(	   Ni   i   i   ii   R   R+   g-q=(   R   R   R   R   (   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_odd_lengthl   s    c       	   C` sf   t  j d d d d d d d d g  }  |  d }  t j |  d	  } t t j | d	  |  d
 d d  S(   Ni   i   i   ii   i   i   y              ?R   R+   g-q=(   R   t   arrayR   R   R   R   (   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_complexr   s    '
c          C` s   t  j d  }  x t t t  D] \ } } t j d d | } d j |  } t  j | |  d d } x( | D]  } t	 | j
 | k d |  qn Wt  j | |   } t	 | j
 | k d |  q Wd  S(	   NR   i   R3   s"   wrong dtype returned for {0} inputt   leveli   s	   wavedec: s	   waverec: (   R   R   t   zipt	   dtypes_int
   dtypes_outR   R    t   formatR   R   R3   R   (   t   wavelett   dt_int   dt_outR   t   errmsgR$   t   ct   x_roundtrip(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_multilevel_dtypes_1dy   s    c       	   C` s   t  j j d  }  |  j d  } xh t D]` } xW t j j D]I } t j | | d | } t	 t j
 | | d | | d t d t q; Wq( Wd  S(   Ni  iP   t   modeR+   R*   (   R   R,   R-   R.   t   wavelistR   t   Modest   modesR   R   R   t
   tol_single(   R4   t   rRD   RK   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_all_wavelets_modes   s    c          C` s   t  j j d  }  |  j d d  } x t D] \ } } | j |  } t  j |  r | d |  j d d  j | j j  7} n  t	 j
 | d  } t t |  d k  t t	 j | d  | d | d | q+ Wd  S(   Ni  i   y              ?R   i   R*   R+   (   R   R,   R-   R.   R/   R0   R1   R2   R3   R   t   wavedec2R   R   R   t   waverec2(   R4   R5   R6   R7   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec2_accuracies   s    ,c    
      C` s  t  j d  }  xt t t  D] \ } } t j d	 d | } d j |  } t  j | |  d d \ } } } t	 | j
 | k d |  x( | D]  } t	 | j
 | k d |  q Wx( | D]  } t	 | j
 | k d |  q Wt  j | | | g |   }	 t	 |	 j
 | k d |  q Wd  S(
   NR   i   R3   s"   wrong dtype returned for {0} inputR?   i   s
   wavedec2: s
   waverec2: (   i   i   (   R   R   R@   RA   RB   R   R    RC   RR   R   R3   RS   (
   RD   RE   RF   R   RG   t   cAt   coeffsD2t   coeffsD1RH   RI   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_multilevel_dtypes_2d   s    !c       	   C` s   t  j j d  }  |  j d d  } xh t D]` } xW t j j D]I } t j | | d | } t	 t j
 | | d | | d t d t q> Wq+ Wd  S(   Ni  iP   i`   RK   R+   R*   (   R   R,   R-   R.   RL   R   RM   RN   RR   R   RS   RO   (   R4   RP   RD   RK   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt    test_waverec2_all_wavelets_modes   s    c          C` s^   t  j d  d }  t j |  d  } t t |  d k  t t j | d  |  d d d  S(   Ni   y              ?R   i   R+   g-q=(   i   i   (   R   R    R   RR   R   R   R   RS   (   t   dataR$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedec2_complex   s    c          C` s)   t  j d  }  t t t j |  d  d  S(   Ni   R   (   R   R    R	   R   R   RR   (   RZ   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedec2_invalid_inputs   s    c           C` s9   t  t t j t j d  d  t  t t j g  d  d  S(   Ni   R   (   i   i   (   R	   R   R   RS   R   R    (    (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec2_invalid_inputs   s    c          C` sr   t  j d  }  t j |  d  } t |  } t | d  | d <t  j d  | d d <t t t j | d  d  S(   Ni   R   i   i   (   i   i   (   i   i   (	   R   R    R   RR   t   listt   zerosR	   R   RS   (   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt"   test_waverec2_coeff_shape_mismatch   s    c          C` sD   t  j d  }  t j |  d  } t t j | d  |  d d d  S(   Ni
   i   R   R+   g-q=(   i
   i   (   R   R    R   RR   R   RS   (   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec2_odd_length   s    c          C` s]   t  j d  j d d  }  t j |  d  } d | d <t |  j t j | d  j k  d  S(   Ni   i   i   R   i   (   NNN(	   R   t   aranget   reshapeR   RR   R9   R   t   shapeRS   (   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec2_none_coeffs   s    
c          C` s   t  j j d  }  xq t d d  D]` } |  j d |   } t j | d  } t t |  d k  t	 t j
 | d  | d t q" Wd  S(	   Ni  i   i   i   R   i   R+   (   i   (   R   R,   R-   t   rangeR.   R   t   wavedecnR   R   R   t   waverecnt
   tol_double(   R4   t   ndR   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn   s    c          C` s   t  j d  i  i  g }  t t j |  d  j d  t t j |  d  j d	  t  j d
  i  i t  j d  d 6g }  t  j d  i  i  i t  j d  d 6g }  t t j |  d  j d  d  S(   Ni   R   i   i   t   daai   (   i   i   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   R   Rh   Rd   (   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_empty_coeff   s    (+c          C` sb  d  i  g }  t t t j |  d  t j d  i  i d  d 6g }  t t t j |  d  t j d  i t j d  d 6t j d  d 6g }  t t t j |  d  t j d  i t j d  d 6t j d  d 6g }  t t t j |  d  d g g g i d g g g d	 6d g g g d 6d g g g d
 6g }  t t t j |  d  t t t j g  d  d  S(   NR   i   Rl   i   t   foot   dag      ?g        t   adt   ddR   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   R9   R	   R   R   Rh   R   R    (   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_invalid_coeffs  s    Ec          C` sY   d g g i d g g d 6d g g d 6d g g d 6g }  t  t j |  d  j d  d  S(	   Ng      ?g        Rp   Ro   Rq   R   i   (   i   i   (   R   R   Rh   Rd   (   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_lists   s    9c          C` s?   t  j d  i t  j d  d 6g }  t t t j |  d  d  S(   Ni   t   adaR   (   i   i   i   (   i   i   (   R   R    R	   R   R   Rh   (   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_invalid_coeffs2&  s    %c          C` sT   t  j d  }  t t t j |  d  t  j d  }  t t t j |  d d d d  S(   Ni    R   i   R?   i(   R   R=   R	   R   R   Rg   R    (   RZ   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedecn_invalid_inputs,  s    c    	      C` s   t  j d  j d d  }  d } t j t j t j g } t j t j t j	 g } t
 j    t
 j d t  x} t | |  D]l \ } } x] d d g D]O } | |  d d | d	 d
 } | | d d | } t |  | d | d | q Wq~ WWd  QXd  S(   Ni@   i   g-q=R   t   periodizationt	   symmetricR   RK   R?   i   R*   R+   (   R   Rb   Rc   R   R   RR   Rg   R   RS   Rh   t   warningst   catch_warningst   simplefiltert   UserWarningR@   R   (	   RZ   R7   t	   dec_funcst	   rec_funcst   dec_funct   rec_funcRK   R$   RP   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedecn_many_levels6  s    c          C` s   t  j j d  }  |  j d d d  } x t D] \ } } | j |  } t  j |  r | d |  j d d d  j | j j  7} n  t	 j
 | j |  d  } t t	 j | d  | d | d | q. Wd  S(   Ni  i   y              ?R   R*   R+   (   R   R,   R-   R.   R/   R0   R1   R2   R3   R   Rg   R   Rh   (   R4   R5   R6   R7   R   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_accuraciesE  s    /c          C` s5  t  j d  }  xt t t  D]\ } } t j d	 d | } d j |  } t  j | |  d d \ } } } t	 | j
 | k d |  x4 | j   D]& \ } }	 t	 |	 j
 | k d |  q Wx4 | j   D]& \ } }	 t	 |	 j
 | k d |  q Wt  j | | | g |   }
 t	 |
 j
 | k d |  q Wd  S(
   NR   i   R3   s"   wrong dtype returned for {0} inputR?   i   s
   wavedecn: s
   waverecn: (   i   i   (   R   R   R@   RA   RB   R   R    RC   Rg   R   R3   t   itemsRh   (   RD   RE   RF   R   RG   RU   RV   RW   t   keyRH   RI   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_multilevel_dtypes_ndQ  s    !c          C` sH   t  j d  d }  t j |  d  } t t j | d  |  d d d  S(   Ni   y              ?R   R+   g-q=(   i   i   i   (   R   R    R   Rg   R   Rh   (   RZ   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedecn_complexa  s    c          C` sj   t  j d  }  xT t D]L \ } } t j |  j |  d  } t t j | d  |  d | d | q Wd  S(   Ni   R   R*   R+   (   i   i   i   (   R   R    R/   R   Rg   R0   R   Rh   (   R   R6   R7   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_dtypesg  s    c       	   C` s   t  j j d  }  |  j d d  } xh t D]` } xW t j j D]I } t j | | d | } t	 t j
 | | d | | d t d t q> Wq+ Wd  S(   Ni  iP   i`   RK   R+   R*   (   R   R,   R-   R.   RL   R   RM   RN   Rg   R   Rh   RO   (   R4   RP   RD   RK   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt    test_waverecn_all_wavelets_modesn  s    c          C` sL  t  j d  j d d  g }  t j |   \ } } t | |  d  t | | | d  t t t j g   t t t j |  d g d  t t t j |  d |  d f g  t t t j d  g  t t t j |  d g  t t t j |  d  g  t  j	 d g  t
 d t  j	 d g  d t  j	 d g   g } t t t j |  d  S(   Ni   i   i   i    t   dRH   (   NNN(   R   Rb   Rc   R   R!   R   R	   R   R9   R=   t   dict(   t   a_coeffsR%   t
   arr_slicesR$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_coeffs_to_arrayz  s    
?c       
   C` s  t  j j d  }  i i d d 6t j d 6t j d 6d 6i d d 6t j d 6t j d 6d 6i d	 d 6t j d 6t j	 d 6d
 6} d } x| D]} |  j
 | g | | d   } x t j j D] } x t D] } t j |  } t j t  j | j  | j  } | d k rq n  | | d | | d | }	 t j |	  \ }
 } t j |
 | d | } | | d | | d | } t | | d d d d q Wq Wq Wd  S(   Ni  i   R   R   t   recR   i   RR   i   Rg   i   i    RK   t   output_formatR+   g-C6?R*   (   R   R,   R-   R   R   R   RR   RS   Rg   Rh   R.   RM   RN   RL   R   R   t   minRd   t   dec_lenR!   R"   R   (   t   rngt   paramst   Nt   ft   x1RK   t   wavet   wt   maxlevelR$   t	   coeff_arrR&   t   coeffs2t   x1r(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt    test_wavedecn_coeff_reshape_even  s&    %"%!	c       
   C` sI  t  j j d  }  d } t j d  } d } d } xd d d d d d d  g D] } |  j | g |   } t j | | d
 | d | } t j | d | \ } }	 | d  k	 r t	 t
 t j |  n  t	 t
 t j | d d t	 t
 t j | d d t j | |	  }
 t j |
 | d
 | d | } t | | d d d d qO Wd  S(   Ni  Rx   t   db2i   i   ii    i   i   RK   t   axesR+   g-C6?R*   (   i(   i    (   i   (   i    i   (   i   i   (   i    i   (   i    i   i   i   (    (   R   R,   R-   R   R   R9   R.   Rg   R!   R	   R   R"   Rh   R   (   R   RK   R   R   t   ndimR   R   R$   R   R&   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt'   test_wavedecn_coeff_reshape_axes_subset  s$    "c          C` sG  t  j j d  }  |  j d d  } d } t j | d d | } t t t j | d d  t j | d t  j
 \ } } t  j t  j |   } t | d k  t j | d d \ } } t t  j t  j |   d k  t t  j | d k  | k  t j | d d | } t j | d d  \ } } t | j | j  d  S(	   Ni  i    Rx   R   RK   t   paddingi    R   (   R   R,   R-   R.   R   Rg   R	   R   R!   R9   t   nant   sumt   isnanR   R   Rd   (   R   R   RK   R$   R   R&   t   npadt   coeffs_haar(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_coeffs_to_array_padding  s    "c       	   C` s1  t  j j d  }  |  j d d  } xt j j D] } x d g D] } t j |  } t j t  j	 | j
  | j  } | d k r qA n  t j | | d | } t j |  \ } } t j | |  }	 t j |	 | d | }
 |
 t g  | j
 D] } t |  ^ q  }
 t | |
 d d d	 d qA Wq1 Wd  S(
   Ni  i#   i!   R   i    RK   R+   g-C6?R*   (   R   R,   R-   R.   R   RM   RN   R   R   R   Rd   R   Rg   R!   R"   Rh   t   tuplet   sliceR   (   R   R   RK   R   R   R   R$   R   R&   R   R   t   s(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_coeff_reshape_odd  s    !,c          C` sc   t  j t j d  d  }  t  j |   \ } } t t t  j | g   t t t  j | | d  d  S(   Ni   R   Rn   (   R   Rg   R   R    R!   R	   R   R"   (   R$   R%   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt#   test_array_to_coeffs_invalid_inputs  s    c       
   C` s  t  j j d  }  i i d d 6t j d 6t j d 6d 6i d d 6t j d 6t j d 6d 6i d	 d 6t j d 6t j	 d 6d
 6} d } x| D]} |  j
 | g | | d   } x t j j D] } x t D] } t j |  } t j t  j | j  | j  } | d k rq n  | | d | | d | }	 t j |	  \ }
 } } t j |
 | | d | } | | d | | d | } t | | d d d d q Wq Wq Wd  S(   Ni  i   R   R   R   R   i   RR   i   Rg   i   i    RK   R   R+   g-C6?R*   (   R   R,   R-   R   R   R   RR   RS   Rg   Rh   R.   RM   RN   RL   R   R   R   Rd   R   t   ravel_coeffst   unravel_coeffsR   (   R   R   R   R   R   RK   R   R   R   R$   R   t   slicest   shapesR   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedecn_coeff_ravel  s&    %"%!	c       	   C` si  t  j j d  }  i i d d 6t j d 6t j d 6d 6i d d 6t j d 6t j d 6d 6i d	 d 6t j d 6t j	 d 6d
 6} d } x | D] } |  j
 | g | | d   } x t j j D] } t j d  } | | d | | d | d d } t j |  \ } }	 }
 t j | |	 |
 d | } | | d | | d | } t | | d d d d q Wq Wd  S(   Ni  i   R   R   R   R   i   RR   i   Rg   i   R   RK   R?   i    R   R+   g-C6?R*   (   R   R,   R-   R   R   R   RR   RS   Rg   Rh   R.   RM   RN   R   R   R   R   (   R   R   R   R   R   RK   R   R$   R   R   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt$   test_wavedecn_coeff_ravel_zero_level   s    %"%#	c       	   C` s7  t  j j d  }  |  j d d  } xt j j D] } x d g D] } t j |  } t j t  j	 | j
  | j  } | d k r qA n  t j | | d | } t j |  \ } } }	 t j | | |	  }
 t j |
 | d | } | t g  | j
 D] } t |  ^ q  } t | | d d d	 d qA Wq1 Wd  S(
   Ni  i#   i!   R   i    RK   R+   g-C6?R*   (   R   R,   R-   R.   R   RM   RN   R   R   R   Rd   R   Rg   R   R   Rh   R   R   R   (   R   R   RK   R   R   R   R$   R   R   R   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_coeff_ravel_odd7  s    !,c    	      C` s   t  j d
  }  t j d  } t j |  |  } g  | d D] } t |  ^ q; | d )t j |  \ } } } t j | | | d d } t j | |  } t	 |  | d d d d g  | d D] } t | d	   ^ q | d )t
 t t j |  d  S(   Ni   R   i   R   RR   R+   g-C6?R*   i(   i   i   (   R   R    R   R   RR   R^   R   R   RS   R   R	   R   (	   R   t   wavR$   RH   R   R   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_ravel_wavedec2_with_listsK  s    '	+c          C` s   t  j t j d  d  }  d  |  d <t t t  j |   t  j t j d  d  }  d |  d <t t t  j |   d  d  d  g |  d <t t t  j |   d  |  d <t t t  j |   t  j	 t j d  d  }  d  |  d d <t t t  j |   d  S(   Ni   R   i   t   ddd(   i   i   (   NNN(   i   i   i   (
   R   R   R   R    R9   R	   R   R   RR   Rg   (   R$   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_ravel_invalid_input]  s    


c          C` s   t  j t j d  d  }  t  j |   \ } } } t t t  j | | g   t t t  j | g  |  t t t  j | | d  |  t t t  j | | | d  d  S(   Ni   R   iRn   (   R   Rg   R   R    R   R	   R   R   (   R$   R%   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_unravel_invalid_inputsr  s    c       
   C` sf  t  j d  }  xPd d d g D]?} x6d  d d	 g D]%} xt  j j D]} t  j t j |  |  d
 | d | } t  j | |  d
 | d | } t	 | d j
 | d  | d j } xc t d t |   D]L } xC | | j   D]1 \ } }	 | |	 j 7} t	 | | | |	 j
  q Wq Wt  j |  }
 t	 |
 |  t  j |  }
 t	 |
 |  qH Wq5 Wq Wd  S(   NR   i!   i@   i    i   i   i   i    iRK   R   (   i!   (   i@   i    (   i   i   i   (   R   R   R9   RM   RN   Rg   R   R    t   wavedecn_shapesR   Rd   R:   Rf   R   R   t   wavedecn_size(   R   t
   data_shapeR   RK   R$   R   t   expected_sizeR?   t   kt   vR:   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedecn_shapes_and_size  s$     c          C` s   x t  j d  d g D] }  x d d d g D] } x d  d	 d
 g D]p } xg t  j j D]Y } t  j t j |  |  d | d | } t  j | |  |  } t	 t
 | d  |  qU WqB Wq, Wq Wd  S(   NR   t   sym8i!   i@   i    i   i   i   i    iRK   R   (   i!   (   i@   i    (   i   i   i   (   R   R   R9   RM   RN   Rg   R   R    t   dwtn_max_levelR   R   (   R   R   R   RK   R$   t   max_lev(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_dwtn_max_level  s    c          C` s   t  j j d  }  |  j d	  } xZ d d d g D]I } t j | d d | } t j | d d | } t | | d d q1 Wd  S(
   Ni    i   i   i   R   t   axisR*   g+=(   i   i   i   (   R   R,   R-   t   standard_normalR   R   R   R   (   R4   RZ   R   t   coefsR   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_axes_subsets  s    c          C` s   t  j j d  }  |  j d  } xW d d g D]I } t j | d d | } t j | d d | } t | | d d q. Wd  S(	   Ni    i   i   R   R   R*   g+=(   i   i   (   R   R,   R-   R   R   R   R   R   (   R4   RZ   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_axis_db2  s    c          C` s   t  j j d  }  |  j d	  } xZ t d
 d  D]I } t j | d d | } t j | d d | } t | | d d q1 Wd  S(   Ni    i   i   i   R   R   R*   g+=(   i   i   i   (   i    i   i   (	   R   R,   R-   R   R   R   RR   RS   R   (   R4   RZ   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec2_axes_subsets  s    c          C` s   t  j j d  }  |  j d
  } xZ t d d  D]I } t j | d d | } t j | d d | } t | | d d	 q1 Wd  S(   Ni    i   i   i   i   R   R   R*   g+=(   i   i   i   i   (   i    i   i   i   (	   R   R,   R-   R   R   R   Rg   Rh   R   (   R4   RZ   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_axes_subsets  s    c          C` s   t  j j d  }  |  j d  } xW d d g D]I } t j | d d | } t j | d d | } t | | d d q. Wd  S(	   Ni    i   i   R   R   R*   g+=(   i   i   (   R   R,   R-   R   R   Rg   Rh   R   (   R4   RZ   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_int_axis  s    c          C` s/   t  j d  }  t t t j |  d d d d  S(   Ni   R   R   i   (   R   R    R	   R   R   R   (   RZ   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedec_axis_error  s    c          C` s;   t  j t j d  d  }  t t t  j |  d d d d  S(   Ni   R   R   i   (   R   R   R   R    R	   R   R   (   RH   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_axis_error  s    c          C` sM   t  j t j d  d  }  |  d d  |  d <t t t  j |  d d d d  S(   Ni   R   i   iR   i   (   R   R   R   R    R	   R   R   (   RH   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt!   test_waverec_shape_mismatch_error  s    c          C` sg   t  j d  }  t t t j |  d d d t t t j |  d d d t t t j |  d d d	 d  S(
   Ni   R   R   i   i    i   (   i   i   (   i    i    (   i    i   (   R   R    R	   t	   TypeErrorR   RR   R   (   RZ   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedec2_axes_errors  s    c          C` sy   t  j d  }  t j |  d  } t t t j | d d d t t t j | d d d t t t j | d d d	 d  S(
   Ni   R   R   i   i    i   (   i   i   (   i    i    (   i    i   (   R   R    R   RR   R	   R   RS   R   (   RZ   RH   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec2_axes_errors  s
    c       	   C` sK   t  j d  }  t t t j |  d d d t t t j |  d d d	 d  S(
   Ni   R   R   i   i    i   (   i   i   i   (   i   i   (   i    i   i   (   R   R    R	   R   R   Rg   (   RZ   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_wavedecn_axes_errors  s    c       	   C` s]   t  j d  }  t j |  d  } t t t j | d d d t t t j | d d d	 d  S(
   Ni   R   R   i   i    i   (   i   i   i   (   i   i   (   i    i   i   (   R   R    R   Rg   R	   R   Rh   (   RZ   RH   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverecn_axes_errors
  s    c    
      C` sP  t  j j d  }  |  j d d d  } t j d  d d f } g  t | j |  D]! \ } } t j j	 | |  ^ qR } d d t j
 j j j f } t j | | |  } t t j | | |  | d	 d
 t t |  t | d   t j | | d  |  } t t j | | d  |  | d	 d
 t j | | | d   } t t j | | | d   | d	 d
 t t t j | | d   t t t j | | d | d  t t t j | | d   t t t j | | d | d  | d } t j | | d  | d   }	 t t j |	 | d  | d   | d	 d
 t t | d   t |	 d   d  S(   Ni  i   i   R   t   sym2R   Rx   Rw   R*   g+=i   i   RK   .i    (   .i    (   R   R,   R-   R.   R   R   R@   Rd   t   _dwtR   t   _extensionst   _pywtRM   t   reflectRg   R   Rh   R   R   R   R	   R   RR   RS   (
   R4   RZ   t   waveletsRj   t   nft
   max_levelsRN   R   t   data2t   coefs2(    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt    test_per_axis_wavelets_and_modes  s2    7"  
#c       
   C` s&  t  j j d  }  xt d d  D] } x t t t  D] \ } } x d D] } |  j d |  } | j	 |  } t
 j | d d | } t
 j |  } | j j t  j t  j g k r t | | d d d	 d n t | | d d
 d	 d
 t | j j | k  t | j | k  qK Wq8 Wq" Wd  S(   Ni    i   i   i   R   t   levelsR+   gư>R*   g+=(   i   N(   i   (   R   R,   R-   Rf   R@   RA   RB   R9   R   R0   R   t
   fswavedecnt
   fswaverecnR2   R3   t   float32t   float16R   R   R$   (   R4   R   RE   RF   R   RZ   t   TR   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt$   test_fswavedecn_fswaverecn_roundtrip?  s    c          C` sv   t  j j d  }  d } |  j d |  } t j | d d d } t | j |  t j |  } t | j |  d  S(   Ni    i   i   R   R   (   i   (	   R   R,   R-   R   R   R   R   R$   R   (   R4   R   RZ   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt&   test_fswavedecn_fswaverecn_zero_levelsR  s    c       
   C` s   t  j j d  }  d } |  j d
 |  } t j | d d d } t j |  } t | | d d	 t t	 t j | d d d t t	 t j | d d d t
 t t j | d d t t  j t  j | j    d d  S(   Ni    i   i   R   R   i   i   R*   g+=(   i   (   i   i   i   (   i   i   (   i   i   i   i   (   R   R,   R-   R   R   R   R   R   R	   R   R   R|   t   intt   log2R   Rd   (   R4   R   RZ   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt*   test_fswavedecn_fswaverecn_variable_levels]  s    c          C` s  t  j j d  }  d } |  j d |  } d } d } t j | d
 | d | } xI t |  D]; } t t | j	 |  t j
 | j | | |  d  q_ Wt j |  } t | | d d t t t j | | d   t t t j | | d d | d  d  S(   Ni    i   i   R   R   t   sym3t   periodicRx   Rw   RD   RK   i   R*   g+=i   (   i   (   R   R   R   (   R   Rx   Rw   (   R   R,   R-   R   R   R   Rf   R   R   R&   R   Rd   R   R   R	   R   (   R4   R   RZ   R   RN   R   t   axR   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt6   test_fswavedecn_fswaverecn_variable_wavelets_and_modeso  s    &c          C` s   t  j j d  }  |  j d  } xQ t d d  D]@ } t j | d	 d
 | } t j |  } t | | d d q1 Wt	 t
 t j | d	 d
 d d S(   s.   Fully separable DWT over only a subset of axesi    i   i   i   i    i   i   i   R   R   R*   g+=i   N(   i   i   i   i    (   i    i   i   i   (   i   i   (   R   R,   R-   R   R   R   R   R   R   R	   R   (   R4   RZ   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt'   test_fswavedecn_fswaverecn_axes_subsets  s    c       
   C` s/  t  j d  }  d } t j |  d d | } d	 |  j } t | | | j  | j   } t | | k  x+ | D]# } | | } t	 | j |  j  qq Wt  j
 |  | | <t t | j | t  j t g  | j D] } | d ^ q    t t | j | t  j
 |  j t  j   t	 | j j |  j  d  S(
   Ni    i   i   R   R   i    (   i    i    (   i   i   (   i    (   R   R    R   R   R   R   t   approxt   detail_keysR   R   t
   zeros_likeR	   R   t   __setitem__R_   R   Rd   R   R|   R0   R   R$   (   RZ   R   t   resultt
   approx_keyt   dkeysR   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_fswavedecnresult  s     
3c          C` s   t  j d  }  x t t j t j t j g t j t j t j	 g  D]g \ } } xX d t j
 d  g D]A } t t | |  d | | |  d  } t t | | d | qe WqC Wd  S(   Ni   t   morlRD   R   (   i   i   (   R   R    R@   R   R   RR   Rg   R   RS   Rh   t   DiscreteContinuousWaveletR	   R   (   RZ   t   dec_funt   rec_funt   cwaveRH   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt    test_error_on_continuous_wavelet  s    %c          C` s$  t  j d
  }  d } x t j t j g D] } x d d d g D]v } | |  | d	 | } t  j g  t | |  D]% \ } } t j |  j | |  ^ qo  } t	 t
 | d  |  q> Wq( Wxa d d g D]S } t j |  | | d	 | f } t	 t
 | d  t j |  j | | |   q Wd  S(   Ni   i    i   t   db8R   i    i   i   R   (   i   i    i   (   R   R   (   i    i   (   i   i   (   i    i   (   R   R    R   RR   Rg   R   R@   R   Rd   R   R   (   RZ   RD   R   R   RH   R   R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_default_level  s    	;c    	      C` su  t  j j d  }  x\t j t j d f t j t j d f t j t j	 d f g D]\ } } } |  j
 |   } | | d  } | d j t  j  | d <| | d  } t | | d d d d t | j t  j  | d | } | | d  } | d j t  j  | d <| | d  } t | | d d d d t | j t  j  | j d k r| d j t  j  | d <| d j t  j  | d <n  | j d	 k r| d j t  j  | d <t g  | d D] } | j t  j  ^ q | d <n  | j d
 k r2| d j t  j  | d <d   | d j   D | d <n  | | d  } t | | d d d d t | j t  j  qO Wd  S(   Ni    i   R   R+   gHz>R*   y              ?i   i   i   c         S` s+   i  |  ]! \ } } | j  t j  |  q S(    (   R0   R   t	   complex64(   t   .0R   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pys
   <dictcomp>  s   	(   i   (   i   i   (   i   i   i   (   R   R,   R-   R   R   R   RR   RS   Rg   Rh   R.   R0   R   R   R   R3   t   float64R   t
   complex128R   R   R   (	   R4   t   funct   ifuncRd   R   t   coeffs_realRP   R$   R   (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   test_waverec_mixed_precision  s:    %6t   __main__(q   t
   __future__R    R   R   Ry   t	   itertoolsR   t   numpyR   t   numpy.testingR   R   R   R   R   R	   R
   R   R   R   R   t   int8R   R   R  R   R  RA   RB   RO   Ri   R/   t
   complex256R#   RL   t   removet   del_listRD   Rz   R{   t   FutureWarningt
   isinstanceR   R   t   appendt   del_indR   R)   R8   R;   R<   R>   RJ   RQ   RT   RX   t   slowRY   R[   R\   R]   R`   Ra   Re   Rk   Rm   Rr   Rs   Ru   Rv   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   R   R   R   R   R   R   R   R   R   R   R   R  t   __name__(    (    (    s9   lib/python2.7/site-packages/pywt/tests/test_multilevel.pyt   <module>   s   F				
													
					
																				
	
	
	
	
				
					,						!			'