U
    e»{jÁ  ã                   @   sŠ   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
 G dd„ dƒZG dd„ deƒZG dd	„ d	eƒZd
d„ Zdd„ Zdd„ Zdd„ ZdS )é    N)ÚNumpyRNGContext)ÚAsymmetricPercentileIntervalÚManualIntervalÚMinMaxIntervalÚPercentileIntervalÚZScaleIntervalc                   @   sZ   e Zd Ze ddd¡Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestIntervalç      4Àç      N@éd   c                 C   s:   t ddƒ}| | j¡\}}tj |d¡ tj |d¡ d S )Nç      $Àç      .@©r   Ú
get_limitsÚdataÚnpÚtestingÚassert_allclose©ÚselfÚintervalÚvminÚvmax© r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/visualization/tests/test_interval.pyÚtest_manual   s    
zTestInterval.test_manualc                 C   s€   t dd�}| | j¡\}}tj |d¡ tj |t | j¡¡ t dd�}| | j¡\}}tj |t | j¡¡ tj |d¡ d S )Nr   )r   r   )r   )r   r   r   r   r   r   ÚmaxÚminr   r   r   r   Útest_manual_defaults   s    

z!TestInterval.test_manual_defaultsc                 C   s<   t ddd�}| | j¡\}}tj |d¡ tj |d¡ d S )Nr   )r   r   r   r   r   r   r   Útest_manual_zero_limit$   s    z#TestInterval.test_manual_zero_limitc                 C   sL   t ƒ }t | j¡}tj|d< | | j¡\}}tj |d¡ tj |d¡ d S )Nr   iìÿÿÿé<   )r   r   Úcopyr   Únanr   r   r   )r   r   r   r   r   r   r   r   Útest_manual_defaults_with_nan,   s    
z*TestInterval.test_manual_defaults_with_nanc                 C   s6   t ƒ }| | j¡\}}tj |d¡ tj |d¡ d S )Nr	   r
   )r   r   r   r   r   r   r   r   r   r   Útest_minmax4   s    zTestInterval.test_minmaxc                 C   s8   t dƒ}| | j¡\}}tj |d¡ tj |d¡ d S )Ngš™™™™O@g…ëQ¸…Àgq=
×£pF@)r   r   r   r   r   r   r   r   r   r   Útest_percentile:   s    zTestInterval.test_percentilec                 C   s:   t ddƒ}| | j¡\}}tj |d¡ tj |d¡ d S )Nç      %@ç      Q@g333333'Àg333333B@)r   r   r   r   r   r   r   r   r   r   Útest_asymmetric_percentile@   s    
z'TestInterval.test_asymmetric_percentilec              	   C   sR   t dƒ�$ tdddd�}| | j¡\}}W 5 Q R X tj |d¡ tj |d¡ d S )Ni90  r&   r'   é   )Z	n_samplesggW!@¼,Àg""""""D@)r   r   r   r   r   r   r   r   r   r   r   Ú#test_asymmetric_percentile_nsamplesF   s
    
z0TestInterval.test_asymmetric_percentile_nsamplesN)Ú__name__Ú
__module__Ú__qualname__r   Úlinspacer   r   r   r   r#   r$   r%   r(   r*   r   r   r   r   r      s   r   c                   @   s   e Zd Ze ddd¡ ¡ ZdS )ÚTestIntervalListr	   r
   r   N)r+   r,   r-   r   r.   Útolistr   r   r   r   r   r/   N   s   r/   c                   @   s"   e Zd Ze ddd¡ dd¡ZdS )ÚTestInterval2Dr	   r
   r   é   N)r+   r,   r-   r   r.   Úreshaper   r   r   r   r   r1   S   s   r1   c                  C   sî   t j d¡ t j dd¡d d } tƒ }| | ¡\}}t jj|ddd� t jj|ddd� tt	d	ƒƒt j
g } tƒ }| | ¡\}}t jj|d
dd� t jj|ddd� tt	dƒƒ} tƒ }| | ¡\}}t jj|d
dd� t jj|ddd� d S )Né*   r   é   é
   g333333#Àgš™™™™™¹?)Zatolgffffff9@iè  r   iç  éc   )r   ÚrandomÚseedZrandnr   r   r   r   ÚlistÚranger"   ©r   r   r   r   r   r   r   Útest_zscaleX   s     r=   c                  C   sD   t  d¡ d¡} tdd�}| | ¡\}}|dks4t‚|dks@t‚dS )z 
    Regression test to ensure ZScaleInterval returns the minimum and
    maximum of the data if the number of data points is less than
    ``min_pixels``.
    é   )é   r?   r5   )Zmin_npixelsr   é   N)r   Zaranger3   r   r   ÚAssertionErrorr<   r   r   r   Útest_zscale_npointsm   s
    
rB   c               	   C   s®   t ƒ } | dddddgƒ}tj |dddd	d
g¡ tjdtd�}tjtdd�� | dddddg|d�}W 5 Q R X tjdt	d�}| dddddg|d� tj |dddd	d
g¡ d S )Nr2   r@   r>   r5   é   g        gš™™™™™Ù?g333333ã?gš™™™™™é?ç      ð?)Zdtypez6Can only do in-place scaling for floating-point arrays)Úmatch)Úout)
r   r   r   r   ÚzerosÚintÚpytestZraisesÚ	TypeErrorÚfloat)r   ÚvaluesrF   r   r   r   Útest_integers{   s     ÿ rM   c                  C   sL   d} t  | ¡}tƒ }| |¡}||ƒ}t j |d¡ t j |t  | ¡¡ dS )z<Test intervals with constant data (avoiding divide-by-zero).)r6   r6   )rD   rD   N)r   Zonesr   r   r   r   rG   )Úshaper   r   ZlimitsrL   r   r   r   Útest_constant_dataŽ   s    

rO   )Únumpyr   rI   Zastropy.utilsr   Zastropy.visualization.intervalr   r   r   r   r   r   r/   r1   r=   rB   rM   rO   r   r   r   r   Ú<module>   s   	>