A desktop application for experimenting with bus route stop reduction, allowing laypeople to easily see the impact of changes.
⚠️ DISCLAIMER: This is hobby software developed for educational and exploratory purposes. It comes with absolutely no guarantee of accuracy, correctness, or fitness for any particular purpose. Do not use this software to make real-world transit planning decisions without independent verification by qualified professionals. The authors accept no liability for any consequences arising from use of this software.
🤖 AI-GENERATED CODE: The majority of this software was generated using Claude (Anthropic), an AI assistant. While the code has been reviewed and tested, AI-generated code may contain subtle errors or unexpected behaviors. Use with appropriate caution.
This project was inspired by the article "The United States Needs Fewer Bus Stops" published in Works in Progress. The article makes a compelling case that American bus systems have too many stops spaced too closely together, which slows down service and makes transit less competitive with driving.
Stop Lab aims to make it easy to explore "what if" scenarios for stop consolidation—visualizing the trade-offs between stop spacing, travel time, and accessibility coverage.
- Load and analyze GTFS feeds - Import standard transit data formats
- Visualize routes - See speed and spacing diagnostics on an interactive map
- Interactive stop editing - Select stops for removal and see real-time impact calculations
- Physics-based modeling - Estimates account for acceleration, deceleration, and dwell time by vehicle type
- Walk shed analysis - Understand accessibility impacts using OpenStreetMap street networks
- Scenario management - Save, load, and compare different consolidation scenarios
- Export - Generate modified GTFS and GeoJSON files
Pre-built applications for macOS, Windows, and Linux are available on the Releases page.
macOS will block the app from opening because it's not code-signed. To run it:
Option 1 - Remove quarantine (recommended):
xattr -d com.apple.quarantine "/Applications/Stop Lab.app"Option 2 - Use System Settings:
- Try to open the app (it will be blocked)
- Go to System Settings > Privacy & Security
- Scroll down to find "Stop Lab was blocked from use"
- Click "Open Anyway"
If you do not feel comfortable doing this, you may review the source and build it locally.
Requires Python 3.10 or higher.
# Clone the repository
git clone https://github.com/acrollet/stop-lab.git
cd stop-lab
# Using uv (recommended)
uv sync
uv run stop-lab
# Or using pip
pip install -e .
stop-lab- Upload a GTFS Feed - Use the sidebar to upload a GTFS ZIP file
- Select a Route - Choose a route from the dropdown to analyze
- Configure Parameters - Select vehicle type and target headway
- Enable Edit Mode - Toggle editing to select stops for removal
- Analyze Impact - See real-time calculations of time savings, speed changes, and fleet requirements
- Run Walk Shed Analysis - Evaluate accessibility impacts (requires internet for OSM data)
- Export - Save modified GTFS or GeoJSON files to your Downloads folder
Stop Lab is built on the shoulders of many excellent open source projects:
| Project | License | Description |
|---|---|---|
| Dash | MIT | Web application framework by Plotly |
| Flask | BSD-3-Clause | WSGI web application framework |
| pywebview | BSD-3-Clause | Native GUI wrapper for web applications |
| Project | License | Description |
|---|---|---|
| Dash Leaflet | MIT | Leaflet maps for Dash |
| Leaflet | BSD-2-Clause | JavaScript mapping library |
| Dash Bootstrap Components | Apache-2.0 | Bootstrap components for Dash |
| Project | License | Description |
|---|---|---|
| GeoPandas | BSD-3-Clause | Geospatial data analysis |
| Shapely | BSD-3-Clause | Geometric operations |
| OSMnx | MIT | Street network analysis from OpenStreetMap |
| Pandana | AGPL-3.0 | Network accessibility analysis |
| Project | License | Description |
|---|---|---|
| Partridge | MIT | GTFS feed parsing |
| Pandas | BSD-3-Clause | Data manipulation |
| NumPy | BSD-3-Clause | Numerical computing |
- OpenStreetMap - Street network data used for walk shed analysis is © OpenStreetMap contributors, available under the Open Database License.
uv run pytest tests/ -v
uv run pytest --cov=stop_lab # with coverageuv run python packaging/build.py --cleanSee packaging/README.md for detailed build instructions.
Stop Lab is released under the MIT License. See LICENSE for the full text.
MIT License
Copyright (c) 2025 Stop Lab Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This software incorporates components under various open source licenses including MIT, BSD-2-Clause, BSD-3-Clause, Apache-2.0, and AGPL-3.0. The use of Pandana (AGPL-3.0) for accessibility analysis means that if you modify and distribute this software, the AGPL-3.0 license terms apply to those modifications. See each project's license for full terms.
Remember: This is experimental hobby software. Always verify results independently before making any real-world decisions.