Welcome to k-Wave-python’s documentation!

k-Wave is an open source acoustics toolbox for MATLAB and C++ developed by Bradley Treeby and Ben Cox (University College London) and Jiri Jaros (Brno University of Technology). The software is designed for time domain acoustic and ultrasound simulations in complex and tissue-realistic media. The simulation functions are based on the k-space pseudospectral method and are both fast and easy to use.

This project is a Python implementation of v1.4.0 of the MATLAB toolbox k-Wave as well as an interface to the pre-compiled v1.3 of k-Wave simulation binaries, which support NVIDIA sm 5.0 (Maxwell) to sm 9.0a (Hopper) GPUs.

Mission

With this project, we hope to increase the accessibility and reproducibility of k-Wave simulations for medical imaging, algorithmic prototyping, and testing. Many tools and methods of k-Wave can be found here, but this project has and will continue to diverge from the original k-Wave APIs to leverage pythonic practices.

Installation

To install the most recent build of k-Wave-python from PyPI, run:

pip install k-wave-python

After installing the Python package, the required binaries will be downloaded and installed the first time you run a simulation.

Getting started

After installation, run the B-mode reconstruction example in the examples directory of the repository:

git clone https://github.com/waltsims/k-wave-python
cd k-wave-python
git checkout v0.3.3
pip install '.[example]'
python3 examples/us_bmode_linear_transducer/us_bmode_linear_transducer.py

This example file steps through the process of:

  1. Generating a simulation medium

  2. Configuring a transducer

  3. Running the simulation

  4. Reconstructing the simulation

Requirements

This example expects an NVIDIA GPU by default to simulate with k-Wave.

To test the reconstruction on a machine with a GPU, set RUN_SIMULATION on line 29 of ``us_bmode_linear_transducer.py` <https://github.com/waltsims/k-wave-python/blob/6d2ee982bece84fc6980da99b23600f5675d2fc5/examples/us_bmode_linear_transducer/us_bmode_linear_transducer.py#L29>`_ to True, and the example will run without the pre-computed data.

Development

If you’re enjoying k-Wave-python and want to contribute, development instructions can be found here.

Documentation

The documentation for k-wave-python can be found here.

Citation

@software{k-Wave-Python,
author = {Yagubbbayli, Farid and Sinden, David and Simson, Walter},
license = {GPL-3.0},
title = {{k-Wave-Python}},
url = {https://github.com/waltsims/k-wave-python}
}