{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import os, sys, copy, argparse, json, pickle\n", "import sumolib, traci\n", "from tqdm import tqdm\n", "from datetime import datetime\n", "path_root = os.path.dirname(os.path.dirname(os.path.abspath('.')))\n", "path_scr = os.path.join(path_root, 'scripts')\n", "sys.path.append(path_scr)\n", "from preprocess_daily import DailyPreprocessor\n", "# from generate_signals import SignalGenerator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "self = DailyPreprocessor(config_name = 'test_0731')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1. 데이터를 로드합니다.\n", "1-1. 네트워크가 로드되었습니다.\n", "1-2. 테이블들이 로드되었습니다.\n", "1-5. 테이블을 표준화했습니다.\n", "1-6. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n" ] } ], "source": [ "# 1. 데이터 불러오기\n", "self.load_data()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2. 중간산출물을 생성합니다.\n", "2-1. 매칭 테이블들을 생성했습니다.\n", "2-2. 초기화 신호가 지정되었습니다. (우회전 : g)\n", "2-3. 유턴 인덱스 / 비보호좌회전 인덱스를 지정했습니다.\n", "2-4. 직진 및 좌회전(G)을 배정했습니다.\n", "2-5. 모든 현시에서 적색신호인 경우에 대한 처리 완료\n", "2-6. node2num_cycles.json를 저장했습니다.\n" ] } ], "source": [ "self.get_intermediates()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[436, 437, 438, 442, 443, 455, 456, 457, 458]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.inter_nos" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "40 gGGGgrrrrrgggggrrrrrrrgrrrr\n", "41 grrrgGGrrrgggggrrrrrrrgrrrr\n", "42 gGGGgrrrrrgggggrrrrrrrgrrrr\n", "43 grrrgrrrrrgggggGGGGGrrgrrrr\n", "44 grrrgrrrrrgggggrrrrrGGgrrrr\n", "45 grrrgrrrrrgggggGGGGGrrgrrrr\n", "46 grrrgrrrrrgggggrrrrrrrgrrrG\n", "47 grrrgrrrrrgggggrrrrrrrgGGGr\n", "48 grrrgrrGGrgggggrrrrrrrgrrrr\n", "49 grrrgrrrrGgggggrrrrrrrgrrrr\n", "50 grrrgrrGGrgggggrrrrrrrgrrrr\n", "51 grrrgrrrrGgggggrrrrrrrgrrrr\n", "Name: state, dtype: object" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m6 = self.match6[self.match6.node_id=='106332']\n", "m6.state" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "106231 set()\n", "106234 set()\n", "106238 set()\n", "106332 set()\n", "106350 set()\n", "107587 set()\n", "108769 set()\n", "109295 set()\n", "109296 set()\n", "109297 set()\n", "109313 set()\n", "109333 set()\n", "109836 set()\n", "109901 set()\n", "109986 set()\n" ] } ], "source": [ "# match6에 적용\n", "for node_id, group in self.match6.groupby('node_id'):\n", " state_length = len(group.iloc[0].state)\n", " consistent_length = all([len(state)==state_length for state in group.state])\n", " # state 길이 일정 여부\n", " if not consistent_length:\n", " print(f\"node_id : {node_id}에 대하여 state 길이가 일정하지 않습니다.\")\n", " any_non_red_indices = set()\n", " for state in group.state:\n", " state = list(state)\n", " any_non_red_indices.update({index for index, char in enumerate(state) if not char == 'r'})\n", " # 모든 현시에서 적색신호인 인덱스 목록\n", " all_red_indices = set(range(state_length)) - any_non_red_indices\n", " print(node_id, all_red_indices)" ] } ], "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 }