Annotation Automation Ideas
Report Generation Post Process for Analyst
- Iterate over multiple scans with one call to the script.
- Additional computed columns in CSV, like ROI volume.
Annotation Pre Process for Annotators
- Generate ROIs given scan(s)
- Generate RECIST ruler measurements given ROIs
Annotation Linting During Annotation for Annotators
- In Volview check annotations match expectations and if not show helpful messages. Example: There are 2 unconnected ROIs with the same name.
Utopia Story
A north-star workflow motivating the feature requests above. Proprietary
pieces (🏭) are out of scope but mark where girder_volview should expose
extension points (🔌). ✅ = works today. 🚧 = in progress.
Personas: Admin (sets up collections and plugins), Annotator (reviews/edits in VolView),
Analyst (generates reports).
- Admin imports a collection of scans into Girder. ✅
- Admin generates initial annotations.
- Runs a Slicer CLI job over the collection that writes a
session.volview.zip per scan (segmentation labelmap + named rulers). 🔌
Seam: a Slicer-CLI-job → session bridge built on the Session Builder library.
- The model behind the job is custom/proprietary (e.g. in-house
segmentation). 🏭
- Annotator reviews and edits in VolView. ✅ (open/edit/save roundtrip)
- If the Admin skipped step 2, the Annotator runs the annotation job
from inside VolView. 🚧 (jobs-in-VolView feature)
- On save, validation rules run and show helpful messages. 🔌🏭
Seam: girder_volview exposes a save-time hook (🔌); rules are
collection-specific (🏭).
- Analyst generates a report.
- Points a script, or a GUI at the collection's root Girder folder and gets CSV/JSON
across all scans (LD/SAD lengths, ROI volume, warnings). 🔌
Seam: fold the reporting utilities into the girder_volview Python library.
- Built on the Session Builder library (
session_builder/). ✅
Proprietary Extension Plugin
The 🏭 pieces live in a private Girder plugin installed alongside girder_volview.
It binds to girder_volview's events and imports the Session Builder library, so
maintainers owe stable seams, not knowledge of the proprietary code.
Once girder_volview fires the hooks (🔌), the private plugin binds to them;
report logic imports the library or adds its own REST endpoints; the
segmentation model ships as a Slicer CLI Docker image (no plugin code needed).
Annotation Automation Ideas
Report Generation Post Process for Analyst
Annotation Pre Process for Annotators
Annotation Linting During Annotation for Annotators
Utopia Story
A north-star workflow motivating the feature requests above. Proprietary
pieces (🏭) are out of scope but mark where girder_volview should expose
extension points (🔌). ✅ = works today. 🚧 = in progress.
Personas: Admin (sets up collections and plugins), Annotator (reviews/edits in VolView),
Analyst (generates reports).
session.volview.zipper scan (segmentation labelmap + named rulers). 🔌Seam: a Slicer-CLI-job → session bridge built on the Session Builder library.
segmentation). 🏭
from inside VolView. 🚧 (jobs-in-VolView feature)
Seam: girder_volview exposes a save-time hook (🔌); rules are
collection-specific (🏭).
across all scans (LD/SAD lengths, ROI volume, warnings). 🔌
Seam: fold the reporting utilities into the girder_volview Python library.
session_builder/). ✅Proprietary Extension Plugin
The 🏭 pieces live in a private Girder plugin installed alongside girder_volview.
It binds to girder_volview's events and imports the Session Builder library, so
maintainers owe stable seams, not knowledge of the proprietary code.
Once girder_volview fires the hooks (🔌), the private plugin binds to them;
report logic imports the library or adds its own REST endpoints; the
segmentation model ships as a Slicer CLI Docker image (no plugin code needed).