Software Overview¶
Available Software¶
Managing your own Software¶
Feature / Tool | Lmod / Modules | conda / mamba | Apptainer | Spack | SBGrid | venv | renv |
---|---|---|---|---|---|---|---|
Language Support | Language-agnostic | Multi-language (Python, R, etc.) | Language-agnostic (container-based) | Multi-language (C, Fortran, Python) | Scientific tools (bio/chem/structural) | Python only | R only |
Scope | Manages access to software | Packages + native/system dependencies | Full OS + environment | Source builds + dependency trees | Curated software suite | Python packages | R packages |
Package Manager | N/A (env modules only) | conda , mamba |
None (uses definition files) | spack |
SBGrid client | pip |
renv |
Reproducibility | Medium (depends on loaded modules) | High (environment.yml , lockfiles) |
Very high (frozen image) | High (via concretization + locks) | High (versioned environment) | Medium (requirements.txt ) |
High (renv.lock ) |
Binary Packages | N/A | Yes (conda-forge, etc.) | Optional (user-defined or prebuilt) | Mostly built from source | Yes (precompiled) | From PyPI (wheels) | CRAN, Bioconductor |
Non-language Deps | Managed by system/site admin | Built-in (e.g., OpenCV, HDF5, BLAS) | Fully included in image | Fully supported | Bundled per environment | Manual (via OS tools) | Manual or external |
Custom Builds | No | Some | Yes (via definition file) | Yes (fully configurable) | No | No | No |
Cross-Platform | Depends on cluster/system | Excellent (Windows/Linux/macOS) | Excellent (Linux-native) | Builds per target system | Linux/macOS | Good, minor issues | Excellent |
HPC-Friendly | Yes (standard on clusters) | Yes | Yes (designed for HPC) | Yes (made for HPC) | Yes | Yes | Yes |
Best Use Case | Shared software on HPC systems | Data science, ML, research computing | Portable workflows, pipelines on HPC | Custom scientific toolchains | Structural biology labs | Simple Python apps | R reproducibility & isolation |
Complexity | Low for users, high for admins | Medium (lower with mamba ) |
Medium (def files + CLI) | High (very flexible, steep learning curve) | Very low (plug-and-play) | Low | Low |
Use Case | Recommended Tool(s) |
---|---|
Shared HPC environments | Lmod / modules |
Python/R + system deps, easy setup | conda / mamba |
Portable containers on HPC | Apptainer |
Custom scientific software stacks | Spack |
Ready-made scientific software (biology) | SBGrid |
Lightweight, local Python projects | venv |
Reproducible R projects | renv |
Lmod/Modules: Exposes pre-installed tools with module load; used on HPCs for easy switching between compilers and software versions.
conda/mamba: General-purpose, language-aware environment + dependency manager; mamba is a faster drop-in.
Apptainer: Build-and-run container system for non-root, secure app packaging on HPC.
Spack: HPC-focused package manager for custom builds, compiler/toolchain control, and dependency isolation.
SBGrid: Plug-and-play scientific software stack (mainly structural biology); not customizable.
venv: Built-in tool for isolating Python projects.
renv: Lightweight and reproducible environment manager for R workflows.
graph TD;
A["Using pre-installed software via HPC?"] -->|Yes| Lmod["Lmod / Environment Modules"]
A -->|No| B["Need your own Python, R, or native stack?"]
B -->|Yes| C[Use conda / mamba]
C --> D[Need portable, reproducible OS-level environment?]
D -->|Yes| Apptainer["Use Apptainer (containers)"]
D -->|No| E[Need custom toolchains or builds?]
E -->|Yes| Spack["Use Spack (custom builds)"]
E -->|No| F[Working in Python or R?]
F -->|R| Renv["Use renv (R projects)"]
F -->|Python| G[Pure Python project?]
G -->|Yes| Venv[Use venv]
G -->|No| C
Lmod --> Done1[✔ Done]
C --> Done2[✔ Done]
Apptainer --> Done3[✔ Done]
Spack --> Done4[✔ Done]
Renv --> Done5[✔ Done]
Venv --> Done6[✔ Done]
Software Environments¶
Containers¶
Containerization is a technology that allows you to package an application together with everything it needs to run — code, libraries, dependencies, and environment settings — into a single, portable unit called a container.
Think of a container like a lightweight, standalone mini-computer that runs consistently anywhere — on your laptop, on a server, or on a supercomputer — regardless of the underlying system.
Apptainer¶
What is Apptainer?
Apptainer (previously called Singularity) is a container platform designed specifically for High-Performance Computing (HPC) environments.
Why Apptainer over Docker in HPC? - Docker needs root/admin access → Not allowed on most HPC clusters. - Apptainer is designed to run containers as non-root → Safe for shared systems.
Apptainer integrates better with HPC tools (like MPI, GPUs, file systems).
What is Apptainer Good For? - Packaging scientific software & dependencies. - Running complex workflows reproducibly. - Sharing pre-configured environments. - Moving workloads between different systems easily (laptop → HPC → cloud).
For more information see the Apptainer page
Environments¶
LMOD/Modules¶
Lmod (Lua Modules) is an environment module system commonly used on High-Performance Computing (HPC) systems, clusters, and supercomputers. It helps users easily manage and switch between different software environments.
For more information see the Modules (LMOD) page
Conda/Mamba¶
Conda/mamba is an open-source package management and environment management system. It was developed to simplify installing, running, and managing software packages and their dependencies, especially for data science, machine learning, and scientific computing.
- Environments can be created locally and recreated on the research cluster
- Environments can be created per project
- Conda/Mamba manage software dependencies for reproducible research.
- Install non-Python libraries (like TensorFlow, OpenCV, etc.) easily.
- bioconda is a great source of bioinformatic tools
For more information see the Conda/Mamba page
Spack¶
Spack is a flexible, open-source package manager designed specifically for supercomputers, HPC clusters, and scientific computing. It helps users build, install, and manage multiple versions of scientific software and their complex dependencies.
For more information see the Spack page
SBGrid¶
SBGrid is a specialized software distribution and management system designed primarily for the structural biology community. It provides a curated collection of scientific software used in fields like:
- X-ray crystallography
- Cryo-electron microscopy (Cryo-EM)
- NMR spectroscopy
- Molecular modeling and visualization
For more information see the SBGrid page
venv¶
venv is a built-in Python tool (since Python 3.3) used to create virtual environments. A virtual environment is like a self-contained Python workspace — it has its own Python interpreter and its own set of installed packages, completely separate from the system Python.
Why is venv Useful?
When working on multiple Python projects:
- Different projects might need different versions of the same package.
- Installing everything globally could lead to version conflicts.
venv solves this by isolating environments.
What is venv Good For?
- Keeping project dependencies separate.
- Avoiding conflicts between package versions.
- Preventing changes to system-wide Python packages.
- Making projects easier to share & reproduce.
For more information see the venv page
renv¶
{renv}
is an R library that is used to create virtual environments of R packages. These environments can be at the user or project level and help to isolate the packages used for a project from the versions installed at a system level.
renv is useful for when you want to ensure your package versions are controlled by you, or if you want to ensure the same package versions are used across multiple devices or collaborators.
What is renv Good For?
- Keeping project dependencies separate.
- Preventing changes to system-wide R packages.
- Making projects easier to share & reproduce.
For more information see the renv page