{
 "run_id": "rc_a81a3bc9",
 "variant_id": "signal_retime_j09",
 "corridor_id": "lingampally_lakdikapul",
 "time": {
  "window": "2026-07",
  "minutes": 15,
  "label": "July 2026 average, 6 am-11 pm \u00b7 heavy rain (what-if)",
  "weather": "heavy_rain"
 },
 "interventions": [
  {
   "junction_id": "j09",
   "kind": "signal_retime",
   "params": {
    "cycle_s": 120,
    "corridor_green_share": 0.7
   }
  }
 ],
 "journey": {
  "total_s": 3937,
  "distance_m": 21644,
  "tomtom_total_s": 3373,
  "legs": [
   {
    "from_id": "A_lingampally",
    "to_id": "j01",
    "from_name": "Lingampally (Old Bombay Rd, route start)",
    "to_name": "Nallagandla Rd jn",
    "distance_m": 2074,
    "time_s": 480,
    "speed_kmh": 15.6,
    "tomtom_time_s": 437,
    "time_s_sd": 37.3
   },
   {
    "from_id": "j01",
    "to_id": "j02",
    "from_name": "Nallagandla Rd jn",
    "to_name": "ISB Rd / DLF jn",
    "distance_m": 5231,
    "time_s": 861,
    "speed_kmh": 21.9,
    "tomtom_time_s": 801,
    "time_s_sd": 74.0
   },
   {
    "from_id": "j02",
    "to_id": "j03",
    "from_name": "ISB Rd / DLF jn",
    "to_name": "Gachibowli Circle",
    "distance_m": 1341,
    "time_s": 256,
    "speed_kmh": 18.9,
    "tomtom_time_s": 232,
    "time_s_sd": 20.5
   },
   {
    "from_id": "j03",
    "to_id": "j04",
    "from_name": "Gachibowli Circle",
    "to_name": "Biodiversity jn (flyover)",
    "distance_m": 1499,
    "time_s": 205,
    "speed_kmh": 26.4,
    "tomtom_time_s": 175,
    "time_s_sd": 19.2
   },
   {
    "from_id": "j04",
    "to_id": "j05",
    "from_name": "Biodiversity jn (flyover)",
    "to_name": "Khajaguda X Roads",
    "distance_m": 986,
    "time_s": 151,
    "speed_kmh": 23.5,
    "tomtom_time_s": 138,
    "time_s_sd": 18.5
   },
   {
    "from_id": "j05",
    "to_id": "j06",
    "from_name": "Khajaguda X Roads",
    "to_name": "Narne Rd jn Shaikpet",
    "distance_m": 1591,
    "time_s": 219,
    "speed_kmh": 26.2,
    "tomtom_time_s": 172,
    "time_s_sd": 18.7
   },
   {
    "from_id": "j06",
    "to_id": "j07",
    "from_name": "Narne Rd jn Shaikpet",
    "to_name": "Tolichowki",
    "distance_m": 2805,
    "time_s": 377,
    "speed_kmh": 26.8,
    "tomtom_time_s": 280,
    "time_s_sd": 33.2
   },
   {
    "from_id": "j07",
    "to_id": "j08",
    "from_name": "Tolichowki",
    "to_name": "Nanal Nagar jn",
    "distance_m": 1308,
    "time_s": 282,
    "speed_kmh": 16.7,
    "tomtom_time_s": 232,
    "time_s_sd": 50.6
   },
   {
    "from_id": "j08",
    "to_id": "j09",
    "from_name": "Nanal Nagar jn",
    "to_name": "Rethibowli jn",
    "distance_m": 336,
    "time_s": 78,
    "speed_kmh": 15.5,
    "tomtom_time_s": 58,
    "time_s_sd": 11.4
   },
   {
    "from_id": "j09",
    "to_id": "j10",
    "from_name": "Rethibowli jn",
    "to_name": "NMDC / Masab Tank Rd",
    "distance_m": 2192,
    "time_s": 509,
    "speed_kmh": 15.5,
    "tomtom_time_s": 441,
    "time_s_sd": 40.5
   },
   {
    "from_id": "j10",
    "to_id": "j11",
    "from_name": "NMDC / Masab Tank Rd",
    "to_name": "Masab Tank",
    "distance_m": 878,
    "time_s": 167,
    "speed_kmh": 18.9,
    "tomtom_time_s": 140,
    "time_s_sd": 25.4
   },
   {
    "from_id": "j11",
    "to_id": "B_lakdikapul",
    "from_name": "Masab Tank",
    "to_name": "Lakdikapul",
    "distance_m": 1403,
    "time_s": 352,
    "speed_kmh": 14.3,
    "tomtom_time_s": 267,
    "time_s_sd": 27.6
   }
  ],
  "total_s_sd": 125.3,
  "total_s_se": 55.2,
  "total_s_se_probes": 22.9,
  "run_to_run_sd_s": 50.2,
  "probe_trips": 30
 },
 "junctions": [
  {
   "id": "j01",
   "name": "Nallagandla Rd jn",
   "lat": 17.4795,
   "lon": 78.31992,
   "avg_delay_s": 11.4,
   "max_queue_m": 72,
   "vehicles": 2487
  },
  {
   "id": "j02",
   "name": "ISB Rd / DLF jn",
   "lat": 17.44527,
   "lon": 78.35255,
   "avg_delay_s": 7.9,
   "max_queue_m": 82,
   "vehicles": 3468
  },
  {
   "id": "j03",
   "name": "Gachibowli Circle",
   "lat": 17.43887,
   "lon": 78.36373,
   "avg_delay_s": 77.2,
   "max_queue_m": 150,
   "vehicles": 3672
  },
  {
   "id": "j04",
   "name": "Biodiversity jn (flyover)",
   "lat": 17.42909,
   "lon": 78.37452,
   "avg_delay_s": 10.6,
   "max_queue_m": 68,
   "vehicles": 2912
  },
  {
   "id": "j05",
   "name": "Khajaguda X Roads",
   "lat": 17.42266,
   "lon": 78.38211,
   "avg_delay_s": 8.5,
   "max_queue_m": 63,
   "vehicles": 4064
  },
  {
   "id": "j06",
   "name": "Narne Rd jn Shaikpet",
   "lat": 17.41412,
   "lon": 78.39443,
   "avg_delay_s": 15.9,
   "max_queue_m": 29,
   "vehicles": 1446
  },
  {
   "id": "j07",
   "name": "Tolichowki",
   "lat": 17.39894,
   "lon": 78.41542,
   "avg_delay_s": 24.7,
   "max_queue_m": 48,
   "vehicles": 1023
  },
  {
   "id": "j08",
   "name": "Nanal Nagar jn",
   "lat": 17.39597,
   "lon": 78.42776,
   "avg_delay_s": 21.3,
   "max_queue_m": 150,
   "vehicles": 4042
  },
  {
   "id": "j09",
   "name": "Rethibowli jn",
   "lat": 17.39598,
   "lon": 78.43171,
   "avg_delay_s": 11.6,
   "max_queue_m": 56,
   "vehicles": 1771
  },
  {
   "id": "j10",
   "name": "NMDC / Masab Tank Rd",
   "lat": 17.39948,
   "lon": 78.45039,
   "avg_delay_s": 7.3,
   "max_queue_m": 48,
   "vehicles": 3811
  },
  {
   "id": "j11",
   "name": "Masab Tank",
   "lat": 17.40352,
   "lon": 78.45639,
   "avg_delay_s": 4.0,
   "max_queue_m": 21,
   "vehicles": 2127
  }
 ],
 "warnings": [],
 "inputs": {
  "counts_source": "estimated",
  "label": "estimated",
  "volume_scale": 1.0,
  "cross_traffic": {
   "j01": {
    "approaches": 1,
    "vph": 400,
    "label": "assumed",
    "roads": [
     {
      "road": "Old Bombay Road",
      "edge": "472153852",
      "enters_on": "472153852",
      "vph": 400,
      "label": "assumed",
      "split": {
       "fwd": 0.786,
       "rev": 0.214,
       "cross": 0.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 120,
       "S": 220,
       "R": 60,
       "U": 0
      },
      "tomtom_vph": 400
     }
    ],
    "tomtom": "not at this junction"
   },
   "j02": {
    "approaches": 3,
    "vph": 1312,
    "label": "estimated",
    "roads": [
     {
      "road": "ISB Road",
      "edge": "211221856#1",
      "enters_on": "211221856#0",
      "vph": 450,
      "label": "assumed",
      "split": {
       "fwd": 0.333,
       "rev": 0.667,
       "cross": 0.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 135,
       "S": 248,
       "R": 68,
       "U": 0
      },
      "tomtom_vph": 450
     },
     {
      "road": "ISB Road East Bound",
      "edge": "472147467",
      "enters_on": "211221856#0",
      "vph": 800,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 1.0,
       "cross": 0.0
      },
      "split_source": "estimated (TomTom turn ratios, 4117 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 799,
       "S": 1,
       "R": 0,
       "U": 0
      },
      "tomtom_vph": 2762
     },
     {
      "road": "Old Bombay Road",
      "edge": "157046148#1",
      "enters_on": "378344583",
      "vph": 62,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "estimated (TomTom turn ratios, 2323 probes)",
      "kind": "corridor top-up",
      "turns_vph": {
       "L": 3,
       "R": 58,
       "U": 0,
       "S": 0
      },
      "tomtom_vph": 3152,
      "arriving_vph": 1215
     },
     {
      "road": "Old Bombay Road",
      "edge": "472147469#2",
      "enters_on": "472147469#2",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "estimated (TomTom turn ratios, 14421 probes)",
      "kind": "corridor top-up",
      "turns_vph": {},
      "tomtom_vph": 4112,
      "arriving_vph": 2361
     }
    ],
    "tomtom": "used"
   },
   "j03": {
    "approaches": 7,
    "vph": 4435,
    "label": "estimated",
    "roads": [
     {
      "road": "Gachibowli - Miyapur Highway",
      "edge": "1190308702",
      "enters_on": "1190308702",
      "vph": 999,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.499,
       "cross": 0.501
      },
      "split_source": "estimated (TomTom turn ratios, 155 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 0,
       "S": 0,
       "R": 997,
       "U": 2
      },
      "tomtom_vph": 2467
     },
     {
      "road": "Gachibowli - Miyapur Highway",
      "edge": "1250765019#0",
      "enters_on": "1032557395",
      "vph": 400,
      "label": "assumed",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 120,
       "S": 220,
       "R": 60,
       "U": 0
      },
      "tomtom_vph": 400
     },
     {
      "road": "Outer Ring Road",
      "edge": "1250844117#0",
      "enters_on": "378333807",
      "vph": 603,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.499,
       "cross": 0.501
      },
      "split_source": "estimated (TomTom turn ratios, 3587 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 602,
       "S": 0,
       "R": 0,
       "U": 1
      },
      "tomtom_vph": 1489
     },
     {
      "road": "",
      "edge": "1271881319",
      "enters_on": "378333807",
      "vph": 200,
      "label": "assumed",
      "split": {
       "fwd": 0.15,
       "rev": 0.15,
       "cross": 0.7
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 60,
       "S": 110,
       "R": 30,
       "U": 0
      },
      "tomtom_vph": 200
     },
     {
      "road": "Old Bombay Road",
      "edge": "1544022149",
      "enters_on": "313359707",
      "vph": 887,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.116,
       "cross": 0.884
      },
      "split_source": "estimated (TomTom turn ratios, 4616 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 664,
       "S": 0,
       "R": 121,
       "U": 103
      },
      "tomtom_vph": 2191
     },
     {
      "road": "",
      "edge": "213741922",
      "enters_on": "378333807",
      "vph": 200,
      "label": "assumed",
      "split": {
       "fwd": 0.15,
       "rev": 0.15,
       "cross": 0.7
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 60,
       "S": 110,
       "R": 30,
       "U": 0
      },
      "tomtom_vph": 200
     },
     {
      "road": "Old Bombay Highway",
      "edge": "378333808#0",
      "enters_on": "313359749#0",
      "vph": 1146,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.16,
       "cross": 0.84
      },
      "split_source": "estimated (TomTom turn ratios, 12799 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 19,
       "S": 183,
       "R": 944,
       "U": 0
      },
      "tomtom_vph": 2828
     }
    ],
    "tomtom": "used"
   },
   "j04": {
    "approaches": 4,
    "vph": 2543,
    "label": "estimated",
    "roads": [
     {
      "road": "Hi Tech City Main Road",
      "edge": "1032456292#0",
      "enters_on": "1032456294",
      "vph": 450,
      "label": "assumed",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 135,
       "S": 248,
       "R": 68,
       "U": 0
      },
      "tomtom_vph": 450
     },
     {
      "road": "Gachibowli Road East Bound",
      "edge": "28847506#2",
      "enters_on": "313363624",
      "vph": 207,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "estimated (TomTom turn ratios, 27226 probes); through traffic 81% on the flyover (measured)",
      "kind": "arm",
      "turns_vph": {
       "L": 66,
       "S": 139,
       "R": 0,
       "U": 2
      },
      "tomtom_vph": 5354
     },
     {
      "road": "Hi Tech City Main Road",
      "edge": "313209564#2",
      "enters_on": "313209564#0",
      "vph": 1200,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 1.0,
       "cross": 0.0
      },
      "split_source": "estimated (TomTom turn ratios, 11777 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 724,
       "S": 0,
       "R": 476,
       "U": 0
      },
      "tomtom_vph": 4160
     },
     {
      "road": "Gachibowli Road East Bound",
      "edge": "313363624",
      "enters_on": "906111927",
      "vph": 686,
      "label": "estimated",
      "split": {
       "fwd": 1.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "on the flyover: straight on",
      "kind": "corridor top-up (flyover)",
      "turns_vph": {
       "S": 686
      },
      "tomtom_vph": 5354,
      "arriving_vph": 1482
     },
     {
      "road": "Old Bombay Highway",
      "edge": "313364728#0",
      "enters_on": "313364728#0",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "estimated (TomTom turn ratios, 10110 probes)",
      "kind": "corridor top-up",
      "turns_vph": {},
      "tomtom_vph": 2370,
      "arriving_vph": 1806
     }
    ],
    "tomtom": "used"
   },
   "j05": {
    "approaches": 1,
    "vph": 400,
    "label": "assumed",
    "roads": [
     {
      "road": "Khajaguda Nanakramguda road",
      "edge": "861160016",
      "enters_on": "117032403",
      "vph": 400,
      "label": "assumed",
      "split": {
       "fwd": 0.647,
       "rev": 0.353,
       "cross": 0.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 120,
       "S": 220,
       "R": 60,
       "U": 0
      },
      "tomtom_vph": 400
     }
    ],
    "tomtom": "not at this junction"
   },
   "j06": {
    "approaches": 3,
    "vph": 1300,
    "label": "estimated",
    "roads": [
     {
      "road": "Old Bombay Road",
      "edge": "313364729#2",
      "enters_on": "313364729#0",
      "vph": 450,
      "label": "assumed",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 135,
       "S": 248,
       "R": 68,
       "U": 0
      },
      "tomtom_vph": 450
     },
     {
      "road": "Old Bombay Highway",
      "edge": "313366033",
      "enters_on": "759786511#5",
      "vph": 450,
      "label": "assumed",
      "split": {
       "fwd": 0.0,
       "rev": 1.0,
       "cross": 0.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 135,
       "S": 248,
       "R": 68,
       "U": 0
      },
      "tomtom_vph": 450
     },
     {
      "road": "Narne Road",
      "edge": "471759399#0",
      "enters_on": "471759399#0",
      "vph": 400,
      "label": "assumed",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 120,
       "S": 220,
       "R": 60,
       "U": 0
      },
      "tomtom_vph": 400
     },
     {
      "road": "Mumbai Road East Bound",
      "edge": "1311233183",
      "enters_on": "1311233183",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "on the flyover: straight on",
      "kind": "corridor top-up (flyover)",
      "turns_vph": {},
      "tomtom_vph": 2699,
      "arriving_vph": 1474
     },
     {
      "road": "Mumbai Road North Bound",
      "edge": "1311972348",
      "enters_on": "1311972348",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "on the flyover: straight on",
      "kind": "corridor top-up (flyover)",
      "turns_vph": {},
      "tomtom_vph": 2637,
      "arriving_vph": 1714
     }
    ],
    "tomtom": "not at this junction"
   },
   "j07": {
    "approaches": 5,
    "vph": 1241,
    "label": "estimated",
    "roads": [
     {
      "road": "Mumbai Road North Bound",
      "edge": "-1124108400",
      "enters_on": "-281276621",
      "vph": 98,
      "label": "estimated",
      "split": {
       "fwd": 0.033,
       "rev": 0.338,
       "cross": 0.629
      },
      "split_source": "estimated (TomTom turn ratios, 1300 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 32,
       "S": 33,
       "R": 26,
       "U": 6
      },
      "tomtom_vph": 243
     },
     {
      "road": "Abdul Waheed Khan Marg",
      "edge": "-1152308056",
      "enters_on": "-1152308056",
      "vph": 166,
      "label": "estimated",
      "split": {
       "fwd": 0.15,
       "rev": 0.15,
       "cross": 0.7
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 50,
       "S": 92,
       "R": 25,
       "U": 0
      },
      "tomtom_vph": 411
     },
     {
      "road": "Hakimpet Road South Bound",
      "edge": "1208987932#0",
      "enters_on": "1208987932#0",
      "vph": 301,
      "label": "estimated",
      "split": {
       "fwd": 0.409,
       "rev": 0.18,
       "cross": 0.411
      },
      "split_source": "estimated (TomTom turn ratios, 3425 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 246,
       "S": 0,
       "R": 54,
       "U": 1
      },
      "tomtom_vph": 742
     },
     {
      "road": "Tolichowki Road",
      "edge": "693067124#1",
      "enters_on": "728941829#1",
      "vph": 322,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.042,
       "cross": 0.958
      },
      "split_source": "estimated (TomTom turn ratios, 33625 probes); through traffic 81% on the flyover (measured)",
      "kind": "arm",
      "turns_vph": {
       "L": 20,
       "S": 277,
       "R": 26,
       "U": 0
      },
      "tomtom_vph": 3714
     },
     {
      "road": "Tolichowki Road",
      "edge": "728941839#0",
      "enters_on": "728941839#0",
      "vph": 354,
      "label": "estimated",
      "split": {
       "fwd": 0.966,
       "rev": 0.001,
       "cross": 0.033
      },
      "split_source": "estimated (TomTom turn ratios, 47385 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 2,
       "S": 342,
       "R": 10,
       "U": 0
      },
      "tomtom_vph": 874
     },
     {
      "road": "Mumbai Road West Bound",
      "edge": "728941829#1",
      "enters_on": "728941829#1",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "on the flyover: straight on",
      "kind": "corridor top-up (flyover)",
      "turns_vph": {},
      "tomtom_vph": 3714,
      "arriving_vph": 2036
     }
    ],
    "tomtom": "used"
   },
   "j08": {
    "approaches": 2,
    "vph": 861,
    "label": "estimated",
    "roads": [
     {
      "road": "NH163 North Bound",
      "edge": "309189799",
      "enters_on": "309189807#0",
      "vph": 637,
      "label": "estimated",
      "split": {
       "fwd": 0.633,
       "rev": 0.367,
       "cross": 0.0
      },
      "split_source": "estimated (TomTom turn ratios, 7094 probes)",
      "kind": "arm",
      "turns_vph": {
       "L": 234,
       "S": 0,
       "R": 403,
       "U": 0
      },
      "tomtom_vph": 1574
     },
     {
      "road": "Old Bombay Highway",
      "edge": "28131038#1",
      "enters_on": "28131038#0",
      "vph": 224,
      "label": "estimated",
      "split": {
       "fwd": 0.025,
       "rev": 0.0,
       "cross": 0.975
      },
      "split_source": "estimated (TomTom turn ratios, 22288 probes)",
      "kind": "corridor top-up",
      "turns_vph": {
       "L": 0,
       "R": 218,
       "U": 0,
       "S": 6
      },
      "tomtom_vph": 4770,
      "arriving_vph": 1708
     },
     {
      "road": "Mehdipatnam Road West Bound",
      "edge": "315417462#5",
      "enters_on": "315417462#5",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "on the flyover: straight on",
      "kind": "corridor top-up (flyover)",
      "turns_vph": {},
      "tomtom_vph": 3108,
      "arriving_vph": 1665
     }
    ],
    "tomtom": "used"
   },
   "j09": {
    "approaches": 3,
    "vph": 680,
    "label": "estimated",
    "roads": [
     {
      "road": "Inner Ring Road",
      "edge": "1109179959#0",
      "enters_on": "1109179959#0",
      "vph": 400,
      "label": "assumed",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 120,
       "S": 220,
       "R": 60,
       "U": 0
      },
      "tomtom_vph": 400
     },
     {
      "road": "Inner Ring Road",
      "edge": "207472304#0",
      "enters_on": "1298044479#0",
      "vph": 48,
      "label": "estimated",
      "split": {
       "fwd": 0.333,
       "rev": 0.667,
       "cross": 0.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 14,
       "S": 27,
       "R": 7,
       "U": 0
      },
      "tomtom_vph": 119
     },
     {
      "road": "Mumbai Road East Bound",
      "edge": "562832903#0",
      "enters_on": "562832903#0",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "on the flyover: straight on",
      "kind": "corridor top-up (flyover)",
      "turns_vph": {},
      "tomtom_vph": 4063,
      "arriving_vph": 2335
     },
     {
      "road": "Golkonda Road",
      "edge": "393419596",
      "enters_on": "315417462#5",
      "vph": 232,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 1.0,
       "cross": 0.0
      },
      "split_source": "estimated (TomTom turn ratios, 14829 probes)",
      "kind": "corridor top-up",
      "turns_vph": {
       "L": 232,
       "R": 0,
       "U": 0,
       "S": 0
      },
      "tomtom_vph": 3574,
      "arriving_vph": 1215
     }
    ],
    "tomtom": "used"
   },
   "j10": {
    "approaches": 2,
    "vph": 848,
    "label": "estimated",
    "roads": [
     {
      "road": "Masab Tank Road",
      "edge": "28197087#1",
      "enters_on": "207472309#0",
      "vph": 450,
      "label": "assumed",
      "split": {
       "fwd": 0.0,
       "rev": 1.0,
       "cross": 0.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 135,
       "S": 248,
       "R": 68,
       "U": 0
      },
      "tomtom_vph": 450
     },
     {
      "road": "Golkonda Road",
      "edge": "313512532#2",
      "enters_on": "314222544#2",
      "vph": 398,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 1.0
      },
      "split_source": "estimated (TomTom turn ratios, 37345 probes)",
      "kind": "corridor top-up",
      "turns_vph": {
       "L": 398,
       "R": 0,
       "U": 0,
       "S": 0
      },
      "tomtom_vph": 4023,
      "arriving_vph": 1231
     },
     {
      "road": "Masab Tank Flyover",
      "edge": "393419597",
      "enters_on": "393419597",
      "vph": 0,
      "label": "estimated",
      "split": {
       "fwd": 0.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "estimated (TomTom turn ratios, 44530 probes)",
      "kind": "corridor top-up",
      "turns_vph": {},
      "tomtom_vph": 1570,
      "arriving_vph": 1215
     }
    ],
    "tomtom": "used"
   },
   "j11": {
    "approaches": 1,
    "vph": 450,
    "label": "assumed",
    "roads": [
     {
      "road": "Masab Tank Road",
      "edge": "309194767#1",
      "enters_on": "314359205#0",
      "vph": 450,
      "label": "assumed",
      "split": {
       "fwd": 1.0,
       "rev": 0.0,
       "cross": 0.0
      },
      "split_source": "assumed",
      "kind": "arm",
      "turns_vph": {
       "L": 135,
       "S": 248,
       "R": 68,
       "U": 0
      },
      "tomtom_vph": 450
     }
    ],
    "tomtom": "none"
   }
  },
  "through_vph": 1215,
  "through_vph_by_direction": {
   "A->B": 1215,
   "B->A": 1215
  },
  "cross_vph_per_approach": 450,
  "corridor_volumes": [
   {
    "junction_id": "j02",
    "direction": "A->B",
    "road": "Professor C R Rao Road East Bound",
    "edge": "157046148#1",
    "tomtom_vph": 3152,
    "sim_vph": 1176,
    "tomtom_delay_s": 20.1,
    "sim_delay_s": 3.5,
    "label": "estimated"
   },
   {
    "junction_id": "j02",
    "direction": "B->A",
    "road": "Gachibowli Road West Bound",
    "edge": "313363619#2",
    "tomtom_vph": 4112,
    "sim_vph": 2104,
    "tomtom_delay_s": 9.4,
    "sim_delay_s": 31.9,
    "label": "estimated"
   },
   {
    "junction_id": "j04",
    "direction": "A->B",
    "road": "Gachibowli Road East Bound",
    "edge": "313363624",
    "tomtom_vph": 5354,
    "sim_vph": 2132,
    "tomtom_delay_s": 7.6,
    "sim_delay_s": null,
    "label": "estimated"
   },
   {
    "junction_id": "j04",
    "direction": "B->A",
    "road": "Gachibowli Road North Bound",
    "edge": "313364728#0",
    "tomtom_vph": 2370,
    "sim_vph": 2360,
    "tomtom_delay_s": 2.9,
    "sim_delay_s": null,
    "label": "estimated"
   },
   {
    "junction_id": "j06",
    "direction": "A->B",
    "road": "Mumbai Road East Bound",
    "edge": "1311233183",
    "tomtom_vph": 2699,
    "sim_vph": 1520,
    "tomtom_delay_s": 27.6,
    "sim_delay_s": null,
    "label": "estimated"
   },
   {
    "junction_id": "j06",
    "direction": "B->A",
    "road": "Mumbai Road North Bound",
    "edge": "1311972348",
    "tomtom_vph": 2637,
    "sim_vph": 1816,
    "tomtom_delay_s": 3.2,
    "sim_delay_s": null,
    "label": "estimated"
   },
   {
    "junction_id": "j07",
    "direction": "B->A",
    "road": "Mumbai Road West Bound",
    "edge": "728941829#1",
    "tomtom_vph": 3714,
    "sim_vph": 2092,
    "tomtom_delay_s": 5.9,
    "sim_delay_s": null,
    "label": "estimated"
   },
   {
    "junction_id": "j08",
    "direction": "A->B",
    "road": "Mumbai Road East Bound",
    "edge": "28131038#0",
    "tomtom_vph": 4770,
    "sim_vph": 2032,
    "tomtom_delay_s": 26.6,
    "sim_delay_s": 53.3,
    "label": "estimated"
   },
   {
    "junction_id": "j08",
    "direction": "B->A",
    "road": "Mehdipatnam Road West Bound",
    "edge": "315417462#5",
    "tomtom_vph": 3108,
    "sim_vph": 1984,
    "tomtom_delay_s": 40.7,
    "sim_delay_s": 27.2,
    "label": "estimated"
   },
   {
    "junction_id": "j09",
    "direction": "A->B",
    "road": "Mumbai Road East Bound",
    "edge": "562832903#0",
    "tomtom_vph": 4063,
    "sim_vph": 2424,
    "tomtom_delay_s": 78.4,
    "sim_delay_s": 14.1,
    "label": "estimated"
   },
   {
    "junction_id": "j09",
    "direction": "B->A",
    "road": "Mehdipatnam Road West Bound",
    "edge": "315417462#7",
    "tomtom_vph": 3574,
    "sim_vph": 1292,
    "tomtom_delay_s": 30.9,
    "sim_delay_s": 9.7,
    "label": "estimated"
   },
   {
    "junction_id": "j10",
    "direction": "A->B",
    "road": "Mehdipatnam Road East Bound",
    "edge": "313512532#2",
    "tomtom_vph": 4023,
    "sim_vph": 1596,
    "tomtom_delay_s": 30.1,
    "sim_delay_s": null,
    "label": "estimated"
   },
   {
    "junction_id": "j10",
    "direction": "B->A",
    "road": "SH4 West Bound",
    "edge": "393419597",
    "tomtom_vph": 1570,
    "sim_vph": 1300,
    "tomtom_delay_s": 55.7,
    "sim_delay_s": null,
    "label": "estimated"
   }
  ],
  "weather": {
   "weather": "heavy_rain",
   "meaning": "the wettest hours July 2026 had: 1+ mm/h (typically 1.69 mm) this hour and the hour before. The reanalysis smooths downpours: a rain gauge would usually record more",
   "rain_class": "moderate",
   "label": "estimated (rain factors from TomTom hourly x Open-Meteo, July 2026)",
   "speed_factor_by_leg": {
    "A_lingampally-j01": 0.9527,
    "j01-j02": 0.9328,
    "j02-j03": 0.9367,
    "j03-j04": 0.963,
    "j04-j05": 0.9263,
    "j05-j06": 0.9208,
    "j06-j07": 0.963,
    "j07-j08": 0.9982,
    "j08-j09": 0.9632,
    "j09-j10": 0.9425,
    "j10-j11": 0.9623,
    "j11-B_lakdikapul": 0.9393
   },
   "relative_to": "July 2026 all-day (06-23) rain mix",
   "expected_trip_time_factor_vs_dry": 1.0787,
   "expected_trip_time_factor_vs_dry_ci95": [
    0.9605,
    1.1605
   ],
   "confidence": "low: rainy hours look a few percent slower, but with 558 hour slots this is not statistically certain, and rainy and dry hours of the same day do not differ",
   "source": "data/rain/rain_factors.json (data/weather/analyse_weather_hourly.py)",
   "structures_slowed": [],
   "waterlogging": [
    {
     "junction_id": "A_lingampally",
     "name": "RUB Lingampally (railway underpasses at Lingampally station)",
     "junction_name": "Lingampally (Old Bombay Rd, route start)",
     "severity": "low",
     "extra_speed_factor": 0.93,
     "lanes_slowed": 51,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "The two railway underpasses at the station flood after 15-20 minutes of rain; NGT summoned GHMC (2023); Cyberabad traffic police reported slow traffic at RUB Lingampally on both sides due to water-logging (Mar 2025)",
     "sources": [
      {
       "url": "https://thesouthfirst.com/telangana/hyderabad-persistent-railway-underpass-flooding-plagues-serilingampally-ngt-summons-ghmc",
       "publisher": "South First",
       "title": "Persistent railway underpass flooding plagues Serilingampally, NGT summons GHMC",
       "date": "2023-09-23"
      },
      {
       "url": "https://www.siasat.com/rains-bring-respite-but-waterlogging-cripples-kondapur-lingampally-3198056/",
       "publisher": "Siasat (Cyberabad Traffic Police)",
       "title": "Rains bring respite but waterlogging cripples Kondapur, Lingampally",
       "date": "2025-03-22"
      }
     ]
    },
    {
     "junction_id": "j01",
     "name": "Lingampally flyover - Nallagandla road (Ratnadeep / Aparna Cyberzon stretch)",
     "junction_name": "Nallagandla Rd jn",
     "severity": "low",
     "extra_speed_factor": 0.93,
     "lanes_slowed": 44,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "One side of the road under inches of water in front of the supermarket on the flyover-Nallagandla stretch; residents complained for two years (2017)",
     "sources": [
      {
       "url": "https://www.thenewsminute.com/telangana/rain-batters-crumbling-roads-posh-hyderabads-nallagandla-area-no-respite-sight-69414",
       "publisher": "The News Minute",
       "title": "Rain batters crumbling roads in posh Hyderabad's Nallagandla area",
       "date": "2017-10-04"
      }
     ]
    },
    {
     "junction_id": "j03",
     "name": "Gachibowli junction (flyover / petrol bunk stretch, IIIT junction)",
     "junction_name": "Gachibowli Circle",
     "severity": "medium",
     "extra_speed_factor": 0.85,
     "lanes_slowed": 310,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Water pooled on the road at Gachibowli junction with a blocked box drain (HYDRAA inspection, Jul 2026); water-logging at IIIT junction and Gachibowli sub-station with traffic diverted (2019); named among waterlogged areas (2020, 2024) and on GHMC's 2019 list of 123 points",
     "sources": [
      {
       "url": "https://www.deccanchronicle.com/southern-states/telangana/hydraa-commissioner-ranganath-inspects-gachibowli-desilting-works-1973661",
       "publisher": "Deccan Chronicle",
       "title": "HYDRAA commissioner inspects Gachibowli desilting works",
       "date": "2026-07-24"
      },
      {
       "url": "https://deccanchronicle.com/nation/current-affairs/260919/water-logging-defeats-police-in-cyberabad.html",
       "publisher": "Deccan Chronicle",
       "title": "Water-logging defeats police in Cyberabad",
       "date": "2019-09-26"
      },
      {
       "url": "https://deccanchronicle.com/southern-states/telangana/hyderabad-rain-wreaks-havoc-in-several-areas-1817640",
       "publisher": "Deccan Chronicle",
       "title": "Hyderabad rain wreaks havoc in several areas",
       "date": "2024-08-20"
      },
      {
       "url": "https://www.thenewsminute.com/article/123-areas-hyderabad-prone-waterlogging-heres-full-list-ghmc-104245",
       "publisher": "The News Minute (GHMC list)",
       "title": "123 areas in Hyderabad prone to waterlogging: the full list by GHMC",
       "date": "2019-06-25"
      }
     ]
    },
    {
     "junction_id": "j04",
     "name": "Biodiversity junction (towards Khajaguda lake)",
     "junction_name": "Biodiversity jn (flyover)",
     "severity": "medium",
     "extra_speed_factor": 0.85,
     "lanes_slowed": 142,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Water-logging at Biodiversity junction towards Khajaguda lake cut 5-6 lanes to one (Jun 2024); police diverted traffic at Biodiversity Park because the Gachibowli-Mehdipatnam road was inundated (2020); bumper-to-bumper after water-logging (2019)",
     "sources": [
      {
       "url": "https://deccanchronicle.com/southern-states/telangana-heavy-rain-causes-water-logging-traffic-chaos-901271",
       "publisher": "Deccan Chronicle",
       "title": "Telangana: heavy rain causes water-logging, traffic chaos",
       "date": "2024-06-28"
      },
      {
       "url": "https://www.thenewsminute.com/amp/story/telangana/video-sudden-downpour-hyderabad-inundates-roads-submerges-vehicles-133237",
       "publisher": "The News Minute",
       "title": "Sudden downpour in Hyderabad inundates roads, submerges vehicles",
       "date": "2020-09-17"
      },
      {
       "url": "https://deccanchronicle.com/nation/current-affairs/260919/water-logging-defeats-police-in-cyberabad.html",
       "publisher": "Deccan Chronicle",
       "title": "Water-logging defeats police in Cyberabad",
       "date": "2019-09-26"
      }
     ]
    },
    {
     "junction_id": "j05",
     "name": "Khajaguda - Biodiversity stretch (Orion Villa)",
     "junction_name": "Khajaguda X Roads",
     "severity": "low",
     "extra_speed_factor": 0.93,
     "lanes_slowed": 36,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Slow traffic from Khajaguda to Biodiversity due to water-logging at Orion Villa; police asked Tolichowki-Gachibowli commuters to detour via Khajaguda junction (2019)",
     "sources": [
      {
       "url": "https://www.thenewsminute.com/article/moderate-rainfall-brings-traffic-standstill-cyberabad-it-corridor-109758",
       "publisher": "The News Minute",
       "title": "Moderate rainfall brings traffic to a standstill in Cyberabad IT corridor",
       "date": "2019-09-30"
      },
      {
       "url": "https://www.theweek.in/wire-updates/national/2025/08/07/mes28-tl-rain.html",
       "publisher": "The Week (PTI)",
       "title": "Heavy rain triggers waterlogging, traffic snarls in Hyderabad",
       "date": "2025-08-07"
      }
     ]
    },
    {
     "junction_id": "j06",
     "name": "Shaikpet nala / Shaikpet flyover (Narne Rd side)",
     "junction_name": "Narne Rd jn Shaikpet",
     "severity": "high",
     "extra_speed_factor": 0.75,
     "lanes_slowed": 83,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Waist-deep water, cars submerged, two-wheelers washed away, police broke the divider to drain the road (2020); 'worst hit' with cars submerged at Shaikpet nala and police telling commuters to avoid the Shaikpet flyover (Aug 2024); Chief Secretary ordered the water cleared (Aug 2025); HYDRAA flash-flood risk area",
     "sources": [
      {
       "url": "https://www.thenewsminute.com/amp/story/telangana/video-sudden-downpour-hyderabad-inundates-roads-submerges-vehicles-133237",
       "publisher": "The News Minute",
       "title": "Sudden downpour in Hyderabad inundates roads, submerges vehicles",
       "date": "2020-09-17"
      },
      {
       "url": "https://www.siasat.com/traffic-advisory-issued-as-hyderabad-grapples-with-waterlogging-post-rainfall-3081377/",
       "publisher": "Siasat (Hyderabad Traffic Police advisory)",
       "title": "Traffic advisory issued as Hyderabad grapples with waterlogging post rainfall",
       "date": "2024-08-19"
      },
      {
       "url": "https://deccanchronicle.com/southern-states/telangana/hyderabad-rain-wreaks-havoc-in-several-areas-1817640",
       "publisher": "Deccan Chronicle",
       "title": "Hyderabad rain wreaks havoc in several areas",
       "date": "2024-08-20"
      },
      {
       "url": "https://www.theweek.in/wire-updates/national/2025/08/07/mes28-tl-rain.html",
       "publisher": "The Week (PTI)",
       "title": "Heavy rain triggers waterlogging, traffic snarls in Hyderabad",
       "date": "2025-08-07"
      },
      {
       "url": "https://www.siasat.com/hydra-chief-visits-low-lying-neighbourhoods-in-hyderabad-3088496/",
       "publisher": "Siasat",
       "title": "HYDRAA chief visits low-lying neighbourhoods in Hyderabad (Tolichowki, Shaikpet)",
       "date": "2024-09-01"
      },
      {
       "publisher": "Terascope team (local knowledge)",
       "title": "Water-logging points supplied by the team, 10 Oct 2026",
       "date": "2026-10-10",
       "url": ""
      }
     ]
    },
    {
     "junction_id": "j07",
     "name": "Tolichowki (main road / flyover)",
     "junction_name": "Tolichowki",
     "severity": "high",
     "extra_speed_factor": 0.75,
     "lanes_slowed": 26,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Chronic: waist-deep water on the Tolichowki-Shaikpet main road with vehicles submerged (2020); cars submerged, DRF pumping water (Aug 2024); HYDRAA flash-flood visit (2024); Masab Tank-Tolichowki-Shaikpet road 'worst affected' (Sep 2026); on GHMC's 2019 list of 123 points",
     "sources": [
      {
       "url": "https://www.thenewsminute.com/amp/story/telangana/video-sudden-downpour-hyderabad-inundates-roads-submerges-vehicles-133237",
       "publisher": "The News Minute",
       "title": "Sudden downpour in Hyderabad inundates roads, submerges vehicles",
       "date": "2020-09-17"
      },
      {
       "url": "https://deccanchronicle.com/southern-states/telangana/hyderabad-rain-wreaks-havoc-in-several-areas-1817640",
       "publisher": "Deccan Chronicle",
       "title": "Hyderabad rain wreaks havoc in several areas",
       "date": "2024-08-20"
      },
      {
       "url": "https://www.siasat.com/traffic-advisory-issued-as-hyderabad-grapples-with-waterlogging-post-rainfall-3081377/",
       "publisher": "Siasat (Hyderabad Traffic Police advisory)",
       "title": "Traffic advisory issued as Hyderabad grapples with waterlogging post rainfall",
       "date": "2024-08-19"
      },
      {
       "url": "https://www.siasat.com/hydra-chief-visits-low-lying-neighbourhoods-in-hyderabad-3088496/",
       "publisher": "Siasat",
       "title": "HYDRAA chief visits low-lying neighbourhoods in Hyderabad (Tolichowki, Shaikpet)",
       "date": "2024-09-01"
      },
      {
       "url": "https://www.thehansindia.com/news/cities/hyderabad/heavy-rains-trigger-traffic-snarls-across-hyderabad-1124724",
       "publisher": "The Hans India",
       "title": "Heavy rains trigger traffic snarls across Hyderabad",
       "date": "2026-09-23"
      },
      {
       "url": "https://www.thenewsminute.com/article/123-areas-hyderabad-prone-waterlogging-heres-full-list-ghmc-104245",
       "publisher": "The News Minute (GHMC list)",
       "title": "123 areas in Hyderabad prone to waterlogging: the full list by GHMC",
       "date": "2019-06-25"
      },
      {
       "publisher": "Terascope team (local knowledge)",
       "title": "Water-logging points supplied by the team, 10 Oct 2026",
       "date": "2026-10-10",
       "url": ""
      }
     ]
    },
    {
     "junction_id": "j08",
     "name": "Nanal Nagar X Road / Mehdipatnam",
     "junction_name": "Nanal Nagar jn",
     "severity": "medium",
     "extra_speed_factor": 0.85,
     "lanes_slowed": 104,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Police: water-logging hit 'particularly Langar House, Nanal Nagar and KCP junction' (Aug 2025); traffic at a snail's pace from water clogging at Nanal Nagar and Mehdipatnam (Aug 2024); flooding at Mehdipatnam with water entering homes (Oct 2020)",
     "sources": [
      {
       "url": "https://www.theweek.in/wire-updates/national/2025/08/07/mes28-tl-rain.html",
       "publisher": "The Week (PTI)",
       "title": "Heavy rain triggers waterlogging, traffic snarls in Hyderabad",
       "date": "2025-08-07"
      },
      {
       "url": "https://deccanchronicle.com/southern-states/telangana/hyderabad-rain-wreaks-havoc-in-several-areas-1817640",
       "publisher": "Deccan Chronicle",
       "title": "Hyderabad rain wreaks havoc in several areas",
       "date": "2024-08-20"
      },
      {
       "url": "https://www.thenewsminute.com/telangana/roads-waterlogged-traffic-disrupted-many-areas-hyderabad-after-heavy-rains-135010",
       "publisher": "The News Minute",
       "title": "Roads waterlogged, traffic disrupted in many areas of Hyderabad after heavy rains",
       "date": "2020-10-10"
      }
     ]
    },
    {
     "junction_id": "j09",
     "name": "Rethibowli Junction",
     "junction_name": "Rethibowli jn",
     "severity": "medium",
     "extra_speed_factor": 0.85,
     "lanes_slowed": 112,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Water-logging point known to the team (local knowledge); no news report found",
     "sources": [
      {
       "publisher": "Terascope team (local knowledge)",
       "title": "Water-logging points supplied by the team, 10 Oct 2026",
       "date": "2026-10-10",
       "url": ""
      }
     ]
    },
    {
     "junction_id": "j10",
     "name": "Opp. Medivision Eye Hospital, NMDC",
     "junction_name": "NMDC / Masab Tank Rd",
     "severity": "medium",
     "extra_speed_factor": 0.85,
     "lanes_slowed": 67,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Water-logging point known to the team (local knowledge); no news report found",
     "sources": [
      {
       "publisher": "Terascope team (local knowledge)",
       "title": "Water-logging points supplied by the team, 10 Oct 2026",
       "date": "2026-10-10",
       "url": ""
      }
     ]
    },
    {
     "junction_id": "j11",
     "name": "Masab Tank (flyover / Ayodhya junction side)",
     "junction_name": "Masab Tank",
     "severity": "medium",
     "extra_speed_factor": 0.85,
     "lanes_slowed": 71,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Masab Tank-Tolichowki-Shaikpet road 'worst affected' (Sep 2026); police advisory: water-logging at Ayodhya junction slowed vehicles from Masab Tank (Aug 2025); water clogging slowed traffic at Masab Tank (Aug 2024)",
     "sources": [
      {
       "url": "https://www.thehansindia.com/news/cities/hyderabad/heavy-rains-trigger-traffic-snarls-across-hyderabad-1124724",
       "publisher": "The Hans India",
       "title": "Heavy rains trigger traffic snarls across Hyderabad",
       "date": "2026-09-23"
      },
      {
       "url": "https://deccanchronicle.com/southern-states/telangana/hyderabad-rains-people-asked-to-stay-indoors-1897230",
       "publisher": "Deccan Chronicle (Hyderabad Traffic Police)",
       "title": "Avoid stepping out, Hyderabad traffic police",
       "date": "2025-08-13"
      },
      {
       "url": "https://deccanchronicle.com/southern-states/telangana/hyderabad-rain-wreaks-havoc-in-several-areas-1817640",
       "publisher": "Deccan Chronicle",
       "title": "Hyderabad rain wreaks havoc in several areas",
       "date": "2024-08-20"
      }
     ]
    },
    {
     "junction_id": "B_lakdikapul",
     "name": "Lakdikapul junction (under the railway bridge)",
     "junction_name": "Lakdikapul",
     "severity": "high",
     "extra_speed_factor": 0.75,
     "lanes_slowed": 207,
     "label": "assumed, scaled by reported severity (reported (public sources), not measured by us)",
     "what_reported": "Chronic low-lying point: on GHMC's list of 30 stagnation points with drain renovation under the railway bridge (Oct 2024); HYDRAA found ageing pipes causing 'ongoing flooding' (Oct 2024); a 180 m drain built with month-long diversions 'to resolve longstanding waterlogging' (Jun 2025); still inundated with traffic diverted (Jul 2025) and at a crawl (Aug 2025)",
     "sources": [
      {
       "url": "https://deccanchronicle.com/southern-states/telangana/ghmc-to-solve-waterlogging-on-roads-1831553",
       "publisher": "Deccan Chronicle (GHMC 30-point list)",
       "title": "GHMC to solve waterlogging on roads",
       "date": "2024-10-19"
      },
      {
       "url": "https://www.siasat.com/hyderabad-damaged-pipelines-to-be-replaced-at-lakdikapul-says-hydra-3120525/",
       "publisher": "Siasat (HYDRAA)",
       "title": "Damaged pipelines to be replaced at Lakdikapul, says HYDRAA",
       "date": "2024-10-26"
      },
      {
       "url": "https://www.siasat.com/month-long-traffic-diversions-issuedat-lakdikapul-for-drain-works-3231810/",
       "publisher": "Siasat",
       "title": "Month-long traffic diversions issued at Lakdikapul for drain works",
       "date": "2025-06-11"
      },
      {
       "url": "https://www.siasat.com/hyderabad-witnesses-heavy-rains-many-roads-waterlogged-3247404/",
       "publisher": "Siasat",
       "title": "Hyderabad witnesses heavy rains, many roads waterlogged",
       "date": "2025-07-18"
      },
      {
       "url": "https://www.theweek.in/wire-updates/national/2025/08/07/mes28-tl-rain.html",
       "publisher": "The Week (PTI)",
       "title": "Heavy rain triggers waterlogging, traffic snarls in Hyderabad",
       "date": "2025-08-07"
      },
      {
       "url": "https://www.thehansindia.com/news/cities/hyderabad/heavy-rains-trigger-traffic-snarls-across-hyderabad-1124724",
       "publisher": "The Hans India",
       "title": "Heavy rains trigger traffic snarls across Hyderabad",
       "date": "2026-09-23"
      },
      {
       "publisher": "Terascope team (local knowledge)",
       "title": "Water-logging points supplied by the team, 10 Oct 2026",
       "date": "2026-10-10",
       "url": ""
      }
     ]
    }
   ],
   "affected_junctions": [
    "Lingampally (Old Bombay Rd, route start)",
    "Nallagandla Rd jn",
    "Gachibowli Circle",
    "Biodiversity jn (flyover)",
    "Khajaguda X Roads",
    "Narne Rd jn Shaikpet",
    "Tolichowki",
    "Nanal Nagar jn",
    "Rethibowli jn",
    "NMDC / Masab Tank Rd",
    "Masab Tank",
    "Lakdikapul"
   ],
   "waterlogging_radius_m": 300.0,
   "waterlogging_note": "heavy rain: lanes within 300 m of 12 reported water-logging junction(s) get an extra speed cap (x0.75-x0.93, assumed, scaled by reported severity) on top of the per-stretch rain factor (the measured leg average). The stretch factor is the average rain effect over the whole leg; the junction factor is the local extra where water collects, which that average hides."
  },
  "sources": [
   {
    "input": "leg travel times (calibration target)",
    "label": "counted",
    "source": "TomTom Traffic Stats job 10051304: probe vehicles, July 2026 every day 06:00-23:00"
   },
   {
    "input": "traffic on every arm of every junction at j02, j03, j04, j06, j07, j08, j09, j10",
    "label": "estimated",
    "source": "TomTom Junction Analytics (model estimates from probe data), mean over 2026-10-09T16:54 .. 2026-10-09T23:53 (minutes within 06-23 h) x cross_scale; corridor approaches topped up only by the shortfall to TomTom's volume (traffic already arriving counted first)"
   },
   {
    "input": "where each arm's traffic goes (turn shares)",
    "label": "estimated",
    "source": "TomTom Junction Analytics turn ratios (left/straight/right/U by angle, probe-weighted) where at least 10 probes back them; elsewhere L 30%, S 55%, R 15%, U 0% (assumed)"
   },
   {
    "input": "arms without TomTom (j01, j05: TomTom's areas are elsewhere; j11: none; side streets)",
    "label": "assumed",
    "source": "200 veh/h per lane, at most 450 veh/h per arm"
   },
   {
    "input": "through traffic taking a flyover",
    "label": "measured",
    "source": "81% (docs/driver-behaviour.md s1)"
   },
   {
    "input": "end-to-end corridor volume",
    "label": "calibrated",
    "source": "set so the corridor approaches at the TomTom junctions carry TomTom's volume (inputs.corridor_volumes)"
   },
   {
    "input": "speed cap per leg (side friction: bus stops, parking, pedestrians, autos)",
    "label": "calibrated",
    "source": "set so the probe cars' leg times match TomTom's"
   },
   {
    "input": "signal plans",
    "label": "assumed",
    "source": "docs/driver-behaviour.md s5: 4 s amber, free left in every phase; main x minor junctions: corridor both ways, a 12 s protected right-turn phase, then the side road, 120 s cycle, corridor >= 65% of the green; big junctions (): one approach at a time, 150 s cycle (corridor_net.signal_plans)"
   },
   {
    "input": "corridor green share where calibrated",
    "label": "calibrated",
    "source": "j02 80%, j08 75%, j09 65%"
   },
   {
    "input": "vehicle mix",
    "label": "assumed",
    "source": "two_wheeler 47%, auto 19%, car 27%, bus 4%, truck 3%; fast riders: 30% of two-wheelers, 50% of autos (docs/driver-behaviour.md s2 table)"
   },
   {
    "input": "driver behaviour (sizes, speeds, gaps, reaction times, amber/red running, box blocking, giving way)",
    "label": "assumed",
    "source": "docs/driver-behaviour.md s2-s7 (VEHICLES); capacity x1.35 via following headways (tau, minGap / 1.55, estimated); imperfection calibrated (spec 0.5): 0.2, fast riders 0.24. With the spec's 0.5 the Nanal Nagar section (j07-j09, near capacity) varied 278-404 s between seeds (sd ~70 s: a variant-vs-baseline comparison there would carry about +-3 min of noise). At 0.2, on the calibrated model (seeds 2-4): section sd 9-27 s, whole trip sd 50 s; paired variant-minus-baseline at the same seed, measured at seeds 2, 3, 4: flyover j08 -3.1 / -3.1 / -2.7 min (sd 0.25 min), heavy rain +2.2 / +3.3 / +3.6 min (sd 0.7 min): a one-junction change is beyond noise above about +-0.5 min, a change to every leg (rain) above about +-1.5 min; side-street traffic forces in below 5 m/s (50%, estimated); lateral behaviour (filtering, weaving) and creeping past the stop line not modelled (non-sublane model)"
   },
   {
    "input": "joining traffic",
    "label": "assumed",
    "source": "drives 2 km along the corridor, then turns off"
   },
   {
    "input": "junction delay on the corridor's approaches (calibration target)",
    "label": "estimated",
    "source": "TomTom Junction Analytics, mean over 2026-10-09T16:54 .. 2026-10-09T23:53 (evening); capped at each leg's all-day time above 50 km/h free flow (inputs.corridor_volumes: tomtom_delay_s vs sim_delay_s)"
   },
   {
    "input": "traffic at Lakdikapul (B)",
    "label": "assumed",
    "source": "disperses before the last ~130 m (a 5-into-2-lane give-way merge); only probe cars drive on"
   },
   {
    "input": "weather what-if: heavy_rain",
    "label": "estimated",
    "source": "estimated (rain factors from TomTom hourly x Open-Meteo, July 2026): speed caps x per-leg factor relative to July 2026 all-day (06-23) rain mix; demand and signals unchanged"
   },
   {
    "input": "water-logging hotspots: Lingampally (Old Bombay Rd, route start), Nallagandla Rd jn, Gachibowli Circle, Biodiversity jn (flyover), Khajaguda X Roads, Narne Rd jn Shaikpet, Tolichowki, Nanal Nagar jn, Rethibowli jn, NMDC / Masab Tank Rd, Masab Tank, Lakdikapul",
    "label": "assumed, scaled by reported severity",
    "source": "data/weather/waterlogging_points.json (reported in public sources, not measured by us): extra speed cap within 300 m of each reported junction, on top of the leg factor"
   }
  ],
  "calibrated_to": "TomTom Traffic Stats job 10051304, July 2026 06:00-23:00, leg speeds",
  "speeds_source": "counted (TomTom probe data)",
  "probes_arrived": 30,
  "teleports": 14,
  "vehicles_loaded": 30081,
  "vehicles_not_inserted": 1564,
  "sections": [
   {
    "from": "A_lingampally",
    "to": "j01",
    "sim_seconds": 2700,
    "probes": 30
   },
   {
    "from": "j01",
    "to": "j02",
    "sim_seconds": 3127,
    "probes": 30
   },
   {
    "from": "j02",
    "to": "j04",
    "sim_seconds": 2700,
    "probes": 30
   },
   {
    "from": "j04",
    "to": "j07",
    "sim_seconds": 2773,
    "probes": 30
   },
   {
    "from": "j07",
    "to": "j09",
    "sim_seconds": 2700,
    "probes": 30
   },
   {
    "from": "j09",
    "to": "B_lakdikapul",
    "sim_seconds": 3260,
    "probes": 30
   }
  ],
  "sim_seconds": 3260,
  "wall_seconds": 37.0,
  "templates": [
   "signal_retime"
  ]
 },
 "frames_path": "/Users/chetanagarwal/apty/projects/hackathon-team-e-cityrehearsal/sim/out/corridor/rc_a81a3bc9/frames.jsonl",
 "frames_window": {
  "from_s": 900,
  "to_s": 1200,
  "step_s": 4,
  "from_min": 5.0,
  "minutes": 5.0,
  "warmup_s": 600,
  "sim_minutes_total": 15,
  "period_from_s": 600,
  "period_to_s": 1500,
  "max_minutes": 10,
  "note": "frames t is simulation seconds; the window can start anywhere from 0 to sim_minutes_total - minutes after warm-up"
 },
 "roads_path": "/Users/chetanagarwal/apty/projects/hackathon-team-e-cityrehearsal/sim/out/corridor/rc_a81a3bc9/roads.geojson",
 "probe_tracks_path": "/Users/chetanagarwal/apty/projects/hackathon-team-e-cityrehearsal/sim/out/corridor/rc_a81a3bc9/probes.json",
 "probe_tracks": {
  "trips": {
   "A->B": 30,
   "B->A": 30
  },
  "incomplete": {
   "A->B": 0,
   "B->A": 0
  },
  "points": 15908,
  "bytes": 1212652
 }
}