[Mne_analysis] Grand average of evoked files?

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

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/924703c6/attachment.html 


More information about the Mne_analysis mailing list