-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Hi,
I'm very interested in doing shear-wave splitting in Julia, and I found this package some time ago but haven't had the time to play around much yet. Currently, I am processing some results from measurements taken in SplitLab. While SplitLab is very feature-rich, there are many reasons that I want to leave it behind (not least that I much prefer Julia to Matlab).
Over the last couple of years, I toyed with some implementations in Python but found the performance to be unreasonably slow (but I'm certainly no NumPy or SciPy guru). Then I discovered Julia, and now I'm just starting to try a few ideas.
I have a lot of notes floating around that I still need to organize, but my first gripe with the SplitLab style implementation is the results have too many "fields", in Julia-speak. In some cases it's obvious: clearly we don't need to store both an array of timestamp components AND a string representation of the date... but in other cases there are some tricky problems, and I'm still on the fence about many things. For example, I've just uploaded some snippets (no splitting yet) with my idea for a more minimalist Result type. So far, I've only used it to process my SplitLab results in Julia.
From your experience of using shear-wave splitting analysis, do we really need to store:
- the eigenvalues of the grid search matrices
- the cross-correlation matrix
in the final result?
By including references to the original traces in Result it also becomes harder to serialize, I think (although I do have potential references to SeisIO.SeisChannel in mine, I haven't used them so far). On the other hand, information about the time window, frequency band of the filter, resolution of the search (in both dt and phi) are all important and removing them could make the result harder to reproduce.
The question is: where should we draw the line? What information should persist in files/databases? How much could be factored out into a "configuration file" (e.g. resolution parameters?). I think it's worth thinking about, as more shear-wave splitting packages arise, e.g.:
-
SplitPy: https://paudetseis.github.io/SplitPy
Teleseismic SKS splitting in Python using routines based on SplitLab. Issue about persistent result storage.
-
Pytheas: https://github.com/ispingos/pytheas-splitting
Local SKS splitting in Python, with Cluster Analysis and a Qt GUI.
-
SplitWavePy: http://splitwavepy.readthedocs.io
CLI shear-wave splitting routines in Python, built on ObsPy.
Sorry that this was a bit long-winded, and I'm still getting around to the SeisModels PR (I'll look into what exactly I need for the ray tracing first).