Source code for wonambi.source.morph

from copy import deepcopy
from os.path import dirname, split

from numpy import arange, atleast_2d, squeeze
try:
    from mne import morph_data, SourceEstimate
except ImportError:
    pass


[docs]class Morph: def __init__(self, from_surf, to_surf='fsaverage', smooth=None): self.from_surf = from_surf self.to_surf = to_surf self.smooth = smooth def __call__(self, data): output = deepcopy(data) from_surf_file = dirname(dirname(self.from_surf.surf_file)) SUBJECTS_DIR, from_surf_name = split(from_surf_file) if 'lh' == self.from_surf.surf_file.stem: vertices = [arange(data.data[0].shape[0]), arange(0)] else: vertices = [arange(0), arange(data.data[0].shape[0])] try: stc = SourceEstimate(atleast_2d(data.data[0]).T, vertices=vertices, tstep=0, tmin=0) except NameError: raise ImportError('mne needs to be installed for this function') m = morph_data(from_surf_name, self.to_surf, stc, subjects_dir=SUBJECTS_DIR, grade=None, smooth=self.smooth, verbose=False) output.data[0] = squeeze(m.data, axis=1) output.axis['surf'][0] = arange(m.data.shape[0]) return output