[Mne_analysis] Time-frequency PSD with CWT (morlet wavelet) in a single trial

Arnaud Ferre arnaud.ferre.pro at gmail.com
Mon Apr 28 05:48:27 EDT 2014
Search archives:

I obtain very good results with just only this linear function:
> n_cycles = freqs.astype(float) / 1.6
I test with a signal composed by 3 sinusoids which contain distinct
fundamental frequencies (10Hz, 50Hz & 100Hz).


2014-04-28 11:06 GMT+02:00 Arnaud Ferre <arnaud.ferre.pro at gmail.com>:

> Hi Denis,
>
> Thank. In fact, you change the value of the number of cycles according to
> fundamental frequency. It was my main problem (in fact, it's interesting to
> see the problem with displaying some wavelets).
> In consequence, I have correct results now, but it seems difficult to have
> a really good resolution on my frequency band (1Hz to 130Hz)... If I
> correctly understood, to improve this resolution, I must continue to find
> better value for the number of cycles. But maybe that the CWT method has
> his limits.
>
> I focus on the adaptation of my particular data in "Raw object" and maybe
> after, I will test with the S-transform.
>
> Best,
> Arnaud
>
>
> 2014-04-24 15:58 GMT+02:00 Denis-Alexander Engemann <
> denis.engemann at gmail.com>:
>
> Hi Arnaud,
>>
>> here's your example with my edits
>>
>> https://gist.github.com/dengemann/11255522
>>
>> Best,
>> Denis
>>
>>
>>
>> On Thu, Apr 24, 2014 at 10:52 AM, Arnaud Ferre <
>> arnaud.ferre.pro at gmail.com> wrote:
>>
>>> Ok, so I'm not far!
>>> In fact, I think that what I see as "residual band" is the correct
>>> thing, but not correctly align with the correct frequency in the y-axis.
>>> The high power band in the bottom could be an artefact in the edge.
>>> So, I'm interested by your edits.
>>> Thank
>>>
>>>
>>> 2014-04-23 18:17 GMT+02:00 Denis A. Engemann <denis.engemann at gmail.com>:
>>>
>>> I was playing a bit with you example and got reasonable results with a
>>>> clear 10 hz modulation using the  single trial tfr function.
>>>> I can share my edits later with you. Btw. why don't we meet at
>>>> Neurospin at some point for lunch or a coffee --- maybe things are easier
>>>> to tackle then.
>>>> For raw and epochs and evoked API take a look here:
>>>>
>>>>
>>>> http://martinos.org/mne/stable/auto_examples/plot_from_raw_to_epochs_to_evoked.html
>>>>
>>>>
>>>> Best,
>>>> Denis
>>>>
>>>> On Apr 23, 2014, at 4:58 PM, Arnaud Ferre <arnaud.ferre.pro at gmail.com>
>>>> wrote:
>>>>
>>>> Hi Denis,
>>>>
>>>> I have tested with single_trial_power() but I obtain exactly the same
>>>> results that my use with _time_frequency(). Here is my code:
>>>> https://gist.github.com/arnaudferre/11215335. I don’t understand what
>>>> the problem is. With a sinusoid, I must have a band of high power around
>>>> the fundamental frequency of the sinusoid, right?
>>>>
>>>>
>>>> For the GUI, I don’t find documentation on the use with Windows. But
>>>> ok, I must compile the sources with the makefile. It’s been a long time
>>>> that I didn’t play with C! But I will try (I believe that I must download
>>>> the software Make to begin). But in fact, I don’t know why I spoke of GUI,
>>>> sorry. I think that I thought at a possibility to play with data directly
>>>> with a GUI in the way that I want.
>>>>
>>>>
>>>> I’m not sure to understand what you name “Raw object”. Is it the name
>>>> of an existing object from MNE? But, with the knowledge of this object, I
>>>> can write a function which return this directly. My problem is that I’m not
>>>> an expert on the data and her format. But if it’s substantially a problem
>>>> of parsing, I can step in the discussion.
>>>>
>>>>
>>>> I read your link on the S-transform. Yes, it could be very interesting
>>>> to test my data with this method. But I must already test older results
>>>> from a study with Fourier Transform. In literature, the wavelet transform
>>>> with morlet wavelet seems to be adequate to my project (Phase-Amplitude
>>>> coupling then cross-frequency coupling). So, I want finish with this method
>>>> to have my first result. But thank you, I keep it in a corner for later.
>>>>
>>>> Best,
>>>> Arnaud
>>>>
>>>>
>>>> 2014-04-23 11:22 GMT+02:00 Denis-Alexander Engemann <
>>>> denis.engemann at gmail.com>:
>>>>
>>>>> Hi Arnaud,
>>>>>
>>>>>
>>>>> On Wed, Apr 23, 2014 at 10:54 AM, Arnaud Ferre <
>>>>> arnaud.ferre.pro at gmail.com> wrote:
>>>>>
>>>>>> Hi Denis,
>>>>>> Thanks for the fast reply.
>>>>>>
>>>>>> Yes I can share my test. Here:
>>>>>> https://gist.github.com/arnaudferre/11206945.
>>>>>>
>>>>>>
>>>>> Thanks, will have a look later.
>>>>>
>>>>>
>>>>>>  Ok, I will try to use single_trial_power() function now.
>>>>>>
>>>>>> For the GUI, unfortunately, I must develop a ‘biologists-friendly’
>>>>>> software. In consequence (and with others constraints), I must develop on
>>>>>> Windows and the GUI doesn’t work on Windows if I have correctly understood.
>>>>>>
>>>>>>
>>>>> Which GUI? The MNE C GUI indeed compile on Windows. However,
>>>>> `mne.gui.coregistration` in Python is supposed to work on Windows.
>>>>>
>>>>>
>>>>>
>>>>>>  For my file format, I have already develop my own functions to
>>>>>> parse the original data (my goal: adapt raw signal to can use just the
>>>>>> useful data). This format can be ‘CED Spike2 SMR files’ or an alternative
>>>>>> in TXT from Local Field Potential acquisition. So, I store the data of a
>>>>>> single trial in a dictionary, then in a pickle file (maybe not a good
>>>>>> idea…).
>>>>>>
>>>>>
>>>>> I agree. I would strongly encourage you to write a custom constructor
>>>>> function that returns a Raw object from your data. We're happy assist you
>>>>> with that Also it would be a great test case for new tools we're about to
>>>>> develop that aim at making exactly this task easier. In fact I need to
>>>>> write a couple of functions very soon that allow me to read in data stored
>>>>> in Mat files. Sounds like that would follow the same logic.
>>>>>
>>>>>
>>>>>> I do this certainly with my personal way. For these reasons, I tried
>>>>>> to adapt the MNE-Python script to read my data. It seems not far yet! But I
>>>>>> don’t know if I can really add idea in your conversation due to these
>>>>>> specific data.
>>>>>>
>>>>>>
>>>>> I think you can. See above. Also we're happy to add support to
>>>>> additional EEG / electrophysiology formats.
>>>>>
>>>>> Anyway, it seems that MNE contains all the tools what we need here.
>>>>>> It’s very encouraging yeah. But, I think we need time to know to use these
>>>>>> tools.
>>>>>>
>>>>>> Arnaud
>>>>>>
>>>>>>
>>>>> FYI something I'm working on at the moment that might also be of
>>>>> interest to you:
>>>>>
>>>>> https://github.com/mne-tools/mne-python/pull/1233
>>>>>
>>>>> Best,
>>>>> Denis
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> 2014-04-19 12:34 GMT+02:00 Denis-Alexander Engemann <
>>>>>> denis.engemann at gmail.com>:
>>>>>>
>>>>>> Hi Arno,
>>>>>>>
>>>>>>> let my reply inline,
>>>>>>>
>>>>>>> On Fri, Apr 18, 2014 at 6:55 PM, Arnaud Ferre <
>>>>>>> arnaud.ferre.pro at gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi all,
>>>>>>>> I work on EEG data in behavioral field. I understand the basics of
>>>>>>>> signal processing and I’m not so bad in Python. But for a beginner like me,
>>>>>>>> MNE-Python is pretty huge. I was advised to use MNE knowing my constraints,
>>>>>>>> but I’m starting to think that it’s maybe too evolved for a non-expert
>>>>>>>> scientist in this field like me.
>>>>>>>>
>>>>>>>  I’m just trying to draw a time-frequency PSD from a single trial
>>>>>>>> with a CWT (with morlet wavelets). I thought to have found what functions
>>>>>>>> used, but in testing my script, I don’t obtain correct result.
>>>>>>>>
>>>>>>>
>>>>>>>> In fact, I tested with a simple sinusoid function with a frequency
>>>>>>>> of 10Hz on 1sec (1000points). I expected to see a lot of "red blobs"
>>>>>>>> aligned on the 10Hz in y-axis but not. I have a continuous and very thin
>>>>>>>> band around 1.5 Hz and a residual band around the 90Hz. I looked the
>>>>>>>> wavelets and it seems fine. What is strange is that I see the correct
>>>>>>>> number of blob, so I think it’s not so far of correct result. In first, I
>>>>>>>> thought of a problem in adjusting my display, but it seems not.
>>>>>>>>
>>>>>>>
>>>>>>> Could you share an example script, e.g. using
>>>>>>> https://gist.github.com/
>>>>>>> That would be very helpful.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> I use mainly the function _time_frequency(data, Ws), one of the
>>>>>>>> functions in tfr.py in mne.time_frequency where data is a 2D-array
>>>>>>>> containing only my signal in data[0].
>>>>>>>>
>>>>>>>> I read this link:
>>>>>>>> http://martinos.org/mne/stable/auto_examples/stats/plot_cluster_1samp_test_time_frequency.html,
>>>>>>>> but as I don’t use data with the standard format, it seemed to me
>>>>>>>> complicated. Moreover, I think that _time_frequency(data, Ws) is just
>>>>>>>> needed to do what I want. And yet, maybe that the specificities of the
>>>>>>>> function single_trial_power in tfr.py is the solution…
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> In fact `single_trial_power` would be the way to go. (
>>>>>>> http://martinos.org/mne/dev/generated/mne.time_frequency.single_trial_power.html#mne.time_frequency.single_trial_power
>>>>>>> )
>>>>>>> In general it's not recommended not use functions starting with
>>>>>>> underscores unless you know exactly what you do. Things are much easier
>>>>>>> once you use the top-level API. Is your file format that prevents you from
>>>>>>> doing this? What kind of EEG  data do you use? We're currently working on
>>>>>>> improving support for custom data:
>>>>>>>
>>>>>>> https://github.com/mne-tools/mne-python/issues/1229
>>>>>>>
>>>>>>> Please feel free to participate in the discussion on Github and tell
>>>>>>> us more about your use case.
>>>>>>>
>>>>>>>
>>>>>>>> Thanks in advance
>>>>>>>> Arnaud
>>>>>>>>
>>>>>>>>
>>>>>>> I hope we can encourage you to keep exploring the new terrain ;-)
>>>>>>>
>>>>>>> Denis
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>>> 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
>>>>
>>>>
>>>> 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/20140428/15c72c5d/attachment.html 


More information about the Mne_analysis mailing list