A tool to generate and manage parameter sensitivity experiments.
Project description
access-experiment-generator
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
- Run the generator
experiment-generator -i examples/Experiment_generator_example.yaml
- Inspect branches
cd my-experiment/1deg_jra55_ryf
git branch
# ctrl
# main
# perturb_1
# perturb_2
- Check changes
git checkout perturb_1
git diff ctrl -- ice/cice_in.nml
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file experiment_generator-0.8.1.tar.gz.
File metadata
- Download URL: experiment_generator-0.8.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7d49ea1eb7f2e07b0cf3a19e6bacac154b3c8b45f50c173b73733c27e51d429
|
|
| MD5 |
1ff0e626aad5722228fc5d054c293ce3
|
|
| BLAKE2b-256 |
ec442172aca342060c2c9a5274f2b54f95f66510cb227f22b1653845918ffd2a
|
Provenance
The following attestation bundles were made for experiment_generator-0.8.1.tar.gz:
Publisher:
cd.yml on ACCESS-NRI/access-experiment-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
experiment_generator-0.8.1.tar.gz -
Subject digest:
e7d49ea1eb7f2e07b0cf3a19e6bacac154b3c8b45f50c173b73733c27e51d429 - Sigstore transparency entry: 841391736
- Sigstore integration time:
-
Permalink:
ACCESS-NRI/access-experiment-generator@324faf1e87357f2baab31eda92b77789cb89e594 -
Branch / Tag:
refs/tags/v0.8.1 - Owner: https://github.com/ACCESS-NRI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@324faf1e87357f2baab31eda92b77789cb89e594 -
Trigger Event:
push
-
Statement type:
File details
Details for the file experiment_generator-0.8.1-py3-none-any.whl.
File metadata
- Download URL: experiment_generator-0.8.1-py3-none-any.whl
- Upload date:
- Size: 37.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
588d20c8658770aa6a9931ba0475e01ca3404ac9cbe82e9408f2ae4aa633bb9a
|
|
| MD5 |
4345f3a517a19dc8ce08d296bfc2eba2
|
|
| BLAKE2b-256 |
d2f568de44af6921ff191ba45323bd5008053b882d7fa1b254b6b6f5157b067f
|
Provenance
The following attestation bundles were made for experiment_generator-0.8.1-py3-none-any.whl:
Publisher:
cd.yml on ACCESS-NRI/access-experiment-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
experiment_generator-0.8.1-py3-none-any.whl -
Subject digest:
588d20c8658770aa6a9931ba0475e01ca3404ac9cbe82e9408f2ae4aa633bb9a - Sigstore transparency entry: 841391774
- Sigstore integration time:
-
Permalink:
ACCESS-NRI/access-experiment-generator@324faf1e87357f2baab31eda92b77789cb89e594 -
Branch / Tag:
refs/tags/v0.8.1 - Owner: https://github.com/ACCESS-NRI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@324faf1e87357f2baab31eda92b77789cb89e594 -
Trigger Event:
push
-
Statement type: