Introduction#

What is PUNCH?#

PUNCH is a NASA Small Explorer (SMEX) mission to better understand how the mass and energy of the Sun’s corona become the solar wind that fills the solar system. Four suitcase-sized satellites will work together to produce images of the entire inner solar system around the clock. You can learn more at the PUNCH website.

Where does punchbowl fit in?#

punchbowl is the data reduction pipeline code for the PUNCH mission. The pipeline, as shown below, consists of several segments of processing.

PUNCH pipeline schematic

A schematic overview of the PUNCH data processing pipeline#

These segments are the following:

  • Raw to Level 0: converts raw satellite data to FITS images

  • Level 0 to Level 1: basic image calibration

  • Level 1 to Level 2: polarization resolution, image merging, quality marking

  • Level 2 to Level 3: background subtraction

We identify these segments by their finishing level, i.e. the Level 1 products come from the Level 0 to Level 1 segment which can be called just the Level 1 segment for short. The processing description and code you’ll find here is organized in this manner.

PUNCH and Python#

The PUNCH framework is built using Python - an object-oriented language with a large user / code base in astronomy and solar physics. The pipeline and tools for querying / loading PUNCH data use the Python language, along with the SunPy and Astropy software libraries. A number of useful tutorials exist online, including the official Python tutorial and the Hitchhiker’s Guide to Python.

In addition to scripts and modules, Python notebooks provide a great way to execute and document a sequence of code cells, with visualizations directly in-line. It’s a sort of analogue of the classic research notebook. The SunPy example gallery provides a great series of example notebooks, which are an additional great tool for learning Python.