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.
Metadata
Release files for sealsmodel 2.1.0
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.1.0.tar.gz | 380.6 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| sealsmodel-2.1.0-cp314-cp314-win_amd64.whl | CPython 3.14 | CPython 3.14 | Windows x86-64 | Details |
| sealsmodel-2.1.0-cp314-cp314-macosx_10_15_universal2.whl | CPython 3.14 | CPython 3.14 | macOS 10.15+ universal2 (ARM64, x86-64) | Details |
| sealsmodel-2.1.0-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| sealsmodel-2.1.0-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| sealsmodel-2.1.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| sealsmodel-2.1.0-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| sealsmodel-2.1.0-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.1.0.tar.gz
| Download URL | sealsmodel-2.1.0.tar.gz |
|---|---|
| Size | 380.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e118c1dcd1313d02b4f84c99059b0e715cca7114ec1c9a57e8cca060fbcf9bde
|
|
BLAKE2b-256 checksum How to use checksums |
5b24241713c660c49788b4e17639355f8589f46cf4b644517ee09a8ff0917359
|
| 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.1.0-cp314-cp314-win_amd64.whl
| Download URL | sealsmodel-2.1.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 506.8 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
69e3050ccc1d20da0dec06ad647ad1b6bb15b7bbac2d4e74cd7a643c3eb95ef4
|
|
BLAKE2b-256 checksum How to use checksums |
4fd82580070c7bb7aca4a4a058301fd977e5c02da68302bea05ed0c724b7ec98
|
| 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.1.0-cp314-cp314-macosx_10_15_universal2.whl
| Download URL | sealsmodel-2.1.0-cp314-cp314-macosx_10_15_universal2.whl |
|---|---|
| Size | 635.2 kB |
| Tags | CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
fb4c606c9bc00013724e10aacc7e3d8c0646820507bd4a0ba8bc180600c93890
|
|
BLAKE2b-256 checksum How to use checksums |
c2451507ea5a91aeec9f51a540ef53e88dd82aec7f0adad9502410b3539117ec
|
| 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.1.0-cp313-cp313-win_amd64.whl
| Download URL | sealsmodel-2.1.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 507.7 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c17cc09fdc72a9999710f900cf607c46a5186fa11597e8d3f8c4fe8fcc44ac6b
|
|
BLAKE2b-256 checksum How to use checksums |
fb5e42f4ab64b5ce92f8de9a505623d31e6c85e00f5ffdc36a0b993d9327399e
|
| 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.1.0-cp312-cp312-win_amd64.whl
| Download URL | sealsmodel-2.1.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 508.7 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7abf50dc8288c0a28c8abf2ddeb68d4a5eaf127cb94c3b4d825de4d6a5f7f2eb
|
|
BLAKE2b-256 checksum How to use checksums |
194393ca70053db1289bf65205e94bd26e5da3b53218210804629591a2695149
|
| 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.1.0-cp311-cp311-win_amd64.whl
| Download URL | sealsmodel-2.1.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 511.8 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b1ad0c8768bd645b00e22f2c54f8da3f6facdad8b7564a8fa8431d9ccd613411
|
|
BLAKE2b-256 checksum How to use checksums |
e095983b9811c26bbc65103028f6a601f72478ec6903d0bed93b1a37668a461c
|
| 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.1.0-cp310-cp310-win_amd64.whl
| Download URL | sealsmodel-2.1.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 511.4 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2833fe576ca372fe6ce4010e6ef0bc2d13725cc89bbe61e9cba5cab507df2cc7
|
|
BLAKE2b-256 checksum How to use checksums |
1821f865a13f50fe05f0a6a06d6ad3edb3aecb1698d32c75a961e2ee2391afc4
|
| 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.1.0-cp310-cp310-macosx_10_9_universal2.whl
| Download URL | sealsmodel-2.1.0-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 |
25737b2174022824787400f748a6ce1ce784cddf38cd52767d64b70462962c2b
|
|
BLAKE2b-256 checksum How to use checksums |
773d710866ab52b82e5a3cabbd3ba314dcc40980172e4b11a5b165c6c5dff46e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.11
|