What is SUMMON
SUMMON is a python extension module that provides rapid prototyping of 2D visualizations. By heavily relying on the python scripting language, SUMMON allows the user to rapidly prototype a custom visualization for their data, without the overhead of designing a graphical user interface or recompiling native code. By simplifying the task of designing a visualization, users can spend more time on understanding their data.
SUMMON is designed to be a fast interface for developing interactive visualizations (via scene graphs) for OpenGL. Although python libraries already exist for accessing OpenGL, python is relatively slow for real-time interaction with large visualizations (trees with 100,000 leaves, sparse matrices with a million non-zeros, etc.). Therefore, with SUMMON all real-time interaction is handled with compiled native C++ code (via extension module). Python is only executed in the construction and occasional interaction with the visualization. This arrangement provides the best of both worlds.
SUMMON was designed with several philosophies. First, a scripting language (Python) is used to speed up the development process and avoid overhead such as code compilation. Second, design of graphical user interfaces should be minimized. Designing a good interface takes planning and time to layout buttons, scrollbars, and dialog boxes. Yet a poor interface is very painful to work with. Even when one has a good interface, rarely can it be automated for batch mode. Instead, SUMMON relies on the Python prompt for most interaction. This allows the users direct access to the underlying code, which is more expressive, and can be automated through scripting.For more information and documentation, see the manual or browse the online tutorial.
- Python C++ extension module
- Fast OpenGL graphics
- Drawing arbitrary points, lines, polygons, text with python scripting
- Binding inputs (keyboard, mouse, hotspots) to any python function
- Separate threads for python and graphics (allows use of python prompt and responsive graphics at the same time)
- Transparently handles graphics event loop, scrolling, zooming, text layout (auto-clipping, scaling, alignment), and click detection; allowing you to focus on viewing your data
- SVG output (also GIF/PNG/JPG/etc via ImageMagick)
- Cross-platform (Linux, Windows, Mac OS/X)
Several simple examples of SUMMON API (left text editor), a summon window with the visualization (upper right), and the interactive python prompt with an example of dynamically changing visualization (lower right). In the second screenshot, an example of using hotspots is shown. Simply define a rectangle in your visualization's coordinate system (choose whatever units make sense for you, don't worry about pixels) and tell SUMMON to call a python function of your choice whenever a click occurs within the hotspot rectangle. The third screenshot demonstrates the use of transforms (translate, rotate, etc). Lastly, a screenshot of SUMMON running on Windows using the IDLE Python IDE. SUMMON easily integrates into the IDE of your choice.
A large tree visualization (sumtree, demo included) of the clustering of olfactory genes from mammalian genomes (left, center). A phylogeny of mammalian species in a horizontal orientation with branch lengths and species names (right).
A large sparse matrix visualization (summatrix, demo included) of all vs. all BLAST scores between genes in human and mouse (three levels of zoom):
More examples of using summatrix to visualize matrices. Summatrix can permute rows and columns to display data clustering. Labels can be displayed next to the matrix or in separate panels that never leave the field of view while zooming.
A custom visualization using SUMMON that displays multiple genome alignments and highlighted orthologs (~1 megabase). The second screenshot shows a close up of the alignment.
More examples of custom visualizations. Left is a genome overview of every ORF colored by pathogenicity in the fungal species Candida albicans. Right is a gene family visualized using a phylogenetic tree, pair-wise distance matrix, and protein alignment.
These are demos of the tree visualizer (left) and an example of animation (right).
The YouTube videos are very compressed. For clearer movies check out these high-quality videos here.
- For installation and basic usage read the SUMMON manual.
- Full documentation of the SUMMON module API is also available online.
- A quick tutorial is available for learning the basic features of SUMMON.
- Python code examples with the SUMMON module.
See change log for update details. Installation instructions are available in the INSTALL file. The platform independent downloads are known to work for Linux, Windows (XP, Vista), and Mac OS X platforms.
WINDOWS NOTE: If you download the Windows Installer, also download the ZIP archive, which contains useful examples and documentation.
The latest development version of SUMMON is always available from my github page.
SUMMON is developed to be cross platform. It is known to work on the following platforms (but possibly others as well):
- Windows (Win2000, XP, Vista) (with and without Cygwin)
- Mac OS/X
To use SUMMON, the following third-party libraries are needed (they are all cross-platform):
- Python2.4 (or greater)
- OpenGL (often pre-installed for your platform)
- GLUT (one of the following: freeglut, OpenGLUT, GLUT)
- SDL (Simple Directmedia Layer)
On Debian, required packages can be install with this command:
apt-get install python freeglut3-dev libsdl1.2-dev
Different distributions should name their packages similarly. Also, to use SUMMON you should be familiar with the python programming language.
SUMMON is experimental code. I only make it available in hopes that someone else will find it useful. If you find any bugs or experience any other problems I would be interested to know. My email is rasmus[at]mit[dot]edu. Enjoy!