Remember me talking about using the makeContiguous() feature of the reworked UnionFind structure? Nevermind. It turns out that I cannot use this feature – it violates the consistency requirement. But I have better news than that.

The newly created branch lazycc contains a workflow dedicated to show the advances in the lazy connected components business. This could actually be the first time that I see labeled images coming out of my operator. Rather satisfying, one might think. That’s what the connected components applet looks like:

snake

Yes, this frame is indeed taken from a snake game. I thought that it might be a good example of a global connected components run. The snake starts as 2 squares, and moves to one adjacent square on each time step. Everytime the snake eats snake food, or whatever these balls might be, it grows by one square. I conclude that all frames must be connected. And this is what the algorithm returns for a labeling:

snake1

No! Why does it look like the children escorting soccer players to their world cup matches? All the unit tests passed, right? It seems like volumina found a problem with my code. In volumina, volumes are shown in a tiled fashion, and each tile spawns its own request for data. In my case, this means at least 3 requests (one for each of the x/y/z views), but probably up to 12. And the algorithm seems to have problems with this, although there are some locks and stuff in there. Luckily I was able to reproduce this in a non-GUI test case, so I don’t have to run ilastik every time I think I’ve fixed it. Back to coding, I guess.