U
    f»{jÐ  ã                   @   sx  d dl mZ d dlZd dlmZ d dlZd dlm	Z
 d dlmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ e e  e!¡ddd	d
d¡Z"e e"d¡Z#e e"d¡Z$e e"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d „ Z.d!d"„ Z/ej0 1d#d$¡ej0 1d%d&¡ej0 1d'd(¡ej0 1d)d&¡ej0 1d*d(¡d+d,„ ƒƒƒƒƒZ2dS )-é    N)Úassert_allclose)	Úcompare_fiffÚ_fake_clickÚ_compute_scalingsÚ_validate_if_list_of_axesÚ_get_color_listÚ_setup_vmin_vmaxÚcenters_to_edgesÚ_make_event_color_dictÚconcatenate_images)ÚClickableImageÚadd_background_imageÚmne_analyze_colormap)Úread_raw_fif)Úread_events)ÚEpochsz..ÚioZtestsÚdataztest_raw.fifztest-cov.fifztest_raw-eve.fifc               	   C   s6   d} t jt| d�� tddgdddd� W 5 Q R X dS )z*Test that _setup_vmin_vmax warns properly.z/\(min=0.0, max=1\) range.*minimum of data is -1©Úmatchéÿÿÿÿr   NT)r   ZvminZvmaxZnorm)ÚpytestZwarnsÚUserWarningr   )Zexpected_msg© r   úW/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/viz/tests/test_utils.pyÚtest_setup_vmin_vmax_warns   s    r   c                  C   s.   t ƒ } t| tƒst‚t dd�}d|ks*t‚dS )z&Test getting a colormap from rcParams.T)Úannotationsz#ff0000N)r   Ú
isinstanceÚlistÚAssertionError)ÚcolorsZcolors_no_redr   r   r   Útest_get_color_list"   s    
r!   c                   C   s<   t  ttdg¡ t  ttdddg¡ t  ttdddg¡ dS )zTest mne_analyze_colormap.r   r   é   é   N)r   ÚraisesÚ
ValueErrorr   r   r   r   r   Útest_mne_analyze_colormap*   s    r&   c                   C   s   t ttddd� t d¡ dS )zTest compare_fiff.r   F)Z
read_limitÚshowÚallN)r   Ú	raw_fnameÚ	cov_fnameÚpltÚcloser   r   r   r   Útest_compare_fiff1   s    r-   c                  C   sÚ   t j d¡ dd¡} t| ƒ}dddg}|D ]}t|j|j|dd� q*tt  	|¡t  	|j
¡ƒ t|ƒt|j
ƒksrt‚| ¡ }|jjd t|ƒks’t‚t|jd |jd	  |d
 d t|d d ƒ ƒ | ¡  t d¡ dS )zTest the ClickableImage class.r   éd   )é   é   )é.   é0   )é
   é   r   )Zxform)r"   r   )r#   r   r"   r#   r(   N)ÚnpÚrandomÚRandomStateÚrandnr   r   ÚfigÚaxr   ÚarrayZcoordsÚlenr   Z	to_layoutÚposÚshapeÚfloatZplot_clicksr+   r,   )ÚimZclkZclicksZclickÚltr   r   r   Útest_clickable_image7   s    
ÿrB   c            
      C   s"  t j d¡} tdƒD ]Ú}t dd¡\}}|  dd¡\}}|  dd¡}|d  ||¡ |d  ||¡ |D ]}| d¡ qh|dkr¬t	||ƒ} dS |D ]}| 
¡ dks”t‚q”n8t	||dd�}	|	 
¡ dksÊt‚|D ]}| 
¡ dksÎt‚qÎt d¡ qt dd¡\}}t	|dƒdk�st‚t d¡ dS )	z)Test adding background image to a figure.r   r#   r"   r3   NÚauto)Z
set_ratiosr(   )r5   r6   r7   Úranger+   Úsubplotsr8   ZscatterZ
set_aspectr   Z
get_aspectr   r,   )
ÚrngÚiiÚfZaxsÚxÚyr@   r:   Zax_imZ	ax_im_aspr   r   r   Útest_add_background_imageM   s.    
 rK   c               
   C   sÚ   t tƒ} t| ttƒƒ}tj dd¡}| |fD ]j}d}tdd|fdgƒ}t	j
