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.

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)

Source distribution for sealsmodel 2.1.0
File Size Uploaded
sealsmodel-2.1.0.tar.gz 380.6 kB Details

Built distributions (wheels)

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

Release history Release notifications | RSS feed

2.1.1

8 release files

This release

2.1.0 This release

8 release files

2.0.3

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