{"id":51178965,"url":"https://github.com/phanidharakula/simforge","last_synced_at":"2026-06-27T06:00:58.256Z","repository":{"id":361453589,"uuid":"1114820991","full_name":"PhanidharAkula/SimForge","owner":"PhanidharAkula","description":"Reproducible, cross-simulator benchmarking framework for urban traffic simulation (SUMO · MATSim · DTALite) with byte-identical reproducibility and HPC-scale routing. Master's thesis.","archived":false,"fork":false,"pushed_at":"2026-06-27T04:06:29.000Z","size":296986,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"release","last_synced_at":"2026-06-27T04:08:00.696Z","etag":null,"topics":["benchmarking","hpc","matsim","openmp","python","reproducible-research","slurm","sumo","traffic-simulation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PhanidharAkula.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-11T23:54:35.000Z","updated_at":"2026-06-27T03:54:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/PhanidharAkula/SimForge","commit_stats":null,"previous_names":["phanidharakula/simforge"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/PhanidharAkula/SimForge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhanidharAkula%2FSimForge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhanidharAkula%2FSimForge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhanidharAkula%2FSimForge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhanidharAkula%2FSimForge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PhanidharAkula","download_url":"https://codeload.github.com/PhanidharAkula/SimForge/tar.gz/refs/heads/release","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhanidharAkula%2FSimForge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34843147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmarking","hpc","matsim","openmp","python","reproducible-research","slurm","sumo","traffic-simulation"],"created_at":"2026-06-27T06:00:36.208Z","updated_at":"2026-06-27T06:00:58.242Z","avatar_url":"https://github.com/PhanidharAkula.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌉 SimForge\n\n**SimForge** is a reproducible, cross-simulator benchmarking framework for urban traffic simulation.\n\nIt provides a **canonical data schema**, **validated scenario bundles**, **deterministic adapters** for multiple simulators, and a **unified execution harness** for fair performance comparison.\n\n---\n\n## ⚡ Highlights\n\n- **3 heterogeneous engines** unified under one canonical schema, SUMO (micro + meso), MATSim (queue-mobsim), DTALite (CPU mesoscopic DTA), with a **code-enforced fair-comparison contract**\n- **~20× cold / ~228× warm-cache speedup** on BFS pre-routing (per-cell ~68 h → one shared 7.1 h cold pass, 37 min warm, at the 200K tier), which is what made the 500K tier runnable at all (12.1 h measured vs a ~600 h projection), via canonical-route deduplication, parallel workers, and a content-addressed cache\n- **Byte-identical reproducibility**, every run bit-deterministic for a given seed; no live-protocol bindings (no TraCI/Py4J), strictly file-in/file-out\n- **HPC-deployed** on two OSC clusters (Pitzer + Cardinal, with cluster-specific SLURM tuning; the shared `$HOME` is also mounted on Ascend)\n- **Scales to ~420K SCC nodes / ~1.3M directed links** (NYC 500K tier; measured from the simulated networks) across Chicago, NYC, and LA at five demand tiers (1K → 500K trips)\n- **~70–72% demand realism** (vs. ~20–40% for uniform/gravity baselines), calibrated against US Census PUMS microdata, no paid survey data\n- **668 tests across 31 files** including byte-identity determinism guards, and Student's-t 95% CIs on every KPI; a `slow` marker gates the heavy engine / BFS-routing / huge-bundle tests, so the default `pytest` runs the fast suite (~30 s) and `pytest --runslow` runs the full sweep (~20-30 min)\n\n\u003e Master's thesis · Miami University · 2024–2026\n\n---\n\n## 🎯 Project Goals\n\n1. **Standardize inputs**: One canonical format converted to any simulator\n2. **Ensure reproducibility**: Deterministic pipelines with hash verification\n3. **Enable fair comparison**: Same scenarios, same metrics, different engines\n4. **Support research**: Ready-to-use benchmarks for thesis/publication\n\n---\n\n## ✅ Current Status\n\n| Component                                                        | Status                                                                                                                                                     |\n| ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Canonical Schema (v0)                                            | ✅ Stable                                                                                                                                                  |\n| Scenario Validator                                               | ✅ Complete                                                                                                                                                |\n| SUMO Adapter                                                     | ✅ Complete (microscopic + meso)                                                                                                                           |\n| MATSim Adapter                                                   | ✅ Complete (single-iteration meso)                                                                                                                        |\n| DTALite Adapter (3rd primary)                                    | ✅ Complete (CPU mesoscopic DTA, runs on Mac/Linux)                                                                                                        |\n| 95 % CIs on every KPI                                            | ✅ Complete (Student's t)                                                                                                                                  |\n| Execution Harness                                                | ✅ Complete (`run.py` + RunSpec)                                                                                                                           |\n| Metrics \u0026 Plots                                                  | ✅ Complete (10 thesis figures)                                                                                                                            |\n| Test Suite                                                       | ✅ 668 tests across 31 files (fast default `pytest` ~30 s: 522 pass, 146 skip; full `pytest --runslow` ~20-30 min; 13 SUMO netconvert tests skip on arm64) |\n| Bundled scenarios: `chicago_1k_car`, `nyc_10k_car`, `la_50k_car` | ✅ Generated, validated, SHA-256-stamped manifests                                                                                                         |\n| Visualization Component (opt-in)                                 | ✅ Complete (7 map types, OD choropleths, link load, congestion, travel time, route diversity, animated flow)                                              |\n\nThe 200K / 500K tiers are not committed (their network/signals files exceed GitHub's 100 MB limit); regenerate them locally via the helper scripts in `scripts/`.\n\n---\n\n## 🛠️ Quick Start\n\n### Prerequisites\n\n- **uv** (manages Python + the venv), `curl -LsSf https://astral.sh/uv/install.sh | sh`\n- **Java 17+** (only for MATSim runs), `brew install openjdk@17` on macOS\n\nEverything else (Python 3.13, all Python packages, **SUMO including the binary**) is locked in [`requirements.lock`](requirements.lock) and installed in one step below.\n\n### Installation\n\n```bash\ngit clone \u003crepo-url\u003e\ncd SimForge\n\n# uv installs Python 3.13.13 and creates the venv\nuv python install 3.13\nuv venv --python 3.13 .venv\nsource .venv/bin/activate\n\n# One command pulls every Python dep + SUMO at the locked versions\nuv pip install -r requirements.lock\n\n# Download the hash-pinned OSM PBFs (~2.1 GB across IL/NY/CA, the state-level\n# extracts used for chicago, nyc, and la scenarios). Skipped if already present.\npython tools/download_osm.py\n\n# Verify the toolchain (cross-machine parity reference)\npython tools/env_report.py\n```\n\nFor the MATSim JAR install, supercomputer workflow, and full reproducibility recipe see [SETUP.md](SETUP.md), [doc/PITZER.md](doc/PITZER.md), and [doc/REPRODUCING.md](doc/REPRODUCING.md).\n\n### Validate a Bundled Scenario\n\n```bash\npython -m pipeline.validation.validate_bundle scenarios/chicago_1k_car\n```\n\n### Run a Single Simulation\n\n```bash\n# All installed engines × all modes × all scenarios (default 10 repeats)\npython run.py\n\n# One scenario, one engine\npython run.py --scenario chicago_1k_car --engine sumo --mode meso\n\n# List what's available\npython run.py --list\n```\n\n### Run the Full Benchmark\n\n```bash\npython -m execution.run_benchmark runspecs/benchmark_small.yaml\n```\n\n`benchmark_small.yaml` declares the canonical 11-cell matrix\n(`chicago_1k_car` × {SUMO meso/micro, MATSim meso, DTALite meso} +\n`nyc_10k_car` × {SUMO meso/micro, MATSim meso, DTALite meso} +\n`la_50k_car` × {SUMO meso, MATSim meso, DTALite meso}) at N=5 repeats per\ncell. All three engines are CPU-only and run on Mac and Linux without\nspecial hardware. After it finishes:\n\n```bash\npython -m evaluation.analyze_benchmark runs/benchmark_small/benchmark_results_benchmark_small.json\npython -m evaluation.audit_fairness    runs/benchmark_small\npython -m evaluation.generate_plots    runs/benchmark_small/benchmark_results_benchmark_small.json\n```\n\nThe middle step (`audit_fairness`) is the cross-engine fairness check,\nverifies that all engines saw the same trip set, the same SCC-filtered\nnetwork, and the same trip count, and reports per-engine travel-time\nratios. See [doc/RESULTS_GUIDE.md](doc/RESULTS_GUIDE.md) for how to read\nthe audit output, and [doc/EXPERIMENT_LOG.md](doc/EXPERIMENT_LOG.md) §3\nfor the measured Q1–Q4 results from the canonical cluster runs.\n\n`run_benchmark.py` also auto-emits a one-shot `reproducibility_scorecard.md`\nnext to `benchmark_results_*.json`: provenance hashes + environment +\nQ1 byte-identity verdict + R = 1 − CV per cell + pass/warn/fail rollup.\nRegenerate manually with `python -m tools.generate_scorecard \u003crun-dir\u003e`.\n\n### Generate New Scenarios\n\n```bash\npython generate.py --preset chicago_1k_car      # 1K car, Chicago, 7–8 AM\npython generate.py --preset nyc_10k_car         # 10K car, NYC, 7–9 AM\npython generate.py --preset la_50k_car          # 50K car, LA, 6–10 AM\npython generate.py --preset chicago_200k_car    # 200K car, Chicago, 24h\npython generate.py --preset nyc_500k_car        # 500K car, NYC, 6–10 AM\n```\n\nAll five presets generate **car-only** demand because SimForge's three engine adapters (SUMO, MATSim, DTALite) currently only simulate car traffic, see [doc/MODELGEN_AND_MODES.md](doc/MODELGEN_AND_MODES.md) §5 for adapter mode handling and §8 for the future-work pathway to multi-modal simulation.\n\nThe numbered files in `scripts/` (`01_chicago_1k_car.py` … `05_nyc_500k_car.py`) are thin wrappers that call the **same** `generate_scenario()` with the same hardcoded kwargs as the preset above. They accept `--verbose` / `-v` only; the `--preset` form remains preferred when you need other overrides (`--output`, `--seed`, `--city`, `--modes`, `--synthetic`, OSM source mode).\n\nSee [doc/SCENARIO_GENERATION.md](doc/SCENARIO_GENERATION.md) for what each tier generates and how realism is calibrated.\n\n---\n\n## 📂 Repository Structure\n\n```\nSimForge/\n├── adapters/               # Simulator-specific converters\n│   ├── sumo/               # SUMO adapter (micro + meso)\n│   ├── matsim/             # Activity-based simulator\n│   └── dtalite/            # CPU mesoscopic Dynamic Traffic Assignment (path4gmns)\n├── canonical/schema/       # Schema documentation (v0)\n├── doc/                    # Engineering docs (architecture, reproduction, Pitzer, engine evaluations)\n├── evaluation/             # Metrics, analysis, plot generation\n│   └── metrics/            # Fidelity, scalability, reproducibility\n├── execution/              # Benchmark harness \u0026 runners\n├── osm_data/               # Hash-pinned OSM PBF snapshots + manifest.json\n│                           # (PBF binaries gitignored; download via tools/download_osm.py)\n├── pipeline/               # Data generation pipeline\n│   ├── network/            # OSM (PBF or Overpass) → canonical network\n│   ├── demand/             # Synthetic + census-calibrated trip generation\n│   ├── signals/            # Traffic signal inference\n│   └── validation/         # Bundle validator\n├── scripts/                # Per-tier scenario generation (01_chicago_1k_car.py … 05_nyc_500k_car.py)\n├── tools/                  # Operator utilities (clean.sh, download_osm.py,\n│                           # env_report.py, inspect_network.py,\n│                           # analyze_scenarios.py, generate_scorecard.py,\n│                           # recover_partial_summary.py, plus\n│                           # download_census_tracts.py + download_tiger_roads.py\n│                           # for the visualization shapefile cache)\n├── runspecs/               # Benchmark configurations (YAML)\n├── scenarios/              # Bundled canonical scenarios (chicago_1k_car,\n│                           # nyc_10k_car, la_50k_car; the 200K/500K tiers\n│                           # are generated on demand via scripts/)\n├── lib/matsim-15.0/        # MATSim JAR + libs (see SETUP.md)\n├── runs/                   # Simulation output (gitignored)\n├── cache/                  # Overpass HTTP cache + US Census shapefiles (gitignored)\n├── tests/                  # pytest test suite (668 tests across 31 files; slow tests gated behind --runslow)\n├── visualization/          # Opt-in geographic-map renderer\n├── cluster/                # SLURM sbatch templates + example runs (OSC)\n├── run.py                  # Main CLI entry point\n├── generate.py             # Scenario generator entry point\n├── help.py                 # In-CLI help system (curses TUI + topics)\n├── setup_simforge.py       # One-command bootstrap installer\n├── requirements.lock       # Exact pinned deps (canonical install)\n├── requirements.txt        # Loose ranges (development)\n└── SETUP.md                # Detailed setup guide\n```\n\n---\n\n## 📊 Canonical Schema\n\n| File         | Format | Description                     |\n| ------------ | ------ | ------------------------------- |\n| network.xml  | XML    | Road network (nodes + links)    |\n| demand.csv   | CSV    | Travel demand (OD trips)        |\n| signals.xml  | XML    | Traffic signal timing           |\n| config.xml   | XML    | Scenario metadata               |\n| manifest.xml | XML    | File inventory + SHA-256 hashes |\n\n---\n\n## 🔧 Simulators\n\n| Adapter | Engine                           | Traffic Model                                  | Native inputs written                                 |\n| ------- | -------------------------------- | ---------------------------------------------- | ----------------------------------------------------- |\n| SUMO    | eclipse-sumo 1.26+               | Microscopic / Mesoscopic                       | net.net.xml, routes.rou.xml, toy.sumocfg              |\n| MATSim  | MATSim 15                        | Activity-based, single iteration               | network.xml, plans.xml, config.xml                    |\n| DTALite | path4gmns 0.10+ (DTALiteClassic) | CPU mesoscopic Dynamic Traffic Assignment (UE) | node.csv + link.csv + demand.csv + settings.{csv,yml} |\n\nLPSim, POLARIS, and QarSUMO were evaluated and rejected, see the engine evaluations in [`doc/engines/`](doc/engines/).\n\n\u003e **DTALite ships inside `path4gmns`.** Pip-installable, CPU-only, runs on Mac (arm64/x86_64), Linux x86_64, and Windows. The pinned version is in [`lib/dtalite/manifest.json`](lib/dtalite/manifest.json). On macOS the bundled binary needs OpenMP: `brew install libomp`.\n\n---\n\n## 📈 Metrics\n\n- **Fidelity**: RMSE, GEH, KS statistic\n- **Scalability**: Wall-clock runtime, throughput (vehicles/sec)\n- **Reproducibility**: R = 1 − σ/μ across repeats\n\n---\n\n## 🧪 Testing\n\n```bash\npytest tests/ -v             # Fast suite (default, ~30 s): unit + small-bundle integration; slow tests skipped (this run: 522 pass, 146 skip)\npytest tests/ -v --runslow   # Full suite (~20-30 min, pre-ship / CI gate): all 668 tests; 13 SUMO netconvert tests skip on Apple Silicon (arm64), they run on Linux\npytest tests/ -v -k sumo     # SUMO-related tests only\n```\n\nSee [TESTING.md](TESTING.md) for layout and coverage.\n\n---\n\n## 🏗️ Architecture\n\nSimForge has five subsystems connected through the canonical schema:\n\n```\nData Sources → Generation Pipeline → Canonical Bundle → Adapter Layer → Execution Harness → Evaluation Metrics\n```\n\n| Subsystem           | Modules                                                      | Purpose                                                                         |\n| ------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------- |\n| Generation Pipeline | `pipeline/network/`, `pipeline/demand/`, `pipeline/signals/` | OSM + Census → validated canonical bundles                                      |\n| Canonical Schema    | `canonical/schema/`                                          | 5-file intermediate representation (network, demand, signals, config, manifest) |\n| Adapter Layer       | `adapters/sumo/`, `adapters/matsim/`, `adapters/dtalite/`    | Canonical → simulator-specific format                                           |\n| Execution Harness   | `execution/`                                                 | RunSpec-driven benchmark orchestration                                          |\n| Evaluation Metrics  | `evaluation/metrics/`                                        | Fidelity (RMSE, GEH, KS), Scalability, Reproducibility                          |\n\n**Key design decisions:**\n\n- **State-aware BFS routing at conversion time**, deterministic, engine-independent routes that respect OSM-extracted turn restrictions\n- **MATSim `lastIteration=0`**, single-pass execution for fair cross-simulator comparison\n- **SHA-256 manifest**, integrity verification before every simulation run\n- **Census-calibrated demand**, population-weighted origins, real commute times, per-person empirical departures from PUMS JWMNP (~70–72 % realism)\n- **OSM-grounded signal placement**, signals only at nodes carrying `highway=traffic_signals`, rather than a `degree ≥ 4` heuristic\n- **Modelgen-grounded trip purposes**, HBW (AM + PM) commutes plus parent-with-kid HBSchool chains derived from cityscape `schedule[0,1]` + AGEP + OSM `building.kind`; six-purpose taxonomy on `demand.csv`\n- **Cross-engine vehicle parameter alignment**, single canonical car description in `adapters/common/vehicle_types.py` consumed by all three adapters; SUMO `length+minGap` ≡ MATSim effective `length` ≡ DTALite PCE 1.0, regression-pinned by `tests/test_vehicle_types.py`\n\nFor detailed architecture documentation, see [doc/ARCHITECTURE.md](doc/ARCHITECTURE.md).\n\n---\n\n## 🗺️ Geographic Visualization (opt-in)\n\nA standalone visualization component under `visualization/`\nrenders **7 map types** from any bundle / benchmark run, OD demand\nchoropleths on US Census tracts, per-engine link load + congestion +\ntravel time, cross-engine route diversity, and MATSim-driven flow\nanimations (mp4/gif/apng). The main SimForge code paths do not import\nit, so the locked benchmark numbers are independent of any plot.\n\n```bash\n# One-time setup: cache US Census tracts + TIGER roads\npython -m tools.download_census_tracts --all-bundled\npython -m tools.download_tiger_roads --all-bundled\n\n# Coverage report (what's renderable from what's on disk?)\npython -m visualization.generate_maps --scenario chicago_1k_car --dry-run\n\n# Render every available map type\npython -m visualization.generate_maps --scenario chicago_1k_car --maps all\n```\n\nOutput defaults to `visualization/output/\u003cscenario\u003e/`. See\n[`visualization/README.md`](visualization/README.md) for the full\ncatalogue, CLI reference, and the cross-engine interpretation notes\n(SUMO ≈ MATSim vs DTALite, PUMS departure bursts, full-day OD\nsymmetry).\n\n---\n\n## 📚 Documentation\n\n| Document                                                   | Description                                                                                                                                                                                                                                                    |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [SETUP.md](SETUP.md)                                       | Installation guide (local + OSM data)                                                                                                                                                                                                                          |\n| [doc/PITZER.md](doc/PITZER.md)                             | Supercomputer (OSC Pitzer) setup and SLURM                                                                                                                                                                                                                     |\n| [TESTING.md](TESTING.md)                                   | Test suite layout and how to run subsets                                                                                                                                                                                                                       |\n| [CHANGELOG.md](CHANGELOG.md)                               | Notable changes per release                                                                                                                                                                                                                                    |\n| [doc/ARCHITECTURE.md](doc/ARCHITECTURE.md)                 | End-to-end system architecture                                                                                                                                                                                                                                 |\n| [doc/SCENARIO_GENERATION.md](doc/SCENARIO_GENERATION.md)   | Data sources, generation pipeline, realism                                                                                                                                                                                                                     |\n| [doc/REPRODUCING.md](doc/REPRODUCING.md)                   | Full reproduction guide for thesis results                                                                                                                                                                                                                     |\n| [doc/RESULTS_GUIDE.md](doc/RESULTS_GUIDE.md)               | What each generated figure/table means                                                                                                                                                                                                                         |\n| [doc/GLOSSARY.md](doc/GLOSSARY.md)                         | Acronyms and term definitions                                                                                                                                                                                                                                  |\n| [doc/SIMULATION_PARADIGMS.md](doc/SIMULATION_PARADIGMS.md) | Macro / meso / micro reference + per-engine support                                                                                                                                                                                                            |\n| [doc/LICENSING.md](doc/LICENSING.md)                       | Per-component license declarations                                                                                                                                                                                                                             |\n| [doc/DATA_MANAGEMENT.md](doc/DATA_MANAGEMENT.md)           | Data sources, PII policy, retention, ethics                                                                                                                                                                                                                    |\n| [doc/EXPERIMENT_LOG.md](doc/EXPERIMENT_LOG.md)             | Chronological measurement journal                                                                                                                                                                                                                              |\n| [doc/CONTAINER_USAGE.md](doc/CONTAINER_USAGE.md)           | Docker / Singularity (GHCR) container workflow                                                                                                                                                                                                                 |\n| [doc/MODELGEN_AND_MODES.md](doc/MODELGEN_AND_MODES.md)     | Census ModelGen provenance + travel-mode handling                                                                                                                                                                                                              |\n| [doc/engines/](doc/engines/)                               | Engine comparison + LPSim/QarSUMO evaluations                                                                                                                                                                                                                  |\n| [canonical/schema/](canonical/schema/)                     | Schema specifications (v0)                                                                                                                                                                                                                                     |\n| `adapters/*/MAPPING.md`                                    | Per-adapter field mapping rules                                                                                                                                                                                                                                |\n| [visualization/README.md](visualization/README.md)         | Geographic visualization (opt-in, 7 map types)                                                                                                                                                                                                                 |\n| [CONTRIBUTING.md](CONTRIBUTING.md)                         | Contribution workflow and code style                                                                                                                                                                                                                           |\n| `python help.py`                                           | In-CLI help: curses TUI in a terminal, `python help.py \u003ctopic\u003e` (overview / setup / generate / run / scripts / cities / modes / adapters / metrics / evaluation / schema / benchmark / tests / analyzer / visualization / troubleshooting) for paste-safe text |\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphanidharakula%2Fsimforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphanidharakula%2Fsimforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphanidharakula%2Fsimforge/lists"}