U
    f»{jB3  ã                   @   s|  d dl mZ d dlmZ d dlZ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 d dl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  d d
l!m"Z" d dl#m$Z$m%Z%m&Z& e 'e (e)¡ddddd¡Z*e 'e*d¡Z+e 'e*d¡Z,e 'e*d¡Z-e 'e*d¡Z.d\Z/Z0Z1edƒZ2dd„ Z3dd„ Z4dd„ Z5dd„ Z6dd„ Z7d d!„ Z8d"d#„ Z9d$d%„ Z:d&d'„ Z;d(d)„ Z<dS )*é    )Ú
namedtupleN)Úread_eventsÚEpochsÚpick_channels_evokedÚread_covÚcompute_proj_evoked)Úread_layout)Úread_raw_fif)Ú
AverageTFR)Ú_record_warnings)Úplot_topo_image_epochsÚ_get_presserÚmne_analyze_colormapÚplot_evoked_topo)Ú_line_plot_onselect)Ú_fake_click)Ú_plot_update_evoked_topo_projÚiter_topographyÚ_imshow_tfrz..ÚioZtestsÚdataztest-ave.fifztest_raw.fifztest-eve.fifztest-cov.fif)é   gš™™™™™É¿gš™™™™™É?zVectorview-allc                   C   s   t tƒS )zGet events.)r   Ú
event_name© r   r   úV/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/viz/tests/test_topo.pyÚ_get_events)   s    r   c              
   C   s   ddddddddd	d
g
S )z
Get picks.r   r   é   é   é   é   i2  iT  iU  iV  r   )Úrawr   r   r   Ú
_get_picks.   s    r!   c                  C   sD   t tƒ} | jg dd� tƒ }t| ƒ}t| |dd… ttt|d�}|S )zGet epochs.T)Zremove_existingNé
   ©Úpicks)	r	   Ú	raw_fnameÚadd_projr   r!   r   Úevent_idÚtminÚtmax)r    Úeventsr$   Úepochsr   r   r   Ú_get_epochs3   s    r,   c                  C   s^   t tƒ} tƒ }t| ƒ}tdd�}tjtdd��& t| |dd… t	t
t|d|d�}W 5 Q R X |S )	zGet epochs with delayed SSP.gê-�™—‘=©ÚmagÚ
projection©ÚmatchNr"   Zdelayed)r$   ÚprojÚreject)r	   r%   r   r!   ÚdictÚpytestÚwarnsÚRuntimeWarningr   r'   r(   r)   )r    r*   r$   r3   Zepochs_delayed_sspr   r   r   Ú_get_epochs_delayed_ssp>   s     
 
     þr8   c               	   C   sh  t ƒ  ¡ } | jtdd�tdd�d� dd„ }| jdtddd	d
�td|dd�d� tjtdd�� | jtddd�d� W 5 Q R X tjdd�d  	¡  
¡ }| jdgdddgt|d d�|dd… ddœd� tjtdd��4 | jdddgt|d d�t|dd… d�d� W 5 Q R X t d¡ t| jd ƒdk�s2t‚| jdd � |  t| ddd!d"�¡ t| jd ƒdk�slt‚tjtd#d��  | jtdd$�td%d$�d� W 5 Q R X | jtd&d$�td&d$�d� t d¡ |  ¡  d'¡ d(d)„ | jD ƒ}tjtd*d�� |  |¡ W 5 Q R X |  ¡  t ƒ  ¡  d'¡} d+d)„ | jD ƒ}tjtd,d�� |  |¡ W 5 Q R X |  ¡  t d¡ dS )-zTest joint plot.Ús)Ú	time_unit)Úts_argsÚtopomap_argsc                 S   s   t t| jd ƒƒS ©Nr   )ÚlistÚrangeÚshape)Údr   r   r   Úreturn_indsQ   s    z$test_plot_joint.<locals>.return_indsÚtestr   r   Úms)ZcontoursÚresr:   T)Zspatial_colorsZzorderr:   )Útitler<   r;   zIf one of `ts_args` andr0   )Úaxesr:   )r;   é   )Znrowséÿÿÿÿr   r   )rG   r   N)Útimesr$   r;   r<   zof length 4r   )r$   r;   r<   ÚallÚprojs©ÚmegÚcombined)Zn_magZn_gradrN   zmust match ts_args©r2   FZreconstructr.   c                 S   s   i | ]
}|d “qS )Zseegr   ©Ú.0Zch_namer   r   r   Ú
<dictcomp>q   s      z#test_plot_joint.<locals>.<dictcomp>zThe unit .* has changed from .*c                 S   s   i | ]
}|d “qS )Zdbsr   rQ   r   r   r   rS   x   s      zThe unit for)r,   ÚaverageZ
plot_jointr4   r5   ÚraisesÚ
ValueErrorÚpltÚsubplotsÚflattenÚtolistÚcloseÚlenÚinfoÚAssertionErrorÚ
pick_typesr&   r   Zdel_projÚch_namesr6   r7   Zset_channel_types)ÚevokedrB   rG   Úmappingr   r   r   Útest_plot_jointK   sf    
ÿÿÿþÿÿ
   ÿÿÿ
rc   c               	   C   s`  t ƒ  ¡ } t| | gddd� t| | gdddd� tjtdd��" t| | gdt ddg¡d	� W 5 Q R X |  ¡  	| j
d
d… ¡}|  ¡ jddd�}| 	|j
d
d… ¡ tddgd�d
fD ]}t|gd t|d� q¶| | |gfD ]}tjtt|tddgd� qÜtƒ  ¡ }|j
d
d… }t||ƒ}t|tdd�}t|ƒ}	tddddgƒ}
|	|
|jd |jd jd jd |jd jd jd d�ƒ |	|
|jd ddd�ƒ t|g|j||jd d �}dgt|d ƒ }tjtd!d�� t||ƒ W 5 Q R X t| ¡ t d"¡dd#d$� |jddd� t d%¡ t| jdd&�D ]D\}}|j | j!| dd� |d'k�r&| j
| | "d(d(¡k�s&t#‚�q&|d'k�szt#‚t d%¡ t$t%ƒ}g |d< | jdd)�j|d*� t d%¡ d+g}|j|d,�}t|jd- ƒt|ƒ }t|jd j&ƒ}||k�søt#‚|  ¡  t'dd.d/d0g| j| j!| jƒ t d%¡ t| jƒD ] \}}|  dddg¡  �qR�q0t d%¡ d
S )1z Test plotting of ERP topography.TÚw)Úmerge_gradsÚbackground_colorÚblue)re   rf   Úcolorzmust be .*tuple, list, str,.*r0   Úred)re   rh   NrH   F©rN   Zeegi¨ýÿÿiX  r-   r   )ÚylimÚyÚb)rh   ÚinteractiverP   ÚEventÚinaxesÚxdataÚydatar   r   )rp   rq   rr   rL   )ZevokedsrJ   ÚfigrL   r/   )é   rH   rH   Úk)Zfig_backgroundr2   rf   rK   )ZlegendrI   ç      à?rM   )Z	noise_covzMEG 0112)Úexcluder`   éÈ   r.   Zgrad)(r,   rT   r   r5   rU   rV   ÚnpÚarrayÚcopyZpick_channelsr`   r_   r4   Úlayoutr8   r   r   r   rG   Z_mne_axsÚposrJ   r]   r\   r6   r7   r   ZzerosÚ	plot_toporW   r[   r   Úplotr   Úformat_coordr^   r   Ú	cov_fnameÚlinesr   )ra   Zpicked_evokedZpicked_evoked_eegrk   ZevoZevoked_delayed_sspr`   Zpicked_evoked_delayed_ssprs   ÚfuncÚeventÚparamsZboolsÚaxÚidxZcovrw   Zn_axes_expectedZn_axes_foundr   r   r   Útest_plot_topo   s”    

ÿ
 ÿ
ÿÿ
ÿÿ ÿ þ þ

 

ÿ

rˆ   c                 C   s4   | j dd� t| ƒ}t|jƒdks&t‚t d¡ dS )z.Test plotting of ERP topography for nirs data.Zhbor#   r   rK   N)Úpickr   r\   rG   r^   rW   r[   )Zfnirs_evokedrs   r   r   r   Útest_plot_topo_nirsÒ   s    rŠ   c                  C   sì   t ƒ  ¡ } |  ¡ }|  dd¡ | dd¡ t| |gdd�}t ¡ }d| dd	¡ksVt‚t	t 
¡ ƒ}t||jd d
ƒ |d t	t 
¡ ƒksŒt‚t ¡ }t ¡ }t||ddd� t|jtjjƒsÀt‚t||ddd� |jdksÞt‚t d¡ dS )z.Test single channel topoplot with time cursor.gR¸…ëQÈ¿r   gš™™™™™©?gR¸…ëQÈ?rd   )rf   zMEG 0113g¤p=
×£°?g)\�Âõ(ä?©ç{®Gáz´?gÍÌÌÌÌÌä?r   )rv   rv   Zmotion)Úkind)ç      ø?rŽ   NrK   )r,   rT   r{   Úcropr   rW   Zgcar€   r^   r\   Úget_fignumsr   rG   ÚgcfÚ
isinstanceZ_cursorlineÚ
matplotlibr‚   ZLine2Dr[   )ra   Zevoked2rs   r†   Únum_figures_beforer   r   r   Útest_plot_topo_single_chÚ   s"    
r•   c            	   	   C   s  d} t ƒ }| ¡  tdd�}|j ¡ }t d¡ t|dddd| |d	�}|j ¡ |ksXt‚t	t 
¡ ƒ}t||jd
 dƒ |d t	t 
