[Mne_analysis] Grand average of evoked files?

Denis-Alexander Engemann denis.engemann at gmail.com
Thu Sep 11 11:58:32 EDT 2014
Search archives:

Btw. the same logic applies to Label objects,

huge_mega_label = np.sum(label_list)

2014-09-11 17:52 GMT+02:00 Denis-Alexander Engemann <
denis.engemann at gmail.com>:

>
>
> 2014-09-11 17:49 GMT+02:00 Hari Bharadwaj <hari at nmr.mgh.harvard.edu>:
>
>> quick question: why np.sum(.) and not np.mean(.)?
>>
>>
> np.sum accesses the evoked.__iadd__ and eovked.__add__ magic methods.
>
> a sum is a reduction function, the same as
>
> reduce(operator.add, [a, b, c, d, e])
>
> if you think of it in terms of iteration,
> at each step two evokeds are added as specified by their __add__ method.
>
>
>
>> On Thu, September 11, 2014 11:47 am, Denis-Alexander Engemann wrote:
>> > Hi,
>> >
>> > 2014-09-11 17:14 GMT+02:00 Maria Hakonen <maria.hakonen at gmail.com>:
>> >
>> >> Hi,
>> >>
>> >> Is there any function that returns the evoked data array?
>> >>
>> >
>> > If you have evokeds saved in a fiff you can just read them.
>> > If you know the exact condition you want you can pass it to the
>> condition
>> > parameter in mne.read_evokeds and the evoked will be returned without
>> the
>> > list.
>> >
>> > You can also compute the grand average on a list of evokeds
>> >
>> > grand_evoked = np.sum(evokeds)
>> >
>> >
>> >> I have made ica on epochs, evoked them and saved the evoked data. Can I
>> >> use the evoked files in mne python analyses (I would like to try for
>> >> example permutation t-test on source data with spatio-temporal
>> >> clustering
>> >> and plot grand averages) or should I make ica on raw data?
>> >>
>> >
>> > I would compute ICA on raw data which you can then apply at any later
>> > stage
>> > (raw, epochs, evoked).
>> >
>> > -Denis
>> >
>> >
>> >>
>> >> -Maria
>> >>
>> >>
>> >> 2014-09-11 17:36 GMT+03:00 Denis-Alexander Engemann <
>> >> denis.engemann at gmail.com>:
>> >>
>> >>> Maria,
>> >>>
>> >>> I think your trouble is related to the fact that you add together
>> >>> lists,
>> >>> not evokeds.
>> >>> The read_evokeds function returns a list by default. This is because
>> it
>> >>> assumes to find multiple evokeds in one file.
>> >>>
>> >>> HTH,
>> >>> Denis
>> >>>
>> >>> 2014-09-11 16:31 GMT+02:00 Maria Hakonen <maria.hakonen at gmail.com>:
>> >>>
>> >>>> Hi,
>> >>>>
>> >>>> Thank you for answers!
>> >>>>
>> >>>> I tried Mainak's solution but it gives
>> >>>>
>> >>>> grand_ave = evoked1+evoked2 +evoked3
>> >>>>
>> >>>> grand_ave:
>> >>>> [<Evoked  |  comment : 'Unknown', time : [-0.099994, 0.499968],
>> >>>> n_epochs
>> >>>> : 160, n_channels x n_times : 306 x 721>,
>> >>>>  <Evoked  |  comment : 'Unknown', time : [-0.099994, 0.499968],
>> >>>> n_epochs
>> >>>> : 160, n_channels x n_times : 306 x 721>,
>> >>>>  <Evoked  |  comment : 'Unknown', time : [-0.099994, 0.499968],
>> >>>> n_epochs
>> >>>> : 160, n_channels x n_times : 306 x 721>]
>> >>>>
>> >>>> I think that I should get only one evoked if this works correctly.
>> >>>>
>> >>>> Maybe I should try Stephen's solution if there is no simpler ones.
>> >>>>
>> >>>> -Maria
>> >>>>
>> >>>>
>> >>>> 2014-09-11 14:58 GMT+03:00 Stephen Politzer-Ahles <spa268 at nyu.edu>:
>> >>>>
>> >>>>> Hello Maria,
>> >>>>>
>> >>>>> I haven't done this with evoked sensor data, only with STCs.
>> However,
>> >>>>> as long as evoked data also have an 'add' method, I imagine
>> something
>> >>>>> like
>> >>>>> this should work for you as well:
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> stc_avgs = dict()
>> >>>>>
>> >>>>>
>> >>>>> # get a grand average for each condition (I defined a dictionary of
>> >>>>> conditions earlier)
>> >>>>> for condition in conditions.keys():
>> >>>>>
>> >>>>> # where all my STCs for each participant in this condition are
>> stored
>> >>>>> stcdir = os.environ['SAMPLE'] + '/stcs_ica/' + condition
>> >>>>>
>> >>>>> # template for the names of the STCs (I'm only doing left hemi here)
>> >>>>> fname = os.path.join( stcdir, '%s-' + condition + '-free-lh.stc' )
>> >>>>>
>> >>>>> # use a list comprehension to read in the STC for each subject; I
>> >>>>> defined a list of participants earlier)
>> >>>>> stcs = [mne.read_source_estimate(fname % subject) for subject in
>> >>>>> participants]
>> >>>>>
>> >>>>> # math out the grand average
>> >>>>> stc_avg = reduce(add, stcs)
>> >>>>> stc_avg /= len(stcs)
>> >>>>>
>> >>>>> # put the grand average for this condition into a dictionary of all
>> >>>>> the
>> >>>>> conditions
>> >>>>> stc_avg.subject = 'fsaverage'
>> >>>>> stc_avgs[condition] = stc_avg
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> (however, Mainak's solution, if it works, looks much simpler!)
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> Stephen Politzer-Ahles
>> >>>>> New York University, Abu Dhabi
>> >>>>> Neuroscience of Language Lab
>> >>>>> http://www.nyu.edu/projects/politzer-ahles/
>> >>>>>
>> >>>>> On Thu, Sep 11, 2014 at 3:47 PM, Maria Hakonen
>> >>>>> <maria.hakonen at gmail.com
>> >>>>> > wrote:
>> >>>>>
>> >>>>>> Hi all,
>> >>>>>>
>> >>>>>> I would like to compute a grand average of evoked files.
>> >>>>>>
>> >>>>>> It seems to work as: grand_ave = np.mean([evoked1.data,
>> >>>>>> evoked2.data,
>> >>>>>> evoked3.data],1)
>> >>>>>>
>> >>>>>> However, the problem is that if the evoked data is saved as:
>> >>>>>>
>> >>>>>> evoked.save("filename-ave.fif")
>> >>>>>>
>> >>>>>> and loaded as:
>> >>>>>>
>> >>>>>> evoked = mne.read_evokeds("filename-ave.fif")
>> >>>>>>
>> >>>>>> evoked doesn't have attribute data.
>> >>>>>>
>> >>>>>> I also tried:
>> >>>>>> grand_ave = np.mean([evoked1, evoked2, evoked3],1)
>> >>>>>>
>> >>>>>> but this gives an error:
>> >>>>>>
>> >>>>>> TypeError                                 Traceback (most recent
>> >>>>>> call
>> >>>>>> last)
>> >>>>>> /scratch/braindata/mhhakone/intell/<ipython-input-65-f6e26a212f6a>
>> >>>>>> in
>> >>>>>> <module>()
>> >>>>>> ----> 1 grand_ave = np.mean([evoked1, evoked2, evoked3],1)
>> >>>>>>
>> >>>>>> /usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.pyc in
>> >>>>>> mean(a,
>> >>>>>> axis, dtype, out)
>> >>>>>>    2371         mean = a.mean
>> >>>>>>    2372     except AttributeError:
>> >>>>>> -> 2373         return _wrapit(a, 'mean', axis, dtype, out)
>> >>>>>>    2374     return mean(axis, dtype, out)
>> >>>>>>    2375
>> >>>>>>
>> >>>>>> /usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.pyc in
>> >>>>>> _wrapit(obj, method, *args, **kwds)
>> >>>>>>      35     except AttributeError:
>> >>>>>>      36         wrap = None
>> >>>>>> ---> 37     result = getattr(asarray(obj),method)(*args, **kwds)
>> >>>>>>      38     if wrap:
>> >>>>>>      39         if not isinstance(result, mu.ndarray):
>> >>>>>>
>> >>>>>> TypeError: unsupported operand type(s) for /: 'Evoked' and 'float'
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> How can I get data from -ave.fif files? (The -ave.fif files I have
>> >>>>>> saved seems to open correctly in xFit, Matlab and mne_analyze.)
>> >>>>>> Or is there some better way to calculate the grand average of
>> >>>>>> -ave.fif
>> >>>>>> files?
>> >>>>>>
>> >>>>>> Thanks already in advance!
>> >>>>>>
>> >>>>>> Regards,
>> >>>>>> 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.
>> >>>>
>> >>>>
>> >>>
>> >>> _______________________________________________
>> >>> 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
>>
>>
>> --
>> Hari Bharadwaj
>> Post-doctoral Associate,
>> Center for Computational Neuroscience
>>   and Neural Technology (CompNet),
>> Boston University
>> 677 Beacon St.,
>> Boston, MA 02215
>>
>> Martinos Center for Biomedical Imaging,
>> Massachusetts General Hospital
>> 149 Thirteenth Street,
>> Charlestown, MA 02129
>>
>> hari at nmr.mgh.harvard.edu
>> Ph: 734-883-5954
>> www.haribharadwaj.com
>>
>> _______________________________________________
>> 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/20140911/b8131469/attachment.html 


More information about the Mne_analysis mailing list