OverLordGoldDragon / ssqueezepy

Synchrosqueezing, wavelet transforms, and time-frequency analysis in Python
MIT License
643 stars 96 forks source link

Real-world tests #9

Open OverLordGoldDragon opened 4 years ago

OverLordGoldDragon commented 4 years ago

Thread for sharing/discussing applications on real-world data. Feel free to open a separate Issue if needed.

Comments occasionally cleared to keep focus on examples.

OverLordGoldDragon commented 4 years ago

@DavidBondesson1 Done learning; synchrosqueezing is fairly ingenious.

Before the first release I'd like to iron-out all key implementation details and write an explanatory post on SSWT. Shouldn't take very long, but it'd help to run some tests on real data before the release; if I supply code with fixes that only requires inputting data (e.g. test(x)), and outputs images and text, could you run it?

In the meantime, stay clear of opts={'findbins':'min'}, it's very wrong, and possibly {'squeezing':'measure'}; I'll be fixing these.

DavidBondesson1 commented 4 years ago

@OverLordGoldDragon : Sure, I would be happy to.

Haven't got the OK I want before sharing signals all together, but worst case I am certain that I can tweak them slightly to the point where they are still 'realistic'. Do you have any soft deadline for when you want to/can release?

OverLordGoldDragon commented 4 years ago

@DavidBondesson1 Sounds good. Though you may not have to tweak much; I mainly seek .png images or otherwise outputs that are very lossy and won't permit accurate reconstructions. Still, I'll explicitly clarify what I look for in code comments so you can note if there are significant deviations.

No carved deadline, but probably a week max. I validated synsq_cwt_fwd is good to go as-is, so long as you only tweak opts pertinent to wfiltfn. A detail, you may need to replace _vectorized with _for_loop for large inputs, as former uses much more memory. I'll share test code when ready.

DavidBondesson1 commented 4 years ago

Ok, Sounds good!

I will try my best to get this done within a week but I am dealing with several large projects at the moment (both professional and personal) and if I won't make it in time I would ask you that you just continue the release.

OverLordGoldDragon commented 3 years ago

EEG. abs, abs, .real -- flipud(Tx) -- Complex morlet, mu=6, nv=32.

image

Interesting to observe Tx moving most low-frequency content upward, sparsifying the representation, allowing compression or relaxing CWT computation on higher scales. It also populates higher frequencies, making better use of 2D space than CWT did (as latter includes non-significant yet non-trivial components that can't be just dropped).

OverLordGoldDragon commented 3 years ago

Will occasionally clear comments to focus thread on examples rather than side-discussion.

RockBrentwood commented 2 years ago

As promised (in a StackExchange thread) ... some examples for you to use for testing (and comparison) and as examples and to add to your test suite or examples archive. Just grab the sounds from the videos.

15 second segment of a drum solo at 1/4 speed https://www.youtube.com/watch?v=6orozX1GD1w

(House music with preacher talking) https://www.youtube.com/watch?v=nd2J4xTrSHQ

(The drum at full and 1/4 speed, a segment of the 2001 theme and the House segment with preacher at full and 1/4 speed) https://www.youtube.com/watch?v=itUSUau6DJM

((The Vampire Song) https://www.youtube.com/watch?v=OugT7uGGtNg

You may want to consider expanding your software to include a fuller range of transforms (or to use for comparison). The time-scale transform, which the videos show an early implementation of (in the process of being upgraded), is described in more detail in the description page of the Vampire Song. Its main property is that it is invariant with respect to arbitrary frequency reassignment (e.g. even a random scrambling of frequencies): an arbitrarily-reassigned scalogram will yield, upon inversion, the same result as the original scalogram - both reproducing the original signal.