U
    f»{jÙ—  ã                   @   s  d dl Z d dlZd dlmZ d dlZd dlmZ d dlZ	d dl
Z
d dl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 d dlmZmZmZmZ d d	lmZmZ d d
lm Z  dTd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+d"d#„ Z,d$d%„ Z-d&d'„ Z.d(d)„ Z/d*d+„ Z0e
j1 2d,d-¡d.d/„ ƒZ3d0d1„ Z4d2d3„ Z5ej6d4d5„ ƒZ7ej6d6d7„ ƒZ8d8d9„ Z9e
j1j:d:d;„ ƒZ;e
j1 2d<g d gd=gd d=gf¡d>d?„ ƒZ<e
j1 2d@dA¡dBdC„ ƒZ=dDdE„ Z>dFdG„ Z?e
j1 2dHdI¡dJdK„ ƒZ@dLdM„ ZAe
j1 2dNdOdPdQg¡dRdS„ ƒZBdS )Ué    N)Údeepcopy)Úassert_allclose)ÚAnnotationsÚcreate_infoÚ
pick_types)Ú_sync_onset)Útesting)ÚRawArray)Ú_dt_to_stampÚ_record_warningsÚ
get_configÚ
set_config)Úplot_rawÚplot_sensors)Ú_fake_clickFc                 C   sþ  |j dk}t| jƒ}| ¡  |rPt | jd ddg| jd ddgg¡}t|ƒ}nd}d}| j|d�}|rx| ¡ dksxt	‚| 
d	¡ |jj}|rÂ| ¡ d
ksžt	‚d}t|jjjƒ|| | ksÎt	‚n| ¡ sÎt	‚|�r2dgtdƒ dg D ]}	|j
|	|d� qèdD ].}
|jjjj|
 j}|j|||jjdd� �q n
