ohbm / hackathon2019

Website and projects for the OHBM Hackathon in Rome 2019
https://ohbm.github.io/hackathon2019
82 stars 61 forks source link

JavaScript toolkit for modular brain visualization #73

Open tyarkoni opened 5 years ago

tyarkoni commented 5 years ago

Name TBD

Project Description

There are quite a few JS brain image viewers out there, but they overwhelmingly focus on the rendering side of things rather than the UI side. The goal of this project is to develop a high-level, modular JS library that (a) defines a common API for viewers, (b) implements support for widely used viewers (e.g., Papaya), and (c) provides a set of customizable widgets/components that can be easily injected into new JS projects. If successful, users should be able to construct relatively sophisticated dashboards (including things like image thresholding and color assignment, customized orth views, multiple layers, etc.) in just a few lines of JS code.

Skills required to participate

All kinds of contributions are welcome, but the project is likely to benefit particularly from the involvement of people with JavaScript experience and/or general experience building APIs and architecting modular libraries.

Integration

There's room for contribution from folks with a wide range of backgrounds and experience levels. We will be particularly interested in soliciting opinions on what core features the package should include, and how users expect to interact with good visualization tools.

Preparation material

Folks with prior JavaScript experience may want to take a look at a few of the existing viewers, e.g., Papaya, PyCortex, and brainsprite.js. Participants with prior programming experience who are new to JavaScript may want to whisper a few quiet prayers and then take the plunge into a JS tutorial or six.

Link to your GitHub repo

https://github.com/neurostuff/BVT — but that's currently just a placeholder.

satra commented 5 years ago

@tyarkoni - do take a look at ami - https://github.com/FNNDSC/ami

satra commented 5 years ago

and here is the api docs: https://fnndsc.github.io/ami/doc/

tyarkoni commented 5 years ago

Oh, forgot to link to AMI as well, thanks! That's actually what @akeshavan and I were planning to build this on top of at NHA 2018 (we... didn't get very far). If this ends up being a high-level API for AMI, I'd be happy with that. But it would be nice to make it a bit more general and build in a data model that we could interface with other viewers.

katjaq commented 5 years ago

Love it! hopefully @r03ert0 and I will have some time to work during the hackathon... :D <3

TimVanMourik commented 5 years ago

Hey @tyarkoni! Something like this has been on my wishlist for quite a while! More specifically, I've been thinking about making a React component for a voxel (and/or mesh) viewer. Is that something you might be interested in or do you want to keep things more general JavaScript?

tyarkoni commented 5 years ago

@TimVanMourik I think it should be written in vanilla JS. It would be great to wrap it in a component written for one or more frameworks (personally I'd prefer Vue to React, so maybe both of those), but since modern frameworks have pretty steep learning curves, I'd prefer not to impose that kind of barrier on anyone wanting to just slap together a quick dashboard.

TimVanMourik commented 5 years ago

Sure, I understand and agree! Ideal case would be an slice-viewer (or whatever the name) vue-slice-viewer react-slice-viewer

Maybe BioImage Suite Web should also be in the list of references here, by the way. If I'm not mistaken this is a JavaScript + WebAssembly solution for the same thing.

And I had a quick look at DICOM viewers in general and found https://github.com/OHIF/Viewers that's got some impressive examples.

SNeuroble commented 5 years ago

Seconded about BISWeb! And here's the BISWeb repository: https://github.com/bioimagesuiteweb/bisweb

And this may be useful: "A Complete Simple Application Example in 10 Steps" https://github.com/bioimagesuiteweb/examples

My postdoc supervisors are the lead developers for this project, so feel free to reach out if you have q's.

kaczmarj commented 5 years ago

i would greatly appreciate a high-level brain visualizer. i tried adding visualization to a browser-based neural network project i've been working on (https://github.com/kaczmarj/nobrainer-js-testing/tree/dev) but failed... first i found three.js, which was too low-level for my uninspiring javascript abilities, then i found ami, which took too long for me to learn so i abandoned the effort. something plug-and-play or easy to inject would be amazing.

SNeuroble commented 5 years ago

Ooh, I’d love to connect at brainhack. We have a tensorflow-based module that is integrated (beta) into BISWeb. Come find me at the hack!

kaczmarj commented 5 years ago

@SNeuroble - i am not at OHBM but please feel free to email me at jakub.kaczmarzyk@gmail.com or on brainhack mattermost (@ jakubk)