ó
¦–Õ\c           @   su  d  d l  m Z d  d l Z d  d l Z d  d l j Z d  d l Z	 d  d l m
 Z
 d  d l m Z m Z d  d l m Z d d d d	 d
 d g Z d d d d d d d d g Z e j d ƒ j d d ƒ Z e j e d dA ƒZ e j e d dB ƒZ e j e d dC ƒZ e j j d e ƒ d „  ƒ Z e j j d e ƒ d „  ƒ Z e j j d e ƒ d „  ƒ Z e j j d e ƒ d „  ƒ Z e j j d e ƒ d „  ƒ Z d „  Z  e j j d e ƒ e j j d d  d! g ƒ d" „  ƒ ƒ Z! e j j d# d$ d% g ƒ e j j d e ƒ e j j d d  d! g ƒ d& „  ƒ ƒ ƒ Z" e j j d# d$ d% g ƒ e j j d e ƒ e j j d d  d! g ƒ d' „  ƒ ƒ ƒ Z# e j j d( d d) d* d+ d, g ƒ e j j d- d. d/ d) e j$ g ƒ e j j d0 d1 „  d2 „  g ƒ d3 „  ƒ ƒ ƒ Z% e j j d( d d) d* d+ d, g ƒ e j j d- d. d/ d) e j$ g ƒ e j j d0 d4 „  d5 „  g ƒ d6 „  ƒ ƒ ƒ Z& e j j d d7 d8 g ƒ e j j d9 d d: d d) dD dE dF dG g ƒ e j j d; dH dI g dJ dK g dL dM g g ƒ d> „  ƒ ƒ ƒ Z( e j j d? dN dO g ƒ e j j d9 d d: d d) dP dQ dR dS g ƒ e j j d; dT dU g dV dW g dX dY g g ƒ d@ „  ƒ ƒ ƒ Z) d S(Z   iÿÿÿÿ(   t   combinations_with_replacementN(   t   fft_wrap(   t	   assert_eqt	   same_keys(   t   normalize_chunkst   fftt   ifftt   rfftt   irfftt   hfftt   ihfftt   fft2t   ifft2t   fftnt   ifftnt   rfft2t   irfft2t   rfftnt   irfftnid   i
   t   chunksi   t   funcnamec      	   C   sk   t  t j |  ƒ } t j t d d ƒ} x= t | j ƒ D], } t j t	 ƒ  | | d | ƒWd  QXq7 Wd  S(   NR   i   t   axis(   i   i   (
   t   getattrt   daR   t
   from_arrayt   nparrt   ranget   ndimt   pytestt   raisest
   ValueError(   R   t   da_fftt   bad_darrt   i(    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_cant_fft_chunked_axis)   s
    c         C   sA   t  t j |  ƒ } t  t j |  ƒ } t | t ƒ | t ƒ ƒ d  S(   N(   R   R   R   t   npR   t   darrR   (   R   R   t   np_fft(    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_fft3   s    c         C   s¹   t  t j j |  ƒ } t  t j |  ƒ } t | t ƒ | t ƒ ƒ t | t d ƒ | t d	 ƒ ƒ t | t d
 d d ƒ| t d d d ƒƒ t | t d d d ƒ| t d d d ƒƒ d  S(   Ni   i	   t   axesi   i    i   i   (   i   i	   (   i   i	   (   i   i	   (   i   i    (   i   i	   (   i   i    (   i   i   (   i   i    (   i   i   (   i   i    (   R   t   daskt   arrayR   R#   R   t   darr3R   (   R   R   R%   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_fft2n_shapes<   s    c         C   s  t  t j |  ƒ } t  t j |  ƒ } t | t d ƒ | t d ƒ ƒ t | t d ƒ | t d ƒ ƒ t | t d d ƒ| t d d ƒƒ t | t d d d ƒ| t d d d ƒƒ t | t d d d ƒ| t d d d ƒƒ t | t d d d ƒ| t d d d ƒƒ d  S(   Ni   i   R   i    i   (   R   R   R   R#   R   R$   R   t   darr2(   R   R   R%   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_fft_n_kwargJ   s    c         C   s˜   t  t j |  ƒ } t | t d ƒ | t d ƒ ƒ s9 t ‚ t | t d d d ƒ| t d d d ƒƒ sl t ‚ t | t d ƒ | t d ƒ ƒ s” t ‚ d  S(   Ni   R   i    i   (   R   R   R   R   R$   t   AssertionErrorR,   (   R   R   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_fft_consistent_names]   s    '3c           C   s'   t  j t ƒ  t t j ƒ Wd  QXd  S(   N(   R   R   R   R   R#   t   ones(    (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_wrap_bad_kindf   s    t   dtypet   float32t   float64c      
   C   s’  t  t j |  ƒ } t  t j |  ƒ } d	 } d
 } t j t j | ƒ d | ƒj | ƒ } t j | d | ƒ} xt d | j	 ƒ D]} xt
 t | j	 ƒ | ƒ D]è }	 t | ƒ }
 x |	 D] } | | |
 | <q· W| j |
 ƒ } t t |	 ƒ ƒ t |	 ƒ k  r%t j t ƒ  | | d |	 ƒWd  QXqž | | d |	 ƒ} | | d |	 ƒ} | j | j k sat ‚ | j | j k syt ‚ t | | ƒ qž Wq Wd  S(   Ni   i   i	   i   R2   R   i   R'   (   i   i   i	   (   i   i   i   (   R   R#   R   R   t   aranget   prodt   reshapeR   R   R   R    t   listt   rechunkt   lent   setR   R   R   R2   R.   t   shapeR   (   R   R2   R%   R   R<   t
   chunk_sizet   at   dt   num_axesR'   t   csR!   t   d2t   rt   er(    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_nd_ffts_axesk   s(    't   modnames	   numpy.ffts   scipy.fftpackc   	   	   C   s1  t  j |  ƒ } y t | | ƒ } Wn( t k
 rL t  j d |  | f ƒ n Xt j | ƒ } t j | ƒ } t j | ƒ } |  d k rµ d | k rµ t  j	 t
 ƒ  t | ƒ Wd  QXnxt | ƒ } | | ƒ j | | ƒ j k så t ‚ | | ƒ j | | ƒ j k s	t ‚ t | | ƒ | | ƒ ƒ t | | d d ƒ| | d d ƒƒ t | | d d ƒ| | d d ƒƒ t | | d t | ƒ d ƒ| | d t | ƒ d ƒƒ t | | d d d | j d d ƒ| | d | j d d ƒƒ t | | d d d | j d d ƒ| | d d d | j d d ƒƒ d  S(   Ns   `%s` missing function `%s`.s   scipy.fftpackR   R   i   i    t   n(   R   t   importorskipR   t   AttributeErrort   skipR$   t   astypeR,   R   R   R   R   R2   R.   R<   R   R:   (	   RF   R   R2   t   fft_modt   funct   darrct   darr2ct   nparrct   wfunc(    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_wrap_ffts‡   s.    $$%%##c   	      C   sª  t  j |  ƒ } y t | | ƒ } Wn( t k
 rL t  j d |  | f ƒ n Xt j | ƒ j t j ƒ } t	 j | ƒ j t	 j ƒ } t
 j | ƒ } t | ƒ } | | ƒ j | | ƒ j k sÂ t ‚ | | ƒ j | | ƒ j k sæ t ‚ t | | ƒ | | ƒ ƒ t | | d d ƒ| | d d ƒƒ t | | d d ƒ| | d d ƒƒ t | | | j d d | j d d f d	 ƒ | | | j d d | j d d f d
 ƒ ƒ d  S(   Ns   `%s` missing function `%s`.R'   i   i    (   i   i    (   i   i    (   i    i   (   i    i   (   i    i   (   i    i   (   R   RH   R   RI   RJ   R$   RK   R9   R<   R,   R   R   R2   R.   R   (	   RF   R   R2   RL   RM   RN   RO   RP   RQ   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_wrap_fftns§   s"    $$%%+RG   i   i   i   i   R?   g      ð?g      à?t   cc         C   s   |  S(   N(    (   t   m(    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   <lambda>Ã   t    c         C   s   d |  d f S(   Ni   (    (   RU   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyRV   Ã   RW   c         C   sn   | |  ƒ } t  j j |  | ƒ } t j j |  | d | ƒ} t | | j ƒ | j k s] t ‚ t | | ƒ d  S(   NR   (	   R#   R   t   fftfreqR   R   R<   R   R.   R   (   RG   R?   RT   t   r1t   r2(    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_fftfreqÁ   s
    !c         C   s   |  d d f S(   Ni   i   (    (   RU   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyRV   Ñ   RW   c         C   s   d |  d f S(   Ni   i   (    (   RU   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyRV   Ñ   RW   c         C   s   g  | |  ƒ D] } | d k r | ^ q } t  j j |  | ƒ } t j j |  | d | ƒ} t | | j ƒ | j k s| t ‚ t | | ƒ d  S(   Ni    R   (	   R#   R   t   rfftfreqR   R   R<   R   R.   R   (   RG   R?   RT   t   ciRY   RZ   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_rfftfreqÏ   s
    +!t   fftshiftt	   ifftshiftR'   i    s   shape, chunksi   i   c         C   s  t  t j |  ƒ } t  t j |  ƒ } t j t j | ƒ ƒ j | ƒ } t j | d | ƒ} | | | ƒ } | | | ƒ }	 xz t | j	 |	 j	 ƒ D]c \ }
 } t
 |
 ƒ d k rÙ t
 | ƒ d k sÄ t ‚ | |
 k sñ t ‚ qŽ t
 | ƒ d k sŽ t ‚ qŽ Wt |	 | ƒ d  S(   NR   i   (   R   R#   R   R   R5   R6   R7   R   t   zipR   R:   R.   R   (   R   R<   R   R'   t   np_funct   da_funcR>   R?   t   a_rt   d_rt   each_d_chunkst   each_d_r_chunks(    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_fftshiftÝ   s    !"s   funcname1, funcname2c         C   s   t  t j |  ƒ } t  t j | ƒ } t j t j | ƒ ƒ j | ƒ } t j | d | ƒ} | | | | ƒ | ƒ }	 xz t | j	 |	 j	 ƒ D]c \ }
 } t
 |
 ƒ d k rÓ t
 | ƒ d k s¾ t ‚ | |
 k së t ‚ qˆ t
 | ƒ d k sˆ t ‚ qˆ Wt |	 | ƒ d  S(   NR   i   (   R   R   R   R#   R5   R6   R7   R   Ra   R   R:   R.   R   (   t	   funcname1t	   funcname2R<   R   R'   t   da_func1t   da_func2R>   R?   Re   Rf   Rg   (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   test_fftshift_identity  s    !"(   i   i
   (   i
   i   (   i
   i
   (   i    i   (   i   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_   (   i    i   (   i   i   (   i    i   (   i    i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (*   t	   itertoolsR    t   numpyR#   R   t
   dask.arrayR)   R   t   dask.array.fftR(   R   t   dask.array.utilsR   R   t   dask.array.coreR   t   all_1d_funcnamest   all_nd_funcnamesR5   R7   R   R   R$   R,   R*   t   markt   parametrizeR"   R&   R+   R-   R/   R1   RE   RR   RS   t   piR[   R^   t   NoneRh   Rm   (    (    (    s8   lib/python2.7/site-packages/dask/array/tests/test_fft.pyt   <module>   s–   		
			'**!"0!"0			!				