{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os, sys, sumolib\n",
|
|
"import pandas as pd"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['check.ipynb',\n",
|
|
" 'data_check.py',\n",
|
|
" 'new_sungnam_network_internal_target_0721.net.xml',\n",
|
|
" 'review_needed.csv',\n",
|
|
" 'sn.rou.xml',\n",
|
|
" 'sn_1722384300.add.xml',\n",
|
|
" '__pycache__']"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"os.listdir()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"path_net = os.listdir()[2]\n",
|
|
"path_add = os.listdir()[5]\n",
|
|
"net = sumolib.net.readNet(path_net)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>index</th>\n",
|
|
" <th>duration</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>106231</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>11</td>\n",
|
|
" <td>grgrrGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>106231</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>grgrrGGy</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>106231</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>grgGGGGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>106231</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>grgyyyyr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>106231</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>gGgrrrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>250</th>\n",
|
|
" <td>109986</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>67</td>\n",
|
|
" <td>gGGGGrgrrgGGGGrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>251</th>\n",
|
|
" <td>109986</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>gyyyyrgrrgyyyyrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>252</th>\n",
|
|
" <td>109986</td>\n",
|
|
" <td>10</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>grrrrGgrrgrrrrGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>253</th>\n",
|
|
" <td>109986</td>\n",
|
|
" <td>11</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>grrrrygrrgrrrrygrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>254</th>\n",
|
|
" <td>109986</td>\n",
|
|
" <td>12</td>\n",
|
|
" <td>54</td>\n",
|
|
" <td>grrrrrgGGgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>255 rows × 4 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" node_id index duration state\n",
|
|
"0 106231 0 11 grgrrGGG\n",
|
|
"1 106231 1 4 grgrrGGy\n",
|
|
"2 106231 2 24 grgGGGGr\n",
|
|
"3 106231 3 4 grgyyyyr\n",
|
|
"4 106231 4 8 gGgrrrrr\n",
|
|
".. ... ... ... ...\n",
|
|
"250 109986 8 67 gGGGGrgrrgGGGGrgrr\n",
|
|
"251 109986 9 4 gyyyyrgrrgyyyyrgrr\n",
|
|
"252 109986 10 24 grrrrGgrrgrrrrGgrr\n",
|
|
"253 109986 11 4 grrrrygrrgrrrrygrr\n",
|
|
"254 109986 12 54 grrrrrgGGgrrrrrgrr\n",
|
|
"\n",
|
|
"[255 rows x 4 columns]"
|
|
]
|
|
},
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"tllogics = []\n",
|
|
"for value in sumolib.xml.parse(path_add, 'tlLogic'):\n",
|
|
" node_id = value.id\n",
|
|
" program_id = value.programID\n",
|
|
" # print(tllogic_id, program_id)\n",
|
|
" # print(value)\n",
|
|
" for i, phase in enumerate(value.phase):\n",
|
|
" row = pd.DataFrame({\n",
|
|
" 'node_id' : [node_id],\n",
|
|
" # 'program_id' : [program_id],\n",
|
|
" 'index' : [i],\n",
|
|
" 'duration' : [phase.duration],\n",
|
|
" 'state' : [phase.state]\n",
|
|
" })\n",
|
|
" # display(row)\n",
|
|
" tllogics.append(row)\n",
|
|
"tllogics = pd.concat(tllogics).reset_index(drop=True)\n",
|
|
"tllogics"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"13\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"node_ids = tllogics.node_id.unique()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 83,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"node_id : 106231\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 106234\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 106332\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"모두 r인 인덱스 : ggggrggggggrrgrgggggggggggg\n",
|
|
"\n",
|
|
"node_id : 107587\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 108769\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109295\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109296\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109297\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109313\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109333\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109836\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109901\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n",
|
|
"node_id : 109986\n",
|
|
"state의 길이의 일정 여부 : True\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"for node_id in tllogics.node_id.unique():\n",
|
|
" print(f'node_id : {node_id}')\n",
|
|
" tllogic = tllogics[tllogics.node_id==node_id]\n",
|
|
" state_length = len(tllogic.iloc[0].state)\n",
|
|
" print(f'state의 길이의 일정 여부 : {all([len(state)==state_length for state in tllogic.state])}')\n",
|
|
" non_red_indices = set()\n",
|
|
" for state in tllogic.state:\n",
|
|
" state = list(state)\n",
|
|
" non_red_indices.update({index for index, char in enumerate(state) if not char == 'r'})\n",
|
|
" all_red_indices = set(range(state_length)) - non_red_indices\n",
|
|
" all_red_state = ['g'] * state_length\n",
|
|
" for ind in all_red_indices:\n",
|
|
" all_red_state[ind] = 'r'\n",
|
|
" all_red_state = ''.join(all_red_state)\n",
|
|
" if all_red_indices:\n",
|
|
" print(f'모두 r인 인덱스 : {all_red_state}')\n",
|
|
" print()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "siggen_env",
|
|
"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.12.4"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|