Skip to content
This repository has been archived by the owner on Jul 18, 2023. It is now read-only.

Project. GSoC 2014

Cyrille Rossant edited this page Mar 10, 2014 · 4 revisions

Molecular viewer in Vispy

Overview

What is Vispy?

Vispy is a high-performance interactive visualization library in Python that brings the power of graphics cards (modern OpenGL: shaders, vertex buffer objects, etc.) to the masses. While Vispy primarily targets scientific visualization of very large datasets, it also offers a powerful and flexible infrastructure for building beautiful and fast data-intensive graphical applications in Python. We also plan to create a browser HTML/Javascript backend based on WebGL.

Status of the project

Vispy is still a very young library. The most fundamental building blocks have been created, we have a testing infrastructure, and we are now focusing our efforts on the core modules: visuals, transforms, shader chaining, scene graph. There are also multiple side modules, features, and examples of interest that could be developed in parallel.

The current version of Vispy (0.2) is only useful to OpenGL-aware users. However, the upcoming modules we are currently working on will remove this requirement. Eventually, we want to hide most of the complexity of OpenGL to end-users. Yet, expert users will always have the possibility to get their hands dirty on raw OpenGL commands and shaders.

We have yet to reach the critical mass of code required to enable scientific developers to use Vispy. GSoC would be a great opportunity to achieve this goal.

The developers

We are four Python developers quite experienced with data-intensive visualization applications in Python. We all created our own high-performance libraries used by many developers and projects. Then, we decided to team up. Eventually, we all want to see our own libraries superseded by Vispy.

Ideas for GSoC 2014

Students

We welcome students experienced with Python and interested in scientific plotting, visualization, real-time graphics, video games...

Here are general requirements you should fulfill in order to be accepted:

  • Experience with open source development, including collaborative workflows, Git/Github, issue tracking...
  • Experience with code quality: unit testing, test-driven development, documentation, continuous integration...
  • Have publicly available code source and projects we can look at.

We also give more specific requirements for the different project ideas. In addition, we would be happy to hear about your own ideas for the project.

Fundamental modules

The goal is to make progress on the three fundamental modules of Vispy:

  • Visuals
  • Shader chaining
  • Transforms

Initial work has been done by Luke Campagnola. We have to thoroughly test the API with multiple real-world use cases. Very good experience of modern OpenGL, GLSL and Python is required. A solid mathematical background is a plus.

High-level interfaces

The goal is to let Vispy be a backend for existing high-level visualization frontends such as matplotlib, seaborn, vega, ggplot, bokeh, vincent...

The student needs to have experience in plotting libraries in Python.

Vispy in the browser

The goal is to bring Vispy to the browser. There are two ways to achieve this. The offline approach is expected to be much harder, but more interesting and powerful, than the online method.

Online backend

A Javascript/WebGL frontend dynamically exchanges information with a Python server. OpenGL rendering is handled by the browser, while Python takes care of generating the data and handling interactions. This solution requires to develop a socket-based communication protocol in order to exchange OpenGL commands and data on the one hand, and user interaction events on the other hand, between Python and the browser.

Very good experience of Python, Javascript and client-server architectures is required. The student should have some experience with OpenGL.

Offline backend

An entire interactive visualization script written in Python is entirely compiled into a standalone HTML/Javascript document. To this end, we need to make sure all classes can be exported in JSON: gloo objects, visuals, transforms, the scene graph, etc.

This project is highly technical. The student needs to be highly skilled in Python, NumPy and Javascript.

IPython notebook integration

One of these two approaches, or an hybrid of them, could be used to bring Vispy to the IPython notebook.

Knowledge of Python, Javascript, IPython, and WebSocket is required. Experience with modern OpenGL is a plus. A close cooperation with the developers of IPython is expected.

Vispy on mobile

Since vispy uses OpenGL ES 2.0, its visualisations should be able to run on mobile devices. The Kivy project brings Python to Android and iOS and uses OpenGL ES 2.0 for user interfaces. If we can create a gl backend that hooks into Kivy, we should be able to vispy wherever Kivy runs, and allow people to create apps with aswesome visualizations!

Probably, we need numpy to become an optional dependency, and we need an alternative way to dealt with vertex data etc.

Knowledge of Python is required. Experience with Kivy is a pre. Potentially we may need to make some contributions to the Kivy project (which contains quite a bit of Cython).

Tesselation engine (2D)

Vispy will need a fast tesselation engine that can handle any 2D geometry.

Some good review is available at: http://vterrain.org/Implementation/Libs/triangulate.html

And a generic algo (with holes) is available at: https://code.google.com/p/poly2tri/

A pure python implementation also exists, it would be good to benchmark c and python versions. A faster python version would be goo.

Good knowledge of algorithmics, and notably algorithmic geometry, is required. The student should be experienced with Python, C++ and Cython.

High-quality visuals

The goal is to provide a complete Antigrain Geometry GL replacement. See https://code.google.com/p/gl-agg/ and https://github.com/rougier/gl-agg

The student needs to be highly skilled in modern OpenGL and GLSL.

Practical information

Note: most of us are likely to be at EuroSciPy 2014 in Cambridge, UK (late August 2014). Possibility for the student(s) to come and participate to a Vispy sprint?

Mentors

  • Nicolas Rougier: Unavailable during Euroscipy period (late August).
  • Almar Klein: Unavailable one week (will fill in date), and August is a bit busy.
  • Cyrille Rossant: Unavailable during the first two weeks of August.

Links

The information page for 2014 is here: https://wiki.python.org/moin/SummerOfCode/2014

Clone this wiki locally