Skip to content

Repository files navigation

Absconda

PyPI version License: MIT Python 3.10+

Turn conda environments into optimized container images for development and HPC deployment.

Absconda bridges the gap between conda's reproducible environments and container-based workflows. Define your scientific computing environment once with conda, then deploy it anywhereβ€”Docker, Singularity/Apptainer, HPC clustersβ€”with production-ready optimizations.

Key Features

πŸš€ Multi-Stage Builds - Automatic optimization that reduces image sizes by 40-60%
πŸ” Policy Validation - Enforce security and compliance rules organization-wide
πŸ—οΈ Remote Builders - Offload builds to cloud instances with automatic provisioning
πŸ§ͺ HPC Integration - Singularity/Apptainer support with module files and wrappers
πŸ“¦ R + renv Support - Combine conda environments with R package management
🎯 Flexible Deployment - Multiple modes: full-env, tarball, requirements, export-explicit
πŸ”§ Custom Templates - Jinja2-based system for advanced customization

Quick Start

Installation

# Install from PyPI
pip install absconda

# Or with pipx (recommended)
pipx install absconda

# Verify installation
absconda --version

Basic Usage

1. Create a conda environment file:

# environment.yaml
name: my-analysis
channels:
  - conda-forge
  - bioconda
dependencies:
  - python=3.11
  - numpy=1.26
  - pandas=2.1
  - scikit-learn=1.3

2. Build a Docker image:

absconda build \
  --file environment.yaml \
  --repository ghcr.io/myorg/my-analysis \
  --tag latest \
  --push

3. Use the image:

docker run --rm ghcr.io/myorg/my-analysis:latest python -c "import numpy; print(numpy.__version__)"

For HPC with Singularity:

# Build, push, pull SIF, and generate wrappers + module in one step
absconda deploy \
  --file environment.yaml \
  --repository ghcr.io/myorg/my-analysis \
  --tag latest \
  --commands python,pip,jupyter

# Or build/push first, then deploy from the image reference
absconda publish \
  --file environment.yaml \
  --repository ghcr.io/myorg/my-analysis \
  --tag latest

absconda deploy ghcr.io/myorg/my-analysis:latest \
  --commands python,pip,jupyter

See the Quick Start Guide for a complete walkthrough.

Documentation

For New Users

Guides

How-To Guides

Examples

Complete working examples with explanations:

Reference

For Contributors

Why Absconda?

The Problem

Scientific computing has conflicting requirements:

  • Reproducibility: Need exact package versions
  • Portability: Must run on laptops, HPC clusters, cloud
  • Performance: Large conda environments create huge containers
  • HPC Reality: Singularity/Apptainer, not Docker; module systems, not Docker Compose

The Solution

Absconda solves this by:

  1. Starting with conda - Use the ecosystem you already know
  2. Optimizing automatically - Multi-stage builds reduce image sizes by 40-60%
  3. Targeting HPC - Native Singularity support with modules and wrappers
  4. Enforcing policies - Organization-wide security and compliance
  5. Enabling remote builds - Build on powerful cloud instances, not your laptop

Compared to Alternatives

Feature Absconda repo2docker docker-conda Manual Dockerfile
Multi-stage optimization βœ… Automatic ❌ No ❌ No ⚠️ Manual
Singularity integration βœ… Built-in ❌ No ❌ No ⚠️ Manual
HPC modules βœ… Built-in ❌ No ❌ No ⚠️ Manual
Policy enforcement βœ… Yes ❌ No ❌ No ❌ No
Remote builders βœ… Yes ❌ No ❌ No ❌ No
R + renv support βœ… Yes ⚠️ Limited ❌ No ⚠️ Manual
Custom templates βœ… Jinja2 ❌ No ❌ No βœ… Full control

Real-World Example

Complete workflow for deploying to NCI Gadi HPC:

# 1. Build optimized Docker image (locally or on GCP)
absconda build \
  --file rnaseq-env.yaml \
  --repository ghcr.io/lab/rnaseq \
  --tag v1.0 \
  --remote-builder gcp-builder \
  --push

# 2. Deploy to HPC: pull SIF, generate wrappers and module
ssh gadi.nci.org.au
absconda deploy ghcr.io/lab/rnaseq:v1.0 \
  --commands python,pip \
  --image-cache /apps/rnaseq/v1.0 \
  --output-dir /apps/rnaseq/v1.0/wrappers \
  --module-dir /apps/Modules/modulefiles

# 3. Use in PBS job
module load rnaseq/v1.0
python analysis.py  # Uses containerized environment transparently

The result: reproducible, optimized, compliant environments deployed consistently from development through production.

Use Cases

πŸ”¬ Research Computing

  • Reproducible analysis pipelines
  • Sharing environments with collaborators
  • Publishing with computational papers
  • Archive environments for long-term reproducibility

🏒 Multi-User HPC

  • Centralized environment management
  • Policy enforcement across teams
  • Module system integration
  • Singularity deployment at scale

☁️ Cloud + HPC Hybrid

  • Build in cloud (fast, powerful VMs)
  • Deploy to HPC (Singularity)
  • Consistent environments across platforms
  • Cost-optimized with remote builders

🧬 Bioinformatics

  • Bioconda + R/Bioconductor workflows
  • GPU-accelerated analysis
  • Large-scale genomics pipelines
  • Compliance with data policies

Project Status

Absconda is production-ready and actively maintained. It powers scientific computing workflows for research teams at the Garvan Institute and beyond.

Current version: 0.2.5
Python support: 3.10, 3.11, 3.12, 3.13+
License: MIT

Getting Help

Contributing

Contributions welcome! See Contributing Guide.

Areas needing help:

  • Documentation improvements
  • Example workflows
  • Testing on different platforms
  • Feature requests and feedback

Acknowledgments

Developed at the Garvan Institute of Medical Research by the Swarbrick Lab.

Built with:

License

MIT License - see LICENSE for details.


Ready to get started? β†’ Installation Guide

Have questions? β†’ GitHub Discussions

About

Reproducible conda environments in Docker containers with policy-based template selection

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages