Python for gamma-ray astronomy

A workshop at MPIK Heidelberg, November 16 - 20, 2015


We are holding a week-long (November 16 - 20, 2015) workshop on open-source Python codes for gamma-ray astronomy at MPIK Heidelberg.

Python has become the most popular programming language in astronomy (see "Software Use in Astronomy: an Informal Survey"). This is also the case in gamma-ray astronomy, where most open-source analysis codes are Python-based or written in C/C++ but have a Python interface.

Open-source Python tools can serve as the glue that brings together data from various gamma-ray telescopes (e.g. Fermi, H.E.S.S., VERITAS, MAGIC, HAWC, CTA, INTEGRAL ) as well as astrophysical modeling codes.

The goals of this workshop are:

The focus will be mostly on high-level science tools and methods (gamma-ray source spectrum and morphology analysis and modeling), but there will be a group of people working on lower-level analysis (data calibration, event reconstruction) as well.

Note that this workshop is not a Python 'boot camp' or 'school'. We expect participants to have already used Python for at least some of their projects, even if only at a beginner level, and to have an interest to contribute to open-source projects.



What is an unconference session?

We expect participants at this workshop to have very diverse skills (Python coding and data analysis/modeling experience) and interests (e.g. gamma-ray source SED modeling or Cherenkov telescope event reconstruction or ...). Making everyone sit in the same tutorials would not be effective, and coding sessions only work in small groups anyways. Therefore, you can decide yourself if you want to attend tutorials, or if you prefer to organise or participate in an "unconference session" (e.g. discussion, planning, coding). In order to facilitate this we will provide a board during the whole conference where everyone can propose "unconference sessions" or put his/her name down for an already planned session. We will assign desks/rooms. At the end of each day each group will give a few-minute summary.


On Monday we'll have a series of introductory presentations to give everyone an overview, and a discussion section at the end of the day.

Note that for several of the presentations, we have scheduled follow-up tutorials that are more in-depth and hands-on later during the week.

Room: Otto-Hahn

Start Duration Presenter Title
9:15 15 Jim Hinton Welcome
9:30 15 + 5 Peter Eger Workshop orientation
9:50 40 All Flash introductions
10:30 30 Coffee
Methods session, chaired by Francois Brun
11:00 25 + 5 Michael Schmelling Statistics for gamma-ray astronomy
11:30 20 + 5 Regis Terrier Classical Cherenkov telescope data analysis
11:55 15 + 5 Peter Eger 3D cube Cherenkov telescope data analysis
12:15 15 + 5 Lea Jouvin Bias in spectral likelihood estimators and observation grouping
12:35 80 Lunch
Instruments session, chaired by Luigi Tibaldo
14:00 15 + 5 Jeremy Perkins Fermi-LAT data and science tools
14:20 15 + 5 Matthew Wood Fermi-LAT pass 8, event classes, FermiPy
14:40 15 + 5 Johannes King H.E.S.S. data analysis with open-source tools
15:00 15 + 5 Nathan Kelley-Hoskins VERITAS data analyses - Progress with Gammalib / ctools
15:20 15 + 5 Catherine Boisson CTA DATA overview
15:40 20 Coffee
Codes session, chaired by Lea Jouvin
16:00 15 + 5 Christoph Deil Open source development and Python for gamma-ray astronomy
16:20 15 + 5 Karl Kosack Exploring large-scale data processing in Python with CTA
16:40 20 + 5 Axel Donath Astropy, Sherpa, Gammapy
17:05 15 + 5 Luigi Tibaldo Multi-mission maximum likelihood analysis with 3ML
17:25 15 + 5 Victor Zabalza SED modeling with Naima
17:45 15 + 5 Joachim Hahn Astrophysical modeling with Gamera
18:05 10 Break
Discussion session, chaired by Christoph Deil
18:15 60 all Discussion on goals for the workshop and beyond


This schedule only lists tutorials, which take place in the central seminar room (CSR).
In parallel the Otto-Hahn and other rooms can be used for unconference sessions.

