Skip to content

Releases: waltsims/k-wave-python

v0.6.2

18 May 02:35
0ba7876

Choose a tag to compare

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 + OMPv1.4.1 adds sm_120 / Blackwell support. Rebuilt with static CUDA + cuFFT + FFTW + libstdc++ on ubuntu-22.04 (glibc 2.35 floor).
  • macOS OMPv1.4.1 includes the fast-math fix that prevents NaNs in absorbing-media simulations on Apple Silicon, plus the libhdf5.320.dylib ABI 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 guardkwave/__init__.py emits a RuntimeWarning and skips the darwin OMP download on darwin x86_64 (v1.4.x darwin is arm64-only). Universal2 coverage tracked for v0.6.5.
  • Chmod fixdownload_binaries now sets the exec bit on Linux/macOS (#741).

Solver & API fixes

  • alpha_mode is 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_array setter no longer raises ValueError when passed a numpy array (#732).
  • binary_path is no longer dropped by options_to_kwargs() (#726).
  • Added dtype parameter to kspaceFirstOrder() (#695, #716).
  • Added AlphaMode enum (#705).

Internals

  • step() is branch-free; lambdas are bound at setup (#715).
  • _setup_physics_operators split into four single-purpose methods (#713).
  • matlab_find replaced with NumPy in mapgen (#609).
  • kWaveMedium type annotations and test coverage (#736).
  • Pinned sphinx<9 to fix Read the Docs (#714).
  • gaussian cleanup using np.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


What's Changed

New Contributors

Full Changelog: v0.6.1...v0.6.2

v0.6.1

30 Mar 01:47
f5c765f

Choose a tag to compare

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=10 for 3D to match MATLAB defaults (#690)

29 examples ported to the new API

  • All Tier 1 examples use kspaceFirstOrder() with setup()/run()/__main__ pattern (#685)
  • Flattened to examples/*.py, old examples moved to examples/legacy/ (#686)
  • Run any example: uv run examples/ivp_homogeneous_medium.py — no GPU required

47 parity tests against MATLAB

  • Machine-precision validation (<5e-13 relative 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

  • Bump deepdiff 8.6.1 → 8.6.2 (#675)
  • Bump requests 2.32.5 → 2.33.0 (#674)

New Contributors

  • @Copilot made their first contribution in #684

Full Changelog: v0.6.0...v0.6.1

v0.6.0

26 Mar 23:30
10296a3

Choose a tag to compare

What's Changed

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

17 Feb 07:06
9b610cf

Choose a tag to compare

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

  • Second pass on developer documentation (#596)
  • Updated development environment docs (#595, #575)

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

13 Jan 04:11
87a7281

Choose a tag to compare

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

Full Changelog: v0.3.7...v0.4.0

v0.3.7

22 Nov 04:43
650cd18

Choose a tag to compare

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

20 Nov 16:12
d5d0160

Choose a tag to compare

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

New Contributors 🎉

Full Changelog: v0.3.5...v0.3.6

v0.3.5

12 Nov 19:33
34e7c89

Choose a tag to compare

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

New examples

Bug fixes

Dependencies

New Contributors

Full Changelog: v0.3.4...v0.3.5

v0.3.4

09 Jul 18:56
63055b4

Choose a tag to compare

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)

New Contributors

Full Changelog: v0.3.3...v0.3.4

v0.3.3

02 Apr 18:22
567f9c4

Choose a tag to compare

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

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

Full Changelog: v0.3.2...v0.3.3