3
Xd                 @   s  d dl Z d dljZd dlZd dlmZmZ d dlm	Z
 d dlmZ d dlmZ d dlmZ ejjej ddd	d
 Zejjej dddd Zejjej dddd Zejjej dddd Zejjej dddd Zejjej dddd ZdS )    N))create_files_in_directory_plus_dummy_filecreate_surf_file_in_directory)engine)
freesurfer)
TraitError)FreeSurferSourcezfreesurfer is not installed)reasonc                s  t j   jdksttjt  j  W d Q R X | \}}|d  j_	|d  j_
d j_|d  j_d j_d j_d j_ jd	tjj|d
|d |d f kstt j|d |d dd} |kstd j_ jdtjj|dkst fdd}tjt |  W d Q R X d S )NZmri_vol2surfr      lh   g      ?fracZpointzNmri_vol2surf --hemi lh --o %s --ref %s --reg reg.dat --projfrac 0.500 --mov %szlh.a.mgzrh)source_filereference_filehemiT	hits_filezlh.a_hits.mgzc                  s   d j _d S )N皙?      ?)r   r   )inputssampling_range )s2sr   _/var/www/html/virt/lib/python3.6/site-packages/nipype/interfaces/freesurfer/tests/test_utils.pyset_illegal_range;   s    z+test_sample2surf.<locals>.set_illegal_range)fsZSampleToSurfacecmdAssertionErrorpytestraises
ValueErrorrunr   r   r   r   Zreg_filer   Zsampling_unitsZsampling_methodcmdlineospathjoinr   Z_get_outfilenamer   )r   filescwdZs2sishr   r   )r   r   test_sample2surf   s.    $r'   c             C   s   t j }|jdksttjt |j  W d Q R X | \}}||j_	d|j_
d}||j_d|j_|jd|||f ksxtt jdd|ddd}||kstd S )	Nmri_surf2surf	fsaverage   r
   zbmri_surf2surf --cortex --fwhm 5.0000 --hemi lh --sval %s --tval %s/lh.a_smooth%d.nii --s fsaverage   zlh.a_smooth.nii)
subject_idfwhmin_filer   out_file)r   ZSurfaceSmoothr   r   r   r   r   r    r   r.   r,   r-   r   r!   )r   Zsmoothsurfr&   r-   Zshmoothr   r   r   test_surfsmoothB   s(    r1   c             C   s   t j }|jdksttjt |j  W d Q R X | \}}||j_	d|j_
d|j_d|j_|jd||f ksrtt jdd|dd}||kstd S )Nr(   Z
my_subjectr)   r
   zmmri_surf2surf --hemi lh --tval %s/lh.a.fsaverage.nii --sval %s --srcsubject my_subject --trgsubject fsaverage)source_subjecttarget_subjectr   r   )r   ZSurfaceTransformr   r   r   r   r   r    r   r   r2   r3   r   r!   )r   Zxfmr0   r&   Zxfmishr   r   r   test_surfxfmi   s$    r4   c             C   s  t j }|jdksttjt |j  W d Q R X | \}}d|j_	d|j_
d|j_|jdksbtt jdddd	}||ks~t|j  tjjd
sttddj }d|j_|jdksty>tjd }tjd= tjt |j  W d Q R X |tjd< W n tk
r   Y nX d S )NZtksurferr)   r
   pialz-tksurfer fsaverage lh pial -tcl snapshots.tclZ	mysubjectr   white)r,   r   surfacezsnapshots.tclz	other.tclwz)tksurfer fsaverage lh pial -tcl other.tclZDISPLAY)r   ZSurfaceSnapshotsr   r   r   r   r   r    r   r,   r   r7   r!   Z_write_tcl_scriptr"   r#   existsopencloseZ
tcl_scriptenvironRuntimeErrorKeyError)r   Zfotosr%   r&   ZschmotosZfooZhold_displayr   r   r   test_surfshots   s0    
r?   c       
      C   s  t tjj ddd}|j jj }tj|d dddd}tj	tj|d ddddd	d
}dj
|d }|j|kstt|jj|kst|j }dj
|jjd}|jj|kst|j d }|jj d }	tj|tj|	ksttj|tj|d ksttj|	|jjkstd S )Nr)   r
   )subjects_dirr,   r   ZsmoothwmZ	expandtmpr	   <   )r.   Zout_nameZdistancedtZexpand_node)namez mris_expand -T 60 {} 1 expandtmpzCmris_expand -T 60 -pial {cwd}/lh.pial {cwd}/lh.smoothwm 1 expandtmp)r&   r/   )r   r   Infosubjectsdirr    outputsgetZ
MRIsExpandpeNodeformatr!   r   Z	interfaceZruntimer&   Z_list_outputsopbasenamedirname)
tmpdirfssrcZ	fsavginfoZ	expand_ifZ	expand_ndZorig_cmdlineZnd_resZnode_cmdlineZif_out_fileZnd_out_filer   r   r   test_mrisexpand   s*    rP   c             C   sn   t tjj ddd}|j jj}t|ts2t	dtj
 }||j_|j }|jjdksZt	|jjdksjt	d S )Nr)   r
   )r@   r,   r   z"Problem when fetching surface filer   r   )r   r   rD   rE   r    rF   r5   
isinstancestrr   ZEulerNumberr   r.   defectsZeuler)rN   rO   r5   euresr   r   r   test_eulernumber   s    rV   )r"   os.pathr#   rK   r   Znipype.testing.fixturesr   r   Znipype.pipeliner   rH   Znipype.interfacesr   r   Znipype.interfaces.baser   Znipype.interfaces.ior   markZskipifZno_freesurferr'   r1   r4   r?   rP   rV   r   r   r   r   <module>   s   
0'%/.