Skip to content

xiansch/EQcorrscan

 
 

Repository files navigation

EQcorrscan

A python package to conduct matched-filter earthquake detections.

Join the chat at https://gitter.im/calum-chamberlain/EQcorrscan TravisCIStatus Build status Coverage Status DOI DocumentationStatus

Installation

Installation has been tested on both OSX and Linux (Ubuntu), and now Windows systems. We support Python versions 2.7 and 3.5. The codes likely work on Py 3.4 too, but we currently don't test this and recommend users to work in Py 3.5.

Instructions for installing EQcorrscan and the required dependency, openCV are linked from the docs

A note on correlation precision OpenCV computes cross-correlations in the frequency-domain for normal seismic datasets (if the dataset is very small then the cross-correlation will be computed in the time-domain, but this is rare for seismic data). In testing we have found that different methods of installing openCV provide different results for cross-correlations at the very low-end of cross-correlations. We think this comes down to how the ffts are computed. However, for moderate to high cross-correlations (above 0.05 normalised cross-correlation), all methods provide the same result.

The outcome of this is that for very low thresholds, you may see changes in your results, however for standard operations this is not an issue. We have found that differences are, on average, 0.0024 - which shifts the mean of a single channel cross-correlation from very close to zero, to 0.0024, and alters the median. However we have found that this results in no change in the median absolute deviation of the data, so thresholds based on this will be the same, although the cross-correlations themselves will be shifted. You would have to be running a very low threshold to see the result of this (0.5 * MAD, rather than commonly used values around 8 * MAD).

Updates

If you want to be kept informed about releases, bug-tracking and enhancements without having to keep looking on github, subscribe to our google group.

Documentation

The full documentation for this package can be found here: Docs. Any errors including typos and just missing bits can either be fixed by you, or flagged in the issues tab here. We host our docs on readthedocs, which uses sphinx to scrape the docstrings in the codes, so it is simple to match the docs to the codes and change the docstrings.

We also have a github-pages site EQcorrscan, which uses jekyll to build the site. Changes or additions to this site can be made on the gh-pages branch.

Functionality

This package contains routines to enable the user to conduct match-filter earthquake detections using obspy bindings when reading and writing seismic data, and the correlation routine in openCV. The OpendCV package is not installed by this software, due to a need to build from source. The user should follow the instructions above for OpenCV install. This package was written to implement the Matlab routines used by Chamberlain et al. (2014) for the detection of low-frequency earthquakes.

Also within this package are:

  • Clustering routines for seismic data;
  • Peak finding algorithm (basic, but appropriate for noisy data);
  • Automatic amplitude picker for local magnitude scale;
  • Seisan S-file integration for database management and routine earthquake location;
  • Obspy.core.event integration, which opens up lots of other functions (Seishub, hypoDDpy etc.);
  • Stacking routines including phase-weighted stacking based on Thurber at al. (2014);
  • Brightness based template creation based on the work of Frank et al. (2014);
  • Singular Value Decomposition derived magnitude calculations based on Rubinstein & Ellsworth (2010).

We are currently hovering around 9,000 lines of code (including doc-strings) - it is probably worth having a look at the docs to check what functions we have. We plan to write a series of tutorials to be included on the EQcorrscan API to highlight key functions, currently our tutorials only show how to do the core matched-filter detection.

Licence

This package is written by Calum Chamberlain and Chet Hopp of Victoria University of Wellington, and is distributed under the LGPL GNU License, Copyright Calum Chamberlain and Chet Hopp 2015, 2016.

Contributing

Please fork this project and work on it there then create a pull request to merge back to this main repository. If you are working on a bug-fix then use the develop branch, otherwise, create a feature branch and work on your addition there.

When you make changes please run the tests in the test directory to ensure everything merges with minimum effort. If there is not yet a test to cope with your changes then please write one.

Please document your functions following the other documentation within the functions, these doc-scripts will then be built into the main documentation using Sphinx.

We are trying to implement a better branching model, following that found here. To this end, please fork the development branch if you want to develop things, and flag issues in the master for us to bugfix. If you have a feature you want to develop please create a new branch from the development branch and work on it there, we can then merge it back in to the development branch when it is stable enough.

This branching model (git-flow) is pretty well established, and I would recommend you to install git-flow and read their documentation. It seems pretty intuitive and will keep us all branching in the same way.

References

About

Matched-filter earthquake detection and analysis in Python.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 95.2%
  • Batchfile 1.9%
  • Shell 1.1%
  • Makefile 1.1%
  • PowerShell 0.7%