U
    h                     @   s   d dl mZmZmZ d dlZd dlmZmZm	Z	m
Z
 d dlZejejejejgZejejgZdd Zdd Zdd	 Zd
d Zdd ZdS )    )divisionprint_functionabsolute_importN)assert_allcloseassert_raisesassert_assert_equalc                 C   s   | t |  S )N)npabs)x r   @/tmp/pip-unpacked-wheel-mu97bu1x/pywt/tests/test_thresholding.py_sign   s    r   c                 C   s   t | tt| | d S )ztsoft thresholding supporting complex values.

    Notes
    -----
    This version is not robust to zeros in x.
    r   )r   r	   maximumr
   )r   threshr   r   r   _soft   s    r   c                  C   sT  t ddd} dddddddg}tt| d	d
t |dd tt|  d	d
t | dd ttdd	ggd	 dd
ddggd	 dd ttdd	ggd	 d	d
ddggd	 dd ttddggd	 dd
ddggd	 dd ttddggd	 dd
ddggd	 dd ddggd	 }dD ]$}tt||d
t||dd q"d}ttjdd	ggd	 dd
|d|dggd	 dd ttt dd	d
t ddd dddddddg}tt| d	dt |dd tt|  d	dt | dd ttdd	ggd	 dddd	ggd	 dd ttdd	ggd	 d	ddd	ggd	 dd ttjdd	ggd	 d	d|d|d	ggd	 dd ttddggd	 d	dddggd	 dd dddddddg}tt| d	dt |dd ttdd	ggd	 dddd	ggd	 dd ttdd	ggd	 d	ddd	ggd	 dd ttjdd	ggd	 d	d|d|d	ggd	 dd tt	tjddgd	d tt| d	dt dddddddgdd ttdd	ggd	 ddddggd	 dd ttjdd	ggd	 dd|dd|ggd	 dd ttdd	ggd	 d	ddd	ggd	 dd tt	tjddgd	d tt	tj| d	d  d S )!N         g        g      ?g      ?g      ?g       @   softg-q=)rtolr   y              ?y               @y                y      ?      ?y       @       @   y      ?       @)r   r      )
substitute   g      @g      @g      @g      @hardZgreaterZlessZfoo)
r	   linspacer   pywt	thresholdarrayr   zerosr   
ValueError)dataZsoft_resultZcomplex_datar   sZhard_resultZgreater_resultr   r   r   test_threshold   s     
      
   
             r%   c            
   	   C   s$  d} t ddd}tD ]}|tkr4t j||d}nt j|d |d}t|| d}t|| d}t|| d	}t|j|j t|j|j t|j|j t 	t 
|| k }tt || d
k t 	t 
|| k}t 
|| }	tt |	t 
|| k  tt |	t 
|| k qd S )Ng333333?r   d   dtype        ?r   r   Zgarotter   )r	   r   float_dtypesreal_dtypesasarrayr   r   r   r)   wherer
   r   all)
r   	data_realr)   r#   d_hardd_softZ	d_garotteltgtZgt_abs_garotter   r   r   test_nonnegative_garottei   s$    
r5   c               	   C   s  d} d|  }t ddd}tD ]p}|tkr<t j||d}nt j|d |d}|jjt jkrfd }}nd	 }}t	|| d
}t	|| d}t
|| |}	t|j|j t|j|j t|	j|j t t || k }
tt |	|
 dk t t ||k}tt || t |	| ||d t t t || kt ||k }t |	| }tt |t || k  tt |t || k qd S )Ng?   r&   r   r'   r(   r*   gư>g+=r   r   r   )r   atol)r	   r   r+   r,   r-   realr)   float32r   r   Zthreshold_firmr   r.   r
   r   r/   r   logical_and)r   Zthresh2r0   r)   r#   r   r7   r1   r2   Zd_firmr3   r4   mtZmt_abs_firmr   r   r   test_threshold_firm   s:    

 r<   )
__future__r   r   r   Znumpyr	   Znumpy.testingr   r   r   r   r   r9   Zfloat64Z	complex64Z
complex128r+   r,   r   r   r%   r5   r<   r   r   r   r   <module>   s   
N