Skip to main content

Spatial analysis toolkit for evaluating NYC subway accessibility, reliability, and equity gaps.

Project description

subway-access

Actions Status Documentation Status PyPI version PyPI platforms

subway-access is a Python toolkit for reproducible NYC subway accessibility analysis.

It is designed to measure neighborhood access to accessible stations with a small, transparent workflow that is easy to inspect, test, and extend.

What ships in the 0.1 line

The current release deliberately implements one narrow, honest slice:

  • load a small station dataset plus ADA status data
  • generate first-pass Euclidean walk catchments
  • join tract-level demographics
  • export one tract accessibility-gap table plus catchment GeoJSON
  • run the full fixture-backed workflow from the installed CLI

It does not pretend to ship outage-aware reliability scoring, pedestrian network routing, or richer station-level metrics yet. Those surfaces remain explicit typed placeholders that raise NotImplementedError.

Why this exists

Official MTA and NYC data can tell you whether a station is nominally accessible, but the policy question is broader: which neighborhoods have weak access to accessible transit in practice?

This repo aims to grow into a reusable analysis toolkit rather than a notebook dump or trip planner.

Quickstart

Install:

pip install subway-access

Run the packaged demo workflow:

subway-access demo --output-dir demo-output --minutes 10

This writes:

  • demo-output/catchments.geojson
  • demo-output/accessibility-gaps.csv

Python example

from subway_access import (
    CatchmentRequest,
    analyze_gaps,
    generate_catchments,
    load_accessibility_status,
    load_census_data,
    load_gtfs,
    score_accessibility,
)

stations = load_gtfs().with_accessibility(load_accessibility_status())
demographics = load_census_data()
catchments = generate_catchments(stations, CatchmentRequest(minutes=10))
scores = score_accessibility(stations, catchments, demographics)
gaps = analyze_gaps(scores)
print(len(gaps.records))

Current methodology

The implemented 0.1 workflow is intentionally simple and reproducible:

  1. load stations and ADA status
  2. create circular walk catchments using a fixed walking speed
  3. test each tract centroid against accessible-station catchments
  4. compute a tract need score from disability, senior, and poverty rates
  5. assign a basic gap score when high-need tracts have no accessible station in catchment

This is intentionally a first-pass Euclidean approximation, not a network isochrone model. Reliability-aware analysis remains future work.

Documentation

Development

make install-dev
make test
make lint
make docs-build
make ci

License

MIT.

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

subway_access-0.1.0.tar.gz (36.9 kB view details)

Uploaded Source

Built Distribution

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

subway_access-0.1.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file subway_access-0.1.0.tar.gz.

File metadata

  • Download URL: subway_access-0.1.0.tar.gz
  • Upload date:
  • Size: 36.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for subway_access-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ccd6ddf0cdf832ca9348151d4d6cffb0df92da3ab5ab9b0067a75f30c43382f8
MD5 92dec194cf38907485e5ef9d7d8bb10c
BLAKE2b-256 9fe66ab2c3c78a92eda435721f40e91aac71ea43c9477006126dd7880b335eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for subway_access-0.1.0.tar.gz:

Publisher: cd.yml on random-walks/subway-access

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file subway_access-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: subway_access-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for subway_access-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fdcf4cd97e75001ff469b5d6381b6a0a22f2e1a99a2b97e6bccf88ebc16fb99e
MD5 5dbba677ceac8fc65bfaf06732a3f74b
BLAKE2b-256 3516ca4938fcde01b1e315c50aff176362ebf6488092906f05c31f0e69301acc

See more details on using hashes here.

Provenance

The following attestation bundles were made for subway_access-0.1.0-py3-none-any.whl:

Publisher: cd.yml on random-walks/subway-access

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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