Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new different and less brutal whitening options #93

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

RensHofman
Copy link

Work in progress.. we'll also need to make whitening a config option to select what whitening method to use..

…ow by other parts of msnoise as default is still 'brutal'
@ThomasLecocq
Copy link
Member

looks really interesting ! thanks !

@@ -56,6 +56,8 @@ class TFilter(HasTraits):
mwcs_wlen = Float
mwcs_step = Float
used = CBool
whitening_method = Str
# XXX do we have to add whitening_method to View??
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, those views were for the TraitsUI, I think

@megies
Copy link

megies commented Apr 27, 2017

We'll try this PR in a live and fresh test setup now..

@megies
Copy link

megies commented Apr 27, 2017

OK, this PR works for us when doing a new MSNoise project from scratch. The new whitening options lack descriptions, maybe @RensHofman can post them here so we can include them. Also names for those whitening methods should be checked, they could be a bit more intuitive/descriptive, I guess. Also, some of these new methods might have some additional parameters that probably should also be in the filter table then..

Also.. @ThomasLecocq, how to handle old MSNoise installations that lack this whitening_method field in the Filters table? Automatically run an upgrading when it's found to be missing?

@ThomasLecocq
Copy link
Member

@megies that could be an option... but for most users, as msnoise has a ~yearly release, they'd just msnoise upgrade_db once and it would work. Not completely sure how to alter the schema in sqlite... it's not always super safe...

I have to say, I like the idea of the whiten-param-in-filter for benchmarking... but there are so many params that could/should be benchmarked that I actually thought of a more general solution of tree-based parametrisation of msnoise, that would allow for changing the duration of each window, the overlap, the stakc method, etc. etc. etc. then the dtt parameters and final dvv estimation... all this with proper bookkeeping...

@ThomasLecocq
Copy link
Member

@rantanplan77 could also input on this as we already discussed benchmarking together

@megies
Copy link

megies commented Apr 27, 2017

Not completely sure how to alter the schema in sqlite... it's not always super safe...

I wouldn't worry to much about sqlite.. I guess you have a big warning sign that it should only be used for testing purposes?

I have to say, I like the idea of the whiten-param-in-filter for benchmarking... but there are so many params that could/should be benchmarked that I actually thought of a more general solution of tree-based parametrisation of msnoise

Yeah.. I agree, many parameters from the general config could be moved to what currently is filter settings..

@ThomasLecocq
Copy link
Member

Yeah.. I agree, many parameters from the general config could be moved to what currently is filter settings..

We already had the remark of "why is mwcs filter definition in the filter settings", indeed, some want to cross-correlate broadband (could be a bad idea) and then check phase shifts in smaller bands...

@rantanplan77
Copy link
Contributor

rantanplan77 commented May 1, 2017

Yeah.. I agree, many parameters from the general config could be moved to what currently is filter settings..

I also think that this is the way to go. We should move as many parameters as possible to the filters and name it scenarios instead of filters.
The whitening option implementation should be straightforward.

We could also include these options for each scenario:

  • components
  • pairs
  • dates
  • corr_duration
  • overlap
  • response removal
  • windsorizing / 1-bit

but this would mean moving the filter-loop outwards. This would therefore lead to longer runtimes. But only then I think it offers true benchmarking of what works best for a specific datasets.
With the dates and pairs I am thinking of simply skipping the jobs for this scenario if the current date/pair is not requested in a specific scenario.

There should also be a fallback in case of opening an old database with a new version, that uses the parameters from the config table if the new fields are not in the filter/scenario table.

@rantanplan77
Copy link
Contributor

and btw I like the new whitening options. I think the names are understandable, ideally this would be documented with plots of the spectrum after each option.

@ThomasLecocq
Copy link
Member

I admit this would be useful for testing/research purposes, but I don't think a single "scenarios" table is the way to go. The reason for this is that the processing steps are separated and you could use some preprocessing parameters, then 2 different filters, each with two different whitening schemes, each with 2 different stacking method, each with two different ref start/end dates, each with 2 different mwcs parameters, each with different dt/t time lags and parameters... This tree of possibility requires the benchmarking logic to be quite more complicated than just moving all elements in "scenarios"...

@megies
Copy link

megies commented May 2, 2017

...yeah.. i agree, a processing scenario would probably be better resembled by a "filter chain" (a filter being just about any single processing step.. filters, whitening, etc..)

@ThomasLecocq
Copy link
Member

ThomasLecocq commented May 2, 2017

actually this was the idea used in Christoph's MIIC:

ftp://ftp.gfz-potsdam.de/home/st/chris/MIIC_Science_Report_2013/MIIC_Science_report.pdf

using blockcanvas from enthougth for the GUI

@rantanplan77
Copy link
Contributor

I see, this tree/chain structure seems logical with this many options to choose. What about using such a tree structure to create the scenario table under the hood? This would still make it possible to deactivate some scenarios rather than using all scenarios (some of which maybe don't make sense to calculate).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants