Data Models ¶
Network Wrangler uses pandera’s DataFrameModel as the base class for all data validation models. The following diagrams show how the core network classes contain these data models and their inheritance relationships:
Network Containment Diagram ¶
%%{init: {'theme':'base', 'themeVariables': {'fontSize': '12px'}}}%%
graph TD
S[Scenario]
S --> RN
subgraph "RoadwayNetwork"
RN[RoadwayNetwork]
RL[nodes_df: RoadNodesTable]
RK[links_df: RoadLinksTable]
RS[shapes_df: RoadShapesTable]
RN -.-> RL
RN -.-> RK
RN -.-> RS
end
%% Force vertical spacing
SPACER1[" "]
SPACER2[" "]
RN --> SPACER1
SPACER1 --> SPACER2
SPACER2 --> TN
subgraph "TransitNetwork"
TN[TransitNetwork]
F[Feed]
TS[stops: WranglerStopsTable]
TR[routes: RoutesTable]
TT[trips: WranglerTripsTable]
TST[stop_times: WranglerStopTimesTable]
TSH[shapes: WranglerShapesTable]
TF[frequencies: WranglerFrequenciesTable]
TA[agencies: AgenciesTable]
TN -.-> F
F -.-> TS
F -.-> TR
F -.-> TT
F -.-> TST
F -.-> TSH
F -.-> TF
F -.-> TA
end
%% Hide spacers
style SPACER1 fill:transparent,stroke:transparent
style SPACER2 fill:transparent,stroke:transparent
click S "../api/#network_wrangler.scenario"
click RN "../api/#network_wrangler.roadway.network"
click TN "../api/#network_wrangler.transit.network"
click F "../api_transit/#network_wrangler.transit.feed.feed.Feed"
click RL "../api_roadway/#network_wrangler.models.roadway.tables.RoadNodesTable"
click RK "../api_roadway/#network_wrangler.models.roadway.tables.RoadLinksTable"
click RS "../api_roadway/#network_wrangler.models.roadway.tables.RoadShapesTable"
click TS "../api_transit/#network_wrangler.models.gtfs.tables.WranglerStopsTable"
click TR "../api_transit/#network_wrangler.models.gtfs.tables.RoutesTable"
click TT "../api_transit/#network_wrangler.models.gtfs.tables.WranglerTripsTable"
click TST "../api_transit/#network_wrangler.models.gtfs.tables.WranglerStopTimesTable"
click TSH "../api_transit/#network_wrangler.models.gtfs.tables.WranglerShapesTable"
click TF "../api_transit/#network_wrangler.models.gtfs.tables.WranglerFrequenciesTable"
click TA "../api_transit/#network_wrangler.models.gtfs.tables.AgenciesTable"
classDef core fill:#e3f2fd,stroke:#1976d2,stroke-width:3px
classDef container fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef roadway fill:#e8f5e8,stroke:#388e3c,stroke-width:2px
classDef transit fill:#fff3e0,stroke:#f57c00,stroke-width:2px
class S,RN,TN,F core
class RL,RK,RS roadway
class TS,TR,TT,TST,TSH,TF,TA transit
Roadway Inheritance Diagrams ¶
%%{init: {'theme':'base', 'themeVariables': {'fontSize': '12px'}}}%%
graph TD
A["DataFrameModel"]
A --> B["RoadLinksTable"]
A --> C["RoadNodesTable"]
A --> D["RoadShapesTable"]
A --> E["ExplodedScopedLinkPropertyTable"]
A --> F["NodeGeometryChangeTable"]
click A "https://pandera.readthedocs.io/en/stable/reference/generated/pandera.api.pandas.model.DataFrameModel.html"
click B "../api_roadway/#network_wrangler.models.roadway.tables.RoadLinksTable"
click C "../api_roadway/#network_wrangler.models.roadway.tables.RoadNodesTable"
click D "../api_roadway/#network_wrangler.models.roadway.tables.RoadShapesTable"
click E "../api_roadway/#network_wrangler.models.roadway.tables.ExplodedScopedLinkPropertyTable"
click F "../api_roadway/#network_wrangler.roadway.nodes.edit.NodeGeometryChangeTable"
classDef pandera fill:#e1f5fe,stroke:#01579b,stroke-width:3px
classDef roadway fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
class A pandera
class B,C,D,E,F roadway
Transit/GTFS Inheritance Diagrams ¶
%%{init: {'theme':'base', 'themeVariables': {'fontSize': '12px'}}}%%
graph TD
A["DataFrameModel"]
A --> B["AgenciesTable"]
A --> C["StopsTable"]
A --> D["RoutesTable"]
A --> E["ShapesTable"]
A --> F["TripsTable"]
A --> G["FrequenciesTable"]
A --> H["StopTimesTable"]
C --> I["WranglerStopsTable"]
E --> J["WranglerShapesTable"]
F --> K["WranglerTripsTable"]
G --> L["WranglerFrequenciesTable"]
H --> M["WranglerStopTimesTable"]
click A "https://pandera.readthedocs.io/en/stable/reference/generated/pandera.api.pandas.model.DataFrameModel.html"
click B "../api_transit/#network_wrangler.models.gtfs.tables.AgenciesTable"
click C "../api_transit/#network_wrangler.models.gtfs.tables.StopsTable"
click D "../api_transit/#network_wrangler.models.gtfs.tables.RoutesTable"
click E "../api_transit/#network_wrangler.models.gtfs.tables.ShapesTable"
click F "../api_transit/#network_wrangler.models.gtfs.tables.TripsTable"
click G "../api_transit/#network_wrangler.models.gtfs.tables.FrequenciesTable"
click H "../api_transit/#network_wrangler.models.gtfs.tables.StopTimesTable"
click I "../api_transit/#network_wrangler.models.gtfs.tables.WranglerStopsTable"
click J "../api_transit/#network_wrangler.models.gtfs.tables.WranglerShapesTable"
click K "../api_transit/#network_wrangler.models.gtfs.tables.WranglerTripsTable"
click L "../api_transit/#network_wrangler.models.gtfs.tables.WranglerFrequenciesTable"
click M "../api_transit/#network_wrangler.models.gtfs.tables.WranglerStopTimesTable"
classDef pandera fill:#e1f5fe,stroke:#01579b,stroke-width:3px
classDef gtfs fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
classDef wrangler fill:#fff3e0,stroke:#e65100,stroke-width:2px
class A pandera
class B,C,D,E,F,G,H gtfs
class I,J,K,L,M wrangler
Legend:
- 🔗 DataFrameModel - External pandera base class (links to pandera docs)
- 🟣 Purple - Roadway network data models
- 🟢 Green - Standard GTFS transit data models
- 🟠 Orange - Wrangler-enhanced GTFS models with additional fields
DBModelMixin Inheritance Diagrams ¶
%%{init: {'theme':'base', 'themeVariables': {'fontSize': '12px'}}}%%
graph TD
A["DBModelMixin"]
A --> B["GtfsModel"]
A --> C["Feed"]
A --> D["MockDBModel"]
click A "../api/#network_wrangler.models._base.db.DBModelMixin"
click B "../api_transit/#network_wrangler.models.gtfs.gtfs.GtfsModel"
click C "../api_transit/#network_wrangler.transit.feed.feed.Feed"
classDef mixin fill:#fff3e0,stroke:#e65100,stroke-width:3px
classDef gtfs fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
classDef wrangler fill:#e1f5fe,stroke:#01579b,stroke-width:2px
classDef test fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
class A mixin
class B gtfs
class C wrangler
class D test
Legend:
- 🟠 DBModelMixin - Base mixin for managing interrelated DataFrameModel tables
- 🟢 GtfsModel - Pure GTFS feed data wrapper
- 🔵 Feed - Wrangler-enhanced GTFS feed with additional functionality
- 🟣 MockDBModel - Test implementation (not shown in API docs)
💡 Tip: Click on any box in the diagrams to jump directly to that class’s documentation!