Last month, a group of image analysis developers gathered at Institut Pasteur in Paris (March 2–6) for a week-long hackathon centered on Appose, the library that enables seamless interprocess communication between Java applications like Fiji and Icy and Python-based deep learning tools. In attendance were Jean-Yves Tinevez (@tinevez), Curtis Rueden (@ctrueden), Gaëlle Letort (@gletort), Julie Mabon, Son Phan (@Son_Phan), Carlos Garcia (@carlosuc3m), and Nicolas Chiaruttini (@NicoKiaru), with remote participation from Stéphane Rigaud (@StRigaud), Tobias Pietzsch (@tpietzsch), and Edward Evans (@elevans).

New Fiji plugins on the Appose-Playground update site

Two new plugins are now available for Fiji users:

  • cellpose-appose — Run Cellpose v3 and Cellpose SAM (v4) directly from Fiji for 2D and 3D segmentation, with automatic Python environment setup handled entirely by Appose. No manual conda/pip wrangling required.

  • dextrusion-appose — A Fiji plugin wrapping DeXtrusion, a Python module for automated detection of cell extrusion events in epithelial tissue movies. Previously, DeXtrusion required users to shuttle back and forth between Python and Fiji via TIFF files and macros; this plugin unifies the whole workflow.

    DeXtrusion in action

Please note that these plugins are still in early development stage, not yet ready for production use. But feedback even at this stage is welcome as we continue to develop and refine them.

CellPose 3 plugin for Icy

Jean-Yves Tinevez prototyped a native Cellpose plugin for Icy, bringing the power of Cellpose 3 to the beautiful and responsive Icy user interface.

StarDist 2D via cellcast — cross-platform, cross-GPU

Thanks to Edward Evans's cellcast library, StarDist 2D can now be invoked in Fiji via Appose without requiring CUDA or an NVIDIA GPU. This means StarDist works on AMD and Apple Silicon hardware as well, which has been a long-standing pain point for many users. A working Groovy script demonstrating this is already available.

Yolo plugin for Fiji

A plugin for running YOLO models on 2D images in Fiji was also prototyped:

Find the source code here:

appose-python scripting language for Fiji's Script Editor

A proof-of-concept scripting-appose-python plugin was developed that registers Python as a JSR-223 script language in Fiji's Script Editor, backed by Appose. This means you can write Python scripts directly in Fiji's Script Editor and run them in a dedicated external environment, with no Java interop boilerplate needed. Down the road, the same scripts could potentially run unchanged in Icy and napari. I will make a separate announcement here on the forum once this script language is released and ready for testing.

Appose library improvements

The week produced a substantial round of fixes and enhancements to both appose-java and appose-python, culminating in the release of appose-python 0.11.0. Highlights include:

  • A new Python environment best practices guide and improved shared memory documentation were added to the Appose docs
  • PixiBuilder.environment() for selecting named Pixi environments, enabling multi-environment setups from a single pixi.toml
  • Fixed PixiBuilder.build() to ensure environments are fully installed before use
  • Configurable environment directory via the APPOSE_ENVS_DIR environment variable or appose.envs-dir Java system property — Fiji now sets this to ${app-dir}/envs rather than the default ~/.local/share/appose/
  • Improved error messages when a platform has no download URL for a requested tool
  • Fixed plugin discovery in OSGi containers (relevant for Fiji's module system)
  • Extensible object encoding/decoding, so custom types can be serialized across process boundaries (will be part of appose 0.12.0)

Adjacent work

A big thank you to the Institut Pasteur, and especially to Jean-Yves Tinevez for organizing and hosting the event. The Appose-Playground update site will continue to grow as the plugins developed here are polished further!

Congrats and big thank you to the appose team and hackathon participants! I'd add a pointer to @tinevez GitHub - apposed/appose-fiji-plugin: A template to get started creating Fiji plugin based on appose-java. · GitHub template which makes it super easy to get started. I could easily wrap a python unet pixel classifier script into a Fiji plugin and this makes distribution a breeze. Thank you Curtis !

Hear hear! Thanks for putting in so much effort where it matters.

Cellpose-appose is a big one for me. This approach removes a ton of confusing legwork that users in my facility would have to do first, before actually getting started with Cellpose in FIJI. This makes it a lot easier for beginners to get up to speed with neural-network based segmentation as it should be in 2026. Thanks!

Nice work. For a completion, here a working link to cellcast

Thanks everyone involved ! Appose will definitely make the use of DL tools easier for regular users, which is amazing !

If I understand the documentation, this is pretty cool as it has info for either windows or linux, and GPU or CPU. However, it hardcodes the CUDA version no ? This is fine and it's exactly what we're doing in our machines as it makes it fix and have it working.
Pixi has some things about system-requirementsthat could make that a bit more modular, however I never managed to have this working. Have you tried that ? Has anybody way smarter than me make that work ? :sweat_smile:

Really looking forward to use appose !

@lguerard Good question. I have not personally tried it yet, no. I am hopeful that all of us in the community can, as we figure out best practices, file PRs to the Appose documentation to share that knowledge between all of us as guides, templates and links to examples. Tangentially: Appose needs better support for building from lockfiles; I plan to work on that as a near-term Appose priority. If we can get a growing collection of long-term-reproducible cross-platform environment examples, that will help mitigate much of Python's "dependency hell" for users, even outside of Appose specifically.

The Python environment piece is probably going to matter as much as the model wrappers themselves for day-to-day facility use.

For a lot of users, Cellpose or StarDist is not the scary part anymore. The scary part is “why does this work on one workstation and fail on the other one?” So the Pixi work, the Appose environment directory, and the clearer error messages are a pretty big deal.

One thing that could be helpful later is a tiny smoke-test plugin or script for each wrapped tool. Something with a small bundled image, expected output, and a clear pass/fail result. That would make it much easier to separate Fiji/Appose/environment problems from actual model or data problems.

Really nice to see Icy included here too. Cross-application work like this saves a lot of duplicated effort.