{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import os\n",
"import sumolib\n",
"import copy\n",
"from tqdm import tqdm\n",
"from datetime import datetime"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2024-01-05 08:25:00\n",
"2024-01-05 08:30:00\n",
"2024-01-05 08:35:00\n",
"2024-01-05 08:45:00\n"
]
}
],
"source": [
"midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
"next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
"fmins = range(midnight, next_day, 300)\n",
"m = 105 # m ranges from 26 to 287\n",
"# sigtable 시작시각 : 현재시각 - 1200 = 08:25\n",
"# 시뮬레이션 시작시각 : 현재시각 - 900 = 08:30\n",
"# 시뮬레이션 종료시각 : 현재시각 - 600 = 08:35\n",
"# 현재시각 : 08:45\n",
"present_time = fmins[m]\n",
"sigtable_start = fmins[m] - 1200\n",
"sim_start = fmins[m] - 900\n",
"sim_end = fmins[m] - 600\n",
"print(datetime.fromtimestamp(sigtable_start))\n",
"print(datetime.fromtimestamp(sim_start))\n",
"print(datetime.fromtimestamp(sim_end))\n",
"print(datetime.fromtimestamp(present_time))\n",
"net = sumolib.net.readNet('../../Data/networks/sn.net.xml')\n",
"inter_node = pd.read_csv('../../data/tables/inter_node.csv', index_col=0)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['i0', 'i1', 'i2', 'i3', 'i6', 'i7', 'i8', 'i9']\n"
]
}
],
"source": [
"histid = pd.read_csv(f'../../Data/tables/histids/histids_{fmins[50]}.csv', index_col=0)\n",
"print(sorted(histid.node_id.unique()))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{175: 'u00', 176: 'i1', 177: 'u20', 178: 'c30', 210: 'u60', 206: 'i7', 201: 'i8', 202: 'i9'}\n",
"{'i0': 175, 'u00': 175, 'i1': 176, 'i2': 177, 'u20': 177, 'i3': 178, 'u30': 178, 'u31': 178, 'u32': 178, 'c30': 178, 'i6': 210, 'u60': 210, 'i7': 206, 'i8': 201, 'i9': 202}\n",
"{'u00': 'i0', 'u20': 'i2', 'u30': 'i3', 'u31': 'i3', 'u32': 'i3', 'c30': 'i3'}\n",
"{'i0': ['u00'], 'i1': [], 'i2': ['u20'], 'i3': ['c30', 'u30', 'u31', 'u32'], 'i6': [], 'i7': [], 'i8': [], 'i9': []}\n",
"['c30', 'i0', 'i1', 'i2', 'i3', 'i6', 'i7', 'i8', 'i9', 'u00', 'u20', 'u30', 'u31', 'u32', 'u60']\n",
"['i0', 'i1', 'i2', 'i3', 'i6', 'i7', 'i8', 'i9']\n",
"['c30', 'u00', 'u20', 'u30', 'u31', 'u32', 'u60']\n"
]
}
],
"source": [
"inter2node = dict(zip(inter_node['inter_no'], inter_node['node_id']))\n",
"node2inter = dict(zip(inter_node['node_id'], inter_node['inter_no']))\n",
"ch2pa = {'u00': 'i0', 'u20': 'i2', 'u30': 'i3', 'u31': 'i3', 'u32': 'i3', 'c30': 'i3'}\n",
"pa2ch = {'i0':['u00'], 'i1':[], 'i2':['u20'], 'i3':['c30', 'u30', 'u31', 'u32'], 'i6':[], 'i7':[], 'i8':[], 'i9':[]}\n",
"node_ids = sorted(inter_node.node_id.unique())\n",
"parent_ids = sorted(inter_node[inter_node.inter_type=='parent'].node_id.unique())\n",
"child_ids = sorted(inter_node[inter_node.inter_type=='child'].node_id.unique())\n",
"\n",
"print(inter2node)\n",
"print(node2inter)\n",
"print(ch2pa)\n",
"print(pa2ch)\n",
"print(node_ids)\n",
"print(parent_ids)\n",
"print(child_ids)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1704411900 2024-01-05 08:45:00\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" node_id | \n",
" start_unix | \n",
" phas_A | \n",
" phas_B | \n",
" duration | \n",
" inc_edge_A | \n",
" out_edge_A | \n",
" inc_edge_B | \n",
" out_edge_B | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" i2 | \n",
" 1704410739 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" -571542809_01 | \n",
" 571542811_01 | \n",
" 571542811_02 | \n",
" 571542809_01 | \n",
"
\n",
" \n",
" 1 | \n",
" i2 | \n",
" 1704410739 | \n",
" 2 | \n",
" 2 | \n",
" 25 | \n",
" 571542811_02 | \n",
" 571542107_01 | \n",
" -571542809_01 | \n",
" 571542809_01 | \n",
"
\n",
" \n",
" 2 | \n",
" i2 | \n",
" 1704410739 | \n",
" 3 | \n",
" 3 | \n",
" 71 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" i2 | \n",
" 1704410739 | \n",
" 4 | \n",
" 4 | \n",
" 34 | \n",
" -571542809_01 | \n",
" 571542811_01 | \n",
" 571542107_02 | \n",
" 571542809_01 | \n",
"
\n",
" \n",
" 4 | \n",
" i6 | \n",
" 1704410760 | \n",
" 1 | \n",
" 1 | \n",
" 24 | \n",
" -571542115_01 | \n",
" 571500535_01 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 163 | \n",
" i0 | \n",
" 1704411630 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" 571545870_02 | \n",
" 571510153_01 | \n",
" 571510153_02 | \n",
" 571545870_01 | \n",
"
\n",
" \n",
" 164 | \n",
" i0 | \n",
" 1704411630 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" 571510153_02 | \n",
" 571500487_01 | \n",
" 571510153_02 | \n",
" 571545870_01 | \n",
"
\n",
" \n",
" 165 | \n",
" i1 | \n",
" 1704411670 | \n",
" 1 | \n",
" 1 | \n",
" 37 | \n",
" -571542810_01 | \n",
" -571542797_02.99 | \n",
" 571542797_02.99 | \n",
" 571542810_01 | \n",
"
\n",
" \n",
" 166 | \n",
" i1 | \n",
" 1704411670 | \n",
" 2 | \n",
" 2 | \n",
" 93 | \n",
" -571542810_01 | \n",
" -571542797_02.99 | \n",
" -571542810_01 | \n",
" 571543469_01 | \n",
"
\n",
" \n",
" 167 | \n",
" i1 | \n",
" 1704411670 | \n",
" 3 | \n",
" 3 | \n",
" 40 | \n",
" 571543469_02 | \n",
" -571542797_02.99 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
168 rows × 9 columns
\n",
"
"
],
"text/plain": [
" node_id start_unix phas_A phas_B duration inc_edge_A \\\n",
"0 i2 1704410739 1 1 40 -571542809_01 \n",
"1 i2 1704410739 2 2 25 571542811_02 \n",
"2 i2 1704410739 3 3 71 NaN \n",
"3 i2 1704410739 4 4 34 -571542809_01 \n",
"4 i6 1704410760 1 1 24 -571542115_01 \n",
".. ... ... ... ... ... ... \n",
"163 i0 1704411630 3 4 26 571545870_02 \n",
"164 i0 1704411630 4 4 33 571510153_02 \n",
"165 i1 1704411670 1 1 37 -571542810_01 \n",
"166 i1 1704411670 2 2 93 -571542810_01 \n",
"167 i1 1704411670 3 3 40 571543469_02 \n",
"\n",
" out_edge_A inc_edge_B out_edge_B \n",
"0 571542811_01 571542811_02 571542809_01 \n",
"1 571542107_01 -571542809_01 571542809_01 \n",
"2 NaN NaN NaN \n",
"3 571542811_01 571542107_02 571542809_01 \n",
"4 571500535_01 NaN NaN \n",
".. ... ... ... \n",
"163 571510153_01 571510153_02 571545870_01 \n",
"164 571500487_01 571510153_02 571545870_01 \n",
"165 -571542797_02.99 571542797_02.99 571542810_01 \n",
"166 -571542797_02.99 -571542810_01 571543469_01 \n",
"167 -571542797_02.99 NaN NaN \n",
"\n",
"[168 rows x 9 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" node_id | \n",
" phase_no | \n",
" ring_type | \n",
" inc_edge | \n",
" out_edge | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" i0 | \n",
" 1 | \n",
" A | \n",
" -571542797_02 | \n",
" 571500487_01 | \n",
"
\n",
" \n",
" 1 | \n",
" i0 | \n",
" 1 | \n",
" B | \n",
" -571500487_01 | \n",
" 571542797_02 | \n",
"
\n",
" \n",
" 2 | \n",
" i0 | \n",
" 2 | \n",
" A | \n",
" -571500487_01 | \n",
" 571545870_01 | \n",
"
\n",
" \n",
" 3 | \n",
" i0 | \n",
" 2 | \n",
" B | \n",
" -571542797_02 | \n",
" 571510153_01 | \n",
"
\n",
" \n",
" 4 | \n",
" i0 | \n",
" 3 | \n",
" A | \n",
" 571545870_02 | \n",
" 571510153_01 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 111 | \n",
" u60 | \n",
" 2 | \n",
" B | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 112 | \n",
" u60 | \n",
" 3 | \n",
" A | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 113 | \n",
" u60 | \n",
" 3 | \n",
" B | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 114 | \n",
" u60 | \n",
" 4 | \n",
" A | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 115 | \n",
" u60 | \n",
" 4 | \n",
" B | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
116 rows × 5 columns
\n",
"
"
],
"text/plain": [
" node_id phase_no ring_type inc_edge out_edge\n",
"0 i0 1 A -571542797_02 571500487_01\n",
"1 i0 1 B -571500487_01 571542797_02\n",
"2 i0 2 A -571500487_01 571545870_01\n",
"3 i0 2 B -571542797_02 571510153_01\n",
"4 i0 3 A 571545870_02 571510153_01\n",
".. ... ... ... ... ...\n",
"111 u60 2 B NaN NaN\n",
"112 u60 3 A NaN NaN\n",
"113 u60 3 B NaN NaN\n",
"114 u60 4 A NaN NaN\n",
"115 u60 4 B NaN NaN\n",
"\n",
"[116 rows x 5 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(fmins[m], datetime.fromtimestamp(fmins[m]))\n",
"histid = pd.read_csv(f'../../Data/tables/histids/histids_{fmins[m]}.csv', index_col=0)\n",
"match6 = pd.read_csv('../../Data/tables/matching/match6.csv', index_col=0)\n",
"histid = histid.reset_index(drop=True)\n",
"histid = histid.drop(columns=['inter_no'])\n",
"match6 = match6[['node_id', 'phase_no', 'ring_type', 'inc_edge', 'out_edge']].reset_index(drop=True)\n",
"display(histid)\n",
"display(match6)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['i0', 'i1', 'i2', 'i3', 'i6', 'i8', 'i9']"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted(histid.node_id.unique())"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" node_id | \n",
" start_unix | \n",
" phas_A | \n",
" phas_B | \n",
" duration | \n",
" inc_edge_A | \n",
" out_edge_A | \n",
" inc_edge_B | \n",
" out_edge_B | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" i2 | \n",
" 1704410739 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" -571542809_01 | \n",
" 571542811_01 | \n",
" 571542811_02 | \n",
" 571542809_01 | \n",
"
\n",
" \n",
" 1 | \n",
" i2 | \n",
" 1704410739 | \n",
" 2 | \n",
" 2 | \n",
" 25 | \n",
" 571542811_02 | \n",
" 571542107_01 | \n",
" -571542809_01 | \n",
" 571542809_01 | \n",
"
\n",
" \n",
" 2 | \n",
" i2 | \n",
" 1704410739 | \n",
" 3 | \n",
" 3 | \n",
" 71 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" i2 | \n",
" 1704410739 | \n",
" 4 | \n",
" 4 | \n",
" 34 | \n",
" -571542809_01 | \n",
" 571542811_01 | \n",
" 571542107_02 | \n",
" 571542809_01 | \n",
"
\n",
" \n",
" 4 | \n",
" u20 | \n",
" 1704410739 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 313 | \n",
" u00 | \n",
" 1704411630 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 314 | \n",
" u00 | \n",
" 1704411630 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 315 | \n",
" i1 | \n",
" 1704411670 | \n",
" 1 | \n",
" 1 | \n",
" 37 | \n",
" -571542810_01 | \n",
" -571542797_02.99 | \n",
" 571542797_02.99 | \n",
" 571542810_01 | \n",
"
\n",
" \n",
" 316 | \n",
" i1 | \n",
" 1704411670 | \n",
" 2 | \n",
" 2 | \n",
" 93 | \n",
" -571542810_01 | \n",
" -571542797_02.99 | \n",
" -571542810_01 | \n",
" 571543469_01 | \n",
"
\n",
" \n",
" 317 | \n",
" i1 | \n",
" 1704411670 | \n",
" 3 | \n",
" 3 | \n",
" 40 | \n",
" 571543469_02 | \n",
" -571542797_02.99 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
318 rows × 9 columns
\n",
"
"
],
"text/plain": [
" node_id start_unix phas_A phas_B duration inc_edge_A \\\n",
"0 i2 1704410739 1 1 40 -571542809_01 \n",
"1 i2 1704410739 2 2 25 571542811_02 \n",
"2 i2 1704410739 3 3 71 NaN \n",
"3 i2 1704410739 4 4 34 -571542809_01 \n",
"4 u20 1704410739 1 1 40 NaN \n",
".. ... ... ... ... ... ... \n",
"313 u00 1704411630 3 4 26 NaN \n",
"314 u00 1704411630 4 4 33 NaN \n",
"315 i1 1704411670 1 1 37 -571542810_01 \n",
"316 i1 1704411670 2 2 93 -571542810_01 \n",
"317 i1 1704411670 3 3 40 571543469_02 \n",
"\n",
" out_edge_A inc_edge_B out_edge_B \n",
"0 571542811_01 571542811_02 571542809_01 \n",
"1 571542107_01 -571542809_01 571542809_01 \n",
"2 NaN NaN NaN \n",
"3 571542811_01 571542107_02 571542809_01 \n",
"4 NaN NaN NaN \n",
".. ... ... ... \n",
"313 NaN NaN NaN \n",
"314 NaN NaN NaN \n",
"315 -571542797_02.99 571542797_02.99 571542810_01 \n",
"316 -571542797_02.99 -571542810_01 571543469_01 \n",
"317 -571542797_02.99 NaN NaN \n",
"\n",
"[318 rows x 9 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"new_histids = []\n",
"for parent_id in parent_ids:\n",
" for child_id in pa2ch[parent_id]:\n",
" new_histid = histid.copy()[histid.node_id==parent_id]\n",
" new_histid[['inc_edge_A', 'out_edge_A', 'inc_edge_B', 'out_edge_B']] = np.nan\n",
" for i, row in new_histid.iterrows():\n",
" phas_A = row.phas_A\n",
" phas_B = row.phas_B\n",
" new_match = match6[match6.node_id==child_id]\n",
" Arow = new_match[(new_match.phase_no==phas_A) & (new_match.ring_type=='A')]\n",
" if ~ Arow[['inc_edge', 'out_edge']].isna().all().all():\n",
" inc_edge = Arow.iloc[0].inc_edge\n",
" out_edge = Arow.iloc[0].out_edge\n",
" new_histid.loc[i, ['inc_edge_A', 'out_edge_A']] = [inc_edge, out_edge]\n",
" Brow = new_match[(new_match.phase_no==phas_B) & (new_match.ring_type=='B')]\n",
" if ~ Brow[['inc_edge', 'out_edge']].isna().all().all():\n",
" inc_edge = Brow.iloc[0].inc_edge\n",
" out_edge = Brow.iloc[0].out_edge\n",
" new_histid.loc[i, ['inc_edge_B', 'out_edge_B']] = [inc_edge, out_edge]\n",
" new_histid.loc[i, 'node_id'] = child_id\n",
" new_histids.append(new_histid)\n",
"histid_child = pd.concat(new_histids)\n",
"histids = pd.concat([histid.copy(), histid_child])\n",
"histids = histids.sort_values(by=['start_unix', 'node_id', 'phas_A', 'phas_B']).reset_index(drop=True)\n",
"display(histids)"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" node_id | \n",
" start_unix | \n",
" phas_A | \n",
" phas_B | \n",
" duration | \n",
" inc_edge_A | \n",
" out_edge_A | \n",
" inc_edge_B | \n",
" out_edge_B | \n",
"
\n",
" \n",
" \n",
" \n",
" 18 | \n",
" u00 | \n",
" 1704410780 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 19 | \n",
" u00 | \n",
" 1704410780 | \n",
" 2 | \n",
" 2 | \n",
" 42 | \n",
" 571500487_02 | \n",
" 571500487_01.32 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 20 | \n",
" u00 | \n",
" 1704410780 | \n",
" 3 | \n",
" 3 | \n",
" 29 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 21 | \n",
" u00 | \n",
" 1704410780 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 22 | \n",
" u00 | \n",
" 1704410780 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 79 | \n",
" u00 | \n",
" 1704410950 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 80 | \n",
" u00 | \n",
" 1704410950 | \n",
" 2 | \n",
" 2 | \n",
" 42 | \n",
" 571500487_02 | \n",
" 571500487_01.32 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 81 | \n",
" u00 | \n",
" 1704410950 | \n",
" 3 | \n",
" 3 | \n",
" 29 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 82 | \n",
" u00 | \n",
" 1704410950 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 83 | \n",
" u00 | \n",
" 1704410950 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 146 | \n",
" u00 | \n",
" 1704411120 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 147 | \n",
" u00 | \n",
" 1704411120 | \n",
" 2 | \n",
" 2 | \n",
" 42 | \n",
" 571500487_02 | \n",
" 571500487_01.32 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 148 | \n",
" u00 | \n",
" 1704411120 | \n",
" 3 | \n",
" 3 | \n",
" 29 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 149 | \n",
" u00 | \n",
" 1704411120 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 150 | \n",
" u00 | \n",
" 1704411120 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 199 | \n",
" u00 | \n",
" 1704411290 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 200 | \n",
" u00 | \n",
" 1704411290 | \n",
" 2 | \n",
" 2 | \n",
" 42 | \n",
" 571500487_02 | \n",
" 571500487_01.32 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 201 | \n",
" u00 | \n",
" 1704411290 | \n",
" 3 | \n",
" 3 | \n",
" 29 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 202 | \n",
" u00 | \n",
" 1704411290 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 203 | \n",
" u00 | \n",
" 1704411290 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 257 | \n",
" u00 | \n",
" 1704411460 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 258 | \n",
" u00 | \n",
" 1704411460 | \n",
" 2 | \n",
" 2 | \n",
" 42 | \n",
" 571500487_02 | \n",
" 571500487_01.32 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 259 | \n",
" u00 | \n",
" 1704411460 | \n",
" 3 | \n",
" 3 | \n",
" 29 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 260 | \n",
" u00 | \n",
" 1704411460 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 261 | \n",
" u00 | \n",
" 1704411460 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 310 | \n",
" u00 | \n",
" 1704411630 | \n",
" 1 | \n",
" 1 | \n",
" 40 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 311 | \n",
" u00 | \n",
" 1704411630 | \n",
" 2 | \n",
" 2 | \n",
" 42 | \n",
" 571500487_02 | \n",
" 571500487_01.32 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 312 | \n",
" u00 | \n",
" 1704411630 | \n",
" 3 | \n",
" 3 | \n",
" 29 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 313 | \n",
" u00 | \n",
" 1704411630 | \n",
" 3 | \n",
" 4 | \n",
" 26 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 314 | \n",
" u00 | \n",
" 1704411630 | \n",
" 4 | \n",
" 4 | \n",
" 33 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node_id start_unix phas_A phas_B duration inc_edge_A \\\n",
"18 u00 1704410780 1 1 40 NaN \n",
"19 u00 1704410780 2 2 42 571500487_02 \n",
"20 u00 1704410780 3 3 29 NaN \n",
"21 u00 1704410780 3 4 26 NaN \n",
"22 u00 1704410780 4 4 33 NaN \n",
"79 u00 1704410950 1 1 40 NaN \n",
"80 u00 1704410950 2 2 42 571500487_02 \n",
"81 u00 1704410950 3 3 29 NaN \n",
"82 u00 1704410950 3 4 26 NaN \n",
"83 u00 1704410950 4 4 33 NaN \n",
"146 u00 1704411120 1 1 40 NaN \n",
"147 u00 1704411120 2 2 42 571500487_02 \n",
"148 u00 1704411120 3 3 29 NaN \n",
"149 u00 1704411120 3 4 26 NaN \n",
"150 u00 1704411120 4 4 33 NaN \n",
"199 u00 1704411290 1 1 40 NaN \n",
"200 u00 1704411290 2 2 42 571500487_02 \n",
"201 u00 1704411290 3 3 29 NaN \n",
"202 u00 1704411290 3 4 26 NaN \n",
"203 u00 1704411290 4 4 33 NaN \n",
"257 u00 1704411460 1 1 40 NaN \n",
"258 u00 1704411460 2 2 42 571500487_02 \n",
"259 u00 1704411460 3 3 29 NaN \n",
"260 u00 1704411460 3 4 26 NaN \n",
"261 u00 1704411460 4 4 33 NaN \n",
"310 u00 1704411630 1 1 40 NaN \n",
"311 u00 1704411630 2 2 42 571500487_02 \n",
"312 u00 1704411630 3 3 29 NaN \n",
"313 u00 1704411630 3 4 26 NaN \n",
"314 u00 1704411630 4 4 33 NaN \n",
"\n",
" out_edge_A inc_edge_B out_edge_B \n",
"18 NaN NaN NaN \n",
"19 571500487_01.32 NaN NaN \n",
"20 NaN NaN NaN \n",
"21 NaN NaN NaN \n",
"22 NaN NaN NaN \n",
"79 NaN NaN NaN \n",
"80 571500487_01.32 NaN NaN \n",
"81 NaN NaN NaN \n",
"82 NaN NaN NaN \n",
"83 NaN NaN NaN \n",
"146 NaN NaN NaN \n",
"147 571500487_01.32 NaN NaN \n",
"148 NaN NaN NaN \n",
"149 NaN NaN NaN \n",
"150 NaN NaN NaN \n",
"199 NaN NaN NaN \n",
"200 571500487_01.32 NaN NaN \n",
"201 NaN NaN NaN \n",
"202 NaN NaN NaN \n",
"203 NaN NaN NaN \n",
"257 NaN NaN NaN \n",
"258 571500487_01.32 NaN NaN \n",
"259 NaN NaN NaN \n",
"260 NaN NaN NaN \n",
"261 NaN NaN NaN \n",
"310 NaN NaN NaN \n",
"311 571500487_01.32 NaN NaN \n",
"312 NaN NaN NaN \n",
"313 NaN NaN NaN \n",
"314 NaN NaN NaN "
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"histids[histids.node_id=='u00']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['c30', 'i0', 'i1', 'i2', 'i3', 'i6', 'i8', 'i9', 'u00', 'u20', 'u30', 'u31', 'u32']\n",
"[, , , , , , , , , , , , ]\n"
]
}
],
"source": [
"node_ids = sorted(histids.node_id.unique())\n",
"nodes = [net.getNode(node_id) for node_id in node_ids]\n",
"print(node_ids)\n",
"print(nodes)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"c30 rrrrrr\n",
"i0 grrrgrrrgrrrrrgrr\n",
"i1 grrrrrrgrr\n",
"i2 rrggrrr\n",
"i3 grrrrgrrrrgrrrrgrrrr\n",
"i6 grrrgrrrrgrrgrrr\n",
"i8 grrrrrrrgrrrgrrr\n",
"i9 rrrr\n",
"u00 ggggrgggg\n",
"u20 ggrggg\n",
"u30 ggggrggg\n",
"u31 ggggrggg\n",
"u32 gggggggr\n"
]
}
],
"source": [
"node2init = {}\n",
"for node in nodes:\n",
" node_id = node.getID()\n",
" conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]\n",
" conns = [c for c in conns if c[0] >= 0]\n",
" conns = sorted(conns, key=lambda x: x[0])\n",
" state = []\n",
" for i, ci in conns:\n",
" if ci.getTLLinkIndex() < 0:\n",
" continue\n",
" are_foes = False\n",
" for j, cj in conns:\n",
" if ci.getTo() == cj.getTo():\n",
" continue\n",
" if node.areFoes(i, j):\n",
" are_foes = True\n",
" break\n",
" state.append('r' if are_foes else 'g')\n",
" node2init[node_id] = state\n",
"\n",
"# 어떤 연결과도 상충이 일어나지는 않지만, 신호가 부여되어 있는 경우에는 r을 부여\n",
"for _, row in histids.iterrows():\n",
" node_id = row['node_id']\n",
" inc_edge_A = row.inc_edge_A\n",
" inc_edge_B = row.inc_edge_B\n",
" out_edge_A = row.out_edge_A\n",
" out_edge_B = row.out_edge_B\n",
"\n",
" if pd.isna(inc_edge_A) or pd.isna(out_edge_A):\n",
" pass\n",
" else:\n",
" inc_edge_A = net.getEdge(inc_edge_A)\n",
" out_edge_A = net.getEdge(out_edge_A)\n",
" for conn in inc_edge_A.getConnections(out_edge_A):\n",
" index = conn.getTLLinkIndex()\n",
" if index >= 0:\n",
" node2init[node_id][index] = 'r'\n",
"\n",
" if pd.isna(inc_edge_B) or pd.isna(out_edge_B):\n",
" pass\n",
" else:\n",
" inc_edge_B = net.getEdge(inc_edge_B)\n",
" out_edge_B = net.getEdge(out_edge_B)\n",
" for conn in inc_edge_B.getConnections(out_edge_B):\n",
" index = conn.getTLLinkIndex()\n",
" if index >= 0:\n",
" node2init[node_id][index] = 'r'\n",
"for node_id in node_ids:\n",
" print(node_id, \"\".join(node2init[node_id]))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1704411900\n",
"2024-01-05 08:45:00\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" node_id | \n",
" start_unix | \n",
" phase_sumo | \n",
" duration | \n",
" state | \n",
" start_dt | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" i2 | \n",
" 1704410739 | \n",
" 0 | \n",
" 40 | \n",
" GGggGGG | \n",
" 2024-01-05 08:25:39 | \n",
"
\n",
" \n",
" 1 | \n",
" i2 | \n",
" 1704410739 | \n",
" 1 | \n",
" 25 | \n",
" rrggrrr | \n",
" 2024-01-05 08:25:39 | \n",
"
\n",
" \n",
" 2 | \n",
" i2 | \n",
" 1704410739 | \n",
" 2 | \n",
" 71 | \n",
" rrggrrr | \n",
" 2024-01-05 08:25:39 | \n",
"
\n",
" \n",
" 3 | \n",
" i2 | \n",
" 1704410739 | \n",
" 3 | \n",
" 34 | \n",
" rrggGGG | \n",
" 2024-01-05 08:25:39 | \n",
"
\n",
" \n",
" 4 | \n",
" u20 | \n",
" 1704410739 | \n",
" 0 | \n",
" 40 | \n",
" ggrggg | \n",
" 2024-01-05 08:25:39 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 313 | \n",
" u00 | \n",
" 1704411630 | \n",
" 3 | \n",
" 26 | \n",
" ggggrgggg | \n",
" 2024-01-05 08:40:30 | \n",
"
\n",
" \n",
" 314 | \n",
" u00 | \n",
" 1704411630 | \n",
" 4 | \n",
" 33 | \n",
" ggggrgggg | \n",
" 2024-01-05 08:40:30 | \n",
"
\n",
" \n",
" 315 | \n",
" i1 | \n",
" 1704411670 | \n",
" 0 | \n",
" 37 | \n",
" gGGGGGrgrr | \n",
" 2024-01-05 08:41:10 | \n",
"
\n",
" \n",
" 316 | \n",
" i1 | \n",
" 1704411670 | \n",
" 1 | \n",
" 93 | \n",
" grrGGGGgrr | \n",
" 2024-01-05 08:41:10 | \n",
"
\n",
" \n",
" 317 | \n",
" i1 | \n",
" 1704411670 | \n",
" 2 | \n",
" 40 | \n",
" grrrrrrgGG | \n",
" 2024-01-05 08:41:10 | \n",
"
\n",
" \n",
"
\n",
"
318 rows × 6 columns
\n",
"
"
],
"text/plain": [
" node_id start_unix phase_sumo duration state start_dt\n",
"0 i2 1704410739 0 40 GGggGGG 2024-01-05 08:25:39\n",
"1 i2 1704410739 1 25 rrggrrr 2024-01-05 08:25:39\n",
"2 i2 1704410739 2 71 rrggrrr 2024-01-05 08:25:39\n",
"3 i2 1704410739 3 34 rrggGGG 2024-01-05 08:25:39\n",
"4 u20 1704410739 0 40 ggrggg 2024-01-05 08:25:39\n",
".. ... ... ... ... ... ...\n",
"313 u00 1704411630 3 26 ggggrgggg 2024-01-05 08:40:30\n",
"314 u00 1704411630 4 33 ggggrgggg 2024-01-05 08:40:30\n",
"315 i1 1704411670 0 37 gGGGGGrgrr 2024-01-05 08:41:10\n",
"316 i1 1704411670 1 93 grrGGGGgrr 2024-01-05 08:41:10\n",
"317 i1 1704411670 2 40 grrrrrrgGG 2024-01-05 08:41:10\n",
"\n",
"[318 rows x 6 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(present_time)\n",
"print(datetime.fromtimestamp(present_time))\n",
"sigtable = histids.copy()\n",
"sigtable['init_state'] = sigtable['node_id'].map(node2init)\n",
"sigtable['state'] = sigtable['init_state'].map(lambda x:''.join(x))\n",
"for i, row in sigtable.iterrows():\n",
" node_id = row.node_id\n",
" inc_edge_A = row.inc_edge_A\n",
" inc_edge_B = row.inc_edge_B\n",
" out_edge_A = row.out_edge_A\n",
" out_edge_B = row.out_edge_B\n",
" state = copy.deepcopy(node2init)[node_id]\n",
"\n",
" if pd.isna(inc_edge_A) or pd.isna(out_edge_A):\n",
" continue\n",
" else:\n",
" inc_edge_A = net.getEdge(inc_edge_A)\n",
" out_edge_A = net.getEdge(out_edge_A)\n",
" for conn in inc_edge_A.getConnections(out_edge_A):\n",
" index = conn.getTLLinkIndex()\n",
" if index >= 0:\n",
" state[index] = 'G'\n",
" sigtable.at[i, 'state'] = ''.join(state)\n",
"\n",
" if pd.isna(inc_edge_B) or pd.isna(out_edge_B):\n",
" continue\n",
" else:\n",
" inc_edge_B = net.getEdge(inc_edge_B)\n",
" out_edge_B = net.getEdge(out_edge_B)\n",
" for conn in inc_edge_B.getConnections(out_edge_B):\n",
" index = conn.getTLLinkIndex()\n",
" if index >= 0:\n",
" state[index] = 'G'\n",
" sigtable.at[i, 'state'] = ''.join(state)\n",
"sigtable = sigtable.dropna(subset='state')\n",
"sigtable = sigtable.reset_index(drop=True)\n",
"sigtable['phase_sumo'] = sigtable.groupby(['node_id', 'start_unix']).cumcount()\n",
"sigtable = sigtable[sigtable.start_unix >= sigtable_start]\n",
"sigtable = sigtable[['node_id', 'start_unix', 'phase_sumo', 'duration', 'state']]\n",
"sigtable = sigtable.sort_values(by=['start_unix', 'node_id'])\n",
"sigtable['start_dt'] = sigtable['start_unix'].apply(lambda x:datetime.fromtimestamp(x))\n",
"display(sigtable)"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" node_id | \n",
" start_unix | \n",
" phase_sumo | \n",
" duration | \n",
" state | \n",
" start_dt | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" c30 | \n",
" 1704410790 | \n",
" 0_g | \n",
" 33 | \n",
" rrrrrr | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 1 | \n",
" c30 | \n",
" 1704410790 | \n",
" 0_y | \n",
" 4 | \n",
" rrrrrr | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 2 | \n",
" c30 | \n",
" 1704410790 | \n",
" 1__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 3 | \n",
" c30 | \n",
" 1704410790 | \n",
" 1_g | \n",
" 34 | \n",
" GGGGGG | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 4 | \n",
" c30 | \n",
" 1704410790 | \n",
" 1_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 5 | \n",
" c30 | \n",
" 1704410790 | \n",
" 2__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 6 | \n",
" c30 | \n",
" 1704410790 | \n",
" 2_g | \n",
" 37 | \n",
" GGGGGG | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 7 | \n",
" c30 | \n",
" 1704410790 | \n",
" 2_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 8 | \n",
" c30 | \n",
" 1704410790 | \n",
" 3__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 9 | \n",
" c30 | \n",
" 1704410790 | \n",
" 3_g | \n",
" 16 | \n",
" GGGGGG | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 10 | \n",
" c30 | \n",
" 1704410790 | \n",
" 3_y | \n",
" 4 | \n",
" yyyyyy | \n",
" 2024-01-05 08:26:30 | \n",
"
\n",
" \n",
" 11 | \n",
" c30 | \n",
" 1704410950 | \n",
" 0__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 12 | \n",
" c30 | \n",
" 1704410950 | \n",
" 0_g | \n",
" 33 | \n",
" rrrrrr | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 13 | \n",
" c30 | \n",
" 1704410950 | \n",
" 0_y | \n",
" 4 | \n",
" rrrrrr | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 14 | \n",
" c30 | \n",
" 1704410950 | \n",
" 1__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 15 | \n",
" c30 | \n",
" 1704410950 | \n",
" 1_g | \n",
" 34 | \n",
" GGGGGG | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 16 | \n",
" c30 | \n",
" 1704410950 | \n",
" 1_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 17 | \n",
" c30 | \n",
" 1704410950 | \n",
" 2__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 18 | \n",
" c30 | \n",
" 1704410950 | \n",
" 2_g | \n",
" 37 | \n",
" GGGGGG | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 19 | \n",
" c30 | \n",
" 1704410950 | \n",
" 2_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 20 | \n",
" c30 | \n",
" 1704410950 | \n",
" 3__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 21 | \n",
" c30 | \n",
" 1704410950 | \n",
" 3_g | \n",
" 16 | \n",
" GGGGGG | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 22 | \n",
" c30 | \n",
" 1704410950 | \n",
" 3_y | \n",
" 4 | \n",
" yyyyyy | \n",
" 2024-01-05 08:29:10 | \n",
"
\n",
" \n",
" 23 | \n",
" c30 | \n",
" 1704411110 | \n",
" 0__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 24 | \n",
" c30 | \n",
" 1704411110 | \n",
" 0_g | \n",
" 33 | \n",
" rrrrrr | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 25 | \n",
" c30 | \n",
" 1704411110 | \n",
" 0_y | \n",
" 4 | \n",
" rrrrrr | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 26 | \n",
" c30 | \n",
" 1704411110 | \n",
" 1__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 27 | \n",
" c30 | \n",
" 1704411110 | \n",
" 1_g | \n",
" 34 | \n",
" GGGGGG | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 28 | \n",
" c30 | \n",
" 1704411110 | \n",
" 1_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 29 | \n",
" c30 | \n",
" 1704411110 | \n",
" 2__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 30 | \n",
" c30 | \n",
" 1704411110 | \n",
" 2_g | \n",
" 37 | \n",
" GGGGGG | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 31 | \n",
" c30 | \n",
" 1704411110 | \n",
" 2_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 32 | \n",
" c30 | \n",
" 1704411110 | \n",
" 3__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 33 | \n",
" c30 | \n",
" 1704411110 | \n",
" 3_g | \n",
" 16 | \n",
" GGGGGG | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 34 | \n",
" c30 | \n",
" 1704411110 | \n",
" 3_y | \n",
" 4 | \n",
" yyyyyy | \n",
" 2024-01-05 08:31:50 | \n",
"
\n",
" \n",
" 35 | \n",
" c30 | \n",
" 1704411270 | \n",
" 0__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 36 | \n",
" c30 | \n",
" 1704411270 | \n",
" 0_g | \n",
" 33 | \n",
" rrrrrr | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 37 | \n",
" c30 | \n",
" 1704411270 | \n",
" 0_y | \n",
" 4 | \n",
" rrrrrr | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 38 | \n",
" c30 | \n",
" 1704411270 | \n",
" 1__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 39 | \n",
" c30 | \n",
" 1704411270 | \n",
" 1_g | \n",
" 34 | \n",
" GGGGGG | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 40 | \n",
" c30 | \n",
" 1704411270 | \n",
" 1_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 41 | \n",
" c30 | \n",
" 1704411270 | \n",
" 2__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 42 | \n",
" c30 | \n",
" 1704411270 | \n",
" 2_g | \n",
" 37 | \n",
" GGGGGG | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 43 | \n",
" c30 | \n",
" 1704411270 | \n",
" 2_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 44 | \n",
" c30 | \n",
" 1704411270 | \n",
" 3__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 45 | \n",
" c30 | \n",
" 1704411270 | \n",
" 3_g | \n",
" 16 | \n",
" GGGGGG | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 46 | \n",
" c30 | \n",
" 1704411270 | \n",
" 3_y | \n",
" 4 | \n",
" yyyyyy | \n",
" 2024-01-05 08:34:30 | \n",
"
\n",
" \n",
" 47 | \n",
" c30 | \n",
" 1704411430 | \n",
" 0__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 48 | \n",
" c30 | \n",
" 1704411430 | \n",
" 0_g | \n",
" 33 | \n",
" rrrrrr | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 49 | \n",
" c30 | \n",
" 1704411430 | \n",
" 0_y | \n",
" 4 | \n",
" rrrrrr | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 50 | \n",
" c30 | \n",
" 1704411430 | \n",
" 1__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 51 | \n",
" c30 | \n",
" 1704411430 | \n",
" 1_g | \n",
" 34 | \n",
" GGGGGG | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 52 | \n",
" c30 | \n",
" 1704411430 | \n",
" 1_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 53 | \n",
" c30 | \n",
" 1704411430 | \n",
" 2__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 54 | \n",
" c30 | \n",
" 1704411430 | \n",
" 2_g | \n",
" 37 | \n",
" GGGGGG | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 55 | \n",
" c30 | \n",
" 1704411430 | \n",
" 2_y | \n",
" 4 | \n",
" GGGGGG | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 56 | \n",
" c30 | \n",
" 1704411430 | \n",
" 3__r | \n",
" 1 | \n",
" GGGGGG | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 57 | \n",
" c30 | \n",
" 1704411430 | \n",
" 3_g | \n",
" 16 | \n",
" GGGGGG | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 58 | \n",
" c30 | \n",
" 1704411430 | \n",
" 3_y | \n",
" 4 | \n",
" yyyyyy | \n",
" 2024-01-05 08:37:10 | \n",
"
\n",
" \n",
" 59 | \n",
" c30 | \n",
" 1704411590 | \n",
" 0__r | \n",
" 1 | \n",
" rrrrrr | \n",
" 2024-01-05 08:39:50 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node_id start_unix phase_sumo duration state start_dt\n",
"0 c30 1704410790 0_g 33 rrrrrr 2024-01-05 08:26:30\n",
"1 c30 1704410790 0_y 4 rrrrrr 2024-01-05 08:26:30\n",
"2 c30 1704410790 1__r 1 rrrrrr 2024-01-05 08:26:30\n",
"3 c30 1704410790 1_g 34 GGGGGG 2024-01-05 08:26:30\n",
"4 c30 1704410790 1_y 4 GGGGGG 2024-01-05 08:26:30\n",
"5 c30 1704410790 2__r 1 GGGGGG 2024-01-05 08:26:30\n",
"6 c30 1704410790 2_g 37 GGGGGG 2024-01-05 08:26:30\n",
"7 c30 1704410790 2_y 4 GGGGGG 2024-01-05 08:26:30\n",
"8 c30 1704410790 3__r 1 GGGGGG 2024-01-05 08:26:30\n",
"9 c30 1704410790 3_g 16 GGGGGG 2024-01-05 08:26:30\n",
"10 c30 1704410790 3_y 4 yyyyyy 2024-01-05 08:26:30\n",
"11 c30 1704410950 0__r 1 rrrrrr 2024-01-05 08:29:10\n",
"12 c30 1704410950 0_g 33 rrrrrr 2024-01-05 08:29:10\n",
"13 c30 1704410950 0_y 4 rrrrrr 2024-01-05 08:29:10\n",
"14 c30 1704410950 1__r 1 rrrrrr 2024-01-05 08:29:10\n",
"15 c30 1704410950 1_g 34 GGGGGG 2024-01-05 08:29:10\n",
"16 c30 1704410950 1_y 4 GGGGGG 2024-01-05 08:29:10\n",
"17 c30 1704410950 2__r 1 GGGGGG 2024-01-05 08:29:10\n",
"18 c30 1704410950 2_g 37 GGGGGG 2024-01-05 08:29:10\n",
"19 c30 1704410950 2_y 4 GGGGGG 2024-01-05 08:29:10\n",
"20 c30 1704410950 3__r 1 GGGGGG 2024-01-05 08:29:10\n",
"21 c30 1704410950 3_g 16 GGGGGG 2024-01-05 08:29:10\n",
"22 c30 1704410950 3_y 4 yyyyyy 2024-01-05 08:29:10\n",
"23 c30 1704411110 0__r 1 rrrrrr 2024-01-05 08:31:50\n",
"24 c30 1704411110 0_g 33 rrrrrr 2024-01-05 08:31:50\n",
"25 c30 1704411110 0_y 4 rrrrrr 2024-01-05 08:31:50\n",
"26 c30 1704411110 1__r 1 rrrrrr 2024-01-05 08:31:50\n",
"27 c30 1704411110 1_g 34 GGGGGG 2024-01-05 08:31:50\n",
"28 c30 1704411110 1_y 4 GGGGGG 2024-01-05 08:31:50\n",
"29 c30 1704411110 2__r 1 GGGGGG 2024-01-05 08:31:50\n",
"30 c30 1704411110 2_g 37 GGGGGG 2024-01-05 08:31:50\n",
"31 c30 1704411110 2_y 4 GGGGGG 2024-01-05 08:31:50\n",
"32 c30 1704411110 3__r 1 GGGGGG 2024-01-05 08:31:50\n",
"33 c30 1704411110 3_g 16 GGGGGG 2024-01-05 08:31:50\n",
"34 c30 1704411110 3_y 4 yyyyyy 2024-01-05 08:31:50\n",
"35 c30 1704411270 0__r 1 rrrrrr 2024-01-05 08:34:30\n",
"36 c30 1704411270 0_g 33 rrrrrr 2024-01-05 08:34:30\n",
"37 c30 1704411270 0_y 4 rrrrrr 2024-01-05 08:34:30\n",
"38 c30 1704411270 1__r 1 rrrrrr 2024-01-05 08:34:30\n",
"39 c30 1704411270 1_g 34 GGGGGG 2024-01-05 08:34:30\n",
"40 c30 1704411270 1_y 4 GGGGGG 2024-01-05 08:34:30\n",
"41 c30 1704411270 2__r 1 GGGGGG 2024-01-05 08:34:30\n",
"42 c30 1704411270 2_g 37 GGGGGG 2024-01-05 08:34:30\n",
"43 c30 1704411270 2_y 4 GGGGGG 2024-01-05 08:34:30\n",
"44 c30 1704411270 3__r 1 GGGGGG 2024-01-05 08:34:30\n",
"45 c30 1704411270 3_g 16 GGGGGG 2024-01-05 08:34:30\n",
"46 c30 1704411270 3_y 4 yyyyyy 2024-01-05 08:34:30\n",
"47 c30 1704411430 0__r 1 rrrrrr 2024-01-05 08:37:10\n",
"48 c30 1704411430 0_g 33 rrrrrr 2024-01-05 08:37:10\n",
"49 c30 1704411430 0_y 4 rrrrrr 2024-01-05 08:37:10\n",
"50 c30 1704411430 1__r 1 rrrrrr 2024-01-05 08:37:10\n",
"51 c30 1704411430 1_g 34 GGGGGG 2024-01-05 08:37:10\n",
"52 c30 1704411430 1_y 4 GGGGGG 2024-01-05 08:37:10\n",
"53 c30 1704411430 2__r 1 GGGGGG 2024-01-05 08:37:10\n",
"54 c30 1704411430 2_g 37 GGGGGG 2024-01-05 08:37:10\n",
"55 c30 1704411430 2_y 4 GGGGGG 2024-01-05 08:37:10\n",
"56 c30 1704411430 3__r 1 GGGGGG 2024-01-05 08:37:10\n",
"57 c30 1704411430 3_g 16 GGGGGG 2024-01-05 08:37:10\n",
"58 c30 1704411430 3_y 4 yyyyyy 2024-01-05 08:37:10\n",
"59 c30 1704411590 0__r 1 rrrrrr 2024-01-05 08:39:50"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Sigtable = []\n",
"for node_id, group in sigtable.groupby('node_id'):\n",
" new_rows_list = []\n",
" for i in range(1, len(group)):\n",
" prev_row = group.iloc[i-1:i].copy()\n",
" next_row = group.iloc[i:i+1].copy()\n",
" new_rows = pd.concat([prev_row, prev_row, next_row]).reset_index(drop=True)\n",
" new_rows.loc[0, 'phase_sumo'] = str(prev_row.phase_sumo.iloc[0]) + '_g'\n",
" new_rows.loc[0, 'duration'] = new_rows.loc[0, 'duration'] - 5\n",
" new_rows.loc[1, 'phase_sumo'] = str(prev_row.phase_sumo.iloc[0]) + '_y'\n",
" new_rows.loc[1, 'duration'] = 4\n",
" yellow_state = ''\n",
" red_state = ''\n",
" for a, b in zip(prev_row.state.iloc[0], next_row.state.iloc[0]):\n",
" if a == 'G' and b == 'r':\n",
" yellow_state += 'y'\n",
" red_state += 'r'\n",
" else:\n",
" yellow_state += a\n",
" red_state += a\n",
" new_rows.loc[2, 'phase_sumo'] = str(next_row.phase_sumo.iloc[0]) + '__r'\n",
" new_rows.loc[2, 'duration'] = 1\n",
" new_rows.loc[1, 'state'] = yellow_state\n",
" new_rows.loc[2, 'state'] = red_state\n",
" new_rows_list.append(new_rows)\n",
" next_row['phase_sumo'] = str(next_row.phase_sumo.iloc[0]) + '_g'\n",
" next_row['duration'] -= 5\n",
" # next_row.loc['duration'] -= 5\n",
" new_rows_list.append(next_row)\n",
" new_rows = pd.concat(new_rows_list)\n",
" Sigtable.append(new_rows)\n",
"Sigtable = pd.concat(Sigtable).sort_values(by=['node_id', 'start_unix', 'phase_sumo']).reset_index(drop=True)\n",
"Sigtable[:60]"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2024-01-05 08:25:00\n",
"2024-01-05 08:30:00\n",
"2024-01-05 08:35:00\n",
"2024-01-05 08:45:00\n"
]
}
],
"source": [
"# sigtable 시작시각 : 현재시각 - 1200 = 08:25\n",
"# 시뮬레이션 시작시각 : 현재시각 - 900 = 08:30\n",
"# 시뮬레이션 종료시각 : 현재시각 - 600 = 08:35\n",
"# 현재시각 : 08:45\n",
"print(datetime.fromtimestamp(sigtable_start))\n",
"print(datetime.fromtimestamp(sim_start))\n",
"print(datetime.fromtimestamp(sim_end))\n",
"print(datetime.fromtimestamp(present_time))"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"c30\n",
"i0\n",
"i1\n",
"i2\n",
"i3\n",
"i6\n",
"i8\n",
"i9\n",
"u00\n",
"u20\n",
"u30\n",
"u31\n",
"u32\n"
]
}
],
"source": [
"for k, g in Sigtable.groupby('node_id'):\n",
" print(k)"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n"
]
}
],
"source": [
"offsets = {}\n",
"SIGTABLE = []\n",
"for node_id, group in Sigtable.groupby('node_id'):\n",
" lsbs = group[group['start_unix'] < sim_start]['start_unix'].max() # the last start_unix before sim_start\n",
" offsets[node_id] = lsbs - sim_start\n",
" group = group[(group['start_unix'] < sim_end) & (group['start_unix'] >= lsbs)]\n",
" SIGTABLE.append(group)\n",
"SIGTABLE = pd.concat(SIGTABLE)\n",
"\n",
"strings = ['\\n']\n",
"for node_id, group in Sigtable.groupby('node_id'):\n",
" strings.append(f' \\n')\n",
" for i, row in group.iterrows():\n",
" duration = row.duration\n",
" state = row.state\n",
" strings.append(f' \\n')\n",
" strings.append(' \\n')\n",
"strings.append('')\n",
"strings = ''.join(strings)\n",
"# 저장\n",
"path_output = '../../Data/networks/sn.add.xml'\n",
"with open(path_output, 'w') as f:\n",
" f.write(strings)\n",
"\n",
"print(strings)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "rts",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}