# Striped Donkey African Cities Comparison — Nairobi & Lagos

Website release V5.94 · Built 8 September 2026.

Compare two synthetic city models, inspect matching domain coverage, and explore original free samples. Nairobi (Kenya) and Lagos (Nigeria) are the only included cities. This is not a full-Africa or national dataset, and it does not establish real-world differences between these cities.

## Contents and tasks

- `metrics.csv`: 72 city/metric records from the single metrics extract dated 2026-09-02T13:39:18Z. Same field definitions are aligned across cities. Record histories and observation windows vary; do not interpret counts as rates, incidence, unique people or empirical accuracy.
- `population-model.csv`: 174 modeled annual population values, 1940–2026, two cities. These are model values, not census observations or generated citizen counts. Use for plotting model trajectories, not validating accuracy against the model itself.
- `domain-coverage.csv`: 88 city/domain entries. Sample, documentation, partial and planned status remain distinct. A metric can be published without a downloadable row sample.
- `samples/`: 40 original primary public CSV files, 3,902 total rows. Each file retains its city, domain, original columns and exact bytes. These rows use different units (people, households, visits, transactions, etc.); the sum is not a count of people. Other sample variants remain on the website.
- `sample-schemas.json`: field availability for each source file; schemas are not silently aligned or filled.
- `comparison.json`: the complete comparison index and provenance; `source/metrics.json`: original metrics extract.
- `compare.py` / `queries.sql`: Python 3 standard-library walkthrough with SQLite queries.
- `manifest.json`: SHA256 file integrity values; not a third-party certification.

## Run locally

Extract the ZIP. In the extracted folder, run:

```shell
python compare.py
```

No packages, account, network connection or database service are needed. It verifies packaged hashes, checks source values and sample row counts, loads the three comparison tables into an in-memory SQLite database, and executes `queries.sql`. It writes no files. On Windows, `py compare.py` is an alternative.

## Important distinctions

Insurance has an explicit pending-regeneration note. `value` is empty and `status` is unavailable; `source_value` preserves the original zero so its provenance can be inspected. It must not be treated as an observed zero or missing value imputed to zero. The original source may differ from older domain-guide figures; this comparison consistently uses the dated extract above.

The two cities are separate populations. Prefix identifiers with city (for example `nairobi:CitizenId`) when collecting records. Do not join a Nairobi ID to the same number in Lagos. Public samples from different domains are independently selected: matching field names alone do not establish a relationship. The separate FCTE Nairobi Connected Sample supplies an explicit, small joined example.

Household, employment and health longitudinal demos are linked from the comparison page. The CSVs here are free row samples, not those complete longitudinal cohorts. No new 10,000-person or 1,000-household cohort is claimed.

Evaluation is subject to the included existing FCTE data licence. This package does not create new redistribution rights. See the licence for permitted evaluation and redistribution.

## Collection v2

Nairobi Land now contains 100 selected parcels from the supplied 3,750-row extract, with 58 original fields. The selection covers 85 wards and favors varied record features; it is not representative. Source weights describe the larger original extract, not the 100 rows. See `nairobi-land-selection.json`. All other sample CSV files and the metrics and population inputs are unchanged from collection v1. The original v1 ZIP remains available separately.

## Collection v3

Lagos Land now contains 100 selected parcels from the supplied 5,000-row extract, with 52 original fields. The selection covers 100 distinct ward IDs, all six supplied land uses, five title statuses and 16 business sectors. Each of the four owner categories contributes 25 parcels. Selection favors varied records; it is not representative. Source share and weighting fields remain unchanged and do not provide selection probabilities for these 100 rows. See `lagos-land-selection.json`. All other 39 sample CSV files, metrics and population inputs are unchanged from collection v2. Historical collections remain available separately.

## Collection v4

Both Transport free samples now retain all 100 supplied passenger journeys in original order. Nairobi has 67 original fields and Lagos has 64; the city-specific schemas are documented in `sample-schemas.json`. UTC timestamps, missing-value markers, codes and source context are preserved. See `nairobi-transport-selection.json` and `lagos-transport-selection.json` for provenance and scope. These are separate samples from the interactive longitudinal histories. Passenger fares, whole-trip revenue and route reference distances describe different quantities. Status fields do not establish vehicle or route status on every historical journey date. Endpoint context does not establish trip purpose or a verified commute. All other 38 sample CSV files, city metrics and population inputs are unchanged from collection v3. Historical collections remain available separately.

## Collection v5

The Nairobi Business free sample now contains 100 businesses selected from 5,000 supplied rows, retaining all 57 original fields. The selection covers all 16 sectors, 7 business types and 5 size categories. Owner, household, land and construction fields describe supplied snapshot context. This variety selection is not statistically representative. See `nairobi-business-selection.json` for the method, source row references and scope. All other 39 sample files and the published city metrics and population models are unchanged from collection v4.

## Collection v6

The Lagos Business free sample now contains 100 businesses selected from 5,000 supplied rows, retaining all 57 original fields. The selection covers all 16 sectors, 7 business types and 5 size categories. Owner, household, land and construction fields describe supplied snapshot context. This variety selection is not statistically representative. See `lagos-business-selection.json` for the method, source row references and scope. All other 39 sample files and the published city metrics and population models are unchanged from collection v5.

## Collection v7

The Nairobi Business free sample retains 100 businesses and all 57 source fields. Three Construction-sector rows are replaced with original businesses whose latest permit and project fields are all populated, including project parcel references. The other 97 businesses and all sector counts are retained. Actual-cost examples increase from four to six, and project parcel references from zero to three. The selection covers all 16 sectors, 7 business types and 5 size categories. Owner, household, land and construction fields describe supplied snapshot context. This variety selection is not statistically representative. See `nairobi-business-selection.json` for the method, source row references and scope. All other 39 sample files and the published city metrics and population models are unchanged from collection v6.
