o
    e.                     @   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   LD:\Projects\ConvertPro\env\Lib\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	   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      @hardZgreaterless)r   r   r   r   r   r   r   Zfoo)
r	   linspacer   pywt	thresholdarrayr   Z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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   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&   r:   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?   r+   r   r,   r-   r/   gư>g+=r!   r   r   )r   atol)r	   r#   r0   r1   r2   realr.   float32r$   r%   Zthreshold_firmr   r3   r
   r   r4   r   logical_and)r   Zthresh2r5   r.   r(   r   r<   r6   r7   Zd_firmr8   r9   mtZmt_abs_firmr   r   r   test_threshold_firm   s:   
rA   )
__future__r   r   r   numpyr	   Znumpy.testingr   r   r   r   r$   r>   Zfloat64Z	complex64Z
complex128r0   r1   r   r   r*   r:   rA   r   r   r   r   <module>   s    
N