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.

Authored by Blaise Albis-Burdige.

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

Quick links

Docs: Home, Getting Started, CLI Reference, Architecture, Python API, Contributing, Releasing, Changelog

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.1.tar.gz (37.3 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.1-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: subway_access-0.1.1.tar.gz
  • Upload date:
  • Size: 37.3 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.1.tar.gz
Algorithm Hash digest
SHA256 529d3f95e3600bd3e86c85c898f7621d568fb175c14f42db93ef9503d3acce4b
MD5 53c6f549e00adf1ded5caf3953dbf7c7
BLAKE2b-256 4ae5eb3faccc809151154386f3173667a8dd1de76badd810c914fa2841b3aad3

See more details on using hashes here.

Provenance

The following attestation bundles were made for subway_access-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: subway_access-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.6 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7952efc4f0a81415a4dd4e3b0601cb98695d254041b09ba3e6754a57a5d0da8e
MD5 6e38ff4c08066f93853b891e4a0be27f
BLAKE2b-256 f80e9425d054b8e2b74abd81a9b7b0a2a03a2cfb1f925978f8922d97edcdb6d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for subway_access-0.1.1-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