I’m currently putting together a short presentation on doing 3D image processing with Python and Jupyter. Reviewing existing visualisation tools, I noticed the absence of a general tool handling most classical cases of interactive volume visualisation. Here’s a short summary of existing tools and their limitations (they all are great tools that can also do other things than volume viewing and I don’t mean to be negative here, just trying to find out where the field is heading to):

There is napari but I do not know how mature it is or if it is more complete than any of the above. Pinging @jni for some information

Another option would be to use the Java-based BigDataViewer (BDV) through imglyb or PyImageJ. BDV supports 5D data but AFAIK does not support arbitrary color maps out of the box. You would have to implement your own Converter into ARGB color space. Maybe a color map converter is readily available in the BDV world (cc @tpietzsch) or somewhere in ImageJ (cc @ctrueden).

We are building a python interface for SciView based on @hanslovsky’s imglyb. It is in testing, but we’re waiting on one feature (poke @skalarproduktraum). This will provide BigDataViewer style volumes for 5D data. You can test it in ImageJ with BigDataViewer files, but we’re generalizing that to numpy arrays for this upcoming release.

I had a look previously at Napari but it seemed still under heavy construction. I just tried it again now and the volume rendering seems to work nicely and has all the features I was looking for!

I of course already tried BigDataViewer through your imglyb package and it worked great. It’s nice to see that these two worlds are converging and I’ll definitely mention this solution in my presentation. Any hope to make it work on Mac OSX however ?

@thewtex what is the latest with VTK python interfaces?? I know it is actually really easy to visualize volumes inn Python using the VTK interface, and I believe you’ve presented example notebooks in the past, however my understanding is there is not support for more than 4 channels, which is a potential road block for microscopy applications.

Note that this wrapper is (probably) not necessary for JavaFX applications like, for example, Paintera. However, Paintera currently does not support time series and there is no straight forward way to start it from Python (unless you really know about both Python and JavaFX). The experimental Python wrapper payntera is outdated but may be a starting point.

I just tried it again now and the volume rendering seems to work nicely and has all the features I was looking for!

Thanks @guiwitz! It’s great to hear that napari fits your use case, which indeed is right in our ballpark. We are indeed still under heavy development but basically everyone on the team uses it in day-to-day work and it’s working great! (All credit to @sofroniewn for the state it’s in.) Please chime in with an issue if you have any feedback at all. We love to hear from new users!

Multi-channel visualization is actively being implemented – feedback as drafts come out would be much appreciated ! Time-lapse-visualization is on the roadmap, but longer out.

bnorthan:

however my understanding is there is not support for more than 4 channels, which is a potential road block for microscopy applications.

@bnorthan Yes, at first there will support for up to 4 independently color-mapped channels. The limit is 4 because of technical and performance considerations working with GPU’s and Jupyter. But, we could create an additional rendering path that does some pre-processing CPU-side to support more channels.

With more than 3 channels I find that no colormaps are perceptually meaningful, in particular for individual voxels that have significant contributions from all channels.
What does become important is the ability to quickly toggle the visibility and contrast/brightnes of each channel using a checkbox etc. (similar to Photoshop layers).