On the one side, I was hoping that it would be a very simple fix - and it is! On the other side it’s a bit embarrassing that I didn’t figure it out myself xD Apologies for not paying enough attention to the
--raw_data command. May I point out that I had the other input file command wrong as well:
--segmentation_image is the correct command (and not
--binary_image). Might be worth updating this in the Headless Operation documentation.
Despite getting many ‘warning errors’ I have managed to run the project successfully and have confirmed the output is valid by opening the
tracking-result.h5 file in ImageJ via the ilastik-ImageJ plugin.
For further inspection (if desired) I’m attaching the terminal output with all the ‘warning messages’ here: terminal_log_success.txt (1.1 MB)
For any future readers checking this post; I’d like to point out that it is crucial that both your input files (raw data & segmentation/probability data) have the same shape and dimensions - otherwise the project won’t be run. In the GUI you’ll have an error message pop up though.
I’ll proceed to use/test ilastik from Python now. Hopefully, it works just as well with
--probability_maps and the
Tracking [Inputs: Raw data, Pixel Prediciton Map] workflow too. Thanks a lot for your help @k-dominik (such a fast response as well - way to go!)
As a final note, I’d like to comment that although ilastik is an amazing tool in terms of enabling intuitive machine-learning image analysis methods (i.e. segmentation and tracking in my case) it is missing a couple of features that I think would highly increase its value as a software package.
- The ability to track objects that are ‘lost’. My understanding is that it currently does not have the ability to pick up objects with tracking gaps (even in the case of 1 frame). In such a scenario, ilastik simply labels the ‘re-appearing’ object with a new ID (correct me if I’m wrong). Now that I think of it, it’s a bit surprising this feature is not supported since there is the applet for tracking dividing cells & lineage tracing…
- The second feature that I think is really missing is that of curation. Being able to preview the results (when training a project) is absolutely crucial to get an idea of how good (or bad) segmentation/tracking performance is. So I’m grateful it is available. However, even with well-trained projects, there are still instances where some cells/objects are simply not well segmented/labelled/tracked. And not having the option to correct single-cell tracks leaves the user with unsuitable options. By this I mean that the user either 1) accepts that some objects are not well tracked and decides to include it in the final analysis (although I want to think no scientist would ever take this approach) 2) excludes the badly tracked objects as a quality control step in a script, and thus reduces the available sample size or 3) builds a tool/script that allows the user to ‘correct’ object tracks (although this is the best approach, it’s the most time-consuming one).
I realised I’ve written a bit too extensively, but I do this to give feedback to the @ilastik_team @k-dominik in the hope of improving what already is a great tool.
Oh, one final question/point: is it possible to pass through several datasets within the same
.h5 file? Say I have an
experiment.h5 file with the following structure:
Is it possible to run ilastik projects with
--raw_data experiment.h5/Data/FOV01/channel0 /Data/FOV01/channel1 /Data...etc as input commands to batch process these? It would save the user from having to export each time-series as a single file…
Once again, thank you very much @k-dominik for all your hard work - not only responding to this post but also all other posts about ilastik issues raised by other users. It is very helpful.