Skip to content

Develop API for integrating with annotation platforms #1047

@tompollard

Description

@tompollard

There are several existing platforms that could be used to gather useful annotations for PhysioNet datasets. This needs a lot more thought, but as a rough idea it would be good to develop a general API that:

  1. allows an external platform to request a data file for annotation, perhaps along with associated metadata (details to be determined, but this might include existing annotations).
  2. allows the external platform to submit a structured annotation back to PhysioNet.

Metadata profile for an annotation

The structure of the annotation will need to be developed. At minimum, the metadata should probably include:

  • name/id of the annotation platform
  • name/id of the user on the platform
  • name/id of the record being annotated
  • the annotation
  • the time when the annotation was made.

Metadata profile for an annotation task

One of the major challenges is understanding how the API can be made generalizable across PhysioNet, ideally to support multiple data types and modalities (images, waveforms, notes, etc). It feels like the annotation task will require a formal definition that would state things like:

  • which files are to be annotated and the file type.
  • a human-readable description of the annotation task (e.g. "The task is to label each R wave peak in the ECG recordings" or "The task is to draw a bounding box around pacemakers in the X-rays."
  • a machine readable description of the annotation task that can be used by the annotation tool to render the task appropriately.

Providing an interface for the annotation functionality

Annotation tasks may be driven by the research question, and there may be multiple annotation tasks for a single dataset. We need to come up with a simple way of allowing PhysioNet users to propose and implement an annotation task. My suggestion is that we do this with the use of a new "annotation" project type (see #1032).

Summary of tasks

So in summary, some good first steps might be to:

  1. Design a metadata profile for a generalizable annotation. We can probably reuse or build on the format used by existing annotation platforms that we have looked at.
  2. Design a metadata profile for an annotation task.
  3. Review whether using the existing project functionality (Add "Annotation task" or "Labeling task" project type #1032) could be modified to allow a new project type to be used for defining tasks and storing annotations.
  4. Design the API!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions