U
    f»{j��  ã                   @   sÖ  d dl mZ d dlmZ d dlZd dlmZm	Z	 d dl
Z
d dlZd dlm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mZ d dlmZmZ d dlm Z m!Z!m"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,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d dlBmCZCmDZD d dlEmFZFmGZG e1jHdd�ZIe JeId¡ZKe JeIddd¡ZLe JeIddd¡ZMe Je NeO¡ddddd¡ZPe JePd ¡ZQe JePd!¡ZRe JePd"¡ZSe JePd#¡ZTe,d$ƒZUe JePd%¡ZVe
jW Xd&d'¡d(d)„ ƒZYe1jZd*d+„ ƒZ[d,d-„ Z\e
jW ]d.¡d/d0„ ƒZ^e
jWj_d1d2„ ƒZ`d3d4„ Zad5d6„ Zbe
jWj_e1jZd7d8„ ƒƒZce1jZd9d:„ ƒZdd;d<„ Zed=d>„ Zfd?d@„ ZgdAdB„ ZheFdCdD„ ƒZidEdF„ ZjdGdH„ ZkdIdJ„ ZldKdL„ ZmdS )Mé    N)Úpartial)Úassert_array_equalÚassert_equal)ÚCircle)
Úread_evokedsÚ	read_projÚmake_fixed_length_eventsÚEpochsÚcompute_proj_evokedÚfind_layoutÚ
pick_typesÚcreate_infoÚread_covÚEvokedArray)Úmake_eeg_average_ref_projÚ
Projection)Úread_raw_fifÚ	read_infoÚRawArray)ÚFIFF)Ú	pick_infoÚchannel_indices_by_typeÚ_picks_to_idx)Úget_current_comp)Úread_layoutÚmake_dig_montageÚmake_standard_montageÚfind_ch_adjacency)Útesting)Úcompute_bridged_electrodes)Ú
AverageTFR)Úplot_evoked_topomapÚplot_projs_topomapÚtopomap)Ú_get_pos_outlinesÚ	_onselectÚplot_topomapÚplot_arrowmapÚplot_psds_topomapÚplot_bridged_electrodesÚplot_ch_adjacency)Ú_find_peaksÚ_fake_click)Úrequires_sklearnÚcheck_versionF)ÚdownloadZsubjectsÚMEGÚsamplezsample_audvis_ecg-proj.fifZSSSZTRIUXztriux_bmlhus_erm_raw.fifz..ÚioZtestsÚdataztest-ave.fifztest_raw.fifztest-eve.fifztest_ctf_comp_raw.fifzVectorview-allztest-cov.fifÚconstrained_layout)FTc              	   C   sr  t tdd�d }|jdd� |j ¡ � g |jd< W 5 Q R X |jrFt‚| t|dd�¡ t	 
d	¡ t	j| d
�\}}|j}tdddgd|ddd�}| ¡ jf ddi|—Ž | ¡  tj| ¡ dd�}tt	 ¡ ƒdksÖt‚| ¡  | ¡ jf ddi|—Ž | ¡  tj| ¡ dd�}t ||¡�r"t‚tt	 ¡ ƒdk�s8t‚| ¡  | ¡ jf ddi|—Ž | ¡  tj| ¡ dd�}t||ƒ t ||¡�rŽt‚tt	 ¡ ƒdk�s¤t‚t	 t	 ¡ d ¡}	t|	jd jƒdk�sÐt‚|	jd jD ]}
|
 ¡ �rÜt‚�qÜt|	|	jd ddgdd� t|	jd jƒdk�s&t‚|	jd jD ]}
|
 ¡ �s2t‚�q2| ¡  tj| ¡ dd�}t | ¡ | ¡ ¡d }d|  k �r’dk�s˜n t‚t | ¡ | ¡ ¡d }d|  k �rÈdk �sÎn t‚t|	|	jd ddgdd� | ¡  tj| ¡ dd�}t | ¡ | ¡ ¡d }d|  k �r2dk�s8n t‚t | ¡ | ¡ ¡d }d|  k �rhdk �snn t‚d S )!z-Test interactive topomap projection plotting.©Nr   ©Úbaseliner   Úmag©ÚmegÚprojsé   )Zn_magÚall)r4   iÿÿÿéð   çš™™™™™¹?Fé   Ús)ÚvminÚvmaxÚtimesÚcolorbarÚaxesÚresÚ	time_unitÚprojZuint8©ZdtypeTÚinteractiveé   éÿÿÿÿç      à?r3   ©Zxform©r   r<   g®Gáz®ï?g333333ë?çÍÌÌÌÌÌì?N) r   Úevoked_fnamer   ÚinfoÚ_unlockrI   ÚAssertionErrorZadd_projr
   ÚpltÚcloseÚsubplotsÚcanvasÚdictÚcopyr&   ZdrawÚnpZ
frombufferZtostring_rgbÚlenZget_fignumsÚclearZarray_equalr   ZfigurerF   ÚlinesZget_visibler,   ZcorrcoefZravel)r4   ÚevokedÚfigÚaxrY   ÚkwargsZimage_noprojZ
image_projZimage_interactiveZproj_figÚlineZimage_interactive_clickZcorr© re   úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/viz/tests/test_topomap.pyÚtest_plot_topomap_interactive7   sš    

 ÿ
 ÿ ÿÿ ÿÿ ÿ ÿÿ ÿÿrg   c            	   	   C   s^  t tƒ} ttƒ}ddddœ}t| f|ddœ|—Ž t d¡ t d¡}| d	  |¡ t| d
d… |fd|i|—Ž t d¡ tt	ƒ}t|d dd
… |f|Ž t d¡ t|d d
d… |f|Ž t d¡ t
|ƒ}|j|f|Ž t d¡ dD ]}t| d
d… ||dd� qðt d¡ t
|ƒ}t|t|ddd�ƒ}tjtdd�� t|g|ƒ W 5 Q R X d
S )zTest plot_projs_topomap.r@   r   F©rG   ÚcontoursÚsensorsT)rS   rE   r=   éo   é   Nr<   rF   r;   rM   )Zjoint)rM   r<   )NrN   )rN   N)NN)ÚvlimrE   ©r:   Úeegz No channel names in info match p©Úmatch)r   Ú	ecg_fnamer   Ú	raw_fnamer"   rV   rW   Úsubplotr&   Útriux_fnamer   r   r   ÚpytestÚraisesÚ
ValueError)	r;   rS   Ú	fast_testrb   Z
triux_infoZeeg_avgrm   Zeeg_projZinfo_megre   re   rf   Útest_plot_projs_topomapy   s0    






rz   c                 C   sZ   t tddd�}|jdddgddd	d
�\}}| d¡ |  ¡ \}}d|ksLt‚t d¡ dS )úTest topomap plotting.úLeft Auditoryr5   r6   Úgradr   r?   FrA   Údebug)Úch_typerD   Ú	butterflyrH   Úverboser<   zextrapolation mode local to 0r=   N)r   rR   Úanimate_topomapÚ_funcÚ
readouterrrU   rV   rW   )Úcapsysr`   Ú_ÚanimÚoutre   re   rf   Útest_plot_topomap_animation˜   s    ÿ þ

r‰   z(ignore:.*No contour levels.*:UserWarningc                 C   sT   | j ddd�\}}| d¡ | ¡ \}}d|ks4t‚t|jƒdksFt‚t d¡ dS )	z$Test topomap plotting for nirs data.Úhbor~   )r   r�   r<   zextrapolation mode head to 0rL   r=   N)r‚   rƒ   r„   rU   r]   rF   rV   rW   )Zfnirs_evokedr…   ra   r‡   rˆ   r†   re   re   rf   Ú test_plot_topomap_animation_nirs¨   s    
r‹   c           ;   
      s†  t tddd�}d}t|dddd�}t|ddd	�}| ¡ jdd
d�}| |jdd… ¡ t|jf|Ž}||j	dd… d d� t
jt|dd� t
jt|dgd� t
jt|dggd� t
jtdd�� |jdgdd� W 5 Q R X |jdgdd|dddgdd� |jdgdd|dddgddd� |jdgdd|dddgddd� |jdgdd|dddgddd d!� tj d"¡}t|jƒd dd"… }t|j|ƒ}	t||	d|d#� t||	d|d#� t||	dd$|d%� t td&d'„ t d(d)d*¡D ƒg ƒ¡}
tj d+¡}t t|
ƒd*¡| t|
ƒ¡ }tt|
ƒd,dƒ}d-d.„ t|d/ |
ƒD ƒ}t|dd0�}| |¡ t||dddd1�\}}| ¡ j}t  |d2 |d  ¡d3k �sˆt!‚t  |d4 ¡d5k �s t!‚t||dd$dd1�\}}| ¡ j}t  |d2 |d  ¡d3k �sàt!‚|d4 d*k�sòt!‚d6}t
jt"|d�� t||dddd"gd7� W 5 Q R X d8}t
jt|d�� t||dd9d7� W 5 Q R X | ¡  #d:¡j}t|d/ ƒ}tj |¡}t||ƒ\}}|j$j%d;  &¡ }|dd…df dk '¡ }|d<k �sÀt!‚t|jf|Ž}t( )d=¡ t( *d>¡t( *d?¡g}||dd@� t( )d=¡ |dAd(gd� t( )d=¡ | ¡  +dd¡jd:dB�}t ,dCt-¡}d
|dd"d*dDg< g ‰ ‡ fdEdF„}|jf d:dg||dGœ|—Ž t.t/ˆ ƒdHdIdJdKgƒ tj0|jt-dL�}d
|dd*gdd…f< |dddM� dg}||d:|dN� ||dOd� ||dPd� ||d:|d
dQdRidS� t( )d=¡ t
jtdTd�� ||ddUdV� W 5 Q R X t
jt"dWd�� ||ddRdV� W 5 Q R X ||d:dXdYdZ„ d[�}d\d]„ | 1¡ D ƒ}t|ƒdk�s¦t!d^d]„ | 1¡ D ƒƒ‚|d }t2d_d'„ | 1¡ D ƒƒ} | �sÎt!‚d`D ]6}!| ¡ jd|!da�}"t|"jdd…df |"jf|Ž �qÒt
 tt|jddd…f |j¡ dbdc„ }#||ddddV�}t.t|#|ƒƒdƒ ||ddedf�}|#|ƒ}$t.t|$ƒdƒ t.|$d deƒ t( )d=¡ |j	d |d |j	d; g}%||%ddddV�}dg}&t3|&ƒD ]"\}'}(|j$|'  4¡ |(k�sÂt!‚�qÂdddhdg})||%d|)dV�}di}&t3|&ƒD ]"\}'}(|j$|'  4¡ |(k�s
t!‚�q
dddhg})t
jtdjd�� ||%d|)dV� W 5 Q R X ~%~&~(||dd� t
jtt5|dddkddl� t tddddm�}|jdždndki|—Ž}*t6|*|*j$d doƒ t 7|*j$d j8d j9¡}+t( :¡ },t6|,|,j$d dpƒ t 7|*j$d j8d j9¡|+k�st!‚|  ;¡ �F}-|- <t=dqdrdZ„ ¡ t
j>t?dsd�� t5|dgdt ddu� W 5 Q R X W 5 Q R X t
jtt5|dvdwgddx� |jdy D ]$}.|.dz t@jAk�rˆ|.d{  Bd¡ �qˆ|jd| d}= |j|fdd dMœ|—Ž t|jdd
d�}/tC|j|/dƒ\}}0|j|fd|0dMœ|—Ž t( )d=¡ t5|fd~dgddd€d�œ|—Ž}1|1jD Ed‚¡ |1jD Edƒ¡ |1jD Ed„¡ |1 F¡ d jG}2|2jHjI}t6|1|d…ƒ t6|1|d†d‡dˆ� t6|1|d‰dŠdˆ� t6|1|d…d"d‹� t6|1|d†d"d‡dŒ� t6|1|d‰dŠdˆ� |1jD Jd�d�dŽ¡ |1jD Jd�d�d�¡ t( )d=¡ d�d�„ }3|3|0d‘< t5||fd|0dMœ|—Ž |j K¡ � d|jd|< W 5 Q R X t
jtt5||ddd’� t( )d=¡ t|ƒ}4t L|4¡}t
jtt||d
d“� t ,|4¡}5t ,|4ddf¡}6t
 tt||5¡ t
 tt||6¡ t
 tt||dd"…dd…f ¡ |dd…dd…f }7tjM|t ,|4¡dd…tjNf f }8t
 tt||7¡ t
 tt||8¡ tjM|t ,|4df¡f }9t||9ƒ t( )d=¡ t( *d”¡t( *d•¡g}|jf d–|d—œ|—Ž t( )d=¡ t ,|jjO¡|_d|jd˜ d< tPtQ|d™ƒ|j	d ƒ d|jdš d< tPtQ|d™ƒ|j	ddg ƒ d|jd d›< tPtQ|d™ƒ|j	dd›g ƒ tPtQ|dƒ|j	d› ƒ |jdœ  |jd/ d g7  < |jdœ }:|jd:dgdd�� tP|jdœ |:ƒ t( )d=¡ dS )Ÿz Test basics of topomap plotting.r|   r5   r6   r@   r   FrA   )rG   ri   rj   rH   rh   Trn   NrL   ç�íµ ÷Æ°>)rD   r8   )r   iœÿÿÿz`image_interp` must berp   r?   Zbilinear)Úimage_interpro   r<   éd   Úms)r   ÚscalingsrG   ri   rH   Úlocal)r   r�   rG   ri   rH   ÚextrapolateÚheadZskirt)r   r�   rG   ri   rH   r’   Úoutlinesrl   )r’   rG   Úmean)r’   ÚborderrG   c                 s   s>   | ]6}d d |g|d d g| d d gd | d gd |d ggV  qdS )r   Nre   )Ú.0Úrre   re   rf   Ú	<genexpr>ã   s
   þ
 ÿz*test_plot_topomap_basic.<locals>.<genexpr>çš™™™™™É?ç      ð?é   é   éú   c                 S   s   i | ]\}}||“qS re   re   ©r—   ÚnameÚposre   re   rf   Ú
