B
    \                 @   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
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edkre  dS )    )divisionprint_functionabsolute_importN)assert_allcloserun_module_suiteassert_raisesassert_assert_equalc             C   s   | t |  S )N)npabs)x r   ;lib/python3.7/site-packages/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
   Zmaximumr   )r   threshr   r   r   _soft   s    r   c              C   sX  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	 }x,dD ]$}tt||d
t||dd q$W 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      )Z
substitute   g      @g      @g      @g      @hardZgreaterZlessZfoo)
r
   linspacer   pywt	thresholdZarrayr   Zzerosr   
ValueError)dataZsoft_resultZcomplex_datar   sZhard_resultZgreater_resultr   r   r   test_threshold   sp    
r"   c        
   	   C   s*  d} t ddd}xtD ]}|tkr8t 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W d S )Ng333333?r   d   )dtypey        ?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_garottej   s$    r0   c           	   C   s  d} d|  }t ddd}xztD ]p}|tkr@t j||d}nt j|d |d}|jjt jkrjd }}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"W d S )Ng?   r#   r   r$   )r%   y        ?gư>g+=r   r   r   )r   atol)r
   r   r&   r'   r(   realr%   float32r   r   Zthreshold_firmr	   r)   r   r   r*   r   Zlogical_and)r   Zthresh2r+   r%   r    r   r2   r,   r-   Zd_firmr.   r/   ZmtZmt_abs_firmr   r   r   test_threshold_firm   s4    

r5   __main__)Z
__future__r   r   r   Znumpyr
   Znumpy.testingr   r   r   r   r	   r   r4   Zfloat64Z	complex64Z
complex128r&   r'   r   r   r"   r0   r5   __name__r   r   r   r   <module>   s   
N'