| d¡ |jddgdddd� |�rFt|jjjƒ|d | | k�s|t	‚| 
d¡ |jj�s”t	‚tdddd�}|jd1|Ž |jd2|Ž |jjdk	�sÌt	‚|jd3|Ž |jjdk�sêt	‚|jd4|Ž |jd5|Ž |jjdk	�st	‚| 
d¡ |jd6|Ž |jjdk�s<t	‚| 
d¡ t| jjƒ|d k�s`t	‚t| jjƒ|d k�szt	‚t| jjƒ|d k�s”t	‚| jj| dk�sªt	‚| jj| }t| ddd �}|�rÎd!nd"}t|||d#� t| jj| d$|d#� |jddddd� |jdd%gdddd� | jj| |k�s4t	‚t| jj| d&|d#� |jdd'gdddd� t| jj| |d( |d#� t| jj| d)|d#� t| jjƒ|d k�sªt	‚t| jjƒ|d k�sÄt	‚t| jjƒ|d k�sÞt	‚| jj| dk�sôt	‚|�rtt|jd jƒ|d | | k�s t	‚| 
d*¡ t|jd jƒ|k�sDt	‚| 
d+¡ t|jd jƒ|d | | k�stt	‚|jdd,gdddd� t| jjƒ|d k�s¤t	‚t| jjƒ|d k�s¾t	‚t| jjƒ|d k�sØt	‚t| jj| |d( |d#� t| jj| d-|d#� |�r4t|jd jƒ|d | | k�s4t	‚|jd.ddd/d� | 
d	¡ | 
d	¡ t| jjƒ|k�spt	‚|�rú|j
d0|jjd� t|jd jƒ|| | k�sªt	‚| 
d*¡ t|jd jƒ|k�sÎt	‚| 
d+¡ t|jd jƒ|| | k�sút	‚dS )7zTest interactive annotations.Ú
matplotlibéd   r   é   i,  é   N©ÚeventsÚaé   Z	backspacez test;Zenter©Úfig)éÿÿÿÿr   Údata©r   ÚaxÚxformzBAD test)ç      ð?r    )ç      @r    Údrag)Ú
add_pointsr   ÚbuttonÚkindÚpÚmotion)r   r$   r%   ©gffffff@r    ©gš™™™™™@r    ©g      @r    ©gÍÌÌÌÌÌ@r    r    T)Zinverseg»½×Ùß|Û=g{®Gáz”?©Úatolg      @)ç      @r    ç      ø?)ç      à?r    r0   ç       @zshift+rightz
shift+left)r1   r    r!   )r/   r    ZpressÚescape)r(   )r)   )r*   )r(   )r)   )r+   ) ÚnameÚlenÚannotationsÚ
_close_allÚnpÚarrayÚ
first_sampÚplotÚ_get_n_figsÚAssertionErrorÚ_fake_keypressÚmneÚfig_annotationÚax_mainÚtextsÚ	isVisibleÚlistÚradio_axÚbuttonsÚcirclesÚcenterr   Z_add_descriptionZdraggable_annotationsÚdictZannotation_hover_lineÚonsetÚdurationÚdescriptionr   r   Úaxes)ÚrawÚbrowse_backendr   ÚismplZn_annsZn_eventsr   Zann_figZn_scaleÚkeyÚixÚxyZhover_kwargsrI   Z
want_onsetr-   © rS   úU/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/viz/tests/test_raw.pyÚ_annotation_helper   sÒ    

ÿ

 ÿ
ÿ$



ÿ ÿÿ&

&
  ÿ&

"

rU   c                 C   sJ   |j dkr6| jjj}dd„ | tjj¡D ƒd d d… S dd„ | jD ƒS d S )Nr   c                 S   s   g | ]}|  ¡ ‘qS rS   )Zget_visible)Ú.0ÚlinerS   rS   rT   Ú
<listcomp>�   s     z _proj_status.<locals>.<listcomp>r   c                 S   s   g | ]}|  ¡ ‘qS rS   )Z	isChecked©rV   ÚchkbxrS   rS   rT   rX       s     )	r3   r>   Úproj_checkboxesr   Zfindobjr   ÚlinesZLine2DÚ
checkboxes)Ússp_figrN   r   rS   rS   rT   Ú_proj_statusš   s    

ÿÿr_   c                 C   s2   |j dkrdd„ | jjjD ƒS dd„ | jD ƒS d S )Nr   c                 S   s   g | ]}|  ¡ ‘qS rS   )Zget_text)rV   ZlbrS   rS   rT   rX   ¥   s     z_proj_label.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS rS   )ÚtextrY   rS   rS   rT   rX   §   s     )r3   r>   r[   Úlabelsr]   )r^   rN   rS   rS   rT   Ú_proj_label£   s    
rb   c                 C   s~   |j j}|jdkrHt |j jj|   ¡ ¡d }|j|||j jj	dd� n2| 
|j j|   | ¡ |j|   t|j j|  ƒ¡ d S )Nr   ç{®Gáz„?r   r   )r>   Úfig_projr3   r7   r8   r[   ra   Zget_positionr   r   Z_proj_changedZprojs_onr]   Z
setCheckedÚbool)Úidxr   rN   r^   ÚposrS   rS   rT   Ú_proj_clickª   s    
ÿÿÿrh   c                 C   sN   | j j}|jdkrB| jd||j jjd� | jd||j jjdd� n| ¡  d S )Nr   ©r0   r0   )r   r   Úrelease)r   r   r%   )r>   rd   r3   r   Zproj_allr   Z
toggle_all)r   rN   r^   rS   rS   rT   Ú_proj_click_allº   s    
ÿrk   c                 C   sf   |  ¡ }t| jjƒ}|  |¡ t| jjƒ|d ks6t‚|  ¡ |d ksJt‚t| j|ƒ}|d k	sbt‚|S )Nr   )r;   r4   r>   Ú
child_figsr=   r<   Úgetattr)r   ÚattrrN   rP   Ún_figsÚ
n_childrenÚ	child_figrS   rS   rT   Ú_spawn_child_figÅ   s    
rr   c                 C   sp   |  ¡ }t| jjƒ}| j||d� |  |¡ t| jjƒ|d ksDt‚|  ¡ |d ksXt‚t| j|ƒd kslt‚d S )Nr   r   )r;   r4   r>   rl   r=   Ú_close_eventr<   rm   )r   rq   rn   rN   rP   Ú
key_targetro   rp   rS   rS   rT   Ú_destroy_child_figÔ   s    
ru   c                 C   s`   t | j|ƒd kst‚t| |||ƒ}t| ||||| d� t| |||ƒ}t| ||||jj|d� d S )N)rt   )rP   rt   )rm   r>   r<   rr   ru   Ú	close_key)r   rP   rn   rN   rq   rS   rS   rT   Ú_child_fig_helperá   s    ÿ
þrw   c                 C   s  | j dk}d}t d¡| }t dtj d | ¡}|t dddgg¡j }td	|d
ƒ}t||ƒ}| 	¡ }| 
¡ }t|ƒd	ks‚t‚d}	||	ks’t‚|r®t|jjjƒdksÂt‚nt|jjƒd	ksÂt‚t|jj|jj ¡ ƒD ]6\}}
| ¡ }| ¡ | ¡ g}|
 ¡ }t||dd� qØdS )zTest scale bar for raw.r   ç     @�@i'  r   ç      $@gê-�™—q=g•dyáýÅ=gñhãˆµøô>r   )ÚmagZgradÚeeg)z800.0 fT/cmz	2000.0 fTu   40.0 ÂµVé   g-Cëâ6?r,   N)r3   r7   ÚarangeÚsinÚpir8   ÚTr   r	   r:   Z_get_scale_bar_textsr4   r<   r>   r@   r\   Z	scalebarsÚzipÚtracesÚvaluesÚ	get_ydataÚminÚmaxr   )Úbrowser_backendrO   ÚsfreqÚtr   ÚinforM   r   rA   ZwantsÚbarÚyZy_limsZbar_limsrS   rS   rT   Útest_scale_barï   s(    

