Phase 0 protection-first memorial GIS scaffold: reproducible zones, explicit limits, no remains claims
Project description
middle-passage
"The ocean kept receipts. We are learning to read them."
PyPI: pypi.org/project/middle-passage
Open-source toolkit for the Middle Passage Forensic Recovery Project: a protection-first Phase 0 scaffold for voyage records, explicit modeling limits, and memorial GIS outputs.
The word forensic in the project name refers to recovery and accountability framing, not to a court-certified or validated forensic analysis product. This package is Pre-Alpha research software.
What you get today (real capabilities)
These are implemented and tested behaviors you can rely on:
- CSV → structured voyages with flexible column aliases (
middle_passage.voyages.loader). - Filtering in Python or via CLI: route match, mortality threshold, jettison-only, year range.
- Survey-priority zones as centers, radii, and assumption strings derived from documented Phase 0 placeholders (not from real bathymetry or ocean reanalysis).
- GeoJSON export with protection language, sensitivity fields, package version,
validation status, what is included vs not included, and limitation bullets
(
metadataon everyFeatureCollection). - stdlib-first: no mandatory Shapely/pyproj/geojson dependency for the core pipeline.
Machine-readable capability and boundary lists (same strings as GeoJSON metadata):
middle-passage inspect-sources --json
What is not in this package (yet)
Stated loudly so nobody mistakes Phase 0 for finished science:
- No GEBCO/NOAA (or other) tile bathymetry—depths are heuristic bands for pipeline tests.
- No measured or hindcast currents—bearing and speed are named-corridor placeholders.
- No validated deposition, dispersal, or search physics for site identification.
- No identification of human remains and no “proof” language in the model layer—only memorial / protection-first framing in outputs.
License: Creative Commons CC BY 4.0
Purpose: Humanitarian. Scientific. Memorial.
Status: Phase 0 scaffold with synthetic-safe defaults.
Real vs placeholder (quick reference)
| Piece | In this package |
|---|---|
| CSV loading, filtering, CLI, GeoJSON structure | Implemented for reproducible pipelines |
| Bathymetry | Heuristic depth bands, not GEBCO/NOAA tiles — see middle_passage/bathymetry/gebco.py |
| Currents | Constant bearing + speed from named corridors — not a hindcast or reanalysis |
| Descent / scatter | Illustrative parameters to exercise the pipeline — not validated settling physics |
| Geometry | Sphere-based offsets and rings (stdlib + math) |
Principles
- People, not cargo.
- Ancestors, not artifacts.
- Probability zones, not treasure maps.
- Public methods, careful precision.
- Protection before spectacle.
Install
pip install middle-passage
Install a specific branch from GitHub (optional):
pip install "middle-passage @ git+https://github.com/Yufok1/middle-passage.git@main"
Local development:
pip install -e ".[dev]"
CLI
Synthetic-safe sample GeoJSON:
middle-passage sample --output sample.geojson
Survey-priority zones from a voyage CSV:
middle-passage model-deposits --voyages voyages.csv --output zones.geojson
Optional voyage filters (CSV rows only; --corridor sets the placeholder current bearing):
middle-passage model-deposits --voyages voyages.csv --output zones.geojson \
--filter-route doldrums_zone --min-mortality 0.1 --jettison-only \
--year-from 1700 --year-to 1800
Ethics, version, capabilities, and limits:
middle-passage inspect-sources
If no voyage file is provided, the CLI uses a clearly marked synthetic sample for development only.
Data Sensitivity
Labels supported on domain objects:
public— safe public metadata or generalized zonesgeneralized— public map data with reduced precisionrestricted— high-precision working data for qualified reviewdo_not_publish— sensitive records or coordinates that should not be released
Precise burial-site candidates should not be published casually. Release policy must follow descendant/community review, legal review, and protection risk assessment.
Release
- Published builds: middle-passage on PyPI.
- Manual upload path (when GitHub Actions / Trusted Publishing are unavailable): see
docs/PYPI_RELEASE.mdforpython -m buildandtwine upload.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file middle_passage-0.1.1.tar.gz.
File metadata
- Download URL: middle_passage-0.1.1.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
091b676e8460de5e7b2f77eca55e94b760157741d42dd692bec365a8230b4193
|
|
| MD5 |
d6eb981b5599b772164d2085e028c414
|
|
| BLAKE2b-256 |
e0af9b61a1c88749750fdcbfd46634bf9fc6d32bf62378e61ca1801dc76bb24f
|
File details
Details for the file middle_passage-0.1.1-py3-none-any.whl.
File metadata
- Download URL: middle_passage-0.1.1-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4063e451e604944f3ce0362ca47c363068de2ee9f4840eea1e20b6a6cdf360eb
|
|
| MD5 |
e23136015969fe8dfb2051a12dfc71f9
|
|
| BLAKE2b-256 |
351104fe683414f7190fa689717235632f11a22887fa8e6f945529a6a57a8c55
|