<dictcomp>é   s      z+test_plot_topomap_basic.<locals>.<dictcomp>Úch_names©Úcoord_frame)r’   r–   Úsphere)é   r§   ç¸…ëQ¸¾?)r   r   g      ø?z,border must be an instance of numeric or str)r’   r–   z:The only allowed value is 'mean', but got 'fancy' instead.Úfancyr}   rM   g333333ã?r=   éÝ   éÞ   )rF   rE   çš™™™™™¹¿r9   )éÌ   r<   é   c                    s   ˆ   | ¡ | dd … S )Né   )Úappend©Úx©Únamesre   rf   Ú
proc_names   s    
z+test_plot_topomap_basic.<locals>.proc_names)r   rD   ÚmaskÚ
show_nameszMEG 011xzMEG 012xzMEG 013xzMEG 014xrJ   )r   r”   )r   r¶   Zplanar1Zplanar2Úmarkerr²   )r   r¶   r·   Zmask_paramsznumber of seconds.* got -g     @�À)r   Úaverageznumber of seconds.* got typeZcubicc                 S   s   |   dd¡S )Nr0   Ú )Úreplacer±   re   re   rf   Ú<lambda>8  ó    z)test_plot_topomap_basic.<locals>.<lambda>)r   r�   r·   c                 S   s    g | ]}d t t|ƒƒkr|‘qS )ZSubplot)ÚstrÚtype©r—   r²   re   re   rf   Ú
<listcomp>9  s      z+test_plot_topomap_basic.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS re   )r¿   rÀ   re   re   rf   rÁ   :  s     c                 s   s(   | ] }t |tjjƒrd | ¡ kV  qdS )r0   N©Ú
isinstanceÚ
matplotlibÚtextÚTextZget_textrÀ   re   re   rf   r™   =  s   þ)r8   r}   )ro   r:   c                 S   s   dd„ |   ¡ D ƒS )Nc                 S   s"   g | ]}t |tjjƒr| ¡ ‘qS re   rÂ   rÀ   re   re   rf   rÁ   K  s    ÿz>test_plot_topomap_basic.<locals>.get_texts.<locals>.<listcomp>)Úget_children)Úpre   re   rf   Ú	get_textsJ  s    z*test_plot_topomap_basic.<locals>.get_textsç{®Gáz„?ZCustom)r   Útitle)õ   -0.200 â€“ -0.195 su   0.095 â€“ 0.105 su   0.494 â€“ 0.499 sg{®Gáz”?)rÌ   u   0.090 â€“ 0.110 sz0.499 sz3 time points.*2 periodsrK   )rI   rH   )r7   rI   rI   )rN   rN   )g333333³?gÍÌÌÌÌÌè?Z_plot_topomapc                  _   s   dS )N)NNNre   )Úargsrc   re   re   rf   r¼   Œ  r½   zMore than 25 topomaps plotsé   )rE   g  €yïÓ…Âg    8œlA©rH   ÚchsÚ	coil_typeÚlocÚdigéU   ç        )ZRedsTrË   )rD   r   ZcmaprË   Úupú Zdown)r?   r?   )r?   rš   Zmotion©Úkind)r?   ç333333Ó?Úrelease)Úbutton)rÜ   rÙ   rN   g      à¿c                   S   s   t dddt ¡ jd�S )N)rN   g§èH.ÿÝ?gq=
×£pÝ?T)ZradiusZclip_onZ	transform)r   rV   ÚgcaZ	transAxesre   re   re   rf   Úpatchº  s     ÿz&test_plot_topomap_basic.<locals>.patchrÞ   )r   rH   )r·   éƒ   é„   Zpeaks)rD   rF   é2   é
   éP   é_   Úbads)r   rD   rH   )rK   r8   )Rr   rR   rZ   r[   r   Úpick_channelsr£   r   r&   rD   rv   rw   rx   ÚRuntimeErrorr\   Úrandomr   rS   r   ÚarrayÚsumÚlinspaceÚRandomStateÚfullr]   Úrandnr   Úzipr   Úset_montageZ	get_arrayr3   ÚabsrU   Ú	TypeErrorÚpickrF   ÚcollectionsÚget_offsetsr•   rV   rW   rt   ÚcropÚzerosÚboolr   ÚsortedZ
