GPU-accelerated image processing in napari using OpenCL
Project description
napari-pyclesperanto-assistant
The py-clEsperanto-assistant is a yet experimental napari plugin for building GPU-accelerated image processing workflows. It is part of the clEsperanto project and thus, aims at removing programming language related barriers between image processing ecosystems in the life sciences. It uses pyclesperanto and with that pyopencl as backend for processing images. This plugin was generated with Cookiecutter using with napari's cookiecutter-napari-plugin template.
Installation
It is recommended to install the assistant via conda:
conda create --name bio11 python==3.8.5
conda activate bio11
conda install -c conda-forge pyopencl
pip install napari-pyclesperanto-assistant
pip install "napari[all]"
Alternatively, you can install the assistant using napari's plugin installer in the menu Plugins > Install/uninstall Packages
.
Windows users should paste this URL
https://github.com/clEsperanto/napari_pyclesperanto_assistant/blob/master/installation_help/pyopencl-2020.3.1+cl12-cp38-cp38-win_amd64.whl?raw=true
in this field and click on Install
before proceeding:
Afterwards, you can install napari-pyclesperanto-assistant by clicking on Install
here:
You can then start napari, e.g. from command line, and find the assistant in the Plugins
menu.
napari
Also consider installing napari-workflow-inspector for visualizing the workflows you build using the assistant:
pip install napari-workflow-inspector
Features
pyclesperanto offers various possibilities for processing images. It comes from developers who work in life sciences and thus, it may be focused towards processing two- and three-dimensional microscopy image data showing cells and tissues. A selection of pyclesperanto's functionality is available via the assistant user interface. Typical workflows which can be built with this assistant include
- image filtering
- denoising / noise reduction (mean, median, Gaussian blur)
- background subtraction for uneven illumination or out-of-focus light (bottom-hat, top-hat, subtract Gaussian background)
- grey value morphology (local minimum, maximum. variance)
- gamma correction
- Laplace operator
- Sobel operator
- combining images
- masking
- image math (adding, subtracting, multiplying, dividing images)
- absolute / squared difference
- image transformations
- translation
- rotation
- scale
- reduce stack
- sub-stacks
- image projections
- minimum / mean / maximum / sum / standard deviation projections
- image segmentation
- binarization (thresholding, local maxima detection)
- labeling
- regionalization
- instance segmentation
- semantic segmentation
- detect label edges
- label spots
- connected component labeling
- Voronoi-Otsu-labeling
- post-processing of binary images
- dilation
- erosion
- binary opening
- binary closing
- binary and / or / xor
- post-processing of label images
- dilation (expansion) of labels
- extend labels via Voronoi
- exclude labels on edges
- exclude labels within / out of size / value range
- merge touching labels
- parametric maps
- proximal / touching neighbor count
- distance measurements to touching / proximal / n-nearest neighbors
- pixel count map
- mean / maximum / extension ratio map
- label measurements / post processing of parametric maps
- minimum / mean / maximum / standard deviation intensity maps
- minimum / mean / maximum / standard deviation of touching / n-nearest / neighbors
- neighbor meshes
- touching neighbors
- n-nearest neighbors
- proximal neighbors
- distance meshes
- measurements based on label images
- bounding box 2D / 3D
- minimum / mean / maximum / sum / standard deviation intensity
- center of mass
- centroid
- mean / maximum distance to centroid (and extension ratio shape descriptor)
- mean / maximum distance to center of mass (and extension ratio shape descriptor)
- code export
- python / Fiji-compatible jython
- python jupyter notebooks
- pyclesperanto scripting
- cell segmentation
- cell counting
- cell differentiation
- tissue classification
Usage
Start up the assistant
Start up napari, e.g. from the command line:
napari
Load example data, e.g. from the menu File > Open Samples > clEsperanto > CalibZAPWfixed
and
start the assistant from the menu Plugins > clEsperanto > Assistant
. Select a GPU in case you are asked to.
In case of two dimensional timelapse data, an initial conversion step might be necessary depending on your data source.
Click the menu Plugins > clEsperanto > Convert to 2d timelapse
. In the dialog, select the dataset and click ok.
You can delete the original dataset afterwards:
Set up a workflow
Choose categories of operations in the top right panel, for example start with denoising using a Gaussian Blur with sigma 1 in x and y.
Continue with background removal using the top-hat filter with radius 5 in x and y.
For labeling the objects, use Voronoi-Otsu-Labeling with both sigma parameters set to 2.
The labeled objects can be extended using a Voronoi diagram to derive a estimations of cell boundaries.
You can then configure napari to show the label boundaries on top of the original image:
When your workflow is set up, click the play button below your dataset:
Code generation
You can also export your workflow as Python/Jython code or as notebook.
After exporting your workflow as Jupyter notebook, you can start the notebook from the command line using
jupyter notebook my_notebook.ipynb
In some cases you need to replace the command cle.imread('None
)` with a command loading your image data.
After that, you can execute the notebook.
You can also export code to the clipboard or as python code to disc. This python code can also be executed in Fiji`s Jython, in case the CLIJx-assistant is installed.
Alternatively, you can also generate code and edit it directly in the Script Editor. Therefore, the napari-script-editor must be installed.
Also note: The generated python/jython code is not capable of processing timelapse data, you need to program a for-loop processing timepoints individually yourself. See also this notebook for how to do this.
Work in progress, contributions welcome.
For developers
Getting the recent code from github and locally installing it
git clone https://github.com/clesperanto/napari_pyclesperanto_assistant.git
pip install -e ./napari_pyclesperanto_assistant
Optional: Also install pyclesperantos recent source code from github:
git clone https://github.com/clEsperanto/pyclesperanto_prototype.git
pip install -e ./pyclesperanto_prototype
Feedback welcome!
clEsperanto is developed in the open because we believe in the open source community. See our community guidelines. Feel free to drop feedback as github issue or via image.sc
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file napari_pyclesperanto_assistant-0.15.5.tar.gz
.
File metadata
- Download URL: napari_pyclesperanto_assistant-0.15.5.tar.gz
- Upload date:
- Size: 255.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/29.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.6.4 keyring/23.0.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34e96aef21b3c54ad5fbbc774b6b0908e2755afaf1e9a5684aabd506973ee488 |
|
MD5 | d816077fda787fe42bbe163988d2334d |
|
BLAKE2b-256 | d46092a40aea7ca16c3833d54d995330a42f84b4a4a5f650829a7db2c90f19b7 |
File details
Details for the file napari_pyclesperanto_assistant-0.15.5-py3-none-any.whl
.
File metadata
- Download URL: napari_pyclesperanto_assistant-0.15.5-py3-none-any.whl
- Upload date:
- Size: 271.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/29.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.6.4 keyring/23.0.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 375ee764a7e3ab5312b355ad1233e3ee26187d284d9d4c287f44d72e8673f4a8 |
|
MD5 | d90a22336214197f9c5ca33357011705 |
|
BLAKE2b-256 | 52fda68edc273de16c601ac442e9a576a5d972e7390aad3fc314062e4190a207 |