Skip to content

About

Facetwork domain: UCDP armed-conflict world choropleth (events/deaths/civilian/intensity) over Natural Earth geometry.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

23 Commits

Folders and files

Repository files navigation

fwh_conflict — Facetwork conflict-maps domain

UCDP armed-conflict world maps. Aggregates the Uppsala Conflict Data Program's Georeferenced Event Dataset (GED) by country and renders a MapLibre world choropleth with a metric dropdown:

  • Conflict events (events/year)
  • Conflict deaths (fatalities/year)
  • Civilian targeting (one-sided violence events)
  • Conflict intensity (deaths per 100,000 population)
  • Armed actor count (distinct armed groups)

Plus three humanitarian overlays joined by ISO3: displaced population (UNHCR), new conflict displacements (IDMC), and food insecurity (IPC Phase 3+).

FFL at a glance

The domain is driven from FFL, Facetwork's workflow language. A step is name = Facet(args), and later steps reference earlier ones as step.field:

namespace my.conflict {

    use conflict.sources
    use conflict.maps

    /** Download the UCDP aggregate for a year, then render the world map. */
    workflow ConflictYear(year: Int = 2023) => (status: String, html_path: String) andThen {

        ucdp = conflict.sources.DownloadUCDP(year = $.year)

        map = conflict.maps.BuildConflictMap(year = $.year) after ucdp

        yield ConflictYear(status = "completed", html_path = map.html_path)
    }
}
fw ffl run --primary my.ffl --library src/conflict/ffl/conflict.ffl \
  --workflow my.conflict.ConflictYear --inputs '{"year": 2023}'

📖 docs/ffl-examples.md — the full example gallery: sweeping several years in parallel with foreach, call-time mixins (timeout/retry), catch, when branching, wrapping the shipped workflow, and cross-domain composition (publishing). Every snippet there is compile-checked.

Feature specifications

Per-feature docs live in docs/ (one spec per feature, common shape). Start with the flagship map-rendering.

Spec What it covers
ucdp-ingest UCDP GED download + per-country aggregation; the 5 core metrics; DownloadUCDP, caching, country aliases.
displacement-overlays UNHCR / IDMC / IPC overlay metrics, fetched in the map step and joined by ISO3.
map-rendering Flagship. BuildConflictMap: join onto Natural Earth geometry, intensity normalisation, the MapLibre choropleth.
workflow-and-handlers The BuildConflictWorldMap workflow, two-facet dispatch/registration, DomainPackage discovery.
storage-and-cache Backend-aware storage.py: local vs MinIO/S3 roots, cache/output layout, override env vars.

Full index + section shape: docs/README.md.

Run: fw ffl run --primary src/conflict/ffl/conflict.ffl --workflow conflict.workflows.BuildConflictWorldMap --task-list conflict

About

Facetwork domain: UCDP armed-conflict world choropleth (events/deaths/civilian/intensity) over Natural Earth geometry.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages