2026-07-13 –, Viz
With everything from microscopes to telescopes to satellites, scientists produce image data in countless formats, shapes, sizes, and dimensions. Python provides a rich ecosystem of libraries to make sense of them. napari is a Python library for multidimensional image visualization, but it does double duty as a standalone application that can be easily extended with GUI tools for analysis, visualization, and annotation. In this tutorial, we'll start with the basics of image visualization and analysis in napari, then show how to extend the napari user interface to make analysis workflows as easy as pushing a button, and finally show how to share these extensions as plugins, which can be easily installed by users and collaborators. If you work with images (particularly multidimensional images), and especially if you work with scientists who may not be comfortable with Python, this tutorial might be for you!
Installation Instructions: https://napari.org/workshops/extend/setup/
Just like we take more pictures of food than we will ever look at, scientists are using powerful microscopes, telescopes, satellites, MRI machines and myriad other sensors to produce more images than they can ever look at. These images come in different file formats, they might be 3D, contain a time-lapse component, many different channels, or other features that increase the complexity of loading them for visualization. Even when specialized viewers provide ways to load these images and look at them, analyzing, interacting with, and visualizing the results of these analyses can still be a challenge.
This tutorial is aimed at folks who have some experience in scientific computing with Python. To get the most out of it, you should be familiar with NumPy arrays, Jupyter notebooks, and Python scripts. Ideally, you should have some idea of how images can be represented as arrays of numbers, and the types of analyses that might be performed on these arrays e.g. filtering and segmentation. You don’t necessarily need to be familiar with how these tools and methods work - it’s enough to know that they are out there!
The tutorial will be split into three main parts, each around an hour to 75 minutes long. Each part will cover a different aspect of how napari can be used to simplify your analysis workflows, and the workflows of your colleagues and coworkers.
Part 1: Using Python and napari to view and analyze imaging data
In this section we will look at opening and viewing 2D, 3D and even 4D images in napari. We will see how different layer types can help you display your analysis results, how Jupyter notebooks can streamline your image processing, and how napari’s plugins can help you access different analyses through the napari viewer.
Part 2: Customizing your analysis workflow by extending napari’s functionality
We will teach you how to customize your analysis workflow by adding new keybindings and mouse bindings to napari, and adding event handlers that can listen for different layer and viewer events. Finally, we will show you how easy it can be to add your own GUI widgets with minimal code.
Part 3: Distributing your customized functionality with plugins
Once you’re happy with your customized analysis tools, you may want to distribute them to other colleagues and coworkers, or to napari users at large! This section will cover how to package your custom bits of code into pip-installable napari plugins.
- Some experience with scientific computing in Python
- Familiarity with executing Jupyter notebooks and Python scrips
- Familiarity with NumPy arrays
I am a full-time maintainer and community manager of napari, an interactive multi-dimensional Python image and data viewer, and its plugin ecosystem. I work to extend the plugin ecosystem and help scientists achieve their goals with image analysis.
I am one of the less-active napari core devs, with most of my contributions these days coming through vispy or on the web infrastructure (npe2api and napari hub). I first started working on napari as part of the CZI Imaging Tech team, but I now participate primarily in my spare time.
I got into Python and open source while studying Medical Physics at UW-Madison. After a few years in academia at Barrow Neurological Institute (Phoenix, AZ), I made the switch to industry. I first worked as an on-site clinical MRI scientist for Philips (Mayo Clinic, Rochester, MN), then joined a low-field MRI startup called Hyperfine (Guilford, CT). I'm now a remote worker for Biohub and still reside in Guilford, CT; but I'm in the middle of a move to Dobbs Ferry, NY.