Smithsonian Astrophysical Observatory
United States

Miscellaneous Information

Miscellaneous Information

Abstract Reference: 30838
Identifier: O11.3
Presentation: Oral communication
Key Theme: 6 Python in Astronomy 

Sherpa, Python, and Astronomy. A successful co-evolution.

Laurino Omar, Burke Doug, Evans Janet, McLaughlin Warren, Nguyen Dan, Siemiginowska Aneta, 

Sherpa is a fitting tool originally developed as part of the Chandra X-Ray Observatory data analysis software, CIAO: its first version was distributed in October 1999. A few months earlier, Python 1.5.2 had been released: at the time, the Python Software Foundation did not exist and since then Python, Sherpa, and the way astronomers write and interact with software have changed significantly. At the time, Sherpa routines were written in C, C++, and Fortran, with a dedicated command line interpreter, and later with a S-Lang scripting interface.

Seventeen years later, Sherpa is a Python package with C, C++, and Fortran extensions, openly developed on GitHub. Although X-Ray scientific drivers remain strong, other projects outside of the X-Ray astronomical domain are starting to use Sherpa as a dependency in their systems and building on its strengths.

The transition from a mission-specific integrated package with a custom user interface, to a community-developed, general purpose, extensible and reusable module, required not only a major overhaul of the Sherpa code, and how it was built and tested, but it represented a paradigm shift that posed several challenges: coding standards, user interface, build and testing procedures, and documentation all had to be reevaluated and redesigned as the focus shifted from a simple command-line interpreter user interface to a modular, object-oriented, extensible Python Application Program Interface (API), while keeping high performance standards.

In this presentation we discuss the challenges we faced in incrementally adapting our software and configuration management to the emerging trends in computing, especially within the astronomical community. We describe how some Python technologies like conda and IPython helped us in this migration. We present Python projects that extend Sherpa outside of the original X-Ray domain, and we show how Sherpa can now be seamlessly integrated in heterogeneous Python environments using widespread tools like astropy, matplotlib, and jupyter. We show how non-Python applications can also interact with Sherpa through Virtual Observatory interoperability standards and a Python SAMP adapter. Finally, we will outline the new opportunities offered by newer technologies we are evaluating like Docker, that could allow Sherpa to become a cloud application.