[Mne_analysis] How to get coherence between stc files?

Jaakko Leppakangas jaeilepp at gmail.com
Fri Jun 16 09:23:13 EDT 2017
Search archives:

Hi Maria,

regarding the error, I couldn't replicate it myself and I don't see any
problems with your code (except that indices does not include 0 and 160).
My hunch is however, that the problem is that the allocation fails to
recognize the relevant channels. You could try dropping the irrelevant
channels from the epochs before concatenating the data to see if it works
(probably something like epochs.pick_types(meg=True)).

-Jaakko

On Fri, Jun 16, 2017 at 7:19 AM, Maria Hakonen <maria.hakonen at gmail.com>
wrote:

> Hi Eric,
>
>
> Many thanks for your answer!
>
>
> I managed to combine the data as follows:
>
>
> data=np.concatenate((epochs_1.get_data(),epochs_2.get_data()),axis=0)
>
> data.shape
>
> Out[28]: (320, 308, 3721)
>
>
> I am not sure how the parameter “indices” should be set in my case. I
> would like to calculate the coherence between each data point in the file 1
> and the corresponding data points in the file 2. Since I have 320 epochs
> after concatenation, I tried:
>
> indices=(np.arange(1,160),np.arange(161,320)) (i.e. 160 epochs in each
> file).
>
>
> However, this doesn’t seem to work:
>
>
> “Connectivity computation...
>
>     computing connectivity for 159 connections
>
>     using t=0.000s..3.100s for estimation (3721 points)
>
>     computing connectivity for the bands:
>
>      band 1: 8.1Hz..12.9Hz (16 points)
>
>      band 2: 13.2Hz..30.0Hz (53 points)
>
>     connectivity scores will be averaged for each band
>
>     using FFT with a Hanning window to estimate spectra
>
>     the following metrics will be computed: Coherence
>
>     computing connectivity for epoch 1
>
> ------------------------------------------------------------
> ---------------
>
> ValueError                                Traceback (most recent call
> last)
>
> <ipython-input-13-fa5b026adea8> in <module>()
>
>       1 coh, freqs, times, n_epochs, n_tapers = spectral_connectivity(
>
>       2     data, indices = indices, method='coh', mode='fourier',
>
> ----> 3     sfreq=sfreq, fmin=fmin, fmax=fmax, faverage=True, n_jobs=1)
>
>
>
> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-
> packages/mne-0.11.dev0-py2.7.egg/mne/connectivity/spectral.pyc in
> spectral_connectivity(data, method, indices, sfreq, mode, fmin, fmax,
> fskip, faverage, tmin, tmax, mt_bandwidth, mt_adaptive, mt_low_bias,
> cwt_frequencies, cwt_n_cycles, block_size, n_jobs, verbose)
>
>
>
> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-
> packages/mne-0.11.dev0-py2.7.egg/mne/utils.pyc in verbose(function,
> *args, **kwargs)
>
>     549         finally:
>
>     550             set_log_level(old_level)
>
> --> 551     return function(*args, **kwargs)
>
>     552
>
>     553
>
>
>
> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-
> packages/mne-0.11.dev0-py2.7.egg/mne/connectivity/spectral.pyc in
> spectral_connectivity(data, method, indices, sfreq, mode, fmin, fmax,
> fskip, faverage, tmin, tmax, mt_bandwidth, mt_adaptive, mt_low_bias,
> cwt_frequencies, cwt_n_cycles, block_size, n_jobs, verbose)
>
>     977                     freq_mask, mt_adaptive, idx_map, block_size,
> psd,
>
>     978                     accumulate_psd, con_method_types, con_methods,
>
> --> 979                     n_signals, n_times, accumulate_inplace=True)
>
>     980                 epoch_idx += 1
>
>     981         else:
>
>
>
> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-
> packages/mne-0.11.dev0-py2.7.egg/mne/connectivity/spectral.pyc in
> _epoch_spectral_connectivity(data, sig_idx, tmin_idx, tmax_idx, sfreq,
> mode, window_fun, eigvals, wavelets, freq_mask, mt_adaptive, idx_map,
> block_size, psd, accumulate_psd, con_method_types, con_methods, n_signals,
> n_times, accumulate_inplace)
>
>     408     if accumulate_psd:
>
>     409         if accumulate_inplace:
>
> --> 410             psd += this_psd
>
>     411         else:
>
>     412             psd = this_psd
>
>
>
> ValueError: operands could not be broadcast together with shapes (318,69)
> (306,69) (318,69)”
>
>
> Also, the documentation of mne.connectivity.spectral_connectivity says:
>
>
> “*data* : array-like, shape=(n_epochs, n_signals, n_times) | Epochs
>
> The data from which to compute connectivity. Note that it is also possible
> to combine multiple signals by providing a list of tuples, e.g., data =
> [(arr_0, stc_0), (arr_1, stc_1), (arr_2, stc_2)], corresponds to 3 epochs,
> and arr_* could be an array with the same number of time points as stc_*.
> The array-like object can also be a list/generator of array, shape
> =(n_signals, n_times), or a list/generator of SourceEstimate or
> VolSourceEstimate objects.”
>
>
> Does this mean that I should use tuples and stc files if I want to compute
> the coherence between two data files measured in two different condition?
> Unfortunately, I haven’t managed to figure out what arr_0, arr1 and arr2
> would be in my case.
>
>
> Many thanks already in advance if you could help!
>
>
> Best,
>
> Maria
>
> 2017-06-15 20:37 GMT+03:00 Eric Larson <larson.eric.d at gmail.com>:
>
>> After this line:
>>
>> stcs=np.concatenate((stc_1.data,stc_2.data),axis=0)
>>
>>>> You will have stcs.shape == (40968, n_times).
>>
>> However, for `spectral_connectivity`, the `data` argument needs to be of
>> shape (n_epochs, n_signals, n_times), i.e. you need multiple
>> epochs/trials. Here you appear to only have 1.
>>
>> HTH,
>> Eric
>>
>>
>> On Thu, Jun 15, 2017 at 11:53 AM, Maria Hakonen <maria.hakonen at gmail.com>
>> wrote:
>>
>>> Dear mne experts,
>>>
>>> In an example “Compute coherence in source space using a MNE inverse
>>> solution” mne.connectivity.spectral_connectivity is used to compute the
>>> coherence between a seed in the left auditory cortex and the rest of the
>>> brain based on single-trial MNE-dSPM inverse solutions. However, I would
>>> like to use mne.connectivity.spectral_connectivity to compute the
>>> coherence between two stc files measured in two different conditions.
>>>
>>> I have tried to do this as follows:
>>> stcs=np.concatenate((stc_1.data,stc_2.data),axis=0)
>>> stcs=stcs.tolist()
>>> indices=(np.arange(1,20484),np.arange(20485,40968)) (I would like to
>>> get the coherence between each vertex in stc1 and the corresponding
>>> vertices in stc2)
>>> coh, freqs, times, n_epochs, n_tapers = spectral_connectivity(
>>>     stcs, method='coh', mode='fourier', indices=indices,
>>>     sfreq=sfreq, fmin=fmin, fmax=fmax, faverage=True, n_jobs=1)
>>>
>>> However, I get:
>>>
>>> Connectivity computation...
>>> ------------------------------------------------------------
>>> ---------------
>>> AttributeError                            Traceback (most recent call
>>> last)
>>> <ipython-input-40-139613d5f602> in <module>()
>>>       1 coh, freqs, times, n_epochs, n_tapers = spectral_connectivity(
>>>       2     stcs, method='coh', mode='fourier', indices=indices,
>>> ----> 3     sfreq=sfreq, fmin=fmin, fmax=fmax, faverage=True, n_jobs=1)
>>>
>>> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-pack
>>> ages/mne-0.11.dev0-py2.7.egg/mne/connectivity/spectral.pyc in
>>> spectral_connectivity(data, method, indices, sfreq, mode, fmin, fmax,
>>> fskip, faverage, tmin, tmax, mt_bandwidth, mt_adaptive, mt_low_bias,
>>> cwt_frequencies, cwt_n_cycles, block_size, n_jobs, verbose)
>>>
>>> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-pack
>>> ages/mne-0.11.dev0-py2.7.egg/mne/utils.pyc in verbose(function, *args,
>>> **kwargs)
>>>     549         finally:
>>>     550             set_log_level(old_level)
>>> --> 551     return function(*args, **kwargs)
>>>     552
>>>     553
>>>
>>> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-pack
>>> ages/mne-0.11.dev0-py2.7.egg/mne/connectivity/spectral.pyc in
>>> spectral_connectivity(data, method, indices, sfreq, mode, fmin, fmax,
>>> fskip, faverage, tmin, tmax, mt_bandwidth, mt_adaptive, mt_low_bias,
>>> cwt_frequencies, cwt_n_cycles, block_size, n_jobs, verbose)
>>>     772             # get the data size and time scale
>>>     773             n_signals, n_times_in, times_in = \
>>> --> 774                 _get_and_verify_data_sizes(first_epoch)
>>>     775
>>>     776             if times_in is None:
>>>
>>> /share/apps/mne/mne-python/python2.7/lib/python2.7/site-pack
>>> ages/mne-0.11.dev0-py2.7.egg/mne/connectivity/spectral.pyc in
>>> _get_and_verify_data_sizes(data, n_signals, n_times, times)
>>>     479     n_signals_tot = 0
>>>     480     for this_data in data:
>>> --> 481         this_n_signals, this_n_times = this_data.shape
>>>     482         if n_times is not None:
>>>     483             if this_n_times != n_times:
>>>
>>> AttributeError: 'float' object has no attribute 'shape'
>>>
>>> Could someone please let me know what I am doing wrong?
>>>
>>> Best,
>>> Maria
>>>
>>>
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>>
>>>
>>> The information in this e-mail is intended only for the person to whom
>>> it is
>>> addressed. If you believe this e-mail was sent to you in error and the
>>> e-mail
>>> contains patient information, please contact the Partners Compliance
>>> HelpLine at
>>> http://www.partners.org/complianceline . If the e-mail was sent to you
>>> in error
>>> but does not contain patient information, please contact the sender and
>>> properly
>>> dispose of the e-mail.
>>>
>>>
>>
>> _______________________________________________
>> Mne_analysis mailing list
>> Mne_analysis at nmr.mgh.harvard.edu
>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>
>>
>> The information in this e-mail is intended only for the person to whom it
>> is
>> addressed. If you believe this e-mail was sent to you in error and the
>> e-mail
>> contains patient information, please contact the Partners Compliance
>> HelpLine at
>> http://www.partners.org/complianceline . If the e-mail was sent to you
>> in error
>> but does not contain patient information, please contact the sender and
>> properly
>> dispose of the e-mail.
>>
>>
>
> _______________________________________________
> Mne_analysis mailing list
> Mne_analysis at nmr.mgh.harvard.edu
> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>
>
> The information in this e-mail is intended only for the person to whom it
> is
> addressed. If you believe this e-mail was sent to you in error and the
> e-mail
> contains patient information, please contact the Partners Compliance
> HelpLine at
> http://www.partners.org/complianceline . If the e-mail was sent to you in
> error
> but does not contain patient information, please contact the sender and
> properly
> dispose of the e-mail.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20170616/c174e490/attachment-0001.html 


More information about the Mne_analysis mailing list