Skip to content

Annotation Automation Ideas #98

Description

@PaulHax

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).

  1. Admin imports a collection of scans into Girder.
  2. 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). 🏭
  3. 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 (🏭).
  4. 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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions