Skip to content

Commit 4e590ac

Browse files
TEST Brain.save_movie()
1 parent 5e401d2 commit 4e590ac

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

surfer/tests/test_viz.py

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
import os
33
import os.path as op
44
from os.path import join as pjoin
5+
import shutil
56
from numpy.testing import assert_raises, assert_array_equal
6-
from tempfile import mktemp
7+
from tempfile import mkdtemp, mktemp
78
import nibabel as nib
89

910
from surfer import Brain, io, utils
10-
from surfer.utils import requires_fsaverage
11+
from surfer.utils import requires_ffmpeg, requires_fsaverage
1112
from mayavi import mlab
1213

1314
subj_dir = utils._get_subjects_dir()
@@ -206,6 +207,41 @@ def test_morphometry():
206207
brain.close()
207208

208209

210+
@requires_ffmpeg
211+
@requires_fsaverage
212+
def test_movie():
213+
"""Test saving a movie of an MEG inverse solution
214+
"""
215+
# create and setup the Brain instance
216+
mlab.options.backend = 'auto'
217+
brain = Brain(*std_args)
218+
stc_fname = os.path.join(data_dir, 'meg_source_estimate-lh.stc')
219+
stc = io.read_stc(stc_fname)
220+
data = stc['data']
221+
vertices = stc['vertices']
222+
time = 1e3 * np.linspace(stc['tmin'],
223+
stc['tmin'] + data.shape[1] * stc['tstep'],
224+
data.shape[1])
225+
colormap = 'hot'
226+
time_label = 'time=%0.2f ms'
227+
brain.add_data(data, colormap=colormap, vertices=vertices,
228+
smoothing_steps=10, time=time, time_label=time_label)
229+
brain.scale_data_colormap(fmin=13, fmid=18, fmax=22, transparent=True)
230+
231+
# save movies with different options
232+
tempdir = mkdtemp()
233+
dst = os.path.join(tempdir, 'test')
234+
brain.save_movie(dst, montage='current')
235+
brain.save_movie(dst, montage='current', tstart=time[1], tstop=time[-1])
236+
brain.save_movie(dst, montage='single')
237+
# brain.save_movie(dst, montage=['lat', 'med'], orientation='v')
238+
# brain.save_movie(dst, montage=[['lat'], ['med']])
239+
240+
# clean up
241+
shutil.rmtree(tempdir)
242+
brain.close()
243+
244+
209245
@requires_fsaverage
210246
def test_overlay():
211247
"""Test plotting of overlay

surfer/utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,7 @@ def has_fsaverage(subjects_dir=None):
634634
requires_fsaverage = np.testing.dec.skipif(not has_fsaverage(),
635635
'Requires fsaverage subject data')
636636

637+
637638
def has_ffmpeg():
638639
"""Test whether the FFmpeg is available in a subprocess
639640
@@ -647,6 +648,8 @@ def has_ffmpeg():
647648
ffmpeg_exists = rcode == 0
648649
return ffmpeg_exists
649650

651+
requires_ffmpeg = np.testing.dec.skipif(not has_ffmpeg(), 'Requires FFmpeg')
652+
650653

651654
def ffmpeg(dst, frame_path, framerate=10, codec='mpeg4', opt="", inopt="",
652655
outopt=""):
@@ -724,5 +727,6 @@ def ffmpeg(dst, frame_path, framerate=10, codec='mpeg4', opt="", inopt="",
724727

725728
# check that movie file is created
726729
if not os.path.exists(dst):
727-
err = ("FFmpeg failed, no file created; see log for more more information")
730+
err = ("FFmpeg failed, no file created; see log for more more "
731+
"information.")
728732
raise RuntimeError(err)

0 commit comments

Comments
 (0)