r�   c              	   C   sÖ  |j dk}| j ¡ � d| jd< W 5 Q R X | ¡  | ¡ dksBt‚| jddd�}| ¡ dks`t‚|jj}|d	k	stt‚|jj	}t
|jjƒt
|d
 ƒks˜t‚|jd|d� t
|jjƒt
|d ƒksÂt‚|jd|d� t
|jjƒt
|d ƒksìt‚|jd|d� t
|jjƒt
|d ƒk�st‚|jd|d� t
t t| ¡ ƒ¡ƒ}|�rZt
|jjƒ|k�stt‚nt
|jjƒ|d k�stt‚|jj�s‚t‚|�r²|jjjjd j}|j|||jjdd� n| t|j ¡ ƒd ¡ t
|jjƒt
|d
 ƒk�sèt‚|jj�röt‚|�rV|jjjj}|jjjjd j}|j|||jjdd� |j}	|jj}
|jjjj|k�s¤t‚nN|jj}|jt|j ¡ ƒd  }|jd|d� |jj}	|j}
||jjk�s¤t‚t
|jjƒt
|d
 ƒk�sÂt‚|	j d	d	…df  !¡ dk�sât‚|j"ddd� |	j d	d	…df  !¡ dk�st‚|j"ddd� |	j d	d	…df  !¡ dk�s>t‚dddg}|�rt| #¡  |jddddg||
ddd� n||	_$| #¡  t%|ƒt%|jj&|jj' ƒk�s¤t‚|j|jj(|d� | )|¡ | ¡ dk�sÒt‚d	S ) z"Test selection mode of plot_raw().r   ry   Úlowpassr   Ú	selectionF)Úgroup_byZprojr   NzLeft-temporalÚdownr   zLeft-frontalZMiscÚbr   r   r   r   ri   ©Zch_indexr$   úMEG 0121úMEG 0122úMEG 0123©r   r   ©çÍÌÌÌÌÌä?r   ©r™   çffffffæ?©r   r›   r   r"   ©r#   r   r   r   r%   )*r3   rŠ   Ú_unlockr6   r;   r<   r:   r>   Úfig_selectionZch_selectionsr4   r‚   r=   r7   ZconcatenaterC   rƒ   Ú	butterflyrD   rE   rF   rG   r   Z_chkbx_changedZchkbxsÚkeysZvalue_selectedÚlassoÚ	sensor_axZold_selectionZchannel_figZchannel_widgetÚecÚsumÚ_click_ch_nameZ_set_custom_selectionr�   ÚsortedÚch_namesÚpicksrv   rs   )rM   r‡   rO   r   Úsel_figZsel_dictZ	sel_picksrR   Zbefore_stater¢   r£   rZ   ZwantrS   rS   rT   Útest_plot_raw_selection
  s~    
   
   ÿ"
r«   c              	   C   sÀ  | j  ¡ � d| j d< W 5 Q R X | j d dd… }|  ddg¡ |  ¡  |  |¡ |  ¡ }| d¡ | ¡ dkstt‚|j	j
}t||ƒd	d	d	gks”t‚t||ƒd
  d¡s¬t‚td
||ƒ t||ƒd	d	d	gksÐt‚td||ƒ t||ƒd	dd	gksôt‚td||ƒ t||ƒd	d	d	gk�st‚t||ƒ t||ƒd	ddgk�s>t‚| d¡ t||ƒd	d	d	gk�sbt‚| d¡ t||ƒd	ddgk�s†t‚t||ƒ |j	jdk	�s¢t‚t||ƒd	d	d	gk�s¼t‚dS )z$Test SSP projector UI of plot_raw().ry   rŽ   ÚprojséþÿÿÿNr   Újr   Tr   z(already applied)r   FÚJ)rŠ   rž   Zdel_projZ
apply_projZadd_projr:   r=   r;   r<   r>   rd   r_   rb   Úendswithrh   rk   Z	projector)rM   r‡   r¬   r   r^   rS   rS   rT   Útest_plot_raw_ssp_interactiona  sB    

ÿÿÿ



r±   c              	   C   sx  |j dk}| j ¡ � d| jd< W 5 Q R X | ¡ dks:t‚|  ¡ }| ¡ dksRt‚t|dd|ƒ t|dd	|ƒ |r€t|d
d|ƒ | ¡  |jddd� t	|j
jƒdksªt‚| ¡ dksºt‚|jd|j
jd d� |ræ| |j
jd ¡ t	|j
jƒdksút‚| ¡ dk�st‚|  ¡  d¡}|j
j ¡  |¡}| ¡  |j|dd� t	|j
jƒdk�sXt‚| ¡ dk�sjt‚| d¡ dS )z+Test spawning and closing of child figures.r   ry   rŽ   r   r   ú?Zfig_helpr®   rd   r   r?   r   r   r“   r2   r   Ziasr0   N)r3   rŠ   rž   r;   r<   r:   rw   Ú_redrawr¦   r4   r>   rl   r=   rs   Zget_channel_typesÚindexZch_orderÚtolistZ_resize_by_factor)rM   r‡   rO   r   rQ   Ztrace_ixrS   rS   rT   Útest_plot_raw_child_figuresˆ  s4    
r¶   c                 C   st   |j dkrdS | ¡ dkst‚|  ¡ }t|d|dƒ |j|jjd� | ¡  t	|jj
ƒdks`t‚| ¡ dkspt‚dS )z8Test that annotation window is not orphaned (GH #10454).r   Nr   r?   r   )rP   )r3   r;   r<   r:   rr   r=   r>   rv   rs   r4   rl   )rM   r‡   r   rS   rS   rT   Útest_orphaned_annot_fig«  s    
r·   c                    sB   |j dkrdd„ ˆ jj_n$‡ fdd„}‡ fdd„}|ˆ _|ˆ _d S )Nr   c                   S   s   d S )NrS   rS   rS   rS   rT   Ú<lambda>º  ó    z"_monkeypatch_fig.<locals>.<lambda>c                      s   dd„ ˆ _ d S )Nc                   S   s   dS )NTrS   rS   rS   rS   rT   r¸   ¾  r¹   z1_monkeypatch_fig.<locals>._full.<locals>.<lambda>©ZisFullScreenrS   r   rS   rT   Ú_full½  s    z_monkeypatch_fig.<locals>._fullc                      s   dd„ ˆ _ d S )Nc                   S   s   dS )NFrS   rS   rS   rS   rT   r¸   Á  r¹   z1_monkeypatch_fig.<locals>._norm.<locals>.<lambda>rº   rS   r   rS   rT   Ú_normÀ  s    z_monkeypatch_fig.<locals>._norm)r3   ÚcanvasÚmanagerZfull_screen_toggleZshowFullScreenZ
showNormal)r   r‡   r»   r¼   rS   r   rT   Ú_monkeypatch_fig¸  s    
r¿   c              	   C   sˆ   | j  ¡ � d| j d< W 5 Q R X |  ¡ }d}t||ƒ d| d D ]}| |¡ qBt| dd�}t||ƒ d| d D ]}| |¡ qtdS )	z*Test keypress interactivity of plot_raw().ry   rŽ   )Zpagedownr‘   Úupr‘   ÚrightÚleftú-ú+ú=ÚdrÆ   ZpageupÚhomeÚendÚzrÉ   ÚsrÊ   Zf11r‰   r’   r   )r2   r�   ©r�   N)rŠ   rž   r:   r¿   r=   r   )rM   r‡   Zmonkeypatchr   r¡   rP   rS   rS   rT   Útest_plot_raw_keypressesÇ  s    

