Skip to content

Releases: QuakeMigrate/QuakeMigrate

QuakeMigrate v1.0.3

01 Apr 16:35
5967d82
Compare
Choose a tag to compare

QuakeMigrate 1.0.3 Release Notes

This patch release introduces some minor updates to tooling used by the package and address some issues that had arisen from underlying dependencies. Further, we have added a backdoor that allows us to debug issues with our CI/CD testing.

  • Switched to Ruff autoformatter (9580ccf)
  • Addressed a Matplotlib bug arising from the deprecation of the method of sharing/joining axes we were previously using (a4fe6f8)
  • Resolved issue with test workflow failure (a11677b/1363a7a) and added tmate backdoor for debugging (9b433d3)
  • Updated an issue with the data downloading in the Iceland volcano-tectonic example. This had the added benefit of being faster, too! (b11a6b8)

Contributors

@hemmelig & @TomWinder.

What's Changed (auto-generated)

  • Autoformat (Black), bump copyright years, add test workflow by @hemmelig in #159
  • Address issue with shared axes from Matplotlib 3.8 by @hemmelig in #163
  • Add debug backdoor (tmate) and bypass root cause of test workflow failure by @hemmelig in #164
  • 🔧 Update cibuildwheels version to fix Windows wheel building by @TomWinder in #171
  • Switch to Ruff formatter by @hemmelig in #165
  • 🐛 Single client request for all stations by @TomWinder in #174

Full Changelog: v1.0.2...v1.0.3

QuakeMigrate v1.0.2

15 May 23:21
Compare
Choose a tag to compare

QuakeMigrate 1.0.2 Release Notes

This patch release introduces a few code management/styling tools to help maintain consistent styling across contributors, as well as re-establishing routine testing.

Contributors

@hemmelig & @TomWinder.

What's Changed (auto-generated)

Detailed Changelog

  • Introduced a pre-commit hook for developers that performs a number of checks that must pass before a commit can be made. Principle among these tests is the use of Black ("The uncompromising Python code formatter"). This ensures consistent styling across all commits.
  • A GitHub workflow now manages test running and coverage analysis. The workflow is triggered by a number of scenarios, such as a new PR being opened etc. For full details, see 24bdb2e. Importantly, the workflow is also scheduled to run on a regular basis. Once a week, all tests are run—any breaking changes introduced by our dependencies should be caught this way.
  • The Contributing guidelines were updated to reflect these changes to the developer workflow.

Full Changelog: v1.0.1...v1.0.2

QuakeMigrate v1.0.1

10 Apr 15:48
17f05a6
Compare
Choose a tag to compare

QuakeMigrate 1.0.1 Release Notes

This release brings QuakeMigrate to the Python Package Index and enables users to install via pip. This means we are able to do much of the work pre-compiling the C extension library in a controlled environment, which will 'just work' on the user's system. Wheels are available for all combinations of: Python versions 3.8 to 3.11; and macOS, Windows, and Linux operating systems. This is a great step towards making the package more user-friendly.

We also decided to take this opportunity to fix a number of minor bugs that had cropped up over the course of use in the last couple of years—we want the first PyPI release to be as bug free as possible! That's not to say we won't have further improvements to make, but see the changelog notes for more information.

Contributors

@hemmelig & @TomWinder.

What's Changed (auto-generated)

  • FEAT: wheel building and PyPI releases by @hemmelig in #138
  • FIX: Bugfixes implemented in Maintenance 1.0.0 branch by @TomWinder in #150
  • FIX: more minor bug fixes addressing the list of current Issues by @TomWinder in #151
  • TEST: Update Volcanotectonic_Iceland benchmark by @TomWinder in #152

Detailed Changelog

  • Overhaul the build system from the old, quite messy, setup.py file to a pyproject.toml file (specifying mostly metadata) and a setup.py file that specifically handles the C extension module.
  • Make the codebase compatible with most recent versions of dependencies (and specify some minimum version requirements).
  • Handled a number of deprecation warnings that had started to crop up.
  • Reviewed the installation instructions and provided significant additional detail for installing compilers across different operating systems. While no longer necessary (pip install quakemigrate will install QuakeMigrate complete with its precompiled C library), it may still be useful for anyone wanting to build from the source code themselves.
  • Updated base README.md file to reflect these updates.
  • Drop TravisCI—not currently working and will migrate to testing and coverage uploading via GitHub Actions in the future.
  • Fix bug where no candidate events were triggered, which caused the plotting stage to fail
  • Fix bug where no data were available at the start/end of a tilmestep, which wasn't being correctly identified
  • Update the benchmarks to reflect the ~6th decimal place changes introduced by changes in one of our dependencies (pyproj)

Full Changelog: v1.0.0...v1.0.1

QuakeMigrate v1.0.0

15 Jan 14:33
91a2996
Compare
Choose a tag to compare

QuakeMigrate 1.0.0 Release Notes

QuakeMigrate 1.0.0 is the culmination of almost 18 months of hard work, and is
the first major, stable release of the package. The codebase has been largely
re-written, delivering dramatic improvements in run-time and memory usage, many
new features and far greater flexibility to the user. There have also been a
large number of bug fixes relating to the stability and performance of the
package. All users are encouraged to update to this release.

We anticipate releasing v1.1.0 soon, with a significant expansion of
tutorials and related documentation, and some further improvements to
user-flexbility. (And maybe a couple more bug-fixes!) So please give us your
feedback!!

Thank you to everyone who has been part of the journey so far! With your help,
we have tested the code thoroughly, but it is inevitable that we won’t
have covered every possible use-case and combination of parameters – so please
continue to provide feedback. And please let us know when it works well, too!
It is our favourite source of motivation.

Highlights

  • Cross-platform support: QuakeMigrate has now been successfully built and
    run on Linux, Mac and Windows! The core development of the code continues to
    be carried out largely on Linux, so additional feedback & testing from
    Windows and Mac users will continue to be appreciated.
  • Documentation: We now have comprehensive documentation automatically
    built from the source code, plus installation instructions (for Linux, Mac
    and Windows) and a limited set of tutorials. More coming soon!
  • Local magnitude calculation: support for built-in local magnitude
    calculation (and output of cut raw, real and Wood-Anderson simulated
    waveforms for each event).
  • Single-phase support: QuakeMigrate now supports flexible multiple-phase
    stacking. For example, users processing Z-only nodal data may wish to only
    stack P-wave onset functions. The flexible implementation allows users to
    design onset functions for any phase of their choosing (with P and S the
    default for the time being). But if you want to design an onset function to
    identify and migrate/stack Vsh, Vsv etc. it is now easy to do!
  • Publication-ready plots: significant improvements to the information
    content, clarity and aesthetics of automatic plots (including from the
    trigger, locate, local-magnitude calculation and auto-picking modules &
    sub-modules).
  • Examples: Two new examples; another demonstration of using QuakeMigrate
    to detect and locate high-frequency basal icequakes (amongst crevassing
    noise!), plus detecting dike-induced earthquakes during the 2014
    Bárðarbunga-Holuhraun dike intrusion - featuring an event rate of more than
    150 earthquakes per hour (~ 4000 per day!).
  • Tests: we have made our first steps on the journey to including a
    comprehensive suite of tests, to verify correct operation after installation.
    These are based on the included icequake_iceland and dike_intrusion
    example use-cases. More to come soon.
  • Logging: flexible log output – currently split mainly between “info”,
    “warning” and “debug” levels. We recommend sticking with the default –
    “debug" returns a lot of additional info!!
  • Modularity: the picker and onset sub-modules are now built on an abstract
    base class, making it straightforward to build and share new alternatives
    that integrate with the core migration machinery of the package.
  • License: QuakeMigrate 1.0.0 is released under the GPL v3 license.

Users who have been using the development branch

v1.0.0 serves as a citable release of the version of the code that has been
available on the development branch since January 2020 – however note there
have been a significant number of further enhancements and bug fixes over this
period, particularly since May 2020. We intend to maintain a far more granular
series of releases in future – thank you for your patience!

Users upgrading from the 0.x.x series

Users upgrading from the 0.x.x series will notice differences in the absolute
value of the coalescence functions calculated, due to bug-fixes affecting the
core migration and stacking functions. However, the relative values of the
coalescence functions through time should remain largely unchanged, meaning
trigger results and relative uncertainty estimates are still valid. Absolute
uncertainty estimates, however, were previously being over-estimated, and
trigger thresholds will need to be updated. To re-emphasise: there have been
major bug-fixes and improvements reaching throughout the entire package. To
benefit from these improvements we highly recommend re-processing the data
through all stages (detect, trigger & locate), though we have tried to
incorporate backwards-compatibility for all old output file formats wherever
possible, for example to allow you to solely re-run locate().

Changelog

This provides a limited summary of the major changes to the code since the
previous release. For full details please see the linked pull requests, and
commit messages therein.

  • Change to top-level package name - QMigratequakemigrate See #85
  • quakemigrate.core
    • C libraries now build automatically when installing the package.
    • C functions have been cleaned up and documented properly. See #21.
  • quakemigrate.export – new!
    • Add some export utilities to a new module (export).
    • Currently includes functions to take the outputs of QuakeMigrate to: ObsPy
      catalogue; ObsPy catalogue to NLLoc OBS file; ObsPy catalogue to MFAST SAC
      input; QuakeMigrate to pyrocko Snuffler input.
  • quakemigrate.io
    • Refactor the I/O system entirely. This was in response to Issue #66. See
      68c13f7 for full details.
    • The re-write of the quakemigrate.io.data sub-module includes fixing bugs
      and making breaking changes related to the detrending and
      upsampling/decimation of waveform data. See c1ff447 and #103.
    • Add support for reading response information (via a light wrapper of the
      obspy function) and functions for response removal & Wood-Anderson
      seismogram simulation, for use with the new
      quakemigrate.signal.local_mag module.
    • Add a new, more comprehensive, transparent & flexible
      check_availability() function, to check what data is available given a
      set of provided quality criteria.
    • Added functions for removing response and simulating WA response
      here, allowing for this functionality to be accessed from anywhere across
      the package. This includes the ability to output real and/or WA cut
      waveforms (as velocity or displacement seismograms), for example for
      spectral analysis. Response removal parameters are specified (along
      with the instrument response inventory) when creating the Archive
      object.
    • The format of triggered event files, event files, pick files and
      station-availabiity files have been heavily overhauled. See #76.
    • Fix to allow for numerical station names.
  • quakemigate.lut – significant rewrite (see #54, #65)
    • Significant changes to API – see examples.
    • Users from the 0.x series will need to update their look-up table files
      (using an included utility function) or re-compute them.
    • Fully-documented, including a tutorial in the documentation.
    • Handling of a possible bug/ambiguity in the scipy RegularGridInterpolator
      API. The default for the fill_value parameter does not appear to be
      consistent with documentation.
    • The traveltime lookup tables are now stored in a dictionary structure
      maps[station][phase] to enable migration of a flexible combination of
      seismic phases, and to make it possible to migrate onsets for a subset of
      the phases and stations contained in the LUT. See #75, #103.
    • The 3-D grid on which the lookup tables are defined is now more intuitive
      to build. The user simply chooses the positions of a pair of opposite
      corners (the lower-left and upper-right) in geographic coordinates, the
      geographic and cartesian projections (using pyproj), and a node spacing
      along each axis.
      The number of grid nodes will be calculated automatically to span the
      volume of interest.
    • User-specified units: the user must specify when making an LUT whether to
      use units of metres or kilometres; this will then be used consistently
      throughout the package. See #79.
  • quakemigrate.plot – new! See #83.
    • Extracted all base plotting methods to individual modules within the
      quakemigrate.plot module. No longer using a class to pass the information
      around.
    • Revamp all of the figures produced by QuakeMigrate to include more useful
      information and to make better use of the available space. See 72b1c47 for
      details.
  • quakemigrate.signal
    • Refactor to be more flexible with the input data.
      • QuakeMigrate now allows for single-component data to be used, or
        stacking to be performed on just one phase (e.g. just P or just S). The
        required changes reached quite deep into the package and have changed how
        Onset objects are created, but is ultimately very straightforward to use.
        See #103.
      • Channel names can now be specified by the user, by default they are “Z”
        for vertical component, and “[N,1]” and [“E,2”] for horizontal
        components.
    • Internally use obspy.Trace objects to store data up to the point of
      passing it to the C functions; this adds greater flexibility and more
      built-in methods for quality checking, filtering, re-sampling etc. than the
      previous framework using arrays.
    • quakemigate.signal.onsets – significant re-write
      • Extracted the embedded onset function generation from the core QuakeScan
        class to a new submodule, `quakemigrate.si...
Read more

QuakeMigrate v0.2.3

04 Jun 08:28
Compare
Choose a tag to compare

A Python package for the detection and location of microseismicity from continuous seismic data.

Changelog

  • Update deprecated pandas features (Series.argmax -> Series.idxmax)
  • Allow for the use of numerical station names.

QuakeMigrate v0.2.2

04 Jun 08:27
4a2890d
Compare
Choose a tag to compare

A Python package for the detection and location of microseismicity from continuous seismic data.

Changelog

  • Rename the Data.path_type attribute to Data.archive_format.
  • Update the logging system - can now write to a log file as well as to stdout.
  • Fix empty archive bug which occurs if the very first timestep is empty leading to no availability information being generated.

QuakeMigrate v0.2.1

04 Jun 08:26
Compare
Choose a tag to compare

A Python package for the detection and location of microseismicity from continuous seismic data.

Changelog

  • Significant improvement to docstring coverage throughout the package.
  • Add more custom exceptions to further improve control system.
  • Rename internal C function names for clarity - now migrate() and find_max_coa().
  • Update file extension for output of detect - '.scnmseed' to '.scanmseed'.
  • Internalise reading of velocity model information from file.
  • Added availability information to the trigger plot - useful for diagnosing variations in coalescence signals or changes in event detection rates.
  • Fix reading in of coalescence streams during trigger.
  • Fix upsampling method to correctly order the interpolated datapoints.
  • Rename the mSEED class to Data as we are able to read other standard data formats as well.

QuakeMigrate v0.2.0

04 Jun 08:23
Compare
Choose a tag to compare

A Python package for the detection and location of microseismicity from continuous seismic data.

Changelog

  • Modularise the Trigger stage - it now acts as a standalone stage with its own API.
  • Start a new utility module (QMigrate.util) to collect together various functions that are useful across the package.
  • Add some custom exceptions to build a more robust control system.
  • Remove the redundant second _compute() call in detect used to calculate the normalised coalescence. It is instead calculated by dividing the output of the first _compute() call by the average value in the coalescence volume at each time step. This resulted in a ~40% speedup of detect/locate.
  • Add the ability to resample data by upsampling with a linear interpolation scheme before decimating down to the target sampling rate.

QuakeMigrate v0.1.2

04 Jun 08:20
Compare
Choose a tag to compare

A Python package for the detection and location of microseismicity from continuous seismic data.

Changelog

  • Fix issue with reading data over a yearline.
  • Refactor plotting functions to independent plot module.
  • Refactor SeisOutFile to independent io module.
  • Restructure output directories.
  • Fix a floating point rounding error when calculating the number of samples in the mSEED data traces.
  • Refactor the internal location error functions.
  • Added spline fit to marginalised coalescence map - this returns the subgrid maximum coalescence (and hence best estimate of hypocentre) location.

QuakeMigrate v0.1.1

04 Jun 08:18
Compare
Choose a tag to compare

A Python package for the detection and location of microseismicity from continuous seismic data.

Changelog

  • Update terminal outputs to have a more consistent format.
  • Amend the Gaussian pick search window to capture an additional sample.
  • Added str methods to Scan, LUT, mSEED classes to provide descriptions of the current parameter settings.
  • Gaussian coalescence method (unused) was officially deprecated.
  • Added a Gaussian filter to the marginalised coalescence before fitting a 3-D Gaussian.