[Mne_analysis] Errors when morphing labels

Eric Larson larson.eric.d at gmail.com
Wed Jun 26 12:04:40 EDT 2019
Search archives:

        External Email - Use Caution        

One weird thing is that you are morphing to a grade 5 (ico-5) source space
for your destination subject. This is probably not what you want to do. You
probably want to morph to `grade=[inv['src'][0]['vertno'],
inv['src'][1]['vertno']]`.

Does morphing all labels at once using mne.morph_labels work? It's designed
exactly for these sorts of use cases.

https://martinos.org/mne/stable/generated/mne.morph_labels.html

Eric


On Wed, Jun 26, 2019 at 10:12 AM Broman Emilia <emilia.broman at aalto.fi>
wrote:

>         External Email - Use Caution
>
> Hi all,
>
>
> I have a problem with morphing labels from "fsaverage" to subject space. I
> am trying to run the following code:
>
>
> import mne
> import numpy as np
> import scipy.io as sio
> from mne import datasets
> from mne.minimum_norm import read_inverse_operator
>
> datasets.fetch_hcp_mmp_parcellation(subjects_dir=subjects_dir,
>                                         verbose=True)
> datasets.fetch_aparc_sub_parcellation(subjects_dir=subjects_dir,
>                                           verbose=True)
> label_list =['superiortemporal_9-lh']
> labels = mne.read_labels_from_annot('fsaverage', 'aparc_sub', 'lh',
> subjects_dir=subjects_dir)
>
> for l in label_list:
>     subj_list = ['p9u']
>     frequency_band='4Hz8Hz'
>     for run in range(1, 11):
>         for subject in subj_list:
>             this_label = [label for label in labels if label.name == l][0]
>             inverse_operator = read_inverse_operator(fname_inv + subject
> +'/'+ subject + '_run' + str(run) + '-'+ frequency_band+'-inv.fif')
>             src = inverse_operator['src']
>             morphed_label=this_label.copy().morph('fsaverage', subject, 5,
> 5, subjects_dir, 1,None)
>             fname= '/m/nbe/scratch/alex/private/emilia/stc-meg/stc/' +
> subject +'/'+ subject + '_run' + str(run) + '_'+
> frequency_band+'_source_estimate-lh.stc'
>             stc = mne.read_source_estimate(fname)
>             label_data=
> stc.extract_label_time_course(morphed_label,src,mode='mean_flip')
>             label_mean=np.mean(label_data,axis=0)
>             sio.savemat(output_path + subject + '_'+frequency_band+'_run'
> + str(run) +'_'+ this_label.name + '_mean.mat', {'vect':label_mean})
>
> However, when I try to run the command "morphed_label=this_label.copy().morph('fsaverage',
> subject, 5, 5, subjects_dir, 1,None)" I get the following error:
>
>
> Traceback (most recent call last):
>   File "<ipython-input-2-231684f5069e>", line 27, in <module>
>     morphed_label=this_label.copy().morph('fsaverage', subject, 5, 5,
> subjects_dir, 1,None)
>   File
> "</home/bromane1/.local/lib/python3.6/site-packages/mne/externals/decorator.py:decorator-gen-216>",
> line 2, in morph
>   File
> "/home/bromane1/.local/lib/python3.6/site-packages/mne/utils/_logging.py",
> line 89, in wrapper
>     return function(*args, **kwargs)
>   File "/home/bromane1/.local/lib/python3.6/site-packages/mne/label.py",
> line 583, in morph
>     subjects_dir=subjects_dir, warn=False).apply(stc)
>   File
> "</home/bromane1/.local/lib/python3.6/site-packages/mne/externals/decorator.py:decorator-gen-280>",
> line 2, in compute_source_morph
>   File
> "/home/bromane1/.local/lib/python3.6/site-packages/mne/utils/_logging.py",
> line 88, in wrapper
>     return function(*args, **kwargs)
>   File "/home/bromane1/.local/lib/python3.6/site-packages/mne/morph.py",
> line 188, in compute_source_morph
>     xhemi=xhemi)
>   File "/home/bromane1/.local/lib/python3.6/site-packages/mne/morph.py",
> line 865, in _compute_morph_matrix
>     vertices_to[hemi_to], maps[hemi_from], warn=warn)
>   File "/home/bromane1/.local/lib/python3.6/site-packages/mne/morph.py",
> line 1069, in _morph_buffer
>     data_morphed = maps[nearest, :] * data
>   File
> "/share/apps2/anaconda/anaconda3/latest/envs/neuroimaging/lib/python3.6/site-packages/scipy/sparse/csr.py",
> line 316, in __getitem__
>     P = extractor(row, self.shape[0])     # [[1,2],j] or [[1,2],1:2]
>   File
> "/share/apps2/anaconda/anaconda3/latest/envs/neuroimaging/lib/python3.6/site-packages/scipy/sparse/csr.py",
> line 270, in extractor
>     min_indx, max_indx = check_bounds(indices, N)
>   File
> "/share/apps2/anaconda/anaconda3/latest/envs/neuroimaging/lib/python3.6/site-packages/scipy/sparse/csr.py",
> line 256, in check_bounds
>     raise IndexError('index (%d) out of range' % max_indx)
> IndexError: index (160155) out of range
>
> The dataset consists of 48 subjects out of which 4 subjects have this
> problem. I have checked the Freesurfer reconstruction of these subjects and
> they look OK. Do you happen to know what could have gone wrong here? Or do
> you have any ideas on where I should start looking for errors?
>
> Thank you!
> - Emilia
>
> _______________________________________________
> Mne_analysis mailing list
> Mne_analysis at nmr.mgh.harvard.edu
> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20190626/200670b6/attachment.html 


More information about the Mne_analysis mailing list