This is a Simons Observatory pipeline for computing the spectra and covariances of the Planck 2018 high-$\ell$ likelihood. Default settings have been chosen to reproduce the official $\texttt{plic}$ analysis. This pipeline is presented and validated in the Simons Observatory paper Li et al. 2021. Each page is directly generated from a source file used in the pipeline, in the style of literate programming. Each source file can be located on the PSPipe GitHub using the Edit on GitHub link on the top of every page.

  • All executed code within a pipeline component is displayed in light orange code blocks.
  • Comments in the pipeline components are rendered as markdown.
  • The rendered pages are run on low-resolution Planck 2018 half-mission maps and masks at 143 GHz, generated by averaging down to $n_{\mathrm{side}} = 256$.
  • At the top of each page, we provide examples for how to run the pipeline component on the Planck data.
  • For the full analysis described in Li et al. 2021, consult the pages on Slurm files and cluster use.

The map/alm handling routines for this project were contributed into the Healpix.jl package, and the mode-coupling and covariance matrix calculations were added to PowerSpectra.jl. This pipeline mostly wrangles data and calls the routines from those packages.


The pipeline operates on the Planck maps, and generates estimates of the spectra and covariances. A pipeline really boils down to a series of command-line arguments which one executes on some computing cluster with a job manager like SLURM. The files in this pipeline are generally written to be executed with some command-line arguments. Each step of this pipeline will look something like

$ julia scriptname.jl example.toml [more arguments...]

We now provide a review of the different steps that go into this spectrum pipeline.

  1. setup downloads the Planck data, and also sets up some packages. This requires an internet connection, so you would typically run this on a head node.
  2. rawspectra computes the basic spectra, by performing mode-decoupling on the pseudo-$C_{\ell}$. This step also combines the missing pixels and the input likelihood mask, which it saves. These combined masks are used hereafter.
  3. fitnoisemodel estimates the noise power spectrum from the difference between the auto- and cross-spectra of the half-mission frequency maps. It then fits a smooth model to the estimated spectrum.
  4. signalsim generates spectra from signal-only simulations, which are used to correct for the effect of insufficiently-apodized point source holes in the mask.
  5. corrections computes the correction to the covariance matrix obtained from the signal-only simulations in signalsim.
  6. whitenoise estimates the noise power spectrum if the Planck noise was white, from the pixel variance maps.
  7. covmat computes covariance matrices between different spectra in the likelihood data vector, using as inputs the noise model from fitnoisemodel, the corrections from the signal simulations in corrections, and the white-noise levels found in whitenoise.

Lists of commands used to run this pipeline with the job manager SLURM are available in slurmgen.