Giter VIP home page Giter VIP logo

Comments (3)

koenhelwegen avatar koenhelwegen commented on August 23, 2024

A secondary issue was introduced by the mirror filtering. In the current implementation, the signal is mirrored both vertically and horizontally 'around' the first and last point. However, if the signal is highly erratic, there is a high probability this mirroring creates jumps (example on the right in image).

It appears that for our use case only mirroring in the time dimension is better.

from cato.

koenhelwegen avatar koenhelwegen commented on August 23, 2024

I compared the current solution as implemented in #28 to Gustafsson's method that is available in scipy.signal.filtfilt. Note that this method is referenced in the MATLAB filtfilt documentation but it appears it is not actually implemented (see also here).

Here are the various options side by side for a few voxels:

If I compute the within-voxel absolute z-scores and then average over all voxels to get a rough metric of how 'exceptional' the timeseries are at the edges, I get for this particular subject:

image

Based on this I don't have a preference for either method. However, I couldn't find a clean implementation of Gustafsson's method for MATLAB, and I would rather avoid implementing our own version, so based on this I suggest we keep the fix as in #28.

from cato.

SiemondeLange avatar SiemondeLange commented on August 23, 2024

Thank you for analyzing and comparing the different methods! I agree with the proposed solution of padding the signal using the the time-mirrored timeseries. This method is might not be perfect, as indicated by the small bumps still visible in the mean absolute z-score plot, but it provides a good balance between retaining as many time points in the analysis and having a well-filtered signal. I will merge #28 into the main branch and release a new update for CATO.

from cato.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.