Prototype OMIX monorepo for modular analysis modules with shared starter environments.
This repo is organized so each analysis module can be developed, tested, and released independently while sharing a small set of cached starter environments.
OMIX_Test/
├── core/ # Shared R utilities used by modules
├── starter-environments/ # Shared Docker/renv environments
├── modules/ # Independent analysis modules
├── tests/ # Repo-level contract tests
└── .github/workflows/ # CI for module checks and starter environments
| Environment | Purpose | Example modules |
|---|---|---|
r-base |
Base R, renv, common system libraries | shared utility modules |
r-visualization |
Plotting and visualization packages | volcano, heatmap, PCA, Venn, tSNE/UMAP, limma stats |
r-pathway |
Pathway and gene-set packages | GSVA, GSEA, L2P single, L2P multi |
r-singlecell |
Single-cell packages | future single-cell modules |
Starter environments are intended to be built once, cached in GHCR, and referenced by module runtime builds.
Each module owns its own code, tests, schemas, app-panel config, and runtime entrypoint. The starter environment is declared in module.yml.
Current starter modules:
volcanoheatmappcapca3dvenn_diagramtsne_umapstats_limmapathway_gsvapathway_gseapathway_l2p_singlepathway_l2p_multi
The first platform-ready runtime examples are:
modules/volcano/runtime/modules/pathway_l2p_single/runtime/modules/pathway_l2p_multi/runtime/
All other modules are placeholders until these first examples are validated in Code Ocean.
Each runtime bundle can be sparse-synced into a standalone Code Ocean root. The OMIX monorepo remains the source of truth, and reverse sync is guarded so Code Ocean-side edits return only to the matching module runtime directory.
See:
docs/code-ocean-sync.mdfor the step-by-step sync workflowdocs/code-ocean-sync-flow.mmdfor the Mermaid/Lucidchart diagram
Every module should contain:
modules/<module>/
├── R/
├── tests/
├── schemas/
├── app-panel/
├── code/
├── module.yml
├── README.md
└── CHANGELOG.md
See docs/module-contract.md for the expected manifest fields.
Validate the current scaffold with:
Rscript tests/test-module-contract.R- Edit one module under
modules/<module>/. - Commit and push.
- CI validates the module contract and reports changed modules.
- Module-specific build/test jobs can build only the changed runtime.
- Starter environments rebuild only when files under
starter-environments/change.