zeros_likerÇ   r=   Ú	enumerateZ	get_titler!   r,   ÚmaxZimagesZ_AÚgcfÚcontextÚsetattrr#   ÚwarnsÚRuntimeWarningr   ZFIFFV_COIL_EEGÚfillr$   rY   Zkey_press_eventZget_axesZCBÚcbarrb   Zscroll_eventrT   ÚonesZc_ZnewaxisÚshaper   r+   );Zmonkeypatchr`   rG   ry   Zfast_test_noscaleZev_badZplt_topomapZ	temp_dataÚpicksZinfo_selÚch_posÚrngr3   rS   Úch_pos_dictrÓ   rb   r†   Zimg_dataÚ	error_msgZ	info_gradZn_gradsZimgr¡   Zprop_channels_on_the_rightrF   Úevoked_gradr¶   rµ   rD   rÈ   rt   Zhave_allr   Zevoked_rÉ   ZtextsZaveraging_timesZexpected_ax_titlesÚidxZexpected_titleZaveraging_durationsZfig1Zdata_maxZfig2ÚmÚchZ	eeg_picksr”   ra   r  rÞ   Z
n_channelsZpos_1dZpos_3dZpos_xZpos_xyzZpos_xywhZ	orig_badsre   r³   rf   Útest_plot_topomap_basic³   sþ   ÿ ÿ þ þ  þ
ÿþþ

 
ÿ

  


ÿÿ
ÿ
ÿ
ÿ$ÿ
" 

  ÿ  ÿ ÿ ÿÿ"
ÿ(ÿ
 ÿÿ
ÿ
  ÿ


 "



r  c                  C   s6  t tƒ} t ddd¡}d}d}d}tj d¡}dd	d
dddddddddddddg}t| j|ƒ}| t	|ƒ|t	|ƒ¡}t
||d |t |¡|ƒ}	|	jddddd|dd� t
|||t |¡|ƒ}	|	jddddd|dd� tj dt ¡ jddd¡}
d |
_|
_t ¡ |
_tj dt ¡ jd d d¡}d!|_d"|_t d#d#gd$d%gd&d"gd"d'gg¡}t|
||	|d(ddddd)tƒ ƒ t|
||	|dddddd)tƒ ƒ d& |
_|
_d  |_|_|	 |
|d*d+d*¡ t d,¡ | j ¡ }t|ƒ}t||d( d*d-… ƒ}t ¡ \}}t d.d/¡}d0g}tj t	|d1 ƒ|jd ¡}t |||||gd2� d*S )3zTest plotting of TFR data.r¬   r?   éÈ   r@   rl   r<   é*   é]   é^   é`   éa   é   é   é   é   é�   é‚   i;  i<  rL   rœ   é   y      ð?      ð?r8   çš™™™™™©?g333333Ã?r   râ   )r   ÚtminÚtmaxZfminZfmaxrG   ri   Zbutton_press_eventZbutton_release_eventrQ   rÚ   rš   g)\�Âõ(¼?g      Ð?rN   rÕ   gö(\�ÂõØ?r}   ZRdBu_rNr•   r=   r¯   g      @g      #@)r¯   r@   ÚThetar£   )ÚbandsrF   )!r   rs   r\   rë   rè   rì   r   rS   rî   r]   r    Zaranger&   rÄ   Zbackend_basesZ
MouseEventrV   rü   rY   ZxdataZydatarÝ   Zinaxesré   r%   ÚlistrW   r[   r   rX   Zrandr  r(   )ÚrawrD   rG   Zn_freqsZnaver  r  rS   r3   ZtfrZeclickZereleaser¡   Z	chan_indsra   rF   Zfreqsr   Zpsdre   re   rf   Útest_plot_tfr_topomapô  sh    $ ÿ ÿ    ÿ
    ÿ"

r#  c                  C   s„   t tdd�} | jdkst‚t| dd�}t|ƒdks6t‚t| |dddd	� ¡ }t|j	ƒdks^t‚|j
d
d� |jddd� | 
¡  dS )zTest CTF topomap plotting.T©Zpreloadrl   rÊ   )Údurationrâ   r   N)r  r  r7   rA   rÏ   F)r:   Zref_meg)r   Ú	ctf_fnameZcompensation_graderU   r   r]   r	   r¹   r   rS   r&   r   )r"  Úeventsr`   re   re   rf   Útest_ctf_plotting&  s    r(  c               	   C   sæ   t tddd�} tjtdd��  t| jdd…df | jƒ W 5 Q R X |  ¡ j	dd	d
�}tjtdd��  t|jdd…df | jƒ W 5 Q R X |  ¡ j	dd�}|  ¡ j	dd�}t|jdd…df |jƒ t|jdd…df |j|jd� dS )zTest arrowmap plotting.r|   r5   r6   zMultiple channel typesrp   Nr   FTrn   r8   r9   r}   )Zinfo_to)
r   rR   rv   rw   rx   r'   r3   rS   r[   r   )r`   Z
evoked_eegZ
evoked_magr
  re   re   rf   Útest_plot_arrowmap5  s    ÿ$$ÿr)  c                  C   sø   d} t | ddd�}ttddd�}|jdd	� | |jd
