Budget allocation analysis for the Swiss Jura railway network (SBB)
This project explores how to allocate infrastructure investment budgets across railway sections (Strecken) in the Jura sub-network, using the MIAM model outputs: asset condition scores, lifecycle data, renewal-risk (ER) demand, and scheduled investment costs (IR).
This project has been initiated during the Hack4Rail 2026, a joint hackathon organised by the railway companies SBB, ÖBB, and DB in partnership with the OpenRail Association.
route-roulette/
├── data/ # ← not committed (add your data here locally)
│ └── version_limited_ressources/
│ └── C200/ # geo-resolution: ~200 m asset chunks
│ ├── Teilnetz_Invest_Resultate_V24_1300MCHF_Chunk200.xlsx
│ ├── Auswertung_ER_2025_V22_002_Fokus_Top_Hauptstrecken_VTHP50_1300MCHF_AB_Chunk200.xlsx
│ ├── Auswertung_IR_2025_V22_002_Fokus_Top_Hauptstrecken_VTHP50_1300MCHF_AB_Chunk200.xlsx
│ ├── Auswertung_Gesamtmittel_2025_V22_002_Fokus_Top_Hauptstrecken_VTHP_50_1300MCHF_AB_Chunk200.xlsx
│ ├── 2025_Dev_Gestamtsystem_V24_VTHP50_1300MCHF_Chunk200.xlsx
│ ├── 2025_Dev_Gestamtsystem_V24_Streckenkategorie_VTHP50_1300MCHF_Chunk200.xlsx
│ ├── Res_V24_AB1300_25to50_Chunk200_Jura_Schema # PostgreSQL schema — Jura sub-network result tables
│ └── Res_V24_AB1300_25to50_Chunk200_Schema # PostgreSQL schema — full MIAM database (67 tables)
├── route_roulette_analysis.ipynb # main EDA notebook: loads data, section-level summary & visuals
├── pyproject.toml # Poetry dependency manifest
├── poetry.lock # locked dependency versions
└── .gitignore
Note: the
data/folder is excluded from version control (see.gitignore). Place the provided data files underdata/version_limited_ressources/C200/before running the notebook.
| Requirement | Version | Notes |
|---|---|---|
| Python | 3.12+ | python.org — on Windows, tick "Add Python to PATH" during install |
| Poetry | latest | Dependency manager — see install commands below |
| Git | any | git-scm.com |
Install Poetry:
- Linux / macOS:
curl -sSL https://install.python-poetry.org | python3 - - Windows (PowerShell):
After install, add Poetry to your PATH if prompted (usually
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
%APPDATA%\Python\Scripts).
git clone https://github.com/OpenRail-Playground/route-roulette.git
cd route-roulette
# Keep the virtual environment inside the project folder
poetry config virtualenvs.in-project true
poetry install
# Place data files (see Repository structure above), then launch Jupyter
poetry run jupyter notebook route_roulette_analysis.ipynbgit clone https://github.com/OpenRail-Playground/route-roulette.git
cd route-roulette
# Keep the virtual environment inside the project folder
poetry config virtualenvs.in-project true
poetry install
# Place data files (see Repository structure above), then launch Jupyter
poetry run jupyter notebook route_roulette_analysis.ipynbData files: copy the provided
.xlsxfiles intodata\version_limited_resources\C200\(create the folders if they don't exist), then run all cells in the notebook.
The content of this repository is licensed under the Apache 2.0 license.
