Skip to main content

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

  1. 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
    
  2. 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_mode selects how much prior work is reused: 'check' (default) resumes in the stable project dir; 'fresh_intermediate' rebuilds all computation but keeps input/ (test projects only); 'full' timestamps a fresh dir.

  3. 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 untracked input/ 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.

  4. 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 but add_task calls; for stock SEALS it delegates to seals_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 calls run_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)

Source distribution for sealsmodel 2.0.3
File Size Uploaded
sealsmodel-2.0.3.tar.gz 381.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for sealsmodel 2.0.3
File
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

Release history Release notifications | RSS feed

This release

2.0.3 This release

8 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page