rÌ   c              	   C   sò  |j dk}| j ¡ � d| jd< W 5 Q R X | j|dddddgdd	d
�}t|dƒsTt‚|rjt|jƒdksjt‚|jj	d  
¡ d }|jj	d  ¡ d }|jj}|jj}| d¡d }	|	|jjd ksÄt‚|j||fdd� |	|jjd ksêt‚|j||fdd� |	|jjd k�st‚|jddd� |	|jjd k�s6t‚| d¡ |jjdk�sRt‚|jddd� |jjdk�srt‚|jd|d� |jj}
|jd|d� t|
dƒt|jjdƒk�s´t‚| d¡}|| jd | jd | jd gk�sät‚|jd|d� | d¡}|| jd | jd | jd gk�s"t‚dD ]V}|�r4dnd}|jd|f|d� | d¡}|| jd | jd | jd gk�s&t‚�q&|jjd  ¡ }| d¡ |jddd� |jjd |k�s¼t‚| d¡ t| dd�}tjtdd �� | jd!d"� W 5 Q R X tjtd#d �� | jdd$� W 5 Q R X | jdd%� | ¡  td&d&| j| jd'   gd&d&gd(d(g| jd) ƒ}tjt d*d �� |  !|¡ W 5 Q R X tjt"d+d �� | jdd,id-� W 5 Q R X tjtd.d �� | jd!d,id-� W 5 Q R X t| |d,dd/œd0� d1S )2zTest plotting of raw data.r   ry   rŽ   r   r|   é   r   r   Úoriginal)r   ÚorderZ
n_channelsr�   r>   r   rŒ   Úbadsr   ©r   r“   )r0   g\�Âõ(\ï?T)r$   Fri   ©r   é   )r0   gš™™™™™©?)r   r   r0   r›   r’   )Zshow_scrollbarszorder should be array-like; got©ÚmatchÚfoo©rÏ   z#title must be None or a string, got)Útitle)Zshow_optionsé
   rˆ   ÚtestÚ	meas_dateúoutside data rangez must be strictly positive, or -1Úr)Úevent_colorz#event_color key must be an int, got)r   iæ  )r   rÞ   N)#r3   rŠ   rž   r:   Úhasattrr<   r4   rL   r>   r‚   Ú	get_xdatar„   Z
