aces / brainbrowser

Web-based visualization tools for neurological data.
https://brainbrowser.cbrain.mcgill.ca/
GNU Affero General Public License v3.0
351 stars 122 forks source link

Basic annotation in Volume Viewer #316

Open merous opened 7 years ago

merous commented 7 years ago

The LORIS team considers this QC feature to be their top priority. Requirements:

rdvincent commented 7 years ago

A couple of comments: I'm playing around with this now, by adding a module that adds annotation support along these lines. The biggest question will be how to link the annotations to the file persistently. We could store a volume key of some kind (URL, filename, SHA hash, etc.) that would allow some amount of checking that a given set of annotations properly belongs with a loaded volume.

rdvincent commented 7 years ago

@merous @samirdas @natacha-beck @jonathanlurie I've checked a partial implementation of this into my rdv-annotate branch. It is likely to need significant changes before we deploy it, but I'd be happy to get feedback now about whether this is the sort of functionality the LORIS team needs.

As of now, the module lets you create a brief annotation (use Ctrl-A to bring up the "add annotation" window). The annotation consists of the world coordinates of the cursor when the annotation is saved, as well as the text the user enters. When the annotation is saved the text is also added to a select list in the UI so that you can return to the position of the annotation by selecting its name in the list.

You can download the current list of annotations with the hotkey Ctrl-B. This will download a file named "annotations.json" to your local storage. Of course it would be easy to make this a link instead of a hotkey - all of the UI specifics are up for discussion.

As of now, there is no way to load, edit, or delete annotations, but of course those are easy to add once I know we are on the right track with this.

rdvincent commented 7 years ago

More notes from Samir:

rdvincent commented 7 years ago

@merous @samirdas @natacha-beck @jonathanlurie I've made new checkins for annotations on the rdv-annotate branch. The code is still what I would consider a 80% functional prototype. Here is what it does support:

Please try to evaluate this and let me know if it will do the job for now. The code is very simplistic in some ways that may need to be fixed (i.e. it uses linear search to draw points). But I'd like to get feedback about how this will be used before I spend more development time on it.