Comments (3)
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.
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:
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cato.