Skip to main content

A tool to generate and manage parameter sensitivity experiments.

Project description

access-experiment-generator

CI CD Coverage Status License Code style: black

About

The ACCESS Experiment Generator is a tool for creating ensembles of model experiments from a single control configuration. Instead of manually editing multiple files, you describe changes in one YAML plan, and the generator:

  • Clones the configuration repository from GitHub.
  • Creates a control branch (with optional edits).
  • Creates one new branch per perturbation experiment.
  • Applies the parameter changes and commits them.

Each generated branch is immediately Payu-ready — you can step into the branch directory and launch runs on Gadi, NCI using Payu.

Key features

  • YAML-driven configuration: define edits once, apply them across many experiments.
  • Git-branch workflow: each variant is a branch, making experiments traceable.
  • Reproducibility: given the same repo + YAML, identical branches are regenerated.
  • Payu integration: generated branches are ready to run on Payu.

Documentation

Full documentation is available at https://access-experiment-generator.access-hive.org.au/

Installation

User setup

The experiment-generator is installed in the payu-dev conda environment:

module use /g/data/vk83/prerelease/modules && module load payu/dev

Alternatively, create a Python virtual environment and install via pip:

python3 -m venv <path/to/venv> --system-site-packages
source <path/to/venv>/bin/activate

pip install experiment-generator

Development setup

For contributors and developers, setup a development environment,

git clone https://github.com/ACCESS-NRI/access-experiment-generator.git
cd access-experiment-generator

# under a virtual environment
pip install -e .

Usage

$ experiment-generator --help

usage: experiment-generator [-h] [-i INPUT_YAML_FILE]

Manage ACCESS experiments using configurable YAML input.
If no YAML file is specified, the tool will look for 'Experiment_generator.yaml' in the current directory.
If that file is missing, you must specify one with -i / --input-yaml-file.

options:
  -h, --help            show this help message and exit
  -i INPUT_YAML_FILE, --input-yaml-file INPUT_YAML_FILE
                        Path to the YAML file specifying parameter values for experiment runs.
                        Defaults to 'Experiment_generator.yaml' if present in the current directory.

Example YAML

An exmaple plan (examples/Experiment_generator_example.yaml)

model_type: access-om2 # Specify the model ("access-om2", "access-om3", "access-esm1.5", or "access-esm1.6")
repository_url: git@github.com:ACCESS-NRI/access-om2-configs.git
start_point: "fce24e3" # Control commit hash for new branches
test_path: prototype-0.1.0 # All control and perturbation experiment repositories will be created here; can be relative, absolute or ~ (user-defined)
repository_directory: 1deg_jra55_ryf # Local directory name for the central repository (user-defined)

control_branch_name: ctrl

Control_Experiment:
  accessom2.nml:
    date_manager_nml:
      restart_period: "0,0,86400"

  config.yaml:
    queue: express
    walltime: 5:00:00

  ice/cice_in.nml:
    shortwave_nml:
      albicei: 0.05
      albicev: 0.08
    thermo_nml:
      chio: 0.001

Perturbation_Experiment:
  Parameter_block1:
    branches:
      - perturb_1
      - perturb_2

    ice/cice_in.nml:
      shortwave_nml:
        albicei:
          - 0.06
          - 0.07
        albicev:
          - 0.78
          - 0.81
      thermo_nml:
        chio:
          - 0.007
          - 0.008

    ocean/input.nml:
      ocean_nphysics_util_nml:
        agm_closure_length:
          - 25000.0
          - 75000.0

Workflow example

  1. Run the generator
experiment-generator -i examples/Experiment_generator_example.yaml
  1. Inspect branches
cd my-experiment/1deg_jra55_ryf
git branch
# ctrl
# main
# perturb_1
# perturb_2
  1. Check changes
git checkout perturb_1
git diff ctrl -- ice/cice_in.nml

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

experiment_generator-0.8.2.tar.gz (163.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

experiment_generator-0.8.2-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

Details for the file experiment_generator-0.8.2.tar.gz.

File metadata

  • Download URL: experiment_generator-0.8.2.tar.gz
  • Upload date:
  • Size: 163.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for experiment_generator-0.8.2.tar.gz
Algorithm Hash digest
SHA256 c3d8de87391b1b6ccf27e8e54e80e9b253cc8044b390e6b2195aea7be18a5f42
MD5 aea5f2ff9326653afe37a8664af0ffe7
BLAKE2b-256 67e9e0442d0f44b0978605b98045e623e43ae842d90b115f08c286884b30bc8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for experiment_generator-0.8.2.tar.gz:

Publisher: cd.yml on ACCESS-NRI/access-experiment-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file experiment_generator-0.8.2-py3-none-any.whl.

File metadata

File hashes

Hashes for experiment_generator-0.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bb2939a43c46b44000b44de2c405d4d734cdf4c93f4b1c1a1bbb3f599cb5ead4
MD5 33fba6fa7e5a50da1a9a7c14a91458db
BLAKE2b-256 a5dbd4b5bc68b1e9da233e2182e36a3064da116d245b031be4eadb3cbc213998

See more details on using hashes here.

Provenance

The following attestation bundles were made for experiment_generator-0.8.2-py3-none-any.whl:

Publisher: cd.yml on ACCESS-NRI/access-experiment-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page