dttrugman/GrowClust

Clustering algorithm gives very different clusters when (all) depths are Zero

Closed this issue · 1 comments

Thanks a lot for developing Growclust and making it available!

I just stumbled a bit across one issue when I was trying to relocate a dataset where the event depths are very unsure - i.e., most are either set to 0 or 15 km depth. But as I have reason to suspect that they're all in one tiny cluster, I tried to make sure that growclust treats them like that by setting the depths of all events to Zero.

This also works in the example, for demonstration:

  1. Using the event locations from the example, Growclust relocates 732 out of 1616 events
  2. If I manually change the depth of all events to 0 (for example because the depths are very uncertain and because one suspects them to be incorrect for a number of events)
cd GrowClust/EXAMPLE/IN
cp evlist.txt evlist_original.txt
awk '{printf "%4i %02i %02i %2i %02i %06.3f %9.5f %10.5f %7.3f %7.2f %6.3f %6.3f %6.3f %9i\n", $1, $2, $3, $4, $5, $6, $7, $8, 0, $10, $11, $12, $13, $14 }' evlist_original.txt >| evlist.txt
cd ..
growclust ssprings.inp
  • now Growclust shows that only 208 out of 1616 events could be relocated
  1. If I change the depth of only the first event to 1 km, and all other events get 0 km depth, then Growclust is able to relocate 485 out of 1616 events
  2. If I change the depth of all events to 1 km then Growclust is able to relocate 795 out of 1616 events

After setting the depth to 0 km for all events, I would have expected that slightly more events would fall into clusters for which events can be relocated. That seems to be true for case 4, but somehow setting all the depths to 0 km.

I understand from the Manual that depths close at or close to Zero can be tricky and require extra care; so for my case it's probably safe to just set all events to 1 km depth for the start. But I was a bit surprised how big a difference depths of 0 km make for the clustering.

Do you have an idea about what's going on here?
Would it be good to produce a warning or error when something like this happens?

Hi Felix,

Thanks for reaching out and for your interest in the code. As you've demonstrated, the current version of GrowClust doesn't handle very shallow seismicity very gracefully. In essence, if the cluster centroid has a negative depth, GrowClust will (as of now) reject the cluster merger and move on the next event pair. So if you place all of the events at the surface, you will likely relocate very few because many of cluster linkages will be rejected.

I'm working on a significant update to GrowClust that should help address this issue among several others (3D velocity model integration, topography, and parallelization are the major objectives). But in the meantime, there are a couple of solutions for your specific application.

If the depths are quite uncertain, it is likely that the ray-tracing to do the relative relocation may be inaccurate regardless of what you do. But assuming these events are not actually at near zero depth, I would place all of them at the same depth but well away from the surface, say 5 or 10km. Or whatever your best guess is at the typical depth. The GrowClust will do its best from there.

Anyway, I hope this helps a bit and if there is a specific warning or note in the manual you think would be helpful, let me know and I'm happy to make a quick fix. If you are interested in playing around with the source code itself, the relevant lines for this depth check is 1025 in growclust.f90.

Daniel