Analysis
09: Incline Investigation
Core OTP Patterns
Coverage: 2019-01 to 2025-11 (from otp_monthly).
Built 2026-03-03 02:23 UTC ยท Commit defd5c8
Page Navigation
Analysis Navigation
Data Provenance
flowchart LR
09_incline_investigation(["09: Incline Investigation"])
t_otp_monthly[("otp_monthly")] --> 09_incline_investigation
01_data_ingestion[["Data Ingestion"]] --> t_otp_monthly
t_route_stops[("route_stops")] --> 09_incline_investigation
01_data_ingestion[["Data Ingestion"]] --> t_route_stops
t_routes[("routes")] --> 09_incline_investigation
01_data_ingestion[["Data Ingestion"]] --> t_routes
t_stop_reference[("stop_reference")] --> 09_incline_investigation
01_data_ingestion[["Data Ingestion"]] --> t_stop_reference
t_stops[("stops")] --> 09_incline_investigation
01_data_ingestion[["Data Ingestion"]] --> t_stops
d1_09_incline_investigation(("polars (lib)")) --> 09_incline_investigation
classDef page fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a,stroke-width:2px;
classDef table fill:#ecfeff,stroke:#0e7490,color:#164e63;
classDef dep fill:#fff7ed,stroke:#c2410c,color:#7c2d12,stroke-dasharray: 4 2;
classDef file fill:#eef2ff,stroke:#6366f1,color:#3730a3;
classDef api fill:#f0fdf4,stroke:#16a34a,color:#14532d;
classDef pipeline fill:#f5f3ff,stroke:#7c3aed,color:#4c1d95;
class 09_incline_investigation page;
class t_otp_monthly,t_route_stops,t_routes,t_stop_reference,t_stops table;
class d1_09_incline_investigation dep;
class 01_data_ingestion pipeline;
Findings
Findings: Incline Investigation
Summary
The Monongahela Incline is a data pipeline artifact. It appears in the route catalog but has zero OTP measurements. OTP was never recorded for either of Pittsburgh's two inclines.
What the Data Shows
| Table | MI Records | Details |
|---|---|---|
routes |
1 row | route_id=MI, mode=INCLINE |
otp_monthly |
0 rows | No OTP data whatsoever |
route_stops |
2 rows | Upper Station, Lower Station (78 weekday trips, 549 weekly) |
stops |
2 Incline stops | W15307 (Upper, Mount Washington), W15308 (Lower, South Shore) |
stop_reference |
4 Incline stops | Both inclines present historically (first_served=1503, last_served=2510) |
Observations
- Both the Monongahela Incline (MI) and the Duquesne Incline (DQI) exist in the
routestable with mode=INCLINE, but neither has any OTP data. - The inclines are physically operational and appear in PRT's GTFS feed with regular service (78 weekday trips).
- The OTP measurement system (whatever generates
routes_by_month.csv) simply does not cover incline routes. This is likely because inclines run on a fixed schedule with no traffic interference, making OTP measurement less meaningful. - The ANALYSIS-PROPOSAL.md described this as "zero values" -- in fact, there are no values at all, not even zeros.
Conclusion
This is not a data quality issue to fix. The inclines were included in the route catalog because they're part of PRT's GTFS feed, but were excluded from OTP measurement, likely by design. No further action needed.
Review History
- 2026-02-11: RED-TEAM-REPORTS/2026-02-11-analyses-01-05-07-11.md โ 3 issues (0 significant). Expanded OTP query to explicitly check both MI and DQI (substantiating the claim that neither incline has data), updated METHODS.md question wording.
Output
No chart outputs declared.
No interactive outputs declared.
all data found for MI across tables.
Preview CSV
plain-text summary of findings.
Stop-level route associations for incline routes extracted from route_stops.
Preview CSV
Historical incline stop records extracted from stop_reference for data lineage checks.
Preview CSV
Methods
Methods: Monongahela Incline Investigation
Question
The Monongahela Incline may have zero or missing OTP data. Is this a data pipeline artifact, or was OTP never measured for the Incline?
Approach
- Query the
otp_monthlytable for both incline route_ids ('MI' and 'DQI') and examine all values. - Check if 'MI' appears in
route_stopsand what stops are associated. - Check the
routestable for mode and name (including all INCLINE-mode routes). - Cross-reference with the
stop_referencetable for historical Incline stops. - Summarize findings as a data quality report.
Data
| Name | Description | Source |
|---|---|---|
otp_monthly |
Any MI records | prt.db table |
routes |
MI metadata | prt.db table |
route_stops |
MI stop associations | prt.db table |
stops |
Physical Incline stops | prt.db table |
stop_reference |
Historical Incline stops | prt.db table |
Output
output/incline_report.csv-- all data found for MI across tablesoutput/incline_report.txt-- plain-text summary of findings
Sources
| Name | Type | Why It Matters | Owner | Freshness | Caveat |
|---|---|---|---|---|---|
| otp_monthly | table | Primary analytical table used in this page's computations. | Produced by Data Ingestion. | Updated when the producing pipeline step is rerun. | Coverage depends on upstream source availability and ETL assumptions. |
| route_stops | table | Primary analytical table used in this page's computations. | Produced by Data Ingestion. | Updated when the producing pipeline step is rerun. | Coverage depends on upstream source availability and ETL assumptions. |
| routes | table | Primary analytical table used in this page's computations. | Produced by Data Ingestion. | Updated when the producing pipeline step is rerun. | Coverage depends on upstream source availability and ETL assumptions. |
| stop_reference | table | Primary analytical table used in this page's computations. | Produced by Data Ingestion. | Updated when the producing pipeline step is rerun. | Coverage depends on upstream source availability and ETL assumptions. |
| stops | table | Primary analytical table used in this page's computations. | Produced by Data Ingestion. | Updated when the producing pipeline step is rerun. | Coverage depends on upstream source availability and ETL assumptions. |
| polars | dependency | Runtime dependency required for this page's pipeline or analysis code. | Open-source Python ecosystem maintainers. | Version pinned by project environment until dependency updates are applied. | Library updates may change behavior or defaults. |