o
    7ήc                     @   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   C/tmp/pip-target-vg8gfxp4/lib/python/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   s*  t ddd} g d}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 qd}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 g d}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 g 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	tjd
dgdd tt| ddt 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 tt	tjd
dgdd tt	tj| dd d S )N         )        r   r         ?      ?      ?       @   softg-q=)rtolr   y              ?y               @y                y      ?      ?y       @       @   y      ?       @)r   r      r   )
substituter      )r   r   r   g      @g      @g      @g      @hardgreaterless)r   r   r   r   r   r   r   foo)
r	   linspacer   pywt	thresholdarrayr   zerosr   
ValueError)datasoft_resultcomplex_datar   shard_resultgreater_resultr   r   r   test_threshold   s   




r1   c            
   	   C   s"  d} t ddd}tD ]}|tv rt 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   garotter   )r	   r%   float_dtypesreal_dtypesasarrayr&   r'   r   r5   wherer
   r   all)
r   	data_realr5   r+   d_hardd_soft	d_garotteltgtgt_abs_garotter   r   r   test_nonnegative_garottei   s&   rD   c               	   C   s  d} d|  }t ddd}tD ]}|tv rt j||d}n	t j|d |d}|jjt jkr2d }}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?   r2   r   r3   r4   r6   gư>g+=r!   r   r   )r   atol)r	   r%   r8   r9   r:   realr5   float32r&   r'   threshold_firmr   r;   r
   r   r<   r   logical_and)r   thresh2r=   r5   r+   r   rF   r>   r?   d_firmrA   rB   mtmt_abs_firmr   r   r   test_threshold_firm   s:   
rO   )
__future__r   r   r   numpyr	   numpy.testingr   r   r   r   r&   rH   float64	complex64
complex128r8   r9   r   r   r1   rD   rO   r   r   r   r   <module>   s    
N