tdd�� |jd	d
� W 5 Q R X t||ƒ}||d ks†t‚|d dks,t‚q,t	j
tdd�� t||ƒ W 5 Q R X |d  ¡ }|jddd� dS )z1Test auto-scaling of channels for quick plotting.r3   r.   g    _ B)ÚeegrC   Zgrad)ZstimrC   z.*scalings.*'foo'.*r   Úfoo)ZscalingsrL   rC   z Must supply either Raw or Epochsr   TF)rL   ZmegN)r   r)   r   r   Úev_fnamer5   r6   r8   Údictr   r$   r%   Zplotr   r   Z	load_dataZ
pick_types)ÚrawZepochsZ	rand_dataÚinstZ
scale_gradZscalings_defZscalings_newr   r   r   Útest_auto_scalen   s"    
ÿ
rR   c                  C   sÖ   t  dd¡\} }t tt|¡ | ¡ }| ¡  ¡ }t|ƒ t|dƒ t tt|d¡ t tt|d¡ t ttd¡ t ttdgd ¡ t tt|d ¡ t tt|d¡ d|d< t tt|¡ t|dƒ t  	d¡ d	S )
zTest validation of axes.r#   é   é   é   Úerrorr   é   r(   N)
r+   rE   r   r$   r%   r   ZravelÚtolistÚ	TypeErrorr,   )r9   r:   Zax_flatr   r   r   Útest_validate_if_list_of_axesˆ   s     

rZ   c                   C   sl   t tdddgƒd ddddgƒ t tdgƒd dd	gƒ t tdgƒd d
dgƒ t tdgƒd ddgƒ dS )zTest centers_to_edges.r   r"   r#   g      à¿g      à?g      ø?g      @gü©ñÒMbP¿gü©ñÒMbP?g+‡ÙÎ÷ï?gj¼t“ð?iè  g     8�@g     H�@N)r   r	   r   r   r   r   Útest_centers_to_edgesœ   s     r[   c               	   C   sÒ   t dƒ} t dƒ}t dƒ}| |ks$t‚| |ks0t‚tddd�}t ddd	œ|d
�} t tddd�|d
�}| |ksnt‚t dddœ|d
�} t ddd	œ|d
�}| d |d ks¦t‚tjtdd�� t dddœƒ}W 5 Q R X dS )zTest handling of event_color.Úk)r   r   r   z#000r"   r#   )rM   ÚbarÚrÚb)r"   r#   )Úevent_id)r"   r   z must be strictly positive, or -1r   )éþÿÿÿr   N)r
   r   rO   r   r$   ÚKeyError)ÚoneÚtwoÚthreer`   Ú_r   r   r   Útest_event_color_dict¤   s    rg   Úaxis)r   r"   Úb_h)r#   rS   Úb_w)rU   rT   Úa_hÚa_wc           	      C   st   t  || df¡}t  ||df¡}t||g|d�}|dkrN|| t| |ƒdf}nt||ƒ| | df}|j|kspt‚dS )z,Test that concat with arbitrary sizes works.rU   )rh   r   N)r5   Zzerosr   Úmaxr>   r   )	rl   rk   rj   ri   rh   Úar_   ZimgZ
want_shaper   r   r   Útest_concatenate_images¹   s    ro   )3Úos.pathÚpathÚopÚnumpyr5   Znumpy.testingr   r   Zmatplotlib.pyplotZpyplotr+   Zmne.viz.utilsr   r   r   r   r   r   r	   r
   r   Zmne.vizr   r   r   Zmne.ior   Z	mne.eventr   Z
mne.epochsr   ÚjoinÚdirnameÚ__file__Úbase_dirr)   r*   rN   r   r!   r&   r-   rB   rK   rR   rZ   r[   rg   ÚmarkZparametrizero   r   r   r   r   Ú<module>   s:   ,!