[Mne_analysis] Strange errors with calculating source estimates in a frequency band
Mainak Jas
mainakjas at gmail.com
Fri Aug 1 07:08:00 EDT 2014
I had a look at the script together with Sebastian. This works:
for ii, ep in enumerate(epochs):
stc = compute_source_psd_epochs(epochs=ep ..., return_generator=False)
but setting return_generator=True does not work. I suspect it returns an
empty generator but maybe others have more insight.
Mainak
On Fri, Aug 1, 2014 at 10:06 AM, Silfverberg Sebastian <
sebastian.silfverberg at aalto.fi> wrote:
> Eric:
>
> I have tried to use the events with which I have determined the epochs
> which has 99 events. That didn't work so I tried to make another events
> with just one event with this:
>
> # make the 2D epoch to 3D (because the EpochsArray has to be
> given 3D data
>
> ep = ep[newaxis, ...]
>
> new_event_list = np.empty([1, 3])
> new_event_list[0] = [event_list[ii][0], 0, 10] # put here the
> measurement recording start time.
> # Make your own filepath to which to make the event
> fname_new_event = 'FILEPATH'
>
> # Write the event
> write_events(fname_new_event, new_event_list)
>
> # Finally make the event
> new_events = read_events(fname_new_event)
>
> and from here on I use the EpochsArray and compute_source_psd_epochs.
>
> Mainak:
>
> I tried your suggestion and that doesn't work either:
>
> AttributeError Traceback (most recent call last)
>
> /usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in
> execfile(fname, *where)
> 173 else:
> 174 filename = fname
> --> 175 __builtin__.execfile(filename, *where)
>
> /home/silfves1/mne-python/examples/omatfunktiot/jatk_off.py in <module>()
> 345 # for ii, ep in enumerate(epochs.get_data()):
>
> 346 for ii, ep in enumerate(epochs):
> --> 347 stc = compute_source_psd_epochs(epochs=ep,
> inverse_operator=inverse_operator, lambda2=lambda2, method=method,
> fmin=15.0, fmax=25.0, pick_ori=None, pca=True, bandwidth=bandwidth,
> n_jobs=10, return_generator=False)
> 348
> 349 # make the 2D epoch to 3D
>
>
>
> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
> in compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
> low_bias, return_generator, n_jobs, verbose, pick_normal)
>
> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/utils.pyc
> in verbose(function, *args, **kwargs)
> 549 return ret
> 550 else:
> --> 551 ret = function(*args, **kwargs)
> 552 return ret
> 553
>
> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
> in compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
> low_bias, return_generator, n_jobs, verbose, pick_normal)
> 669 # return a list
>
> 670 stcs = list()
> --> 671 for stc in stcs_gen:
> 672 stcs.append(stc)
> 673
>
> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
> in _compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
> low_bias, n_jobs, verbose)
> 483 # Pick the correct channels from the data
>
> 484 #
>
> --> 485 sel = _pick_channels_inverse_operator(epochs.ch_names, inv)
> 486 logger.info('Picked %d channels from the data' % len(sel))
> 487 logger.info('Computing inverse...')
>
> AttributeError: 'numpy.ndarray' object has no attribute 'ch_names'
>
> because then the compute_source_psd_epochs uses a numpy array as an epoch.
>
> Sebastian
>
>
> ------------------------------
> *Lähettäjä:* mne_analysis-bounces at nmr.mgh.harvard.edu [
> mne_analysis-bounces at nmr.mgh.harvard.edu] käyttäjän Mainak Jas [
> mainakjas at gmail.com] puolesta
> *Lähetetty:* 1. elokuuta 2014 1:20
>
> *Vastaanottaja:* Discussion and support forum for the users of MNE
> Software
> *Aihe:* Re: [Mne_analysis] Strange errors with calculating source
> estimates in a frequency band
>
> Also, can you try something like this?
>
> for ii, ep in enumerate(epochs):
> stc = compute_source_psd_epochs(epochs=ep ...)
>
> which would not require EpochsArray.
>
> Mainak
>
>
> On Thu, Jul 31, 2014 at 11:31 PM, Eric Larson <larson.eric.d at gmail.com>
> wrote:
>
>> What are you using for `events`? It should have the same number of
>> entries as the number of epochs (1), I suspect it might not. (We should
>> probably add a check in mne-python that this is the case...)
>>
>> Eric
>>
>>
>> On Thu, Jul 31, 2014 at 3:37 AM, Silfverberg Sebastian <
>> sebastian.silfverberg at aalto.fi> wrote:
>>
>>> This next snippet is from the offline version I've been testing:
>>>
>>>
>>> for ii, data in enumerate(epochs.get_data()):
>>>
>>> # make the 2D epoch to 3D
>>>
>>> data = data[newaxis, ...]
>>>
>>> ep = EpochsArray(data=data, info=raw.info, events=events,
>>> tmin=0,event_id=event_id, reject=reject)
>>>
>>> stc = compute_source_psd_epochs(epochs=ep,
>>> inverse_operator=inverse_operator, lambda2=lambda2,method=method,
>>> fmin=15.0, fmax=25.0, pick_ori=None, pca=True,
>>>
>>> bandwidth=bandwidth, n_jobs=10,
>>> return_generator=False)
>>>
>>> and the error comes in the last command.
>>>
>>> What is the best way to iterate over rt_epochs? rt.epochs.next()? I'm
>>> now doing just
>>>
>>> for ii, data in enumerate(rt_epochs):
>>>
>>>
>>> Sebastian
>>>
>>> ------------------------------
>>> *Lähettäjä:* mne_analysis-bounces at nmr.mgh.harvard.edu [
>>> mne_analysis-bounces at nmr.mgh.harvard.edu] käyttäjän Mainak Jas [
>>> mainakjas at gmail.com] puolesta
>>> *Lähetetty:* 31. heinäkuuta 2014 12:22
>>> *Vastaanottaja:* Discussion and support forum for the users of MNE
>>> Software
>>> *Aihe:* Re: [Mne_analysis] Strange errors with calculating source
>>> estimates in a frequency band
>>>
>>> Hi Sebastian,
>>>
>>> It seems to me that you are somehow iterating over the epochs and stc
>>> objects incorrectly. You do not need to use EpochsArray because you can
>>> iterate over the Epochs object directly (same with RtEpochs I think). For
>>> stc, if you have a single epoch, can you check if your iterations are
>>> correct?
>>>
>>> A small code snippet / gist that reproduces this issue would be great.
>>>
>>> Mainak
>>>
>>>
>>> On Thu, Jul 31, 2014 at 9:14 AM, Silfverberg Sebastian <
>>> sebastian.silfverberg at aalto.fi> wrote:
>>>
>>>> Hi everyone!
>>>>
>>>> I have been trying to code a program that would enable to plot user
>>>> selectable time windows of averaged source estimates in a certain frequency
>>>> band in real time with FieldTrip Buffer. I'm now trying to simulate that in
>>>> offline mode with looping through the epochs.get_data() and then building
>>>> an Epoch from a single epoch with EpochsArray (because that's the way the
>>>> real time sytem works). I end up with a couple of odd errors using
>>>> *compute_source_psd_epochs* depending on how long my time window is. If
>>>> my time window is shorter than 10 seconds, my error is this:
>>>>
>>>> /usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in
>>>> execfile(fname, *where)
>>>> 173 else:
>>>> 174 filename = fname
>>>> --> 175 __builtin__.execfile(filename, *where)
>>>>
>>>> /home/silfves1/mne-python/examples/omatfunktiot/jatk_off.py in
>>>> <module>()
>>>> 380
>>>> 381
>>>> --> 382 stc = compute_source_psd_epochs(epochs=ep,
>>>> inverse_operator=inverse_operator, lambda2=lambda2, method=method,
>>>> fmin=15.0, fmax=25.0, pick_ori=None, pca=True, bandwidth=bandwidth,
>>>> n_jobs=10, return_generator=False)
>>>> 383
>>>> 384
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
>>>> in compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
>>>> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
>>>> low_bias, return_generator, n_jobs, verbose, pick_normal)
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/utils.pyc
>>>> in verbose(function, *args, **kwargs)
>>>> 549 return ret
>>>> 550 else:
>>>> --> 551 ret = function(*args, **kwargs)
>>>> 552 return ret
>>>> 553
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
>>>> in compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
>>>> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
>>>> low_bias, return_generator, n_jobs, verbose, pick_normal)
>>>> 669 # return a list
>>>>
>>>> 670 stcs = list()
>>>> --> 671 for stc in stcs_gen:
>>>> 672 stcs.append(stc)
>>>> 673
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
>>>> in _compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
>>>> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
>>>> low_bias, n_jobs, verbose)
>>>> 519
>>>> 520 dpss, eigvals = dpss_windows(n_times, half_nbw,
>>>> n_tapers_max,
>>>> --> 521 low_bias=low_bias)
>>>> 522 n_tapers = len(dpss)
>>>> 523
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/time_frequency/multitaper.pyc
>>>> in dpss_windows(N, half_nbw, Kmax, low_bias, interp_from, interp_kind)
>>>> 202 # only calculate the highest Kmax eigenvalues
>>>>
>>>> 203 w = linalg.eigvals_banded(ab, select='i',
>>>> --> 204 select_range=(N - Kmax, N -
>>>> 1))
>>>> 205 w = w[::-1]
>>>> 206
>>>>
>>>> /usr/lib/python2.7/dist-packages/scipy/linalg/decomp.pyc in
>>>> eigvals_banded(a_band, lower, overwrite_a_band, select, select_range)
>>>> 698 return eig_banded(a_band, lower=lower, eigvals_only=1,
>>>> 699 overwrite_a_band=overwrite_a_band,
>>>> select=select,
>>>> --> 700 select_range=select_range)
>>>> 701
>>>> 702 _double_precision = ['i','l','d']
>>>>
>>>> /usr/lib/python2.7/dist-packages/scipy/linalg/decomp.pyc in
>>>> eig_banded(a_band, lower, eigvals_only, overwrite_a_band, select,
>>>> select_range, max_ev)
>>>> 490 vl, vu, il, iu = 0.0, 0.0, min(select_range),
>>>> max(select_range)
>>>> 491 if min(il, iu) < 0 or max(il, iu) >= a1.shape[1]:
>>>> --> 492 raise ValueError('select_range out of bounds')
>>>> 493 max_ev = iu - il + 1
>>>> 494 else: # 1, 'v', 'value'
>>>>
>>>> ValueError: select_range out of bounds
>>>>
>>>>
>>>> However, if my time window is 10 seconds, here's the error then:
>>>>
>>>> error Traceback (most recent call
>>>> last)
>>>> /usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in
>>>> execfile(fname, *where)
>>>> 173 else:
>>>> 174 filename = fname
>>>> --> 175 __builtin__.execfile(filename, *where)
>>>>
>>>> /home/silfves1/mne-python/examples/omatfunktiot/jatk_off.py in
>>>> <module>()
>>>> 380
>>>> 381
>>>> --> 382 stc = compute_source_psd_epochs(epochs=ep,
>>>> inverse_operator=inverse_operator, lambda2=lambda2, method=method,
>>>> fmin=15.0, fmax=25.0, pick_ori=None, pca=True, bandwidth=bandwidth,
>>>> n_jobs=10, return_generator=False)
>>>> 383
>>>> 384
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
>>>> in compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
>>>> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
>>>> low_bias, return_generator, n_jobs, verbose, pick_normal)
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/utils.pyc
>>>> in verbose(function, *args, **kwargs)
>>>> 549 return ret
>>>> 550 else:
>>>> --> 551 ret = function(*args, **kwargs)
>>>> 552 return ret
>>>> 553
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
>>>> in compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
>>>> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
>>>> low_bias, return_generator, n_jobs, verbose, pick_normal)
>>>> 669 # return a list
>>>>
>>>> 670 stcs = list()
>>>> --> 671 for stc in stcs_gen:
>>>> 672 stcs.append(stc)
>>>> 673
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/minimum_norm/time_frequency.pyc
>>>> in _compute_source_psd_epochs(epochs, inverse_operator, lambda2, method,
>>>> fmin, fmax, pick_ori, label, nave, pca, inv_split, bandwidth, adaptive,
>>>> low_bias, n_jobs, verbose)
>>>> 545
>>>> 546 # compute tapered spectra in sensor space
>>>>
>>>> --> 547 x_mt, freqs = _mt_spectra(data, dpss, sfreq)
>>>> 548
>>>> 549 if k == 0:
>>>>
>>>> /home/silfves1/.local/lib/python2.7/site-packages/mne-0.8.git-py2.7.egg/mne/time_frequency/multitaper.pyc
>>>> in _mt_spectra(x, dpss, sfreq, n_fft)
>>>> 439 # remove mean (do not use in-place subtraction as it may
>>>> modify input x)
>>>>
>>>> 440 x = x - np.mean(x, axis=-1)[:, np.newaxis]
>>>> --> 441 x_mt = fftpack.fft(x[:, np.newaxis, :] * dpss, n=n_fft)
>>>> 442
>>>> 443 # only keep positive frequencies
>>>>
>>>>
>>>> /usr/lib/python2.7/dist-packages/scipy/fftpack/basic.pyc in fft(x, n,
>>>> axis, overwrite_x)
>>>> 213
>>>> 214 if axis == -1 or axis == len(tmp.shape) - 1:
>>>> --> 215 return work_function(tmp,n,1,0,overwrite_x)
>>>> 216
>>>> 217 tmp = swapaxes(tmp, axis, -1)
>>>>
>>>> error: failed in converting 1st argument `x' of _fftpack.zrfft to
>>>> C/Fortran array
>>>>
>>>> I don't know, why these error come up. Do some of you have any ideas to
>>>> help? Thank you so much!
>>>>
>>>> Best regards
>>>>
>>>> Sebastian
>>>>
>>>> _______________________________________________
>>>> 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.
>>
>>
>
> _______________________________________________
> 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/20140801/6444bade/attachment.html
More information about the Mne_analysis
mailing list