Releases: waltsims/k-wave-python
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
v0.3.2
What's Changed
We're excited to announce k-wave-python v0.3.2! This release brings with it many improvements and fixes listed below. Importantly, we drop support for Python 3.8 and add support for Python 3.12. We have added development documentation on testing workflows and improved the overall documentation readability. Test coverage has also been added to the project. Furthermore, David Sinden (@djps) has joined the project as our third maintainer! 🎉
Lastly, we have added a citation file to the project. If you are enjoying k-Wave-python, please cite it in your work!
Breaking Changes
Improvements
- Check if color_map is usable by @faridyagubbayli in #287
- Add code coverage by @waltsims in #275
- Upgrade setup-python action & use pip cache by @faridyagubbayli in #280
- Remove module name from object names in the documentation. by @waltsims in #285
- Remove legacy mode from write attributes by @faridyagubbayli in #289
- create CITATION.cff proposal by @waltsims in #290
- Update pyproject.toml by @waltsims in #296
- Improve logging when checking for the presence of binaries by @faridyagubbayli in #320
- Update mapgen.py to include focused annulus oneil by @djps in #284
- Clean up examples and add more colab buttons by @waltsims in #298
- Remove duplicate write_attributes_typed function by @faridyagubbayli in #318
- Add test coverage for tol_star by @faridyagubbayli in #324
- Improved typing and testing for temperature dependency functions by @djps in #309
- Update make_cart_spherical_segment types to floating point values by @waltsims in #315
- Add CodeCov config by @faridyagubbayli in #334
- Bump python support to 3.12 by @waltsims in #267
- Update local testing workflow instructions by @waltsims in #291
Fixes
- #262 Fix stdout logic on exceptions by @waltsims in #297
- update argument types of focused_bowl_oneil by @waltsims in #317
- Fix colab link for controlling the pml by @waltsims in #333
Dependencies
- Bump pre-commit from 3.5.0 to 3.6.0 by @dependabot in #278
- Bump coverage from 7.4.0 to 7.4.1 by @dependabot in #294
- Bump gdown from 4.7.3 to 5.1.0 by @dependabot in #295
- Bump pre-commit from 3.6.0 to 3.6.1 by @dependabot in #300
- Bump furo from 2023.9.10 to 2024.1.29 by @dependabot in #299
- Bump matplotlib from 3.7.2 to 3.8.3 by @dependabot in #325
- Bump scipy from 1.10.1 to 1.12.0 by @dependabot in #276
- Bump coverage from 7.4.1 to 7.4.3 by @dependabot in #330
- Bump pre-commit from 3.6.1 to 3.6.2 by @dependabot in #329
Full Changelog: v0.3.1...v0.3.2