Time Room Presenter Title
9:15 CSR Axel Donath Python tutorial FHEE (part 1)
10:30 Coffee
11:00 CSR Christoph Deil Python tutorial FHEE (part 2)
12:30 Lunch
14:00 CSR Michael Schmelling Statistics for gamma-ray astronomy
15:30 Coffee
16:00 CSR Daniel Pumpe D3PO algorithm and IFT package
17:30 Daily summary session (all, chair: Victor Zabalza
18:00 Open-end unconference sessions. Pizza at ~ 7 pm.


This schedule only lists tutorials, which take place in the central seminar room (CSR).
In parallel the Otto-Hahn and other rooms can be used for unconference sessions.

Time Room Presenter Title
9:15 CSR Matthew Wood, Jeremy Perkins Fermi-LAT data analysis
10:30 Coffee
11:00 Multimedia room Luigi Tibaldo How to analyze multi-mission data using 3ML
12:30 Lunch
14:00 CSR Karl Kosack CTA Python pipeline
15:30 Coffee
16:00 CSR Johannes King Getting started with Gammapy
17:30 Daily summary session (all, chair: tbd)
18:00 End of official program. Meet at 8 pm at Bismarckplatz to go to dinner.


This schedule only lists tutorials, which take place in the central seminar room (CSR).
In parallel there will be discussion and coding sprint sesssions in the other rooms.

Time Room Presenter Title
9:15 CSR Joachim Hahn Astrophysical modeling with Gamera
10:30 Coffee
11:00 CSR Victor Zabalza SED modeling with Naima
12:30 Lunch
14:00 Unconference sessions
15:30 Coffee
16:00 Unconference sessions
17:30 Daily summary session (all, chair: tbd)
18:00 End of official program. Meet at 8 pm at Bismarckplatz to go to dinner.


On Friday morning we'll have a lightning talk and workshop summary session. You are welcome to stay and participate in unconference sessions in the afternoon.

Time Room Chair Title
9:15 CSR Luigi Tibaldo Lightning talks
10:30 Coffee
11:00 CSR Christoph Deil Workshop summary session
12:30 Lunch
14:00 Unconference sessions
15:30 Coffee
16:00 Unconference sessions
18:00 Open end? Go for drinks / dinner or movie together?


Here's a summary table of the tutorials we have currently planned (subject to change a bit based on feedback from participants):

Presenter Time Title
Axel Donath Tuesday, 9:15 - 10:30 Python tutorial FHEE (part 1)
Christoph Deil Tuesday, 11:00 - 12:30 Python tutorial FHEE (part 2)
Michael Schmelling Tuesday, 14:00 - 15:30 Statistics for gamma-ray astronomy
Daniel Pumpe Tuesday, 16:00 - 17:30 D3PO algorithm and IFT package
Matthew Wood, Jeremy Perkins Wednesday, 9:15 - 10:30 Fermi-LAT data analysis
Luigi Tibaldo Wednesday, 11:00 - 12:30 How to analyze multi-mission data using 3ML
Karl Kosack Wednesday, 14:00 - 15:30 CTA Python pipeline
Johannes King Wednesday, 16:00 - 17:30 Getting started with Gammapy
Joachim Hahn Thursday, 9:15 - 10:30 Astrophysical modeling with Gamera
Victor Zabalza Thursday, 11:00 - 12:30 SED modeling with Naima



Anyone is welcome to join the workshop. There is no registration fee.
Unforunately, we cannot refund travel or accommodation expenses.

To register, please fill out the following Google form: Register for PyGamma15.
If you're new to Python or git/Github, please spend some time before the workshop and Prepare.

If you have any questions, please send an email to Christoph Deil.


The workshop starts on Monday morning, so you should travel to Heidelberg on Sunday, November 15. On Friday, the official program ends at noon (12.30 am), so you can take a train or flight home on Friday afternoon. We will still have free coding sprint sessions on Friday afternoon and go for drinks and a movie Friday evening, for those that can stay in Heidelberg until Saturday.

The MPIK institute where the workshop takes place is located on a small hill outside of Heidelberg. The route from MPIK to Bismarckplatz (the central place in Heidelberg) is shown here.

The trip with bus number 39 from bus stop "Bismarckplatz" to "MPI Kernphysik" takes 15 minutes. In the morning, you can take the bus that leaves Bismarckplatz at 8.43 am and arrives at MPIK at 8.57 am (14 minutes), to be in time for the first session which starts 9:15 am. In case you take the bus at another time, note that only buses directed to Königsthul stop at "MPI Kernphysik". However, you can also take bus 39 in the direction of EMBL or Rohrbach-Süd and get off at "Bierhelderhof", then walk uphill less than five minutes to reach the institute. See bus schedule information.

The image below shows a map of MPIK, including the bus stop and entrance gate (building 01), the guest house (buildings 05 and 06), the approximate location of the workshop rooms in building 12, and the direction to the EMBL canteen where we will go for lunch.


Upon your first arrival please stop at the entrance gate (building 01) and ask for a visitor pass for the whole week.

There is the option to stay at the guest house at MPIK (35 euro per night). The number of available rooms there is quite limited and in case you want to stay there, please contact Peter Eger as soon as possible. In case you want to stay downtown we suggest to look for hotels close to Bismarckplatz. Although, Heidelberg is quite small, so if you don't mind walking a bit you can also stay in other areas such as Bergheim, Weststadt, or even on the other side of the Neckar in Neuenheim. Please contact Peter Eger if you if you have any questions concerning accomodation.


If you're new to Python or haven't contributed to open-source project with git/GitHub, please spend some time to learn it before the workshop. The tutorials at this workshop will not be at the absolute beginner level (but not very advanced either).

If you're unsure if this workshop is appropriate for you, here's a list of things we expect most participants to fulfill:

  • A laptop with a working scientific Python setup (we recommend you to install Anaconda, packages from Linux package managers are often very old).
  • A Github account - it's free. Ideally, you should have successfully run git commit, branch, push, pull, maybe even merge or rebase.
  • Some experience with writing Python functions and classes. You should know what a Python module and package is. The IPython terminal/notebook should be familiar.
  • You should have done some X-ray or gamma-ray data analysis, ideally using a Python script.
  • The tutorials will all list their "requirements for participation" separately. E.g. if you want to participate in the Fermi-LAT data analysis tutorial, you need to have the ScienceTools and FermiPy installed, but this is not needed for the rest of the workshop.

There are many great resources freely available online that you can use to prepare for the workshop:

  • If you don't have a scientific Python stack installed on your computer, try it out online at (this uses the Jupyter notbook, formerly known as the IPython notebook) and then to install it on your machine, we recommend Anaconda as a free, cross-platform (Linux, Mac, Windows) scientific Python distribution.
  • The git version control system and code development on Github. The Github bootcamp help page contains links to excellent tutorials and resources.
  • The Scipy Lecture Notes are a good tutorial to learn about Numpy, Scipy and Matplotlib and scientific Python.
  • The Practical Python for Astronomers tutorials are a good resource to learn about Astropy and specifically the Fitting and Modeling 1-D and 2-D Data tutorial to get started with Sherpa.
  • Since Python is very popular overall, and specifically in Astronomy, there's of course a ton of other free tutorials, books and resources available online, e.g. the Python for Astronomers web site or the Astropy tutorials.
  • If you are completely new to Python, and have time, you can of course read a Python programming book (there's some free books listed here). But it turns out that for effective scientific computing and data analysis, this isn't really needed, and some basic knowledge on functions, classes and modules can get you a long way!


List of registered participants (sorted by first name)

  1. Antonio Marinelli (University of Pisa, Italy)
  2. Axel Donath (MPIK, Heidelberg, Germany)
  3. Catherine Boisson (Observatoire Paris/Meudon, France)
  4. Christoph Deil (MPIK, Heidelberg, Germany)
  5. Daniel Pumpe (MPIA, München, Germany)
  6. Ellis Owen (UCL-MSSL, Dorking, England)
  7. Francois Brun (CEA, Paris, France)
  8. Jean Jacquemier (LAPP, Annecy, France)
  9. Jeremy Perkins (GSFC, Greenbelt, MD, USA)
  10. Joachim Hahn (MPIK, Heidelberg, Germany)
  11. Johannes King (MPIK, Heidelberg, Germany)
  12. Julien Lefaucheur (Observatoire Paris/Meudon, France)
  13. Justine Devin (LUPM, Montpellier, France)
  14. Karl Kosack (CEA, Paris, France)
  15. Lea Jouvin (APC, Paris, France)
  16. Leonardo Di Venere (INFN, Bari, Italy)
  17. Luigi Tibaldo (MPIK, Heidelberg, Germany)
  18. Massimo Capasso (IAAT, Tübingen, Germany)
  19. Matthew Wood (SLAC, Stanford, USA)
  20. Nathan Kelley-Hoskins (DESY, Zeuthen, Germany)
  21. Peter Eger (MPIK, Heidelberg, Germany)
  22. Pierre Aubert (LAPP, Annecy, France)
  23. Régis Terrier (APC, Paris, France)
  24. Salvatore Mangano (CIEMAT, Madrid, Spain)
  25. Victor Zabalza (Leicester, UK)
  26. Vikas Joshi (MPIK, Heidelberg, Germany)
  27. Vincent Marandon (MPIK, Heidelberg, Germany)
  28. Xiaona Sun (MPIK, Heidelberg, Germany)

#pygamma15 on Twitter


This workshop is kindly sponsored by:

github logo octocat