Spatial analysis toolkit for evaluating NYC subway accessibility, reliability, and equity gaps.
Project description
subway-access
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.geojsondemo-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:
- load stations and ADA status
- create circular walk catchments using a fixed walking speed
- test each tract centroid against accessible-station catchments
- compute a tract need score from disability, senior, and poverty rates
- 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
- Hosted docs: subway-access.readthedocs.io
- Local preview:
make docs - Strict docs build:
make docs-build
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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
529d3f95e3600bd3e86c85c898f7621d568fb175c14f42db93ef9503d3acce4b
|
|
| MD5 |
53c6f549e00adf1ded5caf3953dbf7c7
|
|
| BLAKE2b-256 |
4ae5eb3faccc809151154386f3173667a8dd1de76badd810c914fa2841b3aad3
|
Provenance
The following attestation bundles were made for subway_access-0.1.1.tar.gz:
Publisher:
cd.yml on random-walks/subway-access
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
subway_access-0.1.1.tar.gz -
Subject digest:
529d3f95e3600bd3e86c85c898f7621d568fb175c14f42db93ef9503d3acce4b - Sigstore transparency entry: 1227984596
- Sigstore integration time:
-
Permalink:
random-walks/subway-access@856c45f3da5231311be4e6f4bc49aad3c5f0efba -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/random-walks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@856c45f3da5231311be4e6f4bc49aad3c5f0efba -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7952efc4f0a81415a4dd4e3b0601cb98695d254041b09ba3e6754a57a5d0da8e
|
|
| MD5 |
6e38ff4c08066f93853b891e4a0be27f
|
|
| BLAKE2b-256 |
f80e9425d054b8e2b74abd81a9b7b0a2a03a2cfb1f925978f8922d97edcdb6d0
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
subway_access-0.1.1-py3-none-any.whl -
Subject digest:
7952efc4f0a81415a4dd4e3b0601cb98695d254041b09ba3e6754a57a5d0da8e - Sigstore transparency entry: 1227984645
- Sigstore integration time:
-
Permalink:
random-walks/subway-access@856c45f3da5231311be4e6f4bc49aad3c5f0efba -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/random-walks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@856c45f3da5231311be4e6f4bc49aad3c5f0efba -
Trigger Event:
release
-
Statement type: