Skip to content
Contact Support

Reproducible Software

Research Software

According to this article in Nature:

Research software is a fundamental and vital part of research, yet significant challenges to discoverability, productivity, quality, reproducibility, and sustainability exist.

So what can we as researchers and technologists do to make our software easier to reproduce and use? Below are some tips, tricks and best practice to help get you started.

flowchart TD
        A{"Do you require a specific operating system?"}
        A -- "Yes" ---> CON
        A -- "No" ---> B

        B{"What software are you using?"}
        B -- "Python" ---> D
        B -- "Other" ---> C

        C{"Do you need to match environments with another computer?"}
        C -- "Yes" ---> E
        C -- "No" ---> ENVM

        D{"How many packages are you using?"}
        D -- "Few" ---> ENVM
        D -- "Dozens" ---> VENV
        D -- "Hundreds" ---> CONDA

        E{"Can you build it yourself?"}
        E -- "Yes" ---> BLD
        E -- "No" --->  CON

        BLD["Build the software from source"]
        ENVM["Use the Environment Module"]
        CON["Use a Apptainer container"]
        CONDA["Use Conda / Mamba"]
        VENV["Use Python Virtual Environment"]

Established Software Environment Tools

Environment Modules

The most simple way to access software on the cluster is using Environment Modules.

This will get you access to a specific version of your software, built for the clusters hardware.

If you want to exactly replicate your local environment this may not be suitable.

Conda/Mamba Environments

Conda environments are supported via the Miniforge3 module.

Python Virtual Environments

TODO: find and point to venv

New Tools for Reproducible Environments

uv

The uv package manager is available as module.

pixi

TODO: new page

anything else work mentioning?

Containerisation

Containers are supported on Mahuika via Apptainer.

Compiled Software

In addition to the ability to search available modules using module spider <search-term>, all installed modules and available versions can be found in this table.