comic / grand-challenge.org

A platform for end-to-end development of machine learning solutions in biomedical imaging
https://grand-challenge.org
Apache License 2.0
173 stars 50 forks source link

Fancy visualisation #10

Closed sjoerdk closed 11 years ago

sjoerdk commented 12 years ago

Use MeVisLab interactive web based rendering engine to provide set of plugins to create fancy visualization. Integrate as Django App

sjoerdk commented 12 years ago

Alex do you know enough to do this? Any data to be visualized should be uploaded to the MeVis rendering server right? Is this a problem?

bartdedobbelaer commented 12 years ago

This seems like a job for the storage provider to deliver the correct file to the MVRS. Initially we could presume the data is located on a shared disk between the web server and the MVRS.

sjoerdk commented 12 years ago

Yes, you are right. This separation between servers/providers is helpful. In fact I put this here in the wiki: https://github.com/comic/comic-django/wiki/System-architecture

AlexanderKoehn commented 12 years ago

Yes, I agree with Bart. I assume a parameterization of the MVRS via javascript. In its simplest form it would be the path to the file stored on the Storage-Area-Network (SAN - http://de.wikipedia.org/wiki/Storage_Area_Network).

sjoerdk commented 12 years ago

Hi Alex, what do you mean by Parameterization via javascript? Using url parameters? Or can this take other forms?

AlexanderKoehn commented 12 years ago

The MeVisLab Viewer is a html/javascript snippet, which gets included via django templating system into the html that is send to the client. The viewer is represented by a javascript object living on client side. It provides interfaces to e.g. set /change the dataset to be shown. The html+javascript code send to the client will initally call that interface with a given dataset. I will soon provide a first example on that!

sjoerdk commented 12 years ago

sounds great! I understand almost 80% of what you said so an example would up that percentage even more :)

koekie commented 12 years ago

https://github.com/xtk/X#readme XTK seems also to be a nice package to visualize data in a web browser. Maybe it is worth exploring as including as a more lightweight solution to fancy visualisation

sjoerdk commented 12 years ago

Might be nice yes. But the first example I click http://lessons.goxtk.com/00/ is "OOPS not supported on this machine" That's a downer. We can check it out though

koekie commented 12 years ago

https://github.com/xtk/X/wiki/X%3ABrowsers are you using an old browser? (Or even IE?)

sjoerdk commented 12 years ago

Running firefox 13.0.1 here. I don't get these versions. but 4 << 13 right? I'll check again tomorrow

bartdedobbelaer commented 12 years ago

Looks very fancy. Two remarks though. 1. This all runs on the client and from my experience with the demos and tutorials it's kind of slow to get started. Once everything is loaded it's fine but definitely something to consider. I'm guessing the MVL implementation won't have this problem since everything runs on the server. 2. Implementation wise, at first glance, it seems easy enough but what will we do when something is not there? Again I presume MVL has a stronger and wider base to work with.

sjoerdk commented 12 years ago

The clientside/serverside difference makes me favor MVL at first. Still, we are using MVL as optional visualization. So there needs to be some alternative. This could also be something simpler (2D), for example https://developers.google.com/chart/

bartdedobbelaer commented 12 years ago

I'm currently using XTK for our own website as we were looking to present some data online and it's really cool!

Although my initial statement on the possible decrease in performance due to the javascript being loaded on the client there is also a positive remark to be made: you will never have a server that is overloaded ... In the end you're only serving static content, be it images or data or javascript code.

AlexanderKoehn commented 12 years ago

For nice 2d graph visualization I would throw in d3 http://d3js.org/ It is nicely designed, easy to learn and setup and super fancy :D

sjoerdk commented 12 years ago

Wow this looks great: http://mbostock.github.com/d3/talk/20111116/bundle.html I think this would be a good solution for basic graphs, ROI curves and such

sjoerdk commented 12 years ago

Alex just sent me a django app which load a mevislab remote rendering widdget on a page. I will try to merge this into the code.

sjoerdk commented 12 years ago

I have the fancy visualisation starting now but something goes wrong in the javascript startup. The page turns gray and stays emtpy. Below I pasted the output of my firefox firebug console below. I get the same in Chrome.

jquery used was http://localhost:8000/static/js/jquery-1.7.1.min.js

loading viewer... demoMe...gration (line 8) Core modules loaded. Application.js (line 518) Framework module 'jQueryMobile' loaded. Application.js (line 518) GET http://localhost:8000/static/js/Application.js?_=1343745810994 200 OK 9ms jquery....min.js (line 4) Params: 1343745810994

loading viewer... jquery....min.js (line 3) Framework loaded. Application.js (line 518) "Resuming debugger: error during debugging loop: TypeError: firstViewRangeElement is null" TypeError: self.frameworkBodyReady is not a function jquery....min.js (line 434) (434 out of range 4) jquery....min.js (line 565)

Creating module context for Comic_View2D jquery....min.js (line 519) "Resuming debugger: error during debugging loop: TypeError: firstViewRangeElement is null" TypeError: invalid 'in' operand self._args jquery....min.js (line 565) [Break On This Error](268 out of range 4)

AlexanderKoehn commented 12 years ago

I will check this error when installing the app on our new comic server. currently no idea.

AlexanderKoehn commented 12 years ago

One step forward. See issue #52 Next Step: Get rid of jQueryMobile and implement MLABWidget to jQuery UI converter, so we can use jQueryUI as mlabRemote framework

sjoerdk commented 11 years ago

this general ticket should be closed sometime. Superseded by #111