Skip to main content

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 (metadata on every FeatureCollection).
  • 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 zones
  • generalized — public map data with reduced precision
  • restricted — high-precision working data for qualified review
  • do_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.md for python -m build and twine upload.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

middle_passage-0.1.1.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

middle_passage-0.1.1-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

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

Hashes for middle_passage-0.1.1.tar.gz
Algorithm Hash digest
SHA256 091b676e8460de5e7b2f77eca55e94b760157741d42dd692bec365a8230b4193
MD5 d6eb981b5599b772164d2085e028c414
BLAKE2b-256 e0af9b61a1c88749750fdcbfd46634bf9fc6d32bf62378e61ca1801dc76bb24f

See more details on using hashes here.

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

Hashes for middle_passage-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4063e451e604944f3ce0362ca47c363068de2ee9f4840eea1e20b6a6cdf360eb
MD5 e23136015969fe8dfb2051a12dfc71f9
BLAKE2b-256 351104fe683414f7190fa689717235632f11a22887fa8e6f945529a6a57a8c55

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page