Skip to content

Releases: sgjholt/SpecMod

v0.6.0

Choose a tag to compare

@sgjholt sgjholt released this 27 Sep 17:40
4510aa7

0.6.0 (2026-09-27)

⚠ BREAKING CHANGES

  • config: default to FFT with Konno-Ohmachi smoothing

Features

  • config: default to FFT with Konno-Ohmachi smoothing (1081364)
  • config: hold a configuration across an ambient read, and pin the goldens (71a4e9c)

Documentation

  • fitting: say what the fit reads, and document it as a modelling choice (33975ed)
  • roadmap: file the station selection as shipped in v0.5.0 (9f35727)

v0.5.0

Choose a tag to compare

@sgjholt sgjholt released this 19 Sep 20:05
4c647cc

0.5.0 (2026-09-19)

Features

  • acquire: rank co-sited instruments with channel_priorities and location_priorities, so a station carrying a broadband and an accelerometer contributes one record rather than two (2af57e8)

Bug Fixes

  • acquire: ask for waveforms by name, so max_radius_km applies to the download and not only to the station query — FDSN dataselect takes no geographic parameters, so a wildcard request was unbounded (2af57e8)
  • acquire: cut the radius against true WGS84 distance rather than a fixed 111.195 km per degree, which moved the boundary by up to half a percent with latitude; min_radius_km now applies on its own, and a non-positive radius or an inverted annulus is refused (2af57e8)

Documentation

  • acquire: upgrading notes for the station selection, and for the [smoothing] method behaviour change in 0.4.0 (b460d19)
  • roadmap: file v0.4.0 as shipped, and the acquire work as merged (e113abb)

v0.4.0

Choose a tag to compare

@sgjholt sgjholt released this 17 Sep 14:08
a7ad8bd

0.4.0 (2026-09-16)

Features

  • smoothing: wire [smoothing] method up, and add three more methods (fff3ab1)

Bug Fixes

  • config: refuse a [smoothing] method the pipeline does not apply (1f18c68)
  • test: compare the roadmap against the published minor, not the proposed one (1e34b4e)
  • tools: call the preprocess API that 0.3.0 left behind (8501c8e)

Documentation

  • keep the reasoning out of the docstrings, in comments where it belongs (2684ec9)
  • say what tagging the frozen commit does and does not trigger (2273219)
  • state what the smoothers are, not how they were arrived at (4c97491)
  • the 0.3.0 work shipped a week ago, so stop calling it unreleased (e2aaced)
  • v0.1.1 is master's tip, which is what freezing it was for (db50972)

v0.3.0

Choose a tag to compare

@sgjholt sgjholt released this 06 Sep 21:40
5e6c8e1

0.3.0 (2026-09-06)

⚠ BREAKING CHANGES

  • the tutorial page moves from /tutorial/SpecModTutorial.html to /tutorial/specmod-tutorial.html.
  • the ten mutating functions in specmod.preprocess are renamed and now return a new stream or trace. get_signal is removed, and the two undated deprecation shims are gone.

Features

  • let the fitted band be capped, fixed or corrected by hand (ba241a9)
  • preprocess returns new streams instead of mutating (78aabeb)

Bug Fixes

  • give the noise and bandwidth registries a documented home (daeb2cc)
  • transforms: re-export every public name from base (67c24c3)

Code Refactoring

  • docs: build the tutorial from a script too (de846c6)
  • docs: one notebook builder per notebook, named after it (0175f89)
  • split io and plotting into packages (027b77f)

Documentation

  • adopt the academic theme from the branding manual (76f0aa0)
  • kebab-case the tutorial notebook, snake_case its builder (5a65b73)
  • measure the MathJax figure instead of asserting it (cba7e01)
  • render maths with KaTeX, served from this site (902d3fe)
  • self-host the branding fonts (c1e6f9f)
  • the decomposition is finished (bbb2b71)

v0.2.3

Choose a tag to compare

@sgjholt sgjholt released this 05 Sep 23:17
091d1f8

0.2.3 (2026-09-05)

Bug Fixes

  • correct four documented equations and behaviours that the code contradicts (821792b)
  • point the DOI badge at the concept DOI, not v0.2.0's (11e7f7a)

Documentation

  • an upgrade guide, and a table of contents with a shape (4f35388)
  • derive the roadmap's version, and say when its entries move (1917d43)
  • document moment and magnitude, which the page said were absent (026abec)
  • state what is true now, not what the page used to say (b17339b)
  • the documentation 1.0 was waiting on is done (9693334)

v0.2.2

Choose a tag to compare

@sgjholt sgjholt released this 05 Sep 17:38
3b5fea6

0.2.2 (2026-09-05)

Bug Fixes

  • ignore the tutorial output at the path it is actually written to (ad34cc7)

Documentation

  • publish the tutorial, executed on every build (ccd1842)

v0.2.1

Choose a tag to compare

@sgjholt sgjholt released this 23 Aug 19:58
77bd117

0.2.1 (2026-08-23)

