[IPython-dev] Interactive visualization in the IPython notebook 2.0

Cyrille Rossant cyrille.rossant at gmail.com
Thu Apr 3 05:47:39 EDT 2014

Dear IPython developers,

Let me introduce you to Mustafa Kaptan (in CC), a student who has
started to contribute to Vispy [1], and who has made an application to
GSoC this year. He'd be interested in integrating Vispy in the IPython
notebook for high-performance interactive visualization in the
browser. He already made a nice proof of concept [2]. We're likely to
need your help soon enough!

There are many different and complementary approaches. For now, we've
chosen to start with the simplest approach: the server renders a
figure with OpenGL, outputs a PNG, and sends it to the browser with
WebSockets and Tornado. Javascript captures user actions (mouse
clicks, mouse moves, keystrokes...) and sends them in return to the
server. I think that is similar to a proof of concept for matplotlib
made by Michael Droettboom some time ago [3].

IPython 2.0 now offers the right architecture for this. I was
wondering whether there was anyone on your side working on something
like this already? I think it would make sense to have common
protocols, interfaces and code for matplotlib, Vispy, and other
visualization libraries. Sending PNG and user events in JSON, creating
a sort of "distributed" event loop, all seem generic enough to me. It
would be too bad if we all duplicated our efforts for the same thing.

Where should we start? Comms, something else? Also, we'd like to reuse
some of this architecture for a slightly different approach. Instead
of letting the server render the figure with OpenGL, we'd just send
OpenGL commands and binary data to the browser (client-side rendering
with WebGL).

Best regards,

[1] http://vispy.org/
[2] https://github.com/mfkaptan/experimental/tree/master/online_backend/tornado
[3] http://mdboom.github.io/blog/2012/10/11/matplotlib-in-the-browser-its-coming/

More information about the IPython-dev mailing list