Releases: waltsims/k-wave-python
v0.6.2
Highlights
Binary refresh — Blackwell (sm_120) support on Linux CUDA
Pinned to upstream v1.4.1 C++ binaries. Blackwell support is Linux CUDA only: Windows CUDA stays on v1.3.0 pending DLL packaging, and macOS has no CUDA path.
- Linux CUDA + OMP —
v1.4.1adds sm_120 / Blackwell support. Rebuilt with static CUDA + cuFFT + FFTW + libstdc++ on ubuntu-22.04 (glibc 2.35 floor). - macOS OMP —
v1.4.1includes the fast-math fix that prevents NaNs in absorbing-media simulations on Apple Silicon, plus thelibhdf5.320.dylibABI refresh from v1.4.0 (#661). - Windows OMP + CUDA — both still pinned to
v1.3.0; v1.4.x DLL bundling not yet ready. Windows Blackwell support is not in this release. - Intel Mac guard —
kwave/__init__.pyemits aRuntimeWarningand skips the darwin OMP download ondarwinx86_64 (v1.4.x darwin is arm64-only). Universal2 coverage tracked for v0.6.5. - Chmod fix —
download_binariesnow sets the exec bit on Linux/macOS (#741).
Solver & API fixes
alpha_modeis now respected by the C++ backend, and unsupported combinations are rejected instead of silently ignored (#664, #712).- C++ source flags now write signal length instead of a boolean (#698).
voxel_plot: swapped x and z axes (#501, #734).t_arraysetter no longer raisesValueErrorwhen passed a numpy array (#732).binary_pathis no longer dropped byoptions_to_kwargs()(#726).- Added
dtypeparameter tokspaceFirstOrder()(#695, #716). - Added
AlphaModeenum (#705).
Internals
step()is branch-free; lambdas are bound at setup (#715)._setup_physics_operatorssplit into four single-purpose methods (#713).matlab_findreplaced with NumPy inmapgen(#609).kWaveMediumtype annotations and test coverage (#736).- Pinned
sphinx<9to fix Read the Docs (#714). gaussiancleanup usingnp.pi(#717).- Added
CLAUDE.md(#696).
Closes
#501, #622, #656, #661, #664, #695, #738, #740
Out of scope
Darwin x86_64 (Intel Mac) coverage — tracked for v0.6.5.
Thanks
- @aconesac — original Blackwell report (#656) and Linux CUDA
v1.4.1validation on Blackwell hardware (#739). - @elma16 — macOS OMP fast-math fix (k-wave-omp-darwin#4).
What's Changed
- Add CLAUDE.md for Claude Code onboarding by @waltsims in #696
- Fix cpp source flags in new API by @waltsims in #698
- Bump requests from 2.33.0 to 2.33.1 by @dependabot[bot] in #699
- Bump jaxtyping from 0.3.2 to 0.3.7 by @dependabot[bot] in #703
- Bump deepdiff from 8.6.2 to 9.0.0 by @dependabot[bot] in #702
- Bump pytest from 9.0.2 to 9.0.3 by @dependabot[bot] in #711
- Add AlphaMode enum for stringly-typed alpha_mode field by @waltsims in #705
- Bump pillow from 12.1.1 to 12.2.0 by @dependabot[bot] in #709
- Bump gdown from 5.2.0 to 5.2.2 by @dependabot[bot] in #710
- Bump coverage from 7.10.6 to 7.13.5 by @dependabot[bot] in #707
- Bump furo from 2024.8.6 to 2025.12.19 by @dependabot[bot] in #706
- Bump matplotlib from 3.10.7 to 3.10.8 by @dependabot[bot] in #708
- Pin sphinx<9 in docs extras to fix Read the Docs build by @waltsims in #714
- Fix #664: respect alpha_mode + reject silent C++ ignore by @waltsims in #712
- Refactor _setup_physics_operators into four single-purpose methods by @waltsims in #713
- Make step() branch-free by binding lambdas at setup by @waltsims in #715
- Bump gdown from 5.2.2 to 6.0.0 by @dependabot[bot] in #720
- Bump h5py from 3.15.1 to 3.16.0 by @dependabot[bot] in #719
- Bump pre-commit from 4.5.1 to 4.6.0 by @dependabot[bot] in #718
- Use np.pi and remove redundant variable in gaussian function by @maayanmatsliah-tech in #717
- Bump urllib3 from 2.6.3 to 2.7.0 by @dependabot[bot] in #724
- Bump coverage from 7.13.5 to 7.14.0 by @dependabot[bot] in #729
- Bump requests from 2.33.1 to 2.34.0 by @dependabot[bot] in #728
- Bump matplotlib from 3.10.8 to 3.10.9 by @dependabot[bot] in #727
- Bump mistune from 3.2.0 to 3.2.1 by @dependabot[bot] in #723
- Fix binary_path silently dropped by options_to_kwargs() by @Copilot in #726
- Bump sphinx-toolbox 3.8.0 -> 4.1.2 and sphinx-tabs 3.4.7 -> 3.4.5 by @waltsims in #733
- Fix #501: voxel_plot swapped x and z axes by @waltsims in #734
- fix: fix t_array setter ValueError when passing numpy array by @wangwangbobo in #732
- Replace matlab_find with numpy functions in mapgen by @faridyagubbayli in #609
- Add dtype parameter to kspaceFirstOrder() (#695) by @waltsims in #716
- Fix kWaveMedium type annotations (rebased #636 + Greptile fixes) by @waltsims in #736
- Set exec bit on Linux/macOS binaries after download by @waltsims in #741
- Bump BINARY_VERSION to v1.4.1 (sm_120 / Blackwell) by @waltsims in #739
New Contributors
- @maayanmatsliah-tech made their first contribution in #717
- @wangwangbobo made their first contribution in #732
Full Changelog: v0.6.1...v0.6.2
v0.6.1
k-wave-python v0.6.1
Highlights
Pure Python solver improvements
- C-order migration: solver internals now use row-major (C) order. F-order preserved only at C++ HDF5 and MATLAB interop boundaries (#676)
- tqdm progress bar for the Python solver (#681)
- 3D PML fix: use
pml_size=10for 3D to match MATLAB defaults (#690)
29 examples ported to the new API
- All Tier 1 examples use
kspaceFirstOrder()withsetup()/run()/__main__pattern (#685) - Flattened to
examples/*.py, old examples moved toexamples/legacy/(#686) - Run any example:
uv run examples/ivp_homogeneous_medium.py— no GPU required
47 parity tests against MATLAB
- Machine-precision validation (
<5e-13relative error) for all 1D/2D/3D examples (#686, #689) - Table-driven parametrized test framework with separate thresholds for time-series vs final fields
Docs & infrastructure cleanup
- README rewritten: Python solver first, both backends described (#692)
- Developer docs simplified to
uv sync/uv run pytest(#687, #692) - macOS: helpful error message when C++ backend is missing brew dependencies (#692)
- Deleted dead infrastructure:
Makefile,Dockerfile,run_examples.py, notebook pipeline (#693)
⚠️ Breaking Changes
- Solver output arrays are now C-order. Code that assumed F-order indexing of full-grid sensor data may need updating.
Dependencies
New Contributors
- @Copilot made their first contribution in #684
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
- Add cupy solver by @waltsims in #665
- Bump matplotlib from 3.10.3 to 3.10.7 by @dependabot[bot] in #651
- Add pml_inside parameter to kspaceFirstOrder() by @waltsims in #669
- Bump opencv-python from 4.11.0.86 to 4.13.0.92 by @dependabot[bot] in #673
- Bump pre-commit from 4.2.0 to 4.5.1 by @dependabot[bot] in #672
- Bump beartype from 0.22.4 to 0.22.9 by @dependabot[bot] in #671
- Add unified API docs and bump version to 0.6.0 by @waltsims in #678
- Fix docs furo toc by @waltsims in #679
Add cupy solver
k-wave-python can now be run completely in Python and no longer depends on the k-wave binary executables.
Full Changelog: v0.5.0rc1...v0.6.0
Merge pull request #663 from waltsims/release/v0.5.0rc1
v0.5.0rc1 Release Notes
New Features
- Checkpoint support - Added checkpoint flags for simulation state saving (#599)
- kArray equality operator - Added element equality operator for kArray (#462)
- Time reversal refactor - Factored out time reversal logic for better modularity (#577)
Improvements
- Sharpness filters - Refactored sharpness filters and improved single_sided_correction (#573)
- Affine transformations - Refactored affine transformations and added deprecation utilities (#550)
- Test coverage - Improved test coverage on extract_amp_phase (#545)
- Cart sphere testing - Updated cart sphere testing (#583)
Bug Fixes
- Fixed confusing error message on kspaceFirstOrder3DG (#591)
- Fixed logging error (#594)
- Fixed create_pixel_dim (#567)
- Fixed issue with setting p0 to None during assignment (#543)
Infrastructure
- Added macOS (Darwin) binary support v0.3.0rc3 (#610)
- Added run-examples workflow for CI (#576)
- Improved code linting with spellcheck and isort (#564)
Documentation
Dependency Updates
- deepdiff 8.1.1 → 8.5.0
- matplotlib 3.10.0 → 3.10.3
- jaxtyping 0.2.36 → 0.3.2
- beartype 0.19.0 → 0.20.2
- scipy 1.14.1 → 1.15.2
- h5py 3.12.1 → 3.13.0
- opencv-python 4.10.0.84 → 4.11.0.86
- coverage 7.6.9 → 7.8.0
- pre-commit 4.0.1 → 4.2.0
v0.4.0
Thank you to all of the contributors who helped make this release happen! Importantly, this release changes the license of k-wave-python from GPL-3.0 to LGPL-3.0 upon approval of all contributors.
Special thanks to @faberno who ensured that the time reversal reconstruction methods were finally added to the project with their respective examples. 🎉
What's Changed
- Migrate license to LGPL-3.0 by @waltsims in #531
- Allows for broader adoption in both academic and commercial applications
- Update simulation_options.py by @waltsims in #520
- Update execution options APIs by @waltsims in #529
- Add FFT + Time Reversal Reconstruction by @faberno in #475
Dependency Updates
- Bump deepdiff from 8.0.1 to 8.1.1 by @dependabot in #532
- Bump matplotlib from 3.9.2 to 3.9.3 by @dependabot in #524
- Bump matplotlib from 3.9.3 to 3.10.0 by @dependabot in #530
- Bump coverage from 7.6.8 to 7.6.9 by @dependabot in #526
- Bump coverage from 7.6.7 to 7.6.8 by @dependabot in #517
- Update numpy requirement from <2.2.0,>=1.22.2 to >=1.22.2,<2.3.0 by @dependabot in #527
Full Changelog: v0.3.7...v0.4.0
v0.3.7
This is a patch release on top of k-wave-python v0.3.6.
This patch fixes the bug found in #514 by @mikaelhaji that broke Windows execution.
This release fixes that issue by not passing the threads flag to the executable on Windows.
v0.3.6
Warning Yanked. See v0.3.7 release notes
What's Changed
- In #473 we updated the logic in the SimulationExecutionOptions() class to reduce user error and improve ease of use.
- In #505 we dropped support for Python 3.9 and added support for Python 3.13 in this version.
- Also in #505 we bumped our scipy dependency to v1.13.1.
- In #506 we bumped our numpy dependency to now support numpy v2.0 and adapted our k-wave-python to numpy v2.0 in #510. Please consult the v2.0 migration guide here to find out what this means for you!
- @brubbel fixed Bug #376 in #509 which will help everyone record multiple outputs. Thanks for the great find in your first PR @brubbel!
Other Dependencies
- Bump jaxtyping from 0.2.34 to 0.2.36 by @dependabot in #508
- Bump coverage from 7.6.4 to 7.6.7 by @dependabot in #507
New Contributors 🎉
Full Changelog: v0.3.5...v0.3.6
v0.3.5
Hi k-wave-python community!
We're excited to announce v0.3.5. This point release includes some improvements to k-wave-python that improve performance and reliability. We have also included new examples in the repository.
Special thanks to first-time contributors @faberno and @precicely for their contributions to this release!
What's Changed
- #454: measure no longer has enforced decimal places. Closes #454. by @precicely in #455
- 454 element measure precision by @precicely in #457
- update logger messages with f-strings by @waltsims in #458
- Update executor.py to handle spaces in binary path by @djps in #489
- add ability to run all examples by @waltsims in #480
- Update environment variable generation for safer execution by @waltsims in #493
New examples
- #441 Add us beams example by @gordon-n-stevenson in #445
- Add Focussed Detector In 2D Example by @faridyagubbayli in #492
- Add Focussed Detector In 3D Example by @faridyagubbayli in #495
- Add Modelling Sensor Directivity In 2D Example by @faridyagubbayli in #500
Bug fixes
- clear ruff errors in examples by @waltsims in #453
- Small bug fixes by @faberno in #463
- Typo in at_annular_array_3D script by @waltsims in #474
- Do not bind process in MacOS by @faridyagubbayli in #476
- Suppress the FileNotFound error when attempting to set the file mode by @faridyagubbayli in #498
Dependencies
- Bump coverage from 7.5.4 to 7.6.1 by @dependabot in #443
- Bump furo from 2024.5.6 to 2024.8.6 by @dependabot in #456
- Bump matplotlib from 3.9.0 to 3.9.2 by @dependabot in #451
- Bump sphinx-toolbox from 3.6.0 to 3.8.0 by @dependabot in #452
- Bump deepdiff from 7.0.1 to 8.0.1 by @dependabot in #466
- Bump pre-commit from 3.7.1 to 3.8.0 by @dependabot in #465
- Bump jaxtyping from 0.2.31 to 0.2.34 by @dependabot in #464
- Bump sphinx-mdinclude from 0.6.1 to 0.6.2 by @dependabot in #467
- Bump h5py from 3.11.0 to 3.12.1 by @dependabot in #479
- Bump coverage from 7.6.1 to 7.6.3 by @dependabot in #483
- Bump pre-commit from 3.8.0 to 4.0.1 by @dependabot in #482
- Bump beartype from 0.18.5 to 0.19.0 by @dependabot in #478
- Bump coverage from 7.6.3 to 7.6.4 by @dependabot in #487
- Bump sphinx-tabs from 3.4.5 to 3.4.7 by @dependabot in #486
New Contributors
- @precicely made their first contribution in #455
- @faberno made their first contribution in #463
Full Changelog: v0.3.4...v0.3.5
v0.3.4
v0.3.4
We're excited to announce the relsease of k-wave-python v0.3.4! We have improved code coverage, fixed some bugs and finally MacOS support for OpenMP execution in this point release! 🎉
Highlights
- k-Wave-python can now be run on MacOS using OpenMP #410
- We added key examples from contributors including defining a transducer by @gordon-n-stevenson in #378, phased-array @void-mckenzie in #379 and Modelling in 3D by @djps in #323.
- We improved support for Windows by addressing issues identified and addressed by @peterhollender in #367
- @KR616 contributed their first contributions to k-wave-python working to improve the issue and PR workflow in #409
We want to thank the community for its support and contributions. We look forward to your continued feedback 💯. See you in the next release!
What's Changed (complete list)
- Update documentation 2024 by @waltsims in #364
- Fix binary file redownloading on windows by @peterhollender in #367
- Modelling in 3D by @djps in #323
- Bump deepdiff from 6.7.1 to 7.0.1 by @dependabot in #368
- Bump scipy from 1.12.0 to 1.13.0 by @dependabot in #362
- Bump beartype from 0.17.2 to 0.18.2 by @dependabot in #361
- Axisymmetric by @djps in #371
- Fixed typo in utils/interp.py by @guillefix in #369
- Minor Typo fix - US BMode Phased Array Example by @void-mckenzie in #379
- Bump coverage from 7.4.4 to 7.5.1 by @dependabot in #380
- Bump h5py from 3.10.0 to 3.11.0 by @dependabot in #372
- Add us_defining_transducer example from kwave by @gordon-n-stevenson in #378
- Bump pre-commit from 3.7.0 to 3.7.1 by @dependabot in #381
- Bump matplotlib from 3.8.3 to 3.8.4 by @dependabot in #360
- Bump gdown from 5.1.0 to 5.2.0 by @dependabot in #382
- Replace m2r2 with mdinclude by @waltsims in #384
- Bump beartype from 0.18.2 to 0.18.5 by @dependabot in #373
- Bump sphinx-tabs from 3.4.4 to 3.4.5 by @dependabot in #277
- Refactor dunder init by @waltsims in #349
- patch plotting axis typo by @waltsims in #385
- Bump sphinx-mdinclude from 0.5.4 to 0.6.1 by @dependabot in #389
- Bump requests from 2.31.0 to 2.32.2 by @dependabot in #392
- Clean duplicate code in post_init method for SimulationExecutionOptions by @waltsims in #393
- Incorrect image in README.md by @KR616 in #396
- allow CI to complete on windows by @waltsims in #398
- Bump matplotlib from 3.8.4 to 3.9.0 by @dependabot in #388
- Bump coverage from 7.5.1 to 7.5.2 by @dependabot in #401
- Bump jaxtyping from 0.2.28 to 0.2.29 by @dependabot in #399
- Bump furo from 2024.1.29 to 2024.5.6 by @dependabot in #387
- Bump scipy from 1.13.0 to 1.13.1 by @dependabot in #400
- delete unused methods by @waltsims in #402
- Fix ivp example by @waltsims in #403
- Bump opencv-python from 4.9.0.80 to 4.10.0.82 by @dependabot in #406
- Bump requests from 2.32.2 to 2.32.3 by @dependabot in #405
- Bump coverage from 7.5.2 to 7.5.3 by @dependabot in #407
- ensure stderr and stdout are printed on executor error by @waltsims in #395
- PR for Issue #397 by @KR616 in #409
- Fix stability check by @waltsims in #411
- Update examples README.md with google sheets link. by @waltsims in #416
- Bump jaxtyping from 0.2.29 to 0.2.30 by @dependabot in #414
- Bump opencv-python from 4.10.0.82 to 4.10.0.84 by @dependabot in #415
- Add MacOS support by @waltsims in #410
- Separate DLL checking in windows by @peterhollender in #420
- Only test installation when pyproject.toml is updated by @waltsims in #422
- Bump coverage from 7.5.3 to 7.5.4 by @dependabot in #424
- migrate test-setup to init by @waltsims in #404
- Bump jaxtyping from 0.2.30 to 0.2.31 by @dependabot in #427
- Bump sphinx-toolbox from 3.5.0 to 3.6.0 by @dependabot in #428
- Update pyproject.toml to error on depreciation by @waltsims in #412
- create new map for every recorder object and clear vars by @waltsims in #429
- Fix and test check_stability by @waltsims in #431
- Fix typo in simulation_options arguments by @waltsims in #433
- v0.3.4 release by @waltsims in #430
New Contributors
- @peterhollender made their first contribution in #367
- @void-mckenzie made their first contribution in #379
- @gordon-n-stevenson made their first contribution in #378
- @KR616 made their first contribution in #396
Full Changelog: v0.3.3...v0.3.4
v0.3.3
What's Changed
We are excited to announce another release of k-wave-python! This release adds minor enhancements and improvements to k-wave-python along with a new example for phased-array transducers contributed by @talg2324.
Enhancements
- Add ruff pre-commit-hook by @waltsims in #316
- Update simulation_options.py - ensure that a 2d pml can be set by @djps in #328
- Update CITATION.cff with doi by @waltsims in #337
- phased array example by @talg2324 in #341
- Make cart arc by @djps in #343
- Metadata for lazy installation by @faridyagubbayli in #347
- Use jaxtyping by @faridyagubbayli in #351
- update colors for colab by @waltsims in #357
Fixes
- 310 bug two times log compression in the example us bmode linear transducer by @waltsims in #356
- 344 karray 2d weights dimension by @waltsims in #346
- Remove deprecation warning in write attributes by @waltsims in #352
Dependencies
- Bump gdown from 4.6.0 to 5.1.0 by @dependabot in #313
- Bump coverage from 7.4.3 to 7.4.4 by @dependabot in #345
- Bump jaxtyping from 0.2.25 to 0.2.28 by @dependabot in #354
- Bump beartype from 0.16.4 to 0.17.2 by @dependabot in #331
- Bump pre-commit from 3.6.2 to 3.7.0 by @dependabot in #355
Full Changelog: v0.3.2...v0.3.3