Cell tracking in a developing embryo
Reconstructing cell lineages from light-sheet microscopy of a zebrafish embryo, for the CZ Biohub Kaggle competition. The score is about connections, not cells — and every part of this series is a consequence of that one line, including the two experiments that made things worse.
-
Part 1The score is about connections, not cells
Here is a way to fail at cell tracking: find every single cell, perfectly, and still score close to zero. Nobody asked where the cells are — they asked which cell became which. Part 1 of the Biohub series.
-
Part 2Build a scorer you trust before you build a model
You get five submissions a day. That is not an iteration loop, it is a rationing system. So I rebuilt the competition metric locally — and it predicted the leaderboard to within 0.008. Part 2 of the Biohub series.
-
Part 3Finding cells is the easy half — and the biggest win wasn't mine
A hand-written blob detector beat two well-known deep segmentation models — on accuracy and on runtime. Then I swapped in someone else's U-Net and gained more than everything I'd done combined. Part 3 of the Biohub series.
-
Part 4Greedy is a trap: linking cells with an integer program
Take the best link first and you can block two better ones behind it — 1.45 against a possible 2.55. The fix is to stop choosing one at a time. Part 4 of the Biohub series.
-
Part 5One missed cell, two lost links, one broken lineage
When the detector blinks for one frame you don't lose one connection — you lose two, and the family tree splits. The most valuable repair isn't finding more cells. It's healing the ones that broke. Part 5 of the Biohub series.
-
Part 6Two failures, two different axes
I improved my tracker and the score got worse. Twice — but not the same way twice. One failure says your scorer is biased; the other says it's noisy. A number you compute yourself can be wrong in both ways. Part 6 of the Biohub series.