Fuse/stitch Zeiss LSZ1 czi data


I am trying to fuse some large data-sets coming from a LSZ1 microscope using BigStitcher
These are 4 files a 80 GB each corresponding to 4 angles. Each file has 30 time points, 3 channels, and > 200 Z-slices.
The naming is:

  • aname_G0.czi
  • aname_G90.czi
  • aname_G180.czi
  • aname_G270.czi

I can’t use the default Lightsheet Z1 reading as there is no master file in my dataset (BigStitcher SpecialLoaders - ImageJ). I use the manual loading instead. I specify following options

and then in the next step I specify the naming scheme for the angle and the number of time points + channels.

BigStitcher gives me a long list of files it wants to open. Iterating the same file per channel and time point leading to 30x3 = 90 opening events per angle. This is incredibly slow and much slower if one would just open each angle as virtual stack. Currently just the opening is taking more than 1 hour. Is this meant to be like this? Is there a way to merge several views in a common file?

I would be happy to know if someone from the @StephanPreibisch lab has some ideas? For instance could one not create already an hdf5 file for each angle and then use bigstitcher to combine the views?



Hi Antonio,

I don’t know the .czi format but I ran into issues importing files for the Ultramicroscope at some point. For me, the way was to write some python code that directly generates the BigStitcher file from the available metadata. npy2bdv from @nvladimus makes this quite straightforward if you can read the raw pixels, and the metadata (illumination direction, time point, stage position) from the .czi in python. It is also quite performant at writing the hdf5.
I don’t know whether you want to go the python route but for me (as someone who is more familiar with that environment) this is the easier workaround to generate Big Stitcher projects when the standard importer fails.

Hallo Volker,
thanks for the info. This could be an option, but it surely requires a pass through bioformats and python/java bridge. Also for a user it is not that easy to run on two different platforms.


I can totally see your point (although it depends on the user), so it definitely makes sense to have a solution that works in the original environment. If someone can address this within ImageJ/BigStichter, all the better. I don’t want to advocate for a particular solution, just trying to show one possible workaround.

I am not sure about this. I don’t know about the specific support for metadata but it may be possible to read this without bioformats using either czifile or aicspylibczi.

Hi @apoliti ,

You can try the loader from bigdataviewer-playground (yes, again!). It contains another bioformats lazy loader (different from the bigstitcher one) - allowing interactive browsing.

Building the dataset as an xml file is pretty straightforward (see https://youtu.be/LHI7vXiUUms?t=4073), and it should be compatible with BigStitcher.

One caveat is that it doesn’t read the angle information (because it’s not present in the bioformats API) - so you’ll have to rotate manually the datasets (this can be scripted or performed manually).

Please, let me know how it goes if you test it.


(Edit : note that there is an issue with the new Z1 update : Change in .czi tile info metadata after upgrade to Zeiss Lightsheet 7 - #3 by CellKai ), not solved yet, but I think all loaders are unfortunately equally affected

Hello @NicoKiaru,
yes I will try it.
For the moment I tried a solution to unpack the files in single time point and channel using BigDataProcessero (@Christian_Tischer). It all worked and I was able to load the data in bigstitcher and also save a h5/xml.

What puzzle me is that bigStitcher does not seem to understand that the data set has multiple angles, although it specify angles in the Explorer.

Here is the case of the test data set from Drosophila. Where one clearly sees in the little navigator panel that there are several angles. I fear that something is not correct in the xml file.
For instance the id in my example matches the angle instead of being a continuous number.

Did you use BigDataProcessor2 and Open>Open Bio-Formats ? Because if that’s the case, then it’s the same loader as bigdataviewer-playground (it’s this one : GitHub - BIOP/bigdataviewer-bioformats: Opens bioformat images in BigDataViewer). That could explain the missing angle properties. It’s a bioformats limitation. I’m even surprised that you see different angles in BigStitcher, but maybe you put them manually.

I first loaded each angle view (one czi file) in BDP2 and then saved a few time points as tif volumes. So I have per channel and time point one file per angle. These files have been loaded in BigStitcher and it correctly recognized the pattern I defined for the angles.

May be I do not understand how bigStitcher is supposed to work.
If one specifies the angles, does bigstitcher already show a preview of the different views in the appropriate orientation?
Could it be that I need to define how to perform a first transformation (rotation and translation)?
After this is the IPs detection and registration?

Hello @VolkerH,
I may also test a python conversion step before using the bigStitcher. Also having a system that could be more performant in writing hdf5 is for sure useful.
I will look at the code and see if one can use it for czi files.

Now that I tried it myself, so my guess is that the original rotations with know angles must be computed manually and entered in the xml file. This gives a “pre-aligned” set and then one can use a fine alignment.