d… ¡ dd„ tddƒD ƒ}|jd D ]}tj	|d< q^| 
dd„ t|j|ƒD ƒ¡ t|jƒ}|j d¡s¤t‚|jf ddgi|—Ž tdddt ddd
|jt d¡d�dd�}t|g|jf|Ž d
S )r{   r@   r   Frh   r|   r5   r6   r}   r9   Néz   c                 S   s   g | ]}d | ‘qS )zMEG %03dre   )r—   Úkre   re   rf   rÁ   P  s     z1test_plot_topomap_neuromag122.<locals>.<listcomp>r<   é{   rÐ   rÑ   c                 S   s   i | ]\}}||“qS re   re   )r—   Zc_oldZc_newre   re   rf   r¢   S  s      z1test_plot_topomap_neuromag122.<locals>.<dictcomp>ZNeuromag_122rD   r?   Útest)ZnrowZncolZ	row_namesZ	col_namesr3   rN   )ZactiveÚdescrÙ   r3   Zexplained_var)rZ   r   rR   r   ræ   r£   ÚrangerS   r   ZFIFFV_COIL_NM_122Zrename_channelsrï   r   rÙ   Ú
startswithrU   r&   r   r\   r  r"   )rG   ry   r`   r£   ÚcÚlayoutrI   re   re   rf   Útest_plot_topomap_neuromag122G  s6    ÿ

ÿ
  þûr3  c                  C   s´   ddl m}  tj d¡ dd¡}t|tdddƒƒ}dd„ t|j	t 
d¡ƒD ƒ}|j t|d	d
�¡ tdƒD ]:}|j	d|… |jd< |j ¡  t|dd…df |jƒ qj|  d¡ dS )z2Test plotting topomap with bad channels (gh-7213).r   Nrl   iè  g     @�@ro   c                 S   s   i | ]\}}||“qS re   re   rŸ   re   re   rf   r¢   h  s      z*test_plot_topomap_bads.<locals>.<dictcomp>r“   r¤   rå   r=   )Úmatplotlib.pyplotÚpyplotr\   rè   rì   rî   r   r   rï   r£   ÚeyerS   rð   r   r/  Z_check_consistencyr&   rW   )rV   r3   r"  r  Úcountre   re   rf   Útest_plot_topomap_badsc  s    
r8  c                  C   s`   ddddg} t | ddd�}ttj dd	¡d
 |ƒ}tdƒ}| |¡ |jddd� t 	d¡ dS )z¯
    Test topomap plotting with spread out channels (gh-9511, gh-9526).

    Test topomap plotting when the distance between channels is greater than
    the head radius.
    ZTP9ZAF7ZAF8ZTP10rŽ   ro   ©Zch_typesr¯   râ   rŒ   Zstandard_1005r  r@   )r¦   rG   r=   N)
r   r   r\   rè   rî   r   rð   r&   rV   rW   )r£   rS   r`   Zten_fivere   re   rf   Ú"test_plot_topomap_channel_distanceq  s    
r:  c                  C   sv   ddl m}  tj d¡ d¡}ttƒ}dg|d< t|dd�}t	||ƒ}t
|d ƒdksZt‚t||d	d
� |  d¡ dS )z>Test plotting topomap with bad gradiometer channels (gh-8802).r   NéË   zMEG 2242rå   r}   r9   rÐ   r@   )rG   r=   )r4  r5  r\   rè   rì   rî   r   rR   r   r   r]   rU   r&   rW   )rV   r3   rS   r  re   re   rf   Útest_plot_topomap_bads_gradƒ  s    