Documentation

  • add the Zenodo DOI to the README and the citation metadata (8a89884)
  • PyPI and docs badges, and an install section for people who are not us (d444397)
  • repoint the 0.2.0 changelog link, which 404s (f1bbe31)
  • say where the code behind the publication lives (ae7e906)
  • turn the roadmap's stages into milestones against versions (b933e69)

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 18:47
f9fad4a

0.2.0 (2026-08-23)

⚠ BREAKING CHANGES

  • MultitaperEstimator.adaptive and TransformConfig.adaptive now default to False. Adaptive weighting collapses for off-centre transients, and a seismic arrival in a refined window is one.
  • modules move to src/specmod/ and are renamed to snake_case (Spectral -> spectral, PreProcess -> preprocess, ModelGuess -> model_guess).

Features

  • acquire: fetch an event from FDSN into the layout datasets reads (61c3ebc)
  • acquire: name the event catalogue separately from the waveform archive (be1a00a)
  • add centring, which removes the position bias completely (144db2f)
  • add floors job to test workflow for minimum dependency resolution (171e0bc)
  • add layered configuration with recorded provenance (ea7a429)
  • add Prieto's multitaper package as an optional backend (7ff6639)
  • add the pluggable transform layer and its normalisation contract (1ba5da0)
  • add the smoothing layer and document a multitaper transient bias (5ace1a9)
  • add variance normalisation and document what each transform does (683b353)
  • api: a stable import surface for downstream packages (72fc3a9)
  • core: add the typed collection layer that replaces SNP and Spectra (5b7510d)
  • core: make bandwidth selection a registry, and fix a wrap in the default (9166d86)
  • core: name both amplitude conventions instead of implying one (b2bef97)
  • core: validate that record geometry is self-consistent (2bda2a1)
  • datasets: load published datasets through pooch, pinned by hash (70735a8)
  • datasets: name the event layout once, and fix what the move missed (67a0aa6)
  • distance: make the source-to-site distance a registry, and read it (782760c)
  • fitting: default the model to what the configuration asks for (3a208e6)
  • io: HDF5 for arrays, Parquet for tables, and no pickle anywhere (b95a858)
  • magnitude: compute M0 and Mw, and register geometric spreading (4796605)
  • make the package installable and importable (30b4e89)
  • noise: port ROT_METHOD=1 and reduce utils.py to what has callers (3485019)
  • picks: a reader registry, detected by sniffing rather than by suffix (333b8b3)
  • picks: move to QuakeML, and stop acquire discarding the catalogue (041af07)
  • picks: plugin readers, and a CSV reader you configure yourself (d00bb5f)
  • picks: resolve arrivals to sensors instead of matching strings (e16ea23)
  • pipeline: waveforms to SpectrumSet with no legacy object in between (b9a30fd)
  • release: release-please, and PyPI publishing in the same workflow (47fe5e4)
  • restore the three capabilities that went with the legacy containers (abcdb96)
  • sources: connect config.model.source to something, at last (99da9a4)
  • spectral: convert the legacy container to a SpectrumSet (0b47b3d)
  • spectral: run the legacy pipeline on the rewritten estimators (bdec9ff)
  • staged: the two-stage event fit, with selection after quality control (0702ba7)
  • tools: generate the measured tables in the docs, and move CLIs to click (ad2ad8a)
  • transforms: add n_fft padding strategies, and document what padding does (50d3812)
  • transforms: add quadratic multitaper, vendored from Prieto (3a20470)
  • transforms: add the continuous wavelet transform and scalogram QC (47bb5a9)
  • typing: close the mypy backlog, and stub lmfit to do it (b208773)
  • typing: stub ObsPy, and annotate utils and preprocess against it (de640cc)

Bug Fixes

  • ci: keep the suite green without the multitaper extra (4123677)
  • core: derive the binned noise from the lifted noise, not beside it (b2adc0b)
  • core: derive the fold tolerance from bin spacing, not a fixed rtol (b5afbb7)
  • core: read the recorded resolution floor instead of re-deriving it (15b8efc)
  • correct commands in build and test workflows to use 'uv' instead of 'uvx' (c8fde4f)
  • correct dependency floors that were unsatisfiable (cb4e0d5)
  • datasets: correct the PNR origin time, and source its magnitude (d0c210b)
  • datasets: take the PNR hypocentre from the published catalogue (2977318)
  • default multitaper adaptive weighting off, and quantify why (628d36d)
  • deps: raise two floors that were never installable (41cd88d)
  • fitting: repair write_flatfile, and stop requiring a mutable container (80560fd)
  • fitting: stop freezing configuration at import, and stop printing (c151425)
  • make the golden reference portable, and fix the lint drift (b366f19)
  • make the pipeline reproducible by removing three discontinuities (982cc9f)
  • multitaper: correct units in Thomson's adaptive weighting (6410187)
  • noise: remove the fourth discontinuity, an "already touching" guard (60c9731)
  • pipeline: reject estimator keywords instead of discarding them (f22c523)
  • preprocess: repair the six defects the characterisation exposed (6a869b3)
  • quadratic: guard the damping term against a zero denominator (650a1a7)
  • **quadra...
Read more