ax_hscrollÚ
ax_vscrollÚ_get_ticklabelsr   r¦   Zvline_visibleÚt_startÚroundr¨   Úcopyr=   r   ÚpytestÚraisesÚ
ValueErrorÚ	TypeErrorr6   r   r9   ÚwarnsÚRuntimeWarningÚset_annotationsÚKeyError)rM   r   r‡   rO   r   ÚxrŒ   ZhscrollZvscrollÚlabelrã   ra   Ú_ZyclickrÐ   ÚannotrS   rS   rT   Útest_plot_raw_tracesÝ  s~    
ÿ

&
&
*

  ÿrò   r�   )Úpositionr�   c           	   	   C   s>  | j  ¡ � d| j d< W 5 Q R X |dkrBt t| jƒ¡ddd… n
dddd	g}| j||d
�}|jjd  	¡ d }|jjd  
¡ d }| d¡ |j||fdd� |jd|jjd� |jdk�r|jj}|jj}|jddg||dd� |jddddg||ddd� | d¡ | d¡ | d¡ | ddd¡ | ddd¡ dS )z#Test group-by plotting of raw data.ry   rŽ   ró   Néýÿÿÿr   r   é   rÓ   ©r�   rÏ   r   rÙ   r‘   r   rÑ   ri   rÒ   r   g333333Û¿g§©+ÀóâÉ?r   )ç      à¿ç        )r0   rø   )r÷   r0   r"   r�   rÀ   r0   r   )rŠ   rž   r7   r}   r4   r¨   r:   r>   r‚   rà   r„   r=   r   rá   r3   rŸ   r£   Z_fake_scroll)	rM   r‡   r�   rÏ   r   rî   rŒ   rª   Ztopo_axrS   rS   rT   Útest_plot_raw_groupby0  s>    "
ÿ
ÿþ   ý


