Combining C++ and Python in the LSST Software Stack

Summary

The software system for the Large Synoptic Survey Telescope is completely open-source, and at every stage we've focused on making it usable not just with LSST, but with generic astronomical image data.

Description

Authors: Bosch, Jim, Princeton University

Track: Astronomy and Astrophysics

The Large Synoptic Survey Telescope is a 8.4-meter survey telescope that will image the entire visible sky twice a week with a 3.2 Gigapixel camera, expected to come online early in the next decade. That means a lot of data: approximately 30 TB each night, and over 60 PB at the end of the 10-year survey, all of which will be made available to the public. The software system for LSST is completely open-source, and at every stage we've focused on making it usable not just with LSST, but with generic astronomical image data (in fact, it has been used to reduce data from several other telescopes already). We're building the software system for LSST using a combination of C++ and Python, making use of third-party software such as NumPy, Swig, and Eigen, along with a lot of custom code (much of which may be of broader use). In this talk I'll go over some of the advantages and disadvantages of the C++/Python combination, and some of the tricks and tools we've developed (and trials and tribulations we've encountered) in making them play well together in the context of astronomical data analysis. While LSST is still years away, and our software pipeline is still in many ways a prototype, in many respects it is already at the cutting edge of astronomical data analysis, and the lessons we have already learned will be of value not just to astronomers, but to scientists in other "big data" fields and general-purpose scientific software developers as well.