Community Spotlight: VTK’s First Google Summer of Code

October 15, 2011

This year was the Visualization Toolkit’s first year as a Google Summer of Code (GSoC) mentoring organization. This is an exciting way for students to get involved in open source while being funded by Google to “flip bits not burgers.” Marcus Hanwell first took part in the Google Summer of Code program as a student in 2007, developing the open-source Avogadro and Kalzium programs to provide 3D molecular editing capabilities in the KDE educational project Kalzium. Since then he has been a mentor in the KDE project, and this year acted as the VTK organization’s administrator, with Jeff Baumes acting as the backup administrator.

VTK was given two student slots as a new mentoring organization, which made it especially difficult to select from all of the high-quality proposals we received. After a great deal of deliberation, David Lonie’s proposal entitled “Chemistry Visualization” [1] and Tharindu De Silva’s proposal entitled “Implement Select Algorithms from IEEE VisWeek 2010 in VTK” were selected. Kitware was pleased to see both of the students engaging the developer community and using the tools we provided to propose changes and take feedback.

Chemistry Visualization

VTK has been used by several projects for visualization in chemistry, but it has never had specific support for visualization in this field. David Lonie, a Ph.D. student in Dr. Zurek’s group at the University of Buffalo, has been working to address that. He has added support for the Chemical Markup Language (CML) [3] to VTK, used the Blue Obelisk Data Repository to add basic elemental data and used that to implement a simple bond perception class.
David has added support for the basic chemical structure representations, such as ball and stick, licorice and Van der Waals shown in Figure 1. These use the efficient 3D glyph mapper in order to render large molecular structures, and are able to use the colors, radii and other data provided by the Blue Obelisk Data Repository.

Figure 1: Basic molecular representations rendered by the new VTK molecule mapper.

Once he had the basics done it was on to electronic structure, contours and volume rendering. There is integration with OpenQube (developed by Marcus Hanwell to calculate electronic data from quantum output files), and the existing readers such as the Guassian cube reader. Figure 2 shows a water dimer molecular orbital calculated using OpenQube and rendered using the new electronic structure mappers added by David. As you can see, both the underlying molecular structure and the electronic structure can clearly be seen using these techniques.

These features are available using a simple API, and come with plenty of tests. It has been a pleasure working with David over the summer, and Kitware and the VTK team are very pleased with the outcome of his project.

Figure 2: Molecular orbital volume rendered (left) and contours (right) in VTK.

Implement Select Algorithms from IEEE VisWeek 2010 in VTK

Tharindu De Silva took on the task of implementing some of the most popular algorithms from last year’s VisWeek conference. The Visualization Implementation project (visimp.org) asked participants of the VisWeek conference to vote on the ideas from papers that they would most like to see implemented in VTK. Tharindu proposed implementing the projects with the highest number of votes. The first of these was “An Extension of Wilkinson’s Algorithm for Positioning Tick Labels on Axes,” and it touched several of the core classes in the Charts kit of VTK. This algorithm optimizes tick label position, font size, orientation and format of axis labels. A comparison of the existing and new implementation can be seen in Figure 3, and it offers a very widely useful algorithm to improve clarity of the 2D chart axes in VTK.

Figure 3: Existing (left) and improved (right) tick label placement in VTK scatter plot.

The second algorithm Tharindu worked on was the “Fast, Memory-Efficient Cell Location in Unstructured Grids for Visualization.” This algorithm was implemented as an alternative to the existing locator algorithms in VTK, and it should provide some speedups finding arbitrary cells in large datasets in certain cases. Tharindu used the existing locator framework in VTK to integrate this new efficient algorithm. Implementing this code involved working alongside VTK community members since there was significant interest in seeing this in VTK.\

Conclusions

Marcus Hanwell met up with some of the GSoC mentors at OSCON this year, and will be attending the Mentor Summit in October in Mountain View, CA. It has been great to work with two very enthusiastic students, who have both added tests to cover the new features they added to VTK. We will be merging them into master over the next few weeks and have already performed some code review along with mentoring throughout the summer.

This program is enormously valuable both to the VTK community, the students and the mentors taking part in the process. We would like to thank the students for all of their hard work, Kitware’s management team for supporting our application to the Google Summer of Code program and of course Google for continuing to run such a valuable
program that gives so many students and projects the opportunity to grow.

References
[1] http://www.google-melange.com/gsoc/project/google/gsoc2011/dlonie/4001
[2] http://www.google-melange.com/gsoc/project/google/gsoc2011/tsameera1/8001
[3] http://www.xml-cml.org/

Marcus Hanwell is an R&D Engineer in the scientific computing team at Kitware. He has a background in open source, open science, Physics and Chemistry. He developed large portions of the new charting framework in VTK, and also contributes to ParaView, Titan, ITK, CMake and software quality process.

 

 

Jeff Baumes is a Technical Leader at Kitware, where he is focused on informatics and information visualization. Jeff has a background in computer science and mathematics, and his Ph.D. thesis topic was “Discovering Groups in Communications Networks.” He is also one of the primary developers of the Titan informatics toolkit in collaboration with Sandia National Laboratory.

Leave a Reply