SUMMON - Rapid prototyping of 2D visualizations

matt.rasmus at gmail.com matt.rasmus at gmail.com
Thu Apr 5 20:12:02 CEST 2007


I have been using python for the last two years to create various
visualizations for my research in computational biology.  Over the
years, I found that I often needed the same kinds of features for many
of my visualizations (OpenGL graphics with basic scrolling and
zooming).  I have implemented these features in an extension module
for python called SUMMON which I have made freely available on my
website for anyone who is interested <http://people.csail.mit.edu/
rasmus/summon/index.shtml>.

Although, there are many visualization frameworks, I believe SUMMON
provides a fairly unique combination.

- First, SUMMON is designed to be fast and able to visualize extremely
large datasets.  In the examples included, there is a visualization of
a binary tree with roughly 40,000 leaves (a hierarchical clustering of
all protein sequences from the human and dog genomes).  Specifying how
to draw the tree is done once in using python functions provided by
SUMMON (relatively slowly in about 10secs), however once constructed,
it uses natively compiled C++ to handle interaction.  Callbacks such
as mouse movements, clicks, and key strokes can all be bound to python
functions to customize interaction.

- SUMMON is designed for prototyping visualizations.  Often times in
science, one wants to visualize something in order to understand
whether it has any interesting patterns.  If the answer is "no", you
have to be able to throw away the visualization and move on to another
approach.  However, if there is a large amount of overhead in creating
a visualization (designing dialog boxes, toolbars, laying out check
boxes), it can become difficult to give up a visualization with that
much investment so easily.  The philosophy with SUMMON is to rely on
the python shell for handling basic interaction (reading in data,
specifying options, interacting with visualization) in order to avoid
GUI design.  Once, you realize a visualization is worth while for your
research, you can then reimplement it in your favorite full featured
GUI-toolkit.

- It provides basic scrolling and zooming for an arbitrarily large
coordinate space.  As a user you simply draw out your visualization
with lines, polygons, and text in the coordinate system you wish,
completely ignoring how many pixels anything may take.  SUMMON will
handle the display, including smart display of text (automatic
clipping, sizing, and justification of text).

- Its cross-platform:  It only relies on python2.4, OpenGL, GLUT, and
SDL.

So if this sounds like something you may need for your work, please
check it out and let me know what you think.

Matt




More information about the Python-list mailing list