Releases: MitchellAcoustics/Soundscapy
Release list
v0.8.5
What's Changed
- Quarto examples and docs setup by @MitchellAcoustics in #150
- Setup Quarto project with examples, documentation, and rendering by @MitchellAcoustics in #151
Full Changelog: v0.8.4...v0.8.5
v0.8.4
What's Changed
- refactor(r_wrapper): consolidate internal R wrapper into single module by @MitchellAcoustics in #140
- Refactor and update Soundscape Analysis documentation structure by @MitchellAcoustics in #139
- Refactor and update Soundscape Analysis documentation structure by @MitchellAcoustics in #141
Full Changelog: v0.8.3...v0.8.4
v0.8.3
v0.8.2
The long-overdue stable release
The last user-facing stable release of Soundscapy on PyPI was v0.7.8.
Since then the project has been on an extended pre-release cycle —
v0.8.0rc1 through v0.8.0rc10 and on into v0.8.2.dev1 — without ever
publishing a non-prerelease tag. v0.8.2 consolidates eighteen months of
that work into a single shipping release.
If you are upgrading from 0.7.x, please read the
migration guide before installing. Most users will
need to make small code changes.
Breaking changes you should know about first
- Plotting:
CircumplexPlot→ISOPlot. TheCircumplexPlotclass has
been replaced by the newISOPlotAPI, which uses a layered architecture
for combining plot types and integrates SPI visualisation. The function-style
helpersscatter_plot()anddensity_plot()still work and have been
re-implemented on the new backend, so most casual users won't need to change
anything. If you were customisingCircumplexPlotdirectly, the migration
guide has before/after snippets. - Plotly backend removed. Only the seaborn backend is supported now.
Removingplotlymakes installation lighter and removes a dependency that
was rarely used. If you need static graphics, matplotlib export from the
seaborn backend is the recommended path. - R-backed features install path changed. Use
pip install "soundscapy[r]"for SPI / SATP features. Only thesnR
package is required externally — CircE is now bundled with Soundscapy. fit_circe()now raises by default when input data fails schema
validation. Passerrors="warn"if you want the older permissive behaviour.- Pydantic
ParamModelsremoved in favour of plain dataclasses for
plotting parameters.
The new ISOPlot API
The biggest change for everyday users is the ISOPlot rewrite. ISOPlot is built
around a layered plotting model — start from a base, then add scatter, density,
SPI, or jointplot layers. It also has first-class subplot support for
comparing soundscapes across conditions, and integrates the new SPI score
display directly into the visualisation.
The function-style entry points (scatter_plot, density_plot) remain the
quickest way to make a single plot, while ISOPlot itself is the way to build
multi-layer or multi-panel figures. The migration guide and the "Advanced
Visualization Techniques" tutorial in the docs walk through both.
New: SATP and SPI modules
v0.8.2 introduces two new R-backed analysis modules:
- SATP (Soundscape Attributes Translation Project): structural equation
modelling for circumplex validation. The primary entry point is
fit_circe(data, language, datasource), which validates, ipsatizes, and
fits all four circumplex model types in one call, returning a typed
CircEResultscontainer. - SPI (Soundscape Perception Indices): tools for calculating Soundscape
Perception Indices using the Multi-dimensional Skewed Normal distribution,
with score calculation andISOPlotvisualisation integration.
Both modules use an embedded CircE R runtime, so you no longer need to
install the CircE package from GitHub yourself. The only external R
dependency is sn.
Slim install + better IDE support
import soundscapy no longer pulls in audio, R, or any other optional
dependencies. The package now follows
Scientific Python SPEC 1 (lazy loading),
which means submodules are deferred until first access. PEP 561 type stubs
(__init__.pyi) ship with the package so from soundscapy.audio import Binaural resolves correctly in mypy, pyright, and IDE autocomplete.
If you forget an extras install, you'll get a clear, actionable error message
pointing you at exactly what to install.
Note for contributors
Project tooling has shifted: environment management is now driven by
pixi, with uv retained for build, version, and PyPI
publish. See pixi.toml for the new task layout (pixi run lint,
pixi run tests, pixi run docs-serve, etc.). Documentation has migrated
from mkdocs to zensical. If you contribute, the
CONTRIBUTING guide has the updated workflow.
Full migration guide
For copy-pasteable before/after snippets and a complete list of removed APIs,
see Upgrading from 0.7.
What's Changed
- Switch to acoustic toolbox by @MitchellAcoustics in #106
- Create SPI feature and simplify optional deps by @MitchellAcoustics in #110
- Implement modular architecture for ISOPlot by @MitchellAcoustics in #117
- Layered-plotting by @MitchellAcoustics in #116
- Prepare for Soundscapy v0.8.0: ISOPlot API and Soundscape Perception Indices by @MitchellAcoustics in #119
- Mitchell acoustics/issue121 by @MitchellAcoustics in #122
- refactor: remove RTHORR package integration and related checks by @MitchellAcoustics in #125
- fix: R wrapper cleanup, DataFrame mutation bug, test coverage and docs by @MitchellAcoustics in #127
- feat: SATP circumplex SEM module — functional API and architecture refactor by @MitchellAcoustics in #130
- feat: schema validation, ipsatize unification, and CircEResults container by @MitchellAcoustics in #132
- Switch to pixi by @MitchellAcoustics in #134
- refactor: standardize optional dependency handling with SPEC 1 lazy loading by @MitchellAcoustics in #137
- Release v0.8.2 by @MitchellAcoustics in #138
Full Changelog: v0.7.8...v0.8.2
v0.8.0rc10
v0.8.0rc9
What's Changed
- feat: schema validation, ipsatize unification, and CircEResults container by @MitchellAcoustics in #132
Full Changelog: v0.8.0rc8...v0.8.0rc9
v0.8.0rc8
What's Changed
- feat: SATP circumplex SEM module — functional API and architecture refactor by @MitchellAcoustics in #130
Full Changelog: v0.8.0rc6...v0.8.0rc8
v0.8.0rc6
What's Changed
- Mitchell acoustics/issue121 by @MitchellAcoustics in #122
- refactor: remove RTHORR package integration and related checks by @MitchellAcoustics in #125
- fix: R wrapper cleanup, DataFrame mutation bug, test coverage and docs by @MitchellAcoustics in #127
Full Changelog: v0.8.0rc5...v0.8.0rc6
v0.8.0rc5
Full Changelog: v0.8.0rc4...v0.8.0rc5
v0.8.0rc4
Full Changelog: v0.8.0rc3...v0.8.0rc4