Scrtdd: a module for double-difference relocation in SeisComP

Dear Forum,

on behalf of the Swiss Seismological Service (SED @ ETH Zuerich) I’d like to announce the new release candidate of a SeisComP module for real-time and off-line double-difference relocations (SCRTDD).

This is a free software and it is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. That said, we would like to have feedback from the community, especially from users who have experience with double-difference relocation methods. We hope to squash as many bugs as possible and make this release candidate the first stable version.

If you are interested in this project please refer to the scrtdd page for documentation and code. Please use the project page for asking questions, reporting issues and providing feedback and pull requests. Since I don’t want to take advantage of this forum for external projects , I will not follow up with this thread.

I would like to thank the forum for always helping out with issues and especially JaBe for his clarifications on SeisComP code internals.

Get it while it’s hot!


1 Like

Great! Is it uses the same relocation algorithm as HypoDD?

Please use the project page

Yes, scrtdd implements Waldhauser/Ellsworth’s method, but that is only a small part of the code, there are many more parts involved (the preparation of the double-difference system:clustering, cross-correlation, detections of missed phases by the picker, the handling of real-time scenario,etc. ). Anyway, in the former v0.99.x release series scrtdd used HypoDD for relocations (it had to be installed in the machine). This is no more the case, but the code is still available (but no more maintained) for comparison purpose.

Thank you very much for making this awesome package available as SeisComP addon!

Dear Luca,

thanks for the great news about the news package. This is great news and a very helpful module.

I read through the documentation, and have two questions:

a.) Will it work for as offline playbacks as well?
b.) The cross correlation might take a while to initlally cross-correlate alll pairs. Will scrtdd possibly work as well for larger amount of data, e.g. for thousands of events?


Ok, I get it. People don’t like to use github for asking questions. Fine, I can reply to some general questions here but please be aware that I cannot deal with software related issues on this thread/forum (bug reports, stuff that doesn’t work, compilation issues, etc) . For that you really need to use

a.) Will it work for as offline playbacks as well?

Yes it does.

b.) The cross correlation might take a while to initlally cross-correlate alll pairs. Will scrtdd possibly work as well for larger amount of data, e.g. for thousands of events?

The cross-correlation itself is not that slow and I wouldn’t worry about it, but it is slow the downloading of waveforms. That is mitigated by the fact that scrtdd store the downloaded waveforms to disk for later re-use, but still the first time we try to relocate a catalog it will takes time for downloading.

I tried relocating ~10.000 events, 1.000.000 cross-correlations, ~2.200.000 double-difference observations and it took ~2 days for downloading waveforms and few hours to do the actual relocations. Now that the waveforms are on disk I can change the settings and relocate the catalog in few hours. Though, those are only rough estimates, do not rely on those.

For real-time relocations there is no speed issue because the catalog against which the event is relocated has already the waveforms cached to disk, so depending on the numbers of neighbouring events configured for the relocation it can takes from one to several minutes (again most of the time here is required for accessing the real-time event waveforms).

Thank you for sharing the code Luca. That is for sure a nice new toy for a seismologist.

Which is also very natural for user questions. Github is more for developers and users do not get easily into it. In my opinion you can also reply to questions here and use the forum for user support if you want. We could also create a dedicated topic/board for scrtdd.

Dear Luca,

HypoDD allows to get relative location, not absolute. Is there any possibility for absolute location in scrtdd?


Hi Alex,

scrtdd computes relative locations similarly to hypoDD, though those relative locations are relative to a background catalog of events with absolute locations so the results is an absolute lat/lon/depth location (even though relative).


Hi Luca,

As I understand (correct me if something wrong):
For the case of classic multi-event relocation inter event distances would improve drastically (good relative location), but all the cluster could be shifted in space (poor absolute location).

For the case of real time single event location that should be highly depended on how well background catalog had been located with absolute locations. How do you prepare catalog?
Do you use tomoDD? Or may be consider to introduce tomography to location procedure?


scrtdd is designed so that the background catalog used for real-time relocation could reside either in seiscomp database or in flat files (csv format). This is very convenient because the flat files could be created with an external application (e.g. tomoDD) . They are really straight forward to be converted to. This design decision allows to use scrtdd in real-time independently on how the background catalog is generated.

On the other side, the user could create the background catalog using scrtdd itself, the classic multi-event relocation. In this case is the user responsible for evaluating the correctness of the absolute locations of the relocated catalog. However, the solver allows to constrain the shift of the cluster either directly forcing the mean shift to zero or by means of damping (or both), which helps greatly in avoiding large shifts during relocations. To asses the robustness of the relocations, I would also relocate the catalog multiple times, each time introducing random noise in the initial locations, selectively removing events/stations and all of those at varying damping or mean shift constrain values.