rù   c              	   C   s¬   |   t| jd ƒd ¡ td| j| jd   gdgdgƒ}tjtdd�� |  |¡ W 5 Q R X t	ƒ � | j
d	t d
¡d� W 5 Q R X |  
¡ }dD ]}|j||jjd� q�dS )z2Test effect of mismatched meas_date in raw.plot().rÛ   r   r   rˆ   rÍ   ÚbadrÜ   rÔ   ró   é   rö   )r‘   rÀ   r2   r   N)Zset_meas_dater
   rŠ   r   r9   ræ   rê   rë   rì   r   r:   r7   r}   r=   r>   rŸ   )rM   r‡   rñ   r   rP   rS   rS   rT   Útest_plot_raw_meas_dateO  s    "rü   c              	   C   s2   t j| jdd…< tƒ � | jdd� W 5 Q R X dS )zTest plotting all NaNs.NÚauto©Zscalings)r7   ÚnanÚ_datar   r:   )rM   r‡   rS   rS   rT   Útest_plot_raw_nan\  s    r  c                 C   s0   |   dd¡ | j|d�}| d¡ | d¡ dS )z Test plotting whitened raw data.r   r   )Z	noise_covÚwN)Úcropr:   r=   )Úraw_origZnoise_cov_ior‡   r   rS   rS   rT   Útest_plot_raw_whitee  s    
r  c                 C   s*   |   dd¡ |  ¡  tjt| jdd� dS )zTest plotting ref_meg.r   r   r�   rË   N)r  r:   ræ   rç   rè   )Zraw_ctfr‡   rS   rS   rT   Útest_plot_ref_mego  s    r  c                 C   sZ   t j d¡ dd¡}t|tdddƒƒ}| ¡  t|tdddƒƒ}|jdgd� |  ¡  dS )	z-Test plotting of data with misc auto scaling.r   r   iè  rx   ÚmiscZdipoler×   N)r7   ÚrandomZRandomStateZrandnr	   r   r:   r6   )r‡   r   rM   rS   rS   rT   Útest_plot_misc_autow  s    r	  c              	   C   s°  |j dk}| j ¡ � d| jd< W 5 Q R X t| |ƒ t| |dd� tdgdgd| jd	 ƒ}tjtd
d�� |  |¡ W 5 Q R X t| |ƒ |  	¡ }|r¾t
|jjƒdks¨t‚t
|jjƒdksÒt‚nt
|jjƒdksÒt‚| d¡ |�rX|jj}| d¡ t
|jjƒdk�s
t‚t
|jjƒdk�s t‚| d¡ t
|jjƒdk�s@t‚t
|jjƒdk�s¬t‚nTd|jjd< | ¡  |jjd  ¡ �r‚t‚d|jjd< | ¡  |jjd  ¡ �s¬t‚dS )z$Test annotation mode of the plotter.r   ry   rŽ   Tr   é*   r   rÚ   rÛ   zexpanding outsiderÔ   r   r   FN)r3   rŠ   rž   rU   r   ræ   rê   rë   rì   r:   r4   r>   r5   r<   Zannotation_textsZregionsr=   Úshow_hide_annotation_checkboxesÚ
set_activeÚvisible_annotationsÚ_update_regions_visiblerB   )rM   r‡   rO   rñ   r   r]   rS   rS   rT   Útest_plot_annotations�  s:    





r  Ú
hide_whichr   c           
      C   sÄ   ddg}t ddgddg|d�}|  |¡ t| jƒdks:t‚|  ¡ }| d¡ |jdkrt|jj	}|D ]}| 
|¡ qbn&|D ]}|| }	d	|jj|	< qx| ¡  |jd
ddd� t| jƒt|ƒksÀt‚dS )z=Test that right-click doesn't remove hidden annotation spans.rÖ   r‹   r   r   r   )rI   rJ   rK   r   r   F)r.   çš™™™™™¹?r   )r   r$   N)r   rì   r4   r5   r<   r:   r=   r3   r>   r  r  r  r  r   )
rM   r  r‡   ZdescriptionsÚannr   r]   ÚwhichZhide_idxZhide_keyrS   rS   rT   Útest_remove_annotations§  s$    ÿ


r  Ú	filtorder)r   r   c              	   C   s<  ddi}t jtdd��& |jf |jd d | dœ|—Ž W 5 Q R X t jtdd�� |jf d	| d
œ|—Ž W 5 Q R X t jtdd�� |jf dddœ|—Ž W 5 Q R X t jtdd�� |jf ddi|—Ž W 5 Q R X |jf dd| dœ|—Ž |jf dd| dœ|—Ž |jf dd| dœ|—Ž tt d¡tdddƒƒjdd� dS )zTest filtering of raw plots.Z
precomputeFzlowpass.*NyquistrÔ   rˆ   r1   )rŽ   r  zhighpass must be > 0r   )Úhighpassr  zFilter order must ber   r   z Invalid value for the 'clipping'ÚclippingrÖ   é(   Útransparent)rŽ   r  r  Úclamp)r  r  r  T)rŽ   r    r  )r   r   ç      4@ZstimrÍ   )rŽ   N)	ræ   rç   rè   r:   rŠ   r	   r7   Úzerosr   )r  rM   r‡   Z	pg_kwargsrS   rS   rT   Útest_plot_raw_filtered¾  s"    ÿ  ÿr  c              
   C   sð  |   ¡ }| jdd�}|j ¡  t| jddd�dd… }| jd|dddd	� | jd
dddddd� t d¡ t ¡ }| jd||dd� t d¡ t 	d¡\}}| jd|dd� t d¡ t ¡ }t
jtdd�� | j|dd� W 5 Q R X t d¡ t ¡ }| j|d� t d¡ tt| jd ƒƒD ]}t d¡| jd | d< �q t
jtdd�� | jddd� W 5 Q R X d| ddd…f< t dd¡D �]\}	}
t
jtd d�� | jd|	|
d!�}W 5 Q R X |jd  ¡ }|jd  ¡ }| d"¡}|
d#k�rìd$nd%}|d&k�st|ƒ‚||k�st|ƒ‚|	�r*|�s8t|ƒ‚n|�r8t|ƒ‚|jd'  ¡ }|jd'  ¡ }|
d#k�rbd(nd)}|d*k�sxt|ƒ‚||k�s„t|ƒ‚�q„|} |  td'dgd+d+gd,d,gƒ¡ | jdd-� | jdd-� t d¡ t
jtd.d�� | jd/d0� W 5 Q R X t
jtd1d�� | jd2d3� W 5 Q R X | dd'¡} t| jdd4�}| j|dd5� | j|dd5� t d¡ | jd6d7d8d9d:œd;d<� |  ¡ }t|jƒd=k�s’t‚t d¡ d>tj  !dd?¡ }t"d@dAgd?ƒ}t#||ƒ} t| jddB�}| j|ddC� t d¡ dS )DzTest plotting of raw psds.F)Úaveragerz   )Úmegr{   Nrõ   ÚrangeT)Útmaxr©   Z	area_moder  Úspatial_colorsr  Úyellowgš™™™™™Ù?r  )r!  ÚcolorÚdBZ
line_alphaZ	n_overlapr  Úall)r!  r©   r   r  r   )r!  r   r  zof length 2.*the length is 1rÔ   )r   r  )rL   Úchsé   Úloczlocations not available)r"  r  r   rÍ   )TF)ÚpowerZ	amplitudez[Infinite|Zero])r  r%  Úestimatezmathrm{(dB)}$r*  u   (fT/cm)Â²/HzzfT/cm/\sqrt{Hz}ZGradiometersr   u   fTÂ²/HzzfT/\sqrt{Hz}ZMagnetometersr   rÚ   )Zreject_by_annotationu   must not exceed Â½ the samplingiPÃ  )ZfmaxzInvalid value for the 'xscale'Zblah)Zxscale)r  )r©   r  ZhboZhbrZfnirs_cw_amplitudeZfnirs_od)zMEG 0113zMEG 0112r•   r–   Úerror)ÚverboserÙ   gü©ñÒMbP?r   ZCH1ZCH2)r  )r©   r"  )$rå   Zplot_psdr½   Zresize_eventr   rŠ   ÚpltÚcloserL   Zsubplotsræ   rç   rè   ÚsubplotZplot_psd_topor   r4   r7   r  rê   rë   Ú	itertoolsÚproductÚUserWarningZ	get_titleZ
get_ylabelr°   r<   rì   r   r  Zset_channel_typesr  Úrandr   r	   )rM   r  Zraw_unchangedr   r©   r   rð   Zaxsrf   r%  r+  rØ   ZylabelZends_dBÚunitr   rŠ   rS   rS   rT   Útest_plot_raw_psdÕ  sœ    
ÿ ÿ




ÿ


þý

