[Mne_analysis] Mne_analysis Digest, Vol 150, Issue 40

Brunner, Clemens (clemens.brunner@uni-graz.at) clemens.brunner at uni-graz.at
Fri Jul 24 03:50:41 EDT 2020
Search archives:

        External Email - Use Caution        

Hi Rodney!

Yes, definitely. Given that the terms resampling, downsampling, upsampling, and decimation are ambiguous even in the signal processing literature, we will add a clarification/statement on how we define these terms in MNE.

Clemens



> On 24.07.2020, at 03:55, balandongiv at gmail.com wrote:
> 
>        External Email - Use Caution        
> 
> Dear Clemens, Larson, Phillip,
> 
> Thanks for the detail explanation, really appreciate it.
> 
> Just a suggestion, maybe part of the discussion can be incorporated
> somewhere along with mne FAQ or equivalent. This might be helpful,
> especially to those new in the field.
> 
> Rodney
> 
> 
> -----Original Message-----
> From: mne_analysis-bounces at nmr.mgh.harvard.edu
> <mne_analysis-bounces at nmr.mgh.harvard.edu> On Behalf Of
> mne_analysis-request at nmr.mgh.harvard.edu
> Sent: Thursday, 23 July, 2020 9:10 PM
> To: mne_analysis at nmr.mgh.harvard.edu
> Subject: Mne_analysis Digest, Vol 150, Issue 40
> 
> Send Mne_analysis mailing list submissions to
> 	mne_analysis at nmr.mgh.harvard.edu
> 
> To subscribe or unsubscribe via the World Wide Web, visit
> 	https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
> or, via email, send a message with subject or body 'help' to
> 	mne_analysis-request at nmr.mgh.harvard.edu
> 
> You can reach the person managing the list at
> 	mne_analysis-owner at nmr.mgh.harvard.edu
> 
> When replying, please edit your Subject line so it is more specific than
> "Re: Contents of Mne_analysis digest..."
> 
> 
> Today's Topics:
> 
>   1. Re: Why does MNE resample method does not sample the data
>      point to point? (Eric Larson)
>   2. Re: Why does MNE resample method does not sample the data
>      point to point? (Brunner, Clemens (clemens.brunner at uni-graz.at))
>   3. Re: Why does MNE resample method does not sample the data
>      point to point? (Phillip Alday)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Thu, 23 Jul 2020 08:40:56 -0400
> From: Eric Larson <larson.eric.d at gmail.com>
> Subject: Re: [Mne_analysis] Why does MNE resample method does not
> 	sample the data point to point?
> To: Discussion and support forum for the users of MNE Software
> 	<mne_analysis at nmr.mgh.harvard.edu>
> Message-ID:
> 	<CAGu2niVV+79nq5Yu17B4VzB3PS71x7sFTy8HKNukDxnaDdi6hQ at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
>        External Email - Use Caution        
> 
>> 
>> My understanding of downsampling is that it is an operation to 
>> decrease the sample rate of x by keeping the first sample and then 
>> every nth sample after the first.
>> 
> 
> Resampling typically consists of two steps: low-pass filtering to avoid
> aliasing, then sample rate reduction (subselecting samples from the
> resulting signal). The low-passing actually changes the values, so the
> subselection-of-filtered-data step will not necessarily yield points that
> were "on" the original signal.
> 
> 
>> May I know whether this issue is due to the ringing artifacts or due 
>> to other problems?
>> 
> 
> In this case it's likely due to the (implicit) low-pass filtering in the
> frequency-domain resampling of the signal. It looks pretty reasonable to me.
> If you want to play around with it a bit, you can
> 
> 1. Call scipy.signal.resample directly on your data and see how closely it
> matches.
> 2. Pad your signal, call scipy.signal.resample, and remove the (now
> reduced-length) padding -- this is what MNE does internally.
> 3. Use scipy.signal.resample_poly directly on your data.
> 4. Manually low-pass filter and then directly subselect samples from the
> low-passed signal, which is what resample_poly does internally.
> 
> Hopefully these all give similar results for your signal(s).
> 
> Eric
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20200723/
> a8812d4e/attachment-0001.html 
> 
> ------------------------------
> 
> Message: 2
> Date: Thu, 23 Jul 2020 12:57:29 +0000
> From: "Brunner, Clemens (clemens.brunner at uni-graz.at)"
> 	<clemens.brunner at uni-graz.at>
> Subject: Re: [Mne_analysis] Why does MNE resample method does not
> 	sample the data point to point?
> To: Discussion and support forum for the users of MNE Software
> 	<mne_analysis at nmr.mgh.harvard.edu>
> Message-ID: <21199B34-7BD6-4C1B-81CC-749DFB86E3FC at uni-graz.at>
> Content-Type: text/plain; charset="us-ascii"
> 
>        External Email - Use Caution        
> 
> Also note that the resample example
> (https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.resample.
> html) shows upsampling, i.e. the data has a lower sampling rate than the
> resampled result. However, in the case of downsampling it is usually
> necessary to avoid aliasing of frequencies above the resampled Nyquist
> frequency. Therefore, the signal is typically low-pass filtered before the
> resampling step. As Eric mentioned, this anti-aliasing filter is what
> actually changes the signal values, but it is necessary to avoid aliasing
> artifacts.
> 
> AFAIK, scipy.signal.resample doesn't include an anti-aliasing filter, but
> both scipy.signal.resample_poly as well as scipy.signal.decimate apply such
> a low-pass filter before resampling. That's also what MNE does.
> 
> Clemens
> 
> 
>> On 23.07.2020, at 14:40, Eric Larson <larson.eric.d at gmail.com> wrote:
>> 
>>        External Email - Use Caution        
>> 
>> 
>> My understanding of downsampling is that it is an operation to decrease
> the sample rate of x by keeping the first sample and then every nth sample
> after the first.
>> 
>> Resampling typically consists of two steps: low-pass filtering to avoid
> aliasing, then sample rate reduction (subselecting samples from the
> resulting signal). The low-passing actually changes the values, so the
> subselection-of-filtered-data step will not necessarily yield points that
> were "on" the original signal.
>> 
>> May I know whether this issue is due to the ringing artifacts or due to
> other problems?
>> 
>> In this case it's likely due to the (implicit) low-pass filtering in 
>> the frequency-domain resampling of the signal. It looks pretty 
>> reasonable to me. If you want to play around with it a bit, you can
>> 
>> 1. Call scipy.signal.resample directly on your data and see how closely it
> matches.
>> 2. Pad your signal, call scipy.signal.resample, and remove the (now
> reduced-length) padding -- this is what MNE does internally.
>> 3. Use scipy.signal.resample_poly directly on your data.
>> 4. Manually low-pass filter and then directly subselect samples from the
> low-passed signal, which is what resample_poly does internally.
>> 
>> Hopefully these all give similar results for your signal(s).
>> 
>> Eric
>> 
>> _______________________________________________
>> Mne_analysis mailing list
>> Mne_analysis at nmr.mgh.harvard.edu
>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
> 
> 
> 
> 
> 
> ------------------------------
> 
> Message: 3
> Date: Thu, 23 Jul 2020 15:09:44 +0200
> From: Phillip Alday <phillip.alday at mpi.nl>
> Subject: Re: [Mne_analysis] Why does MNE resample method does not
> 	sample the data point to point?
> To: Discussion and support forum for the users of MNE Software
> 	<mne_analysis at nmr.mgh.harvard.edu>, "Brunner, Clemens
> 	(clemens.brunner at uni-graz.at)" <clemens.brunner at uni-graz.at>
> Message-ID: <16e39842-34bd-465d-9491-b5651302add4 at mpi.nl>
> Content-Type: text/plain; charset="utf-8"
> 
>        External Email - Use Caution        
> 
> I think the up- vs. downsampling distinction is also really important for
> expectations here, as is the distinction between decimating and resampling
> (I recall there was a thread about that a few years back with similar
> confusion, if somebody wants to do the effort of searching for it)
> 
> Phillip
> 
> On 23/7/20 2:57 pm, Brunner, Clemens (clemens.brunner at uni-graz.at) wrote:
>>        External Email - Use Caution        
>> 
>> Also note that the resample example
> (https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.resample.
> html) shows upsampling, i.e. the data has a lower sampling rate than the
> resampled result. However, in the case of downsampling it is usually
> necessary to avoid aliasing of frequencies above the resampled Nyquist
> frequency. Therefore, the signal is typically low-pass filtered before the
> resampling step. As Eric mentioned, this anti-aliasing filter is what
> actually changes the signal values, but it is necessary to avoid aliasing
> artifacts.
>> 
>> AFAIK, scipy.signal.resample doesn't include an anti-aliasing filter, but
> both scipy.signal.resample_poly as well as scipy.signal.decimate apply such
> a low-pass filter before resampling. That's also what MNE does.
>> 
>> Clemens
>> 
>> 
>>> On 23.07.2020, at 14:40, Eric Larson <larson.eric.d at gmail.com> wrote:
>>> 
>>>        External Email - Use Caution        
>>> 
>>> 
>>> My understanding of downsampling is that it is an operation to decrease
> the sample rate of x by keeping the first sample and then every nth sample
> after the first.
>>> 
>>> Resampling typically consists of two steps: low-pass filtering to avoid
> aliasing, then sample rate reduction (subselecting samples from the
> resulting signal). The low-passing actually changes the values, so the
> subselection-of-filtered-data step will not necessarily yield points that
> were "on" the original signal.
>>> 
>>> May I know whether this issue is due to the ringing artifacts or due to
> other problems?
>>> 
>>> In this case it's likely due to the (implicit) low-pass filtering in 
>>> the frequency-domain resampling of the signal. It looks pretty 
>>> reasonable to me. If you want to play around with it a bit, you can
>>> 
>>> 1. Call scipy.signal.resample directly on your data and see how closely
> it matches.
>>> 2. Pad your signal, call scipy.signal.resample, and remove the (now
> reduced-length) padding -- this is what MNE does internally.
>>> 3. Use scipy.signal.resample_poly directly on your data.
>>> 4. Manually low-pass filter and then directly subselect samples from the
> low-passed signal, which is what resample_poly does internally.
>>> 
>>> Hopefully these all give similar results for your signal(s).
>>> 
>>> Eric
>>> 
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>> 
>> 
>> _______________________________________________
>> Mne_analysis mailing list
>> Mne_analysis at nmr.mgh.harvard.edu
>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
> 
> 
> 
> ------------------------------
> 
> _______________________________________________
> Mne_analysis mailing list
> Mne_analysis at nmr.mgh.harvard.edu
> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
> 
> End of Mne_analysis Digest, Vol 150, Issue 40
> *********************************************
> 
> 
> _______________________________________________
> Mne_analysis mailing list
> Mne_analysis at nmr.mgh.harvard.edu
> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis





More information about the Mne_analysis mailing list