¡ ƒksŽt‚| ¡ jddd�}t|ddd|d�}dd„ | ¡ D ƒ}| dd„ |D ƒ¡ dd„ |D ƒ}t	|ƒdksöt‚|d
 |k�st‚dS )z)Test plotting of epochs image topography.zERF images - MNE sample datar“   )ÚformatrK   rv   i8ÿÿÿrx   T)ÚsigmaÚvminÚvmaxÚcolorbarrF   Úcmapr   )rŒ   g{®Gázä?r   Frj   N)r˜   r™   rš   r›   c                 S   s   g | ]}t |tjjƒr|‘qS r   )r’   r“   rG   ÚAxes)rR   Úxr   r   r   Ú
<listcomp>  s      z/test_plot_topo_image_epochs.<locals>.<listcomp>c                 s   s.   | ]&}|  ¡ D ]}t|tjjƒr|V  qqd S )N)Úget_childrenr’   r“   rG   rœ   ©rR   r�   rl   r   r   r   Ú	<genexpr>  s
     
 ÿz.test_plot_topo_image_epochs.<locals>.<genexpr>c                 S   s.   g | ]&}|  ¡ D ]}t|tjjƒr|j‘qqS r   )rŸ   r’   r“   ÚcollectionsZQuadMeshr›   r    r   r   r   rž     s
     
 ÿ)r,   Z	load_datar   Ú_dataÚminrW   r[   r   r^   r\   r�   r   rG   r{   r_   rŸ   Úextend)	rF   r+   r›   Zdata_minrs   r”   Úepr†   Zqm_cmapr   r   r   Útest_plot_topo_image_epochsñ   s0    



  ÿ
ÿr§   c                  C   sð  t ƒ } d}d}tj d¡ t| jƒ|t| jƒ¡}t| j	|| jt 
|¡|ƒ}t d¡ |jddddd	d
�}|jd |_t d¡ |jddddd	d
�}tt ¡ ƒ}tjtdd�� t||jd dƒ W 5 Q R X |d tt ¡ ƒksât‚t d¡ |jdgddddd� tjt|jdgddd� tjt ddg¡ddiŽ}t| j	|| j||ƒ}|jdgddd	dd�}|d jd  ¡  ¡ dk�s~t‚t| j	|dd…dd…dgf | jdg ||ƒ}tƒ � |jdgdd	ddd� W 5 Q R X d\}}	t ¡ \}}
| jd | jd  }}tjtdd��D t|
d||||	d|dd…dgdd…f |dg dddddd � W 5 Q R X t  ¡ }|jd  ¡  ¡ dk�szt‚|dd…  !¡ }d|d< tjtdd��F tjtt|
d||||	d|dd…dd…dd…f |dddddd � W 5 Q R X dS )!zTest plotting of TFR data.rH   r   r   rK   r=   ÚratiozAverage powerç        g      ,@)ÚbaselineÚmoderF   r˜   r™   y      ð?      ð?znot maskingr0   r‹   rt   FZfoo)rª   r«   ÚshowrF   Zlin)Úyscaler¬   r"   ÚnumZmean)rª   r«   r™   r¬   ÚlogNZlinear)rª   r™   r¬   r­   )r©   g       @rI   )ZRdBu_rT)ÚtfrÚfreqZx_labelZy_labelrš   r›   r­   )"r,   ry   ÚrandomZRandomStateZrandnr\   r`   rJ   r
   r]   ZarangerW   r[   r~   r   r�   r5   r6   r7   r   rG   r^   r   rU   rV   ZlogspaceÚlog10Z	get_yaxisZ	get_scaler   rX   r   r‘   r{   )r+   Zn_freqsZnaver   r°   rs   r”   Zfreqsr˜   r™   r†   r(   r)   Zthese_freqsr   r   r   Útest_plot_tfr_topo  s‚     ÿ
  ÿ
  ÿ
 & ÿ &    þ     ýr´   )=r¢   r   Úos.pathÚpathÚopÚnumpyry   r5   r“   Zmatplotlib.pyplotZpyplotrW   Zmner   r   r   r   r   Zmne.channelsr   Zmne.ior	   Zmne.time_frequency.tfrr
   Z	mne.utilsr   Zmne.vizr   r   r   r   Zmne.viz.evokedr   Zmne.viz.utilsr   Zmne.viz.topor   r   r   ÚjoinÚdirnameÚ__file__Úbase_dirZevoked_fnamer%   r   r�   r'   r(   r)   r|   r   r!   r,   r8   rc   rˆ   rŠ   r•   r§   r´   r   r   r   r   Ú<module>	   s>   
4S