{ "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
node_idindexdurationstate
0106231011grgrrGGG
110623114grgrrGGy
2106231224grgGGGGr
310623134grgyyyyr
410623148gGgrrrrr
...............
250109986867gGGGGrgrrgGGGGrgrr
25110998694gyyyyrgrrgyyyyrgrr
2521099861024grrrrGgrrgrrrrGgrr
253109986114grrrrygrrgrrrrygrr
2541099861254grrrrrgGGgrrrrrgrr
\n", "

255 rows × 4 columns

\n", "
" ], "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 }