r6  c              	   C   s¦  t  d¡ |  d¡}t|| ¡ dƒ | jddddgd� t  d¡ t  d	¡}| jd
|d� | jddd� | jdddgddggd� tjt| jdd� t t	t| ¡ tjtt| j
dd� t  d¡ | jddd�\}}|jd }t||ddd� t||dddd � |jjg k�st‚t||d!d"d� |j ¡  |jjg k�s<t‚t||d#d"d$d � t||d%d"d$d � |j d&¡ t||d'd"dd � |jjd(gk�s’t‚|jj ¡ }|jj ¡ }|d)d)…d*f d+d,d+gk ¡ �sÎt‚|d)d)…d*f d-d,d-gk ¡ �sòt‚t||d.d"d$d � |jd  ¡ }t|||d dd� |jjd(dgk�s<t‚t|||d dd� |jjd(gk�sdt‚t  d¡ d)| j
d/< tjtd0d1�� |  ¡  W 5 Q R X td2d3d4d5gd6d7d8�}d9tj dd6¡ }t||d:�}	|	 d;¡ |	jd<d=� |	  d2d>i¡ |	jd<d=� |	 !d>¡ |	jd<d=� |	 !d3¡ tjtd?d1�� |	jd<d=� W 5 Q R X t"|	j
d@ ƒ}
|	 d)¡ |	j
 #¡ � |
|	j
d@< W 5 Q R X tjtdAd1�� |	jd<d=� W 5 Q R X d)S )BzTest plotting of sensor array.r&  Z3d)g{®Gáz´¿gq=
×£på?Ztopomaprz   zMEG 0111zMEG 0131)Zch_typeÚ
show_nameséo   ró   )Ú	ch_groupsrL   r�   F)r9  Z	to_spherer   r   r   r   rõ   )r9  ZasdZsasaasd)r%   ÚselectT)r7  )rø   rø   r   rÑ   )r   rø   rj   )r   r%   r—   r   r˜   r'   rš   Úcontrolrœ   r”   Nr   r0   r    g      Ð?)r›   r   Z
dev_head_tÚidentityrÔ   ZFpzZOzZT7ZT8r   r{   )r¨   rˆ   Zch_typesg�íµ ÷Æ°>)r   rŠ   Z	biosemi64Zeeglab)ZsphereZFPzzcould not find: Fpzr'  zNo montage was set)$r.  r/  r   r   Zgcar0  ræ   rç   rè   ré   rŠ   rL   r¢   r�   r<   r½   ZdrawZkey_press_eventZ
collectionZget_facecolorsZget_edgecolorsr&  ÚcollectionsZget_offsetsrê   rë   r   r7   r  r4  r	   Zset_montageZrename_channelsZdrop_channelsr   rž   )rM   r   r   ZselsÚfcr¤   rR   rŠ   r   Zraw_eegr'  rS   rS   rT   Útest_plot_sensors5  s€    

ÿ




$$


ý



r?  Ú	cfg_value)Nz0.1,0.1c                 C   sL   t dƒ}td|ƒ |  ¡ }tjdks(dnd}t| ¡ d|d� td|ƒ dS )zTest minimum window plot size.ZMNE_BROWSE_RAW_SIZEÚntr   gš™™™™™É?)rû   rû   r,   N)r   r   r:   Úosr3   r   Ú	_get_size)rM   r@  r‡   Zold_cfgr   r-   rS   rS   rT   Útest_min_window_sizeŠ  s    
rD  c                 C   s(   t t d¡tdddƒƒ}|jdd� dS )z6Test that auto scalings access samples using integers.)r   iô  r   rx   r{   rý   rþ   N)r	   r7   r  r   r:   )r‡   rM   rS   rS   rT   Útest_scalings_int˜  s    rE  z
dur, n_dec)é   r   )gÍÌÌÌÌÌü?r   )rc   rõ   c                 C   sj   | j |dd�}| ¡  | d¡}|d  d¡s2t‚t|d  d¡ƒdkrft|d  d¡d ƒ|ksft‚dS )	z:Test if decimal seconds of xticks have appropriate length.Úclock)rJ   Útime_formatrî   r   z19:01:53Ú.r   N)r:   r³   râ   Ú
startswithr<   r4   Úsplit)rM   ZdurZn_decr‡   r   Z
tick_textsrS   rS   rT   Útest_clock_xticksž  s    
rL  )F)Cr1  rB  rå   r   r   Zmatplotlib.pyplotZpyplotr.  Únumpyr7   ræ   Znumpy.testingr   r>   r   r   r   Zmne.annotationsr   Zmne.datasetsr   Zmne.ior	   Z	mne.utilsr
   r   r   r   Zmne.vizr   r   Zmne.viz.utilsr   rU   r_   rb   rh   rk   rr   ru   rw   r�   r«   r±   r¶   r·   r¿   rÌ   rò   ÚmarkZparametrizerù   rü   r  Zrequires_testing_datar  r  r	  Zslowtestr  r  r  r6  r?  rD  rE  rL  rS   rS   rS   rT   Ú<module>   sj   
 	W'#S
	
	


%

`U
