SEALS
SEALS (Spatial Economic Allocation Landscape Simulator) downscales coarse or regional land-use change projections to fine-resolution LULC maps — 300 m globally in about an hour on a laptop.
The SEALS User Guide in docs/ is the full documentation —
install, quickstart, a guided first run, the scenarios CSV reference, and MAgPIE
coupling. It renders as a website and as a single PDF. For how run files are
structured across the Earth-Economy Devstack, see the
run-file conventions.
Install
SEALS is distributed as sealsmodel and imported as seals. It requires
hazelbean 1.9.0 or later,
which supplies ProjectFlow.
conda create -n <your_env> python=3.10
conda activate <your_env>
pip install hazelbean sealsmodel
Pick your own environment name — the devstack does not require a particular one.
From source (development)
cd ~/Files/hazelbean/hazelbean_dev
pip install -e .
cd ~/Files/seals/seals_dev
pip install -e .
Run it
conda activate <your_env>
cd seals_dev/seals
python run_seals_standard.py
Outputs do not land in the repo. Because the run file lives inside a cloned
repo, ProjectFlow places the project directory just outside it, at
~/Files/seals/projects/seals_standard/, containing input/, intermediate/,
output/, and one folder per task. Missing base data is downloaded on demand.
Run it a second time and it finishes almost immediately — every task is behind an existence check, so completed work is skipped.
For a faster first run, run_seals_standard_test.py uses the same task tree with
a pared scenarios CSV (baseline plus one BAU, one projection year, Rwanda).
Start your own project
-
Copy the run file into your project repo as
run_<project>.py:cp seals_dev/seals/run_seals_standard.py my_project_dev/run_my_project.py
-
Edit the two lines in
__main__— that is the whole of the configuration:p = hb.ProjectFlow(project_name='my_project', run_mode='check') p.scenario_definitions_filename = 'my_project_scenarios.csv'
run_modeselects how much prior work is reused:'check'(default) resumes in the stable project dir;'fresh_intermediate'rebuilds all computation but keepsinput/(test projects only);'full'timestamps a fresh dir. -
Put your definition CSVs in
input_template/next to the run file. That directory is tracked in git; ProjectFlow copies anything missing into the project's untrackedinput/on first run and never overwrites your working copy — so machine-specific values you fill in survive re-runs. See docs/scenarios_format.md for the columns. -
Run it from your project repo:
python run_my_project.py
Variants are their own file, never a fork
To run the same pipeline differently — a smoke test, another AOI — write a second
run file that imports the pipeline instead of copying it.
run_seals_standard_test.py is the worked example:
import hazelbean as hb
from run_my_project import run_project
if __name__ == '__main__':
p = hb.ProjectFlow(project_name='my_project_test', run_mode='check')
p.scenario_definitions_filename = 'my_project_scenarios_test.csv'
# p.tasks_to_skip = ['stitched_lulc_simplified_scenarios']
run_project(p)
What differs is data and placement — never code. Copying the run file and editing a line instead means the two silently diverge the first time you change an input.
Anatomy of a run file
Three parts, in every run file in the devstack:
build_task_tree(p)— what the pipeline is. Nothing butadd_taskcalls; for stock SEALS it delegates toseals_initialize_project.build_standard_task_tree(p).run_project(p)— how it is executed. It sets what no variant ever changes (base data location, processing resolution); the caller sets what a variant might (project name, run mode, scenarios CSV).- an
if __name__ == '__main__':guard that builds and configures the ProjectFlow, then callsrun_project(p). Importing a run file must never start a run — that is what makes the variant pattern above possible.
Repository layout
| path | what |
|---|---|
seals/run_seals_standard.py |
the reference run; copy this to start a project |
seals/run_seals_standard_test.py |
its pared variant |
seals/input_template/ |
tracked definition CSVs, seeded into each project's input/ |
seals/seals_initialize_project.py |
task-tree builders and CSV hydration |
seals/seals_main.py, seals_tasks.py, seals_generate_base_data.py, … |
task functions |
seals/seals_utils.py |
helpers |
seals/old_run_files/ |
unsupported historical run files, kept for reference only |
seals_tests/ |
tests |
Environment
See docs/environment_setup.md for detailed setup, including the C/C++ compiler needed to build the Cython extensions.
Release files for sealsmodel 2.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sealsmodel-2.0.3.tar.gz | 381.8 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| sealsmodel-2.0.3-cp314-cp314-win_amd64.whl | CPython 3.14 | CPython 3.14 | Windows x86-64 | Details |
| sealsmodel-2.0.3-cp314-cp314-macosx_10_15_universal2.whl | CPython 3.14 | CPython 3.14 | macOS 10.15+ universal2 (ARM64, x86-64) | Details |
| sealsmodel-2.0.3-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| sealsmodel-2.0.3-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| sealsmodel-2.0.3-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| sealsmodel-2.0.3-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| sealsmodel-2.0.3-cp310-cp310-macosx_10_9_universal2.whl | CPython 3.10 | CPython 3.10 | macOS 10.9+ universal2 (ARM64, x86-64) | Details |
Total release size: 4.2 MB
Release files / sealsmodel-2.0.3.tar.gz
| Download URL | sealsmodel-2.0.3.tar.gz |
|---|---|
| Size | 381.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
54772f506eb1dde47138713277becf572ee4be33b209a9df0a0c1f62a70b9196
|
|
BLAKE2b-256 checksum How to use checksums |
0fbaf744d3f8c3273f9ba43f29b8b1cebc5380e6dccf5b7d7bdcb34f09e31048
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / sealsmodel-2.0.3-cp314-cp314-win_amd64.whl
| Download URL | sealsmodel-2.0.3-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 506.8 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9b664661b8338e08a5e6c40988dbf14c77a20f82538c556072e3f3e68b67ea59
|
|
BLAKE2b-256 checksum How to use checksums |
902f607e891ee860e66a31bd87b0ccbecca9aa7ba0f002374b2568daae36bc9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / sealsmodel-2.0.3-cp314-cp314-macosx_10_15_universal2.whl
| Download URL | sealsmodel-2.0.3-cp314-cp314-macosx_10_15_universal2.whl |
|---|---|
| Size | 635.1 kB |
| Tags | CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
17d5fb8a434aa90cd0c6d0151aa0fd9f3f3b458037b03632c7ff0fd67774ba5d
|
|
BLAKE2b-256 checksum How to use checksums |
b78e110bb499d960828afdb505aceeadd4cdee444ab3f7161258afdf2036506a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / sealsmodel-2.0.3-cp313-cp313-win_amd64.whl
| Download URL | sealsmodel-2.0.3-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 507.7 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
359c0db5be90d0c107922441e2f85ba4f547a5408245eeb7c2b64d1cdf166bfe
|
|
BLAKE2b-256 checksum How to use checksums |
76e06a78050814cebd87d998a42db8fc111ea2a5636cc099d2ea242ba572f9b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / sealsmodel-2.0.3-cp312-cp312-win_amd64.whl
| Download URL | sealsmodel-2.0.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 508.7 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
26f34e17f9375c4936f11d8d8f291bd8ef84b4fd8d8767718702f7a238d26c2c
|
|
BLAKE2b-256 checksum How to use checksums |
5e477535bc8df2f559cd516f7993b4458f675ed8262b87ba7de6dbc18fdd06b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / sealsmodel-2.0.3-cp311-cp311-win_amd64.whl
| Download URL | sealsmodel-2.0.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 511.8 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
726662d6f396c008e6e96f2e9ce1b7afb7d946f298dd3634c0519e008e1ccad2
|
|
BLAKE2b-256 checksum How to use checksums |
29f16bb1081df59d8f0b3d07a98297eb80fc94fbcf88b48a0bf8086b2dcecf80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / sealsmodel-2.0.3-cp310-cp310-win_amd64.whl
| Download URL | sealsmodel-2.0.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 511.4 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cd4038a84a70eade6617e8ad125ceb1c5ba3ee3f36fe2541d9388087678baa22
|
|
BLAKE2b-256 checksum How to use checksums |
bc62ac4d622491de02c9956e96f7471bf1fe068ce6cfe6d3f16e2bee25c71fdc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.11
|
Release files / sealsmodel-2.0.3-cp310-cp310-macosx_10_9_universal2.whl
| Download URL | sealsmodel-2.0.3-cp310-cp310-macosx_10_9_universal2.whl |
|---|---|
| Size | 645.5 kB |
| Tags | CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
123e015539d681e4c74233a71cd3ce14b46cfb75ee89451cc12e95a269a39cae
|
|
BLAKE2b-256 checksum How to use checksums |
0278afc8f2b7bce7fc9f85c633e806a71460a43cc547c41e94b7d828030cfc61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.11
|