Releases: seisbench/seisbench
SeisBench v0.7 - LFE detection, faster annotation, new datasets and models, ...
Major updates
- SeisBench now features a model for low-frequency earthquake (LFE) detection and three LFE stack datasets. The model can be plugged into regular earthquake detection workflows just as any SeisBench model. Note that the quality of the LFE picks is substantially below that of regular earthquake detection models. See #286
- The
annotate/classify
backend has been substantially revamped. Large chunks of pre- and postprocessing are now conducted as vectorized operations in PyTorch. This leads to at least 20 % speed ups on CPU and more than 50 % speed ups on GPU. For DeepDenoiser, speed ups can be as high as 20x. Picking one day of 100 Hz three-component waveforms on GPU now takes below 1 s. For further details and more benchmark results, see #282 - The OBSTransformer model and OBST2024 dataset have been added. These now complement the existing models and datasets for ocean bottom seismometer picking, giving users a wider range of options. See #279 and #281
- The TXED dataset with waveforms from Texas is now available through SeisBench. See #275
Thanks to everyone how contributed to this release with feedback, issues, and especially with PRs.
All merged PRs
- base: stream copy now optional. by @miili in #271
- Add TXED dataset by @yetinam in #275
- Python 3.12 (Closes #263) by @yetinam in #276
- Bugfix for PhaseNet label IDs by @JanisHe in #277
- Add warnings for use of default component order by @jacksonfellows in #280
- Change annotate logic from windowed to batched pre- and postprocessing by @yetinam in #282
- Add OBSTransformer model and its training dataset by @alirezaniki in #281
- Clean-up legacy annotate code (Follow-up #282) by @yetinam in #283
- Add LFE detection model and LFE stack datasets by @yetinam in #286
New Contributors
- @JanisHe made their first contribution in #277
- @jacksonfellows made their first contribution in #280
- @alirezaniki made their first contribution in #281
Full Changelog: v0.6.0...v0.7.0
SeisBench v0.6 - MLAAPDE, async interface, backup repository, ...
Major updates
- The MLAAPDE dataset is now available through SeisBench. MLAAPDE is a large-scale dataset containing phase picks primarily at teleseismic distances. Big shoutout to Hank Cole at NEIC for compiling the dataset and making it available for us. See #241
- The annotate and classify functions now expose an async interface. This allows you to integrate them smoothly into your asyncio pipelines, for example for preloading the next waveforms while picking. See #251
- The reliability and accessibility of the SeisBench remote repository has been improved by adding a backup repository. See #256
Thanks to everyone how contributed to this release with feedback, issues, and especially with PRs.
All merged PRs
- Added MLAAPDE dataset by @yetinam in #241
- Expose async interfaces to annotate and classify (Closes #248) by @yetinam in #251
- Document options to speed-up the model application by @yetinam in #252
- Document label shapes with new figure by @yetinam in #253
- Added SeisBench + PyOcto example by @yetinam in #257
- Integrate and document backup repository by @yetinam in #256
Full Changelog: v0.5.0...v0.6.0
SeisBench v0.5 - DepthPhaseTEAM, PNW dataset, unified output formats, ...
Major updates
- SeisBench now comes with two models for teleseismic depth phase picking and depth estimation. DepthPhaseNet and DepthPhaseTEAM allow to identify the depth of teleseismic events through their depth phases. In addition DepthFinder offers a convenient interfaces with direct connection to FDSN. Check #231 for details.
- The Pacific Northwest (PNW) dataset by Ni et al. (2023) is now available through SeisBench. See #199. Thanks to @niyiyu for making this available.
- The output structure of all SeisBench models is now identical. This is a breaking change but quick to fix. Picking models now return an abstract output object, picks are available at
model.classify(stream).picks
. Similarly, EQTransformer or CRED detections can be accessed atmodel.classify(stream).detections
. For convenience, picks and detections can now also be filtered through station and confidence criteria. For details see #230. - The ProbabilisticLabeller has been updated to allow independent labels that can be used with a sigmoid instead of a softmax layer. Thanks to @zhong-yy for the addition in #229.
Thanks to everyone how contributed to this release with feedback, issues, and especially with PRs.
All merged PRs
- post-processing: removing bottleneck nanmean/max by @miili in #208
- asyncio: moving nest_asyncio to toplevel by @miili in #214
- Change grouping behaviour for grouping="instrument" (Closes #196) by @yetinam in #217
- Adding options for disabling normalization and noise label for ProbabilisticLabeller, and checking picks for AddGap and ChannelDropout. by @zhong-yy in #222
- Bump python version to 3.9 and document deprecation scheme by @yetinam in #234
- Add an option for AddGap and ChannelDropout to modify label directly by @zhong-yy in #229
- Add depth phase models by @yetinam in #231
- Unify classify output structure by @yetinam in #230
New Contributors
Full Changelog: v0.4.0...v0.5.0
SeisBench v0.4 - Bringing SeisBench to the Ocean Bottom
Major updates
- SeisBench now includes a benchmark dataset and two picking models for ocean bottom seismometer (OBS). Both the dataset and the models are accessible through the regular SeisBench interface. The newly trained models can make use of hydrophone components and consistently outperform models trained on land data for OBS picking. A reference preprint is available.
- We optimized the access speed for benchmark datasets. This will speed up model training. Speed-ups affect both datasets cached in memory and datasets accessed directly from disk.
- Already in version 0.3.2, we fixed a critical bug in the normalization of traces that degraded performance of a large number of models.
All merged PRs
- Performance optimization for data access by @yetinam in #178
- Adding OBS dataset and OBS picker "PickBlue" by @borthom in #133
- Documentation updates for v0.4 by @yetinam in #191
Full Changelog: v0.3.0...v0.4.0
SeisBench v0.3 - PhaseNet, data grouping, max stacking, ...
Major updates
- The PhaseNet implementations between SeisBench and the original implementations differed. We now adjusted the implementation within SeisBench. This means that the original weights for PhaseNet are now available in SeisBench. The previous version of PhaseNet is now available as PhaseNetLight.
- SeisBench now supports data grouping to train models on multiple stations. Check out the
grouping
argument for datasets and theGroupGenerator
- Window annotation models, such as EQTransformer, can now use different stacking models for the overlap between two windows. For EQTransformer, the default was changed to max stacking in agreement with the original implementation.
- The optional arguments to
annotate
andclassify
have been cleaned up. They now are documented automatically, have clear default values and are validated to avoid invalid arguments. - We increased the default overlap for window annotation models due to recent research on missing translation invariance for picking models.
Thanks to everyone how contributed to this release with feedback, issues, and especially with PRs.
All merged PRs
- Example notebook for catalog generation by @yetinam in #87
- Add max-stack option to reassemble array predictions by @calum-chamberlain in #99
- Create CODE_OF_CONDUCT.md by @yetinam in #108
- Speedup nan trim by @calum-chamberlain in #114
- Documentation and validation for optional arguments for annotate/classify by @yetinam in #124
- CVE-2007-4559 Patch by @TrellixVulnTeam in #134
- Add data grouping by @yetinam in #142
- allow the model to output logits when training by @JUNZHU-SEIS in #127
- Add logit output options to all models (Closes #129) by @yetinam in #146
- Performance optimization for dataset access by @yetinam in #148
- Updated CI actions by @yetinam in #161
- adding pyproject / isort by @miili in #163
- Implemented original PhaseNet model and converted weights by @yetinam in #158
- Bump overlap to half the input samples by @yetinam in #176
- Homogenized annotate arguments by @yetinam in #177
New Contributors
- @TrellixVulnTeam made their first contribution in #134
- @JUNZHU-SEIS made their first contribution in #127
- @miili made their first contribution in #163
Full Changelog: v0.2.1...v0.3.0
SeisBench v0.2 - UrbanDenoiser, enhanced parallelisation, label shapes, ...
What's changed
- UrbanDenoiser (https://doi.org/10.1126/sciadv.abl3564) is now available in SeisBench. It can be loaded using
DeepDenoiser.from_pretrained("urban")
(#83). - The
ProbabilisticLabeller
now supports different label shapes, i.e., Gaussian, Triangular and Box (#67). - SeisBench models now support local saving and loading through the newly added
save
andload
functions. The functions ensure that not only model weights can be saved and loaded but also further model parameters, such as the component order or the sampling rate #69, #71, #86). - The
WaveformModel
annotate
/classify
functions now support multiprocessing for annotating large datasets. Simply set theparallelism
parameter in the call to these functions. The previous API based on asyncio is maintained for processing small stream objects, as multiprocessing has a higher overhead due to latency (#64, #68, #81). - SeisBench now supports Python 3.10 (#52, #70).
- We added further example notebooks (#58, #72).
- The
from_pretrained
API to load pretrained models has been completely rewritten. It now supports model versioning, coming with the new functionlist_versions
and theversion_str
parameter forfrom_pretrained
. In addition, more control and transparency were added whether the function queries the SeisBench remote repository or only the local cache (#76, #77, #86). - Added secondary keys for
get_idx_from_trace_name
to avoid trace name collisions for chunked data sets and multi-part datasets (#78, #84) - In addition, v0.2 contains all bugfixes introduced in the patch versions of v0.1 and further minor fixes (#63, #85).
Thanks to everyone contributing to this release through issues, PRs and commits!
v0.1.10 - DeepDenoiser, more examples and bugfixes
What's Changed
- Added DeepDenoiser (#59), a deep learning model for denoising waveforms published by Zhu et al (2019).
- Extended backend for WaveformModel annotate function to give more flexibility to implement models beyond picking
- Restructured example workflows and added further example workflows (#55)
- Fixed infinite loop when annotating short waveform fragments
- Added Copy augmentation
- Pinned version requirement of numpy to 1.21 due to dependency issues
Full Changelog: v0.1.9...v0.1.10
v0.1.8 - Model streaming backend and bugfixes
What's Changed
Full Changelog: v0.1.7...v0.1.8
Requirements cleanup
Iquique dataset
This release adds the Iquique dataset, a dataset consisting of events around the Mw=8.1 Iquique earthquake in Chile 2014. The dataset is relatively small, providing a good starting point for model development on low resources. As we are still in v0.1, the dataset is added using a patch version, rather than a new minor version.