Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaScript toolkit for modular brain visualization #73

Open
tyarkoni opened this issue Jun 3, 2019 · 11 comments
Open

JavaScript toolkit for modular brain visualization #73

tyarkoni opened this issue Jun 3, 2019 · 11 comments
Labels
CHECK_LABEL Labels needs to be checked by a human Hackathon Project Project suggestion Java

Comments

@tyarkoni
Copy link

tyarkoni commented Jun 3, 2019

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
Copy link

satra commented Jun 3, 2019

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

@satra
Copy link

satra commented Jun 3, 2019

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

@tyarkoni
Copy link
Author

tyarkoni commented Jun 3, 2019

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
Copy link
Member

katjaq commented Jun 3, 2019

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

@TimVanMourik TimVanMourik added the Hackathon Project Project suggestion label Jun 4, 2019
@TimVanMourik
Copy link
Contributor

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
Copy link
Author

tyarkoni commented Jun 4, 2019

@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
Copy link
Contributor

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
Copy link

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
Copy link

kaczmarj commented Jun 6, 2019

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
Copy link

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
Copy link

kaczmarj commented Jun 7, 2019

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

@Remi-Gau Remi-Gau added Java CHECK_LABEL Labels needs to be checked by a human labels Nov 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CHECK_LABEL Labels needs to be checked by a human Hackathon Project Project suggestion Java
Projects
None yet
Development

No branches or pull requests

7 participants