Quickstart

Get SEALS running, then make it your own. This picks up where Installation leaves off — it assumes you have an activated environment with hazelbean from conda-forge and SEALS editable-installed from your clone. For what the model actually does, see Introduction.

1. Run it

Two run files ship with SEALS, in seals/seals/:

file what it runs
run_seals_standard.py the standard pipeline: three scenarios, 2030 and 2050
run_seals_standard_test.py the same pipeline pared down — baseline plus one BAU, one year, Rwanda

Start with the test:

conda activate <your_env>
cd seals/seals
python run_seals_standard_test.py

Required base data is downloaded at runtime from a public bucket; no credentials are needed for the default configuration.

2. Where the output goes

Not into the repo. Because the run file lives inside a cloned repo, ProjectFlow places the project directory just outside it:

~/Files/seals/projects/seals_standard_test/
├── input/          seeded from the repo's input_template/
├── intermediate/   one folder per task
└── output/

Run the same command a second time and it finishes almost immediately — every task is behind an existence check, so completed work is skipped. That is the main thing ProjectFlow buys you: interrupt a long run, fix one input, re-run, and only what is missing recomputes.

3. Make it your own

Copy the run file into your own project repo as run_<project>.py and change the two lines in its __main__ block — that is the whole of the configuration:

if __name__ == '__main__':
    p = hb.ProjectFlow(project_name='my_project', run_mode='check')
    p.scenario_definitions_filename = 'my_project_scenarios.csv'

    run_project(p)

run_mode controls how much prior work is reused: 'check' (the default) resumes in a stable project dir; 'full' timestamps a fresh one.

Put your scenarios CSV in an input_template/ directory beside the run file. It is tracked in git, and ProjectFlow copies anything missing into the project’s untracked input/ on first run without ever overwriting your working copy. The columns are documented in Custom scenarios.

To run the same pipeline a second way — a smoke test, a different AOI — write a second run file that imports the first rather than copying it. run_seals_standard_test.py is the worked example, and the pattern is explained in conventions.

Next