Software Delivery for Scientific Python Projects

Software Delivery for Scientific Python Projects

Testing, data validation, workflow automation, and Linux packaging practices for making scientific Python projects reliable, reproducible, and shareable.


Software Delivery for Scientific Python Projects
Author
Nicholas A. Del Grosso

This course focuses on the practical work that turns research code into software other people can run, trust, and extend. Learners start by testing Python code with pytest and organizing project folders, then add validation boundaries for scientific data, build reproducible workflows with Snakemake, and finish by packaging projects for Linux using Lima, Apptainer, container registries, and GitHub Actions.

The course is designed around hands-on notebook exercises and project-structure examples. By the end, learners should be able to write tests, validate inputs, connect analysis steps into workflows, and prepare computational projects for reproducible execution beyond a single development machine.

Credits

Nicholas A. Del Grosso

Installation

To run the course materials on your own machine:

  1. Install VSCode as your editor
  2. Install pixi or alternatively conda to create virtual Python environments (see the lessons on environment and package management)
  3. Download the materials for a lesson using the "Download Materials" button
  4. Extract the zip file and open the notebook in VSCode
  5. In VSCode, open a new terminal and install the environment:
pixi install
conda env create -f environment.yml
conda activate software-delivery

To run the Python-focused lessons, create the course environment from pixi.toml and install the notebook kernel:

pixi install
pixi run install-kernel

The Linux packaging unit also uses platform tools such as Homebrew, Lima, Apptainer, GHCR, and GitHub Actions. Those tools are installed or accessed during the relevant lessons rather than managed entirely by Pixi.