ARM64-compatible Docker/Singularity images for bioinformatics and ML tools running on DGX Spark via Slurm.
1,000 SIF images built locally · 1,249 Dockerfiles defined · ARM64 (aarch64) (verified 2026-08-07 by direct file count; SIF count reflects this machine's local
sif/state, not a fixed platform-wide total)
omnibioai-tool-images/
├── dockerfiles/ ← 1,249 Dockerfiles, one per tool (33 more under obsolete/)
├── api/
│ └── server.py ← Build/status API — see "API" below
├── frontend/tool-images-ui/ ← React + TypeScript UI (Vite) — see "Frontend" below
├── sif/ ← built Singularity SIF images (gitignored)
├── build_logs/ ← build output logs (gitignored)
├── tests/ ← pytest test suite (97% coverage)
├── build_all.sh ← build all images
└── build_missing_sifs.sh ← rebuild only missing/failed SIFs
# Build a single tool
bash build_all.sh fastqc
# Build all tools
bash build_all.sh
# Build in parallel (N workers)
bash build_all.sh --parallel 4
# Run tests
pytest tests/ -v -k "not test_tool_runs_in_sif"- Write
dockerfiles/Dockerfile.toolname - Run
bash build_all.sh toolname - Add tool entry to
omnibioai-tes/configs/tools/<domain>.yaml(edit the appropriate category file) - Run
make restartinomnibioai-tes— done!
Tool configurations live in omnibioai-tes/configs/tools/ — one YAML file per domain.
Per-domain counts below sum to 1,007 and were not independently
re-verified in this pass — they may lag the 1,249 real Dockerfiles
and 1,000 built SIFs above; treat the per-domain breakdown as
directional, not exact.
| # | Domain | Config file | Tools | Examples |
|---|---|---|---|---|
| 01 | QC & Preprocessing | 01_qc_preprocessing.yaml |
35 | FastQC, MultiQC, Trimmomatic |
| 02 | Alignment | 02_alignment.yaml |
31 | BWA-MEM, BLASTN, Samtools |
| 03 | RNA-seq | 03_rnaseq.yaml |
58 | DESeq2, Kallisto, featureCounts |
| 04 | Variant Analysis | 04_variants.yaml |
57 | GATK, BCFtools, VEP |
| 05 | Epigenomics | 05_epigenomics.yaml |
36 | Bismark, MACS2, deepTools |
| 06 | Single-cell | 06_single_cell.yaml |
45 | Seurat, Scanpy, Cell Ranger |
| 07 | Spatial Omics | 07_spatial.yaml |
11 | Cellpose, Space Ranger, Squidpy |
| 08 | Assembly | 08_assembly.yaml |
20 | SPAdes, Flye, QUAST |
| 09 | Metagenomics | 09_metagenomics.yaml |
30 | Kraken2, MetaPhlAn, HUMAnN3 |
| 10 | Microbiome | 10_microbiome.yaml |
18 | QIIME2, nf-core Ampliseq |
| 11 | Population Genetics | 11_population_genetics.yaml |
29 | ADMIXTURE, GCTA, REGENIE |
| 12 | Structural Biology | 12_structural_biology.yaml |
27 | AlphaFold2, AutoDock, ESM-2 |
| 13 | Immunogenomics | 13_immunogenomics.yaml |
6 | MiXCR, TRUST4, arcasHLA |
| 14 | Ancient DNA | 14_ancient_dna.yaml |
1 | EAGER2 |
| 15 | Metabolomics | 15_metabolomics.yaml |
5 | XCMS, MZmine3, SIRIUS |
| 16 | Drug Discovery | 16_drug_discovery.yaml |
1 | ADMET Prediction |
| 17 | Proteomics | 17_proteomics.yaml |
14 | MSFragger, Percolator, Philosopher |
| 18 | ML / DL | 18_ml_dl.yaml |
19 | PyTorch, TensorFlow, RAPIDS |
| 19 | Cancer Genomics | 19_cancer_genomics.yaml |
10 | AMBER, COBALT, Survival KM |
| 20 | Comparative Genomics | 20_comparative_genomics.yaml |
8 | OrthoFinder, MCScan |
| 21 | Multi-omics | 21_multiomics.yaml |
4 | MOFA+, MOSCOT |
| 22 | Proteogenomics | 22_proteogenomics.yaml |
4 | TransDecoder, PRICE, Xtail |
| 23 | nf-core Pipelines | 23_nfcore_pipelines.yaml |
2 | nf-core RNA-seq, Nanoseq |
| 24 | Annotation | 24_annotation.yaml |
4 | RepeatMasker, AUGUSTUS, DAVID |
| 25 | Genomic Utilities | 25_genomic_utilities.yaml |
3 | BEDTools, BEDOPS, PyMOL |
| 26 | Long Read | 26_longread.yaml |
6 | Guppy, Dorado, Medaka |
| 27 | CRISPR | 27_crispr.yaml |
9 | MAGeCK, Cas-OFFinder |
| 28 | Imaging | 28_imaging.yaml |
2 | Steinbock, MCMICRO |
| 29 | HTTP Tools | 29_http_tools.yaml |
512 | Enrichr, OmniBioAI Workflow Runner |
# Run all tests (excluding live SIF execution)
pytest tests/ -v -k "not test_tool_runs_in_sif"
# Run with coverage
pytest tests/ --cov=tests --cov-report=term-missing \
-k "not test_tool_runs_in_sif"
# Run including SIF execution tests (requires Singularity)
pytest tests/ -vTest results (verified 2026-08-07): 10,008 passed · 1,525 failed · 1 skipped
in 31s (excludes live SIF-execution tests). The failures are all one
category — test_dockerfiles.py::TestDockerfileStructure::test_dockerfile_uses_approved_base,
parametrized per tool (yak, yara, zarr_extra, zarr_v2_extra, and
many more) — a base-image policy check a large number of Dockerfiles
currently fail, not 1,525 independent issues. Not investigated further
here (README-only pass); flagging honestly rather than repeating the
stale "1026 passed" figure, which predates this.
api/server.py (FastAPI) serves as the tool-images container in
omnibioai-studio's compose stack, port 8097.
| Method | Endpoint | Status |
|---|---|---|
| GET | /health |
Working |
| GET | /v1/tools |
Working — lists tools discovered from dockerfiles/Dockerfile.* |
| GET | /v1/tools/{tool}/dockerfile |
Working — returns the raw Dockerfile |
| GET | /v1/tools/{tool}/log |
Working — returns the build log if one exists |
| POST | /v1/build/{tool} |
Known non-functional (documented in code, issue #13, closed won't-fix) |
| POST | /v1/build-all |
Known non-functional (same reason) |
The two build endpoints shell out to build_all.sh, but the container
this API runs in only has api/ copied into it — no Docker CLI, no
/var/run/docker.sock, no Singularity/Apptainer binary, and
build_all.sh itself isn't even present in the image. They're left in
place returning exit 127 rather than reworked into something that looks
functional but isn't. The real build path is host-side:
build_missing_sifs.sh (or build_all.sh directly), run on a host with
Docker + Singularity installed — never through this HTTP API.
frontend/tool-images-ui/ (React + TypeScript, Vite) — ships in this
same repo, not documented elsewhere.
cd frontend/tool-images-ui
npm install
npm run dev- All images are built for
linux/arm64(aarch64) — DGX Spark / Grace Hopper - SIF files are stored in
sif/(gitignored — ~235G total) - Tools marked
⚠️ require an external license or manual download - Tools reusing an existing SIF are noted as
reused - Build logs are in
build_logs/(gitignored)
| Repo | Description |
|---|---|
omnibioai-tes |
Tool Execution Service — orchestrates Slurm jobs |
omnibioai-tool-runtime |
Containerized tool runner |
omnibioai |
Main Django application |
omnibioai-toolserver |
HTTP ToolServer shim |