r<  c                 C   s4   | d j dd� ¡ }t|jƒdks&t‚t d¡ dS )z?Test plotting nirs topomap with overlapping channels (gh-7414).ÚArŠ   ©r  rœ   r=   N)r¹   r&   r]   rF   rU   rV   rW   )Úfnirs_epochsra   re   re   rf   Útest_plot_topomap_nirs_overlap�  s    r@  c              	   C   sŠ   ddl m} |  ¡ jdd�} | jtdƒd�} | j ¡ � d| jd< W 5 Q R X d| _|ƒ  | ¡}| 	¡ }t
|d jƒd	ks|t‚t d
¡ dS )zTest plotting nirs ica topomap.r   )ÚICArŠ   r>  é   r›   ZhighpassNé   r=   )Úmne.preprocessingrA  Z	load_dataró   r/  rS   rT   r7   ÚfitZplot_componentsr]   rF   rU   rV   rW   )r?  rA  Zicara   re   re   rf   Útest_plot_topomap_nirs_ica—  s    rF  c                  C   s6   t tƒ} ttƒ}|  |¡ | j|| d� t d¡ dS )z#Test plotting a covariance topomap.)Z	noise_covr=   N)r   Ú	cov_fnamer   rR   r&   rV   rW   )ZcovrS   re   re   rf   Útest_plot_cov_topomapª  s
    
rH  c               	   C   s  t ddƒrddlm}  nddlm}  ddlm} tj d¡}|jdd	d
d�}ddd	g|dd…< t	dƒ}t
|jddƒ d¡}| ddd	d�}t|||d� d}tjt|d�� t||d|d� W 5 Q R X d}tjt|d�� t||d|d� W 5 Q R X t|||dƒd� dS )zTest colormap normalization.rÄ   z3.2.0r   )ÚTwoSlopeNorm)ÚDivergingNorm)Ú	PowerNormr  rM   g      @é@   )ÚlowÚhighÚsizeNrl   Ú	biosemi64é   ro   )rB   ZvcenterrC   )Úcnormz=vmin=-1.* is implicitly defined by cnorm, ignoring vmin=-10.*rp   iöÿÿÿ)rB   rR  z;vmax=2.5 is implicitly defined by cnorm, ignoring vmax=10.*râ   )rC   rR  rN   )r.   Zmatplotlib.colorsrI  rJ  rK  r\   rè   Údefault_rngÚuniformr   r   r£   rð   r&   rv   rÿ   r   )rI  rK  r  ÚvÚmontagerS   rR  Úmsgre   re   rf   Útest_plot_topomap_cnorm³  s$    
rX  c               	   C   sD  t j d¡} tdƒ}t|jddƒ d¡}ddg}d}t  |t|jƒt|jƒf¡t j	 }t  
t|jƒd¡}t|ƒD ]$}|  ¡ |  |d	 j¡ || |< qpt|||t|jdd
d�d�}t|jd	 jƒdksÊt‚tjtdd�� t||t  d¡ƒ W 5 Q R X ttd
d�}	t|	jdƒ}
|	j|
d  |	j|
d	 < t|	ƒ\}}t|	j||ƒ dS )z$Test plotting of bridged electrodes.r  rP  rQ  ro   rP   )rL   rl   râ   r<   r   T)r´   rC   r·   )Ztopomap_argsr®   ZExpectedrp   )rœ   r®   é   r$  N)r\   rè   rS  r   r   r£   rð   r÷   r]   ÚnanZtriu_indicesr/  rO  r)   rZ   rF   r_   rU   rv   rw   rç   r   rs   r   rS   Ú_datar   )r  rV  rS   Zbridged_idxZn_epochsZ	ed_matrixZtriu_idxÚira   r"  r  re   re   rf   Útest_plot_bridged_electrodesÔ  s6    ÿÿ" ÿÿr]  c               	      sr  t  dddgdddgdddgdddgdddgg¡} ttdƒddd�}td	d
„ t|j| ƒD ƒdd�}| |¡ t|dƒ\}}t	|||ddd�}|j
d jd }| ¡ j‰ |j
d jdd… }|D ]B}| ¡ \‰‰‡ ‡‡fdd„tdƒD ƒ}	||	d |	d f s¾t‚q¾t||j
d ˆ d dd� |j
d j}
t|
ƒdk�s:t‚tj d¡}|
d  ¡ |k ¡ �s`t‚|d �snt‚|d �s|t‚t|ƒ}t||j
d ˆ d dd� |d �r¬t‚|d �rºt‚|j
d jdd… }t|ƒ}||d k�sèt‚|j
d j}
t|
ƒdk�st‚|
d  ¡ |k ¡ �s t‚|
d  ¡ j}|ˆ d k ¡ �sDt‚t||j
d ˆ d dd� |j
d j}
t|
ƒdk�s|t‚t||j
d ˆ d dd� t||j
d ˆ d dd� |j
d jdd… }t|ƒ|d k�sÚt‚|d  ¡ dk�sðt‚| ¡ }t	|||dd�}d}tjt|d �� t	|||dd!… dd� W 5 Q R X d"}tjt|d �� t	|||ddd� W 5 Q R X dS )#z"Test plotting of adjacency matrix.r¬   r?   rÕ   r¨   Zabcder�   ro   r9  c                 S   s   i | ]\}}||“qS re   re   )r—   r  r¡   re   re   rf   r¢   ø  s      z*test_plot_ch_adjacency.<locals>.<dictcomp>r“   )r  r¥   Z2dT)rÙ   Zeditr   r¯   Nc                    s8   g | ]0}t  ˆ ˆ| ˆ| ggkjd d�¡d d ‘qS )r<   )Zaxisr   )r\   Úwherer=   )r—   Zix©r¡   r²   Úyre   rf   rÁ     s   ÿz*test_plot_ch_adjacency.<locals>.<listcomp>rL   r<   r3   rO   z	tab:greenrP   )r<   r   rM   Z3drØ   zU``adjacency`` must have the same number of rows as the number of channels in ``info``rp   rl   z-Editing a 3d adjacency plot is not supported.)r\   ré   r   r!  r   rï   r£   rð   r   r*   rF   rô   rõ   r3   r_   Úget_datar/  rU   r,   r]   rÄ   ÚcolorsZto_rgbaZget_facecolorr=   Ú	get_colorZtoarrayrv   rw   rx   )Zxyz_posrS   rV  Z
adj_sparser£   ra   Z
collectionr_   rd   Zch_idxrô   ÚgreenZn_lines_beforeZn_lines_afterZ	point_posZadjrW  re   r_  rf   Útest_plot_ch_adjacencyñ  sp     ÿþ

ÿ"re  )nÚos.pathÚpathÚopÚ	functoolsr   Únumpyr\   Znumpy.testingr   r   rv   rÄ   r4  r5  rV   Zmatplotlib.patchesr   Zmner   r   r   r	   r
   r   r   r   r   r   Zmne.io.projr   r   Zmne.ior   r   r   Zmne.io.constantsr   Zmne.io.pickr   r   r   Zmne.io.compensatorr   Zmne.channelsr   r   r   r   Zmne.datasetsr   rD  r   Zmne.time_frequency.tfrr    Zmne.vizr!   r"   r#   Zmne.viz.topomapr$   r%   r&   r'   r(   r)   r*   Zmne.viz.utilsr+   r,   Z	mne.utilsr-   r.   Z	data_pathÚdata_dirÚjoinZsubjects_dirrr   ru   ÚdirnameÚ__file__Úbase_dirrR   rs   Z
event_namer&  r2  rG  ÚmarkZparametrizerg   Zrequires_testing_datarz   r‰   Úfilterwarningsr‹   Zslowtestr  r#  r(  r)  r3  r8  r:  r<  r@  rF  rH  rX  r]  re  re   re   re   rf   Ú<module>	   sx   0$
A




  B2

	!