A mobile image-annotation platform for cell biologists and citizen science.
Working name. "Cellect" (cell + collect + select) is a placeholder — trivial to rename later. See docs/ARCHITECTURE.md for the rename checklist.
Cellect turns a phone into a microscopy annotation station. It targets four capabilities, built in slices:
- Camera cell counting — photograph cells through a microscope (DIC / BF / Phase), segment + count them on-device, and save the image, 16-bit instance mask, exact settings, and per-object measurements to a Files/iCloud project folder.
- Swipe annotation (building first) — point at a folder of images, swipe to assign
classes, and write a CSV (
filename+ user-named columns) back into the folder. Multiple rounds add multiple columns. - Touch semantic segmentation — paint instance/semantic masks on images by hand, modelled
on the desktop
curate_masks_qt.pytool (brush / erase / draw / wand / divide). - Community annotation — the maintainer shares Drive folders; opted-in users annotate, and their contributions land in a per-user folder (stable device/account ID) for later review.
Later: on-device model training (classification + instance segmentation) so users can build models for their own science.
- iOS first (SwiftUI, iOS 17+). This is the primary, best-supported target.
- Android later — the data contracts (CSV format, annotation schema, sync protocol in
docs/ARCHITECTURE.md) are kept platform-neutral so a Kotlin UI can sit on top of the same formats. No Android code yet.
iOS binaries can only be built on macOS. This repo is authored to be generated with
XcodeGen so there is no fragile checked-in
.xcodeproj.
brew install xcodegen # once
cd cellect
xcodegen generate # produces Cellect.xcodeproj from project.yml
open Cellect.xcodeproj # build & run on a simulator or device (⌘R)See docs/BUILDING.md for signing, device deployment, and CI options.
The app supports nine workstation-trained Core ML foreground/contact-boundary models and an
always-available Classical CV fallback. Generated .mlpackage directories are intentionally
excluded from ordinary Git because the complete development set is about 864 MB and contains
files above GitHub's regular file limit.
Place locally converted packages in Cellect/Resources/Models/ before running XcodeGen. The
training, verification, import, and Core ML conversion workflows are documented in
WorkstationTrainingBundle/ and WorkstationResults/. A source-only clone still builds and runs
with Classical CV; selected validated packages can later be published as release assets or with
Git LFS.
| Slice | State |
|---|---|
| Project scaffold (XcodeGen, app shell) | ✅ initial |
| Swipe annotation (feature 2) | ✅ built |
| Local + iCloud folder access | ✅ built |
| Touch semantic segmentation (feature 3) | ✅ built |
| Camera cell counting (feature 1) | ✅ built (Classical CV + nine-model Core ML registry) |
| Model/settings comparison | ✅ built (bounded sweeps, overlay slider, mask export) |
| Workstation training/evaluation pipeline | ✅ reproducible source + reports |
| Automated iOS tests | ✅ planner, probability fusion, descriptions, mask round-trip |
| Google Drive provider | ⬜ stubbed (protocol in place) |
| Community backend (feature 4) | 🚧 next |
| On-device training | ⬜ future |