Skip to content

How-to guides

Add parameters to a benchmark YAML

Module P1 is parametrized and will run twice, once with -a 0 -b 0.1 and second with -a 1 -b 0.1.

[snip]
stages:
    [snip]
  - id: process
    modules:
      - id: P1
        software_environment: "R"
        parameters:
          - values: ["-a 0", "-b 0.1"]
          - values: ["-a 1", "-b 0.1"]
        repository:
          url: https://github.com/omnibenchmark-example/process.git
          commit: ac5365e
[snip]

Exclude certain module-module chains

Module M1 won't use inputs from module D2.

[snip]
stages:
- id: methods
    modules:
      - id: M1
        software_environment: "python"
        exclude: 
          - D2
        repository:
          url: https://github.com/omnibenchmark-example/method.git
          commit: 1004cdd
   [snip]

Use a custom singularity container to run methods

We recommend building singularity containers using easybuild and ob software singularity build --easyconfig [easyconfig]. Still, it is possible to use any singularity container from an ORAS-compatible registry (could be a GitLab registry), or available locally as a SIF file.

---
id: bench1

[snip]

software_environments:                                 
  remote_custom_container:
    description: "A singularity container from a registry"
    ## update the path to an ORAS-compatible registry
    apptainer: oras://registry.renkulab.io/izaskun.mallona/sing
  local_custom_container:
    description: "A singularity container - locally available as a SIF"
    ## local path to a local SIF file
    apptainer: /home/user/singularity_image.sif

Choosing the right software backend (lmod, singularity, conda)

Omnibenchmark is written in python and depends only on pypi packages. Some of its dependencies, namely those related to (reproducible) software stack management, are OS-specific.

OS envmodules singularity conda cernvmfs
Linux ()
MacOS ()
Windows

On Linux, software can be managed:

  • Using the host's binaries. If relevant interpreters/software are in your $PATH (perhaps using a virtual environment, or directly), they're accessible to omnibenchmark.
  • Using conda. For that mamba is required. We provide an environment.yaml to help building the environment.
  • Using singularity. For that, apptainer is needed.
  • Using environment modules (lmod). For that, lmod is needed.

Similarly, on MacOS:

  • Using the host's binaries. If relevant interpreters/software are in your $PATH (perhaps using a virtual environment, or directly), they're accessible to omnibenchmark.
  • Using conda. For that mamba is required. We provide an environment.yaml to help building the environment.
  • Using singularity. It won't work unless using a virtual machine to provide a Linux-friendly host to singularity.
  • Using environment modules (lmod). For that, lmod needs to be installed.

We haven't fully tested omnibenchmark on Windows, but we would recommend using the Windows Subsystem for Linux (WSL).

Enabling networking in singularity containers

(Updating)