{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"import pandas as pd\n",
|
|
"\n",
|
|
"import sys, copy\n",
|
|
"from datetime import datetime\n",
|
|
"sys.path.append('../../Scripts')\n",
|
|
"\n",
|
|
"from preprocess_daily import DailyPreprocessor\n",
|
|
"\n",
|
|
"from generate_signals import SignalGenerator"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"self = DailyPreprocessor()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1. 데이터를 로드합니다.\n",
|
|
"1-1. 네트워크가 로드되었습니다.\n",
|
|
"1-2. 테이블들이 로드되었습니다.\n",
|
|
"1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n",
|
|
"1-4. 테이블들의 무결성 검사를 완료했습니다.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"self.load_data()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"이동류정보 불러오는 중: 100%|██████████| 17280/17280 [00:15<00:00, 1138.40it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 2-1-1~7\n",
|
|
"self.make_match1()\n",
|
|
"self.make_match2()\n",
|
|
"self.make_match3()\n",
|
|
"self.make_match4()\n",
|
|
"self.make_match5()\n",
|
|
"self.make_match6()\n",
|
|
"self.make_matching()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2-2. 비보호우회전(g)을 배정했습니다.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"match6 = self.match6.copy()\n",
|
|
"matching = self.matching.copy()\n",
|
|
"self.initialize_state()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 112,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"self.match6 = match6\n",
|
|
"self.matching=matching"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 100,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2-2. 비보호우회전(g)을 배정했습니다.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"self.initialize_state()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 101,
|
|
"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>inter_no</th>\n",
|
|
" <th>phase_no</th>\n",
|
|
" <th>ring_type</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>inc_dir</th>\n",
|
|
" <th>out_dir</th>\n",
|
|
" <th>inc_angle</th>\n",
|
|
" <th>out_angle</th>\n",
|
|
" <th>inc_edge</th>\n",
|
|
" <th>out_edge</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>179</td>\n",
|
|
" <td>004</td>\n",
|
|
" <td>-571542797_02</td>\n",
|
|
" <td>571500487_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>003</td>\n",
|
|
" <td>176</td>\n",
|
|
" <td>-571500487_01</td>\n",
|
|
" <td>571542797_02</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>001</td>\n",
|
|
" <td>095</td>\n",
|
|
" <td>-571500487_01</td>\n",
|
|
" <td>571545870_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>179</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>-571542797_02</td>\n",
|
|
" <td>571510153_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>571545870_02</td>\n",
|
|
" <td>571510153_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>359</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>000</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>116 rows × 11 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phase_no ring_type move_no inc_dir out_dir inc_angle out_angle \\\n",
|
|
"0 175 1 A 8 남 북 179 004 \n",
|
|
"1 175 1 B 4 북 남 003 176 \n",
|
|
"2 175 2 A 7 북 동 001 095 \n",
|
|
"3 175 2 B 3 남 서 179 270 \n",
|
|
"4 175 3 A 6 동 서 090 270 \n",
|
|
".. ... ... ... ... ... ... ... ... \n",
|
|
"3 210 2 B 2 서 동 270 090 \n",
|
|
"4 210 3 A 7 북 동 359 090 \n",
|
|
"5 210 3 B 4 북 남 000 180 \n",
|
|
"6 210 4 A 8 남 북 180 000 \n",
|
|
"7 210 4 B 3 남 서 180 270 \n",
|
|
"\n",
|
|
" inc_edge out_edge node_id \n",
|
|
"0 -571542797_02 571500487_01 i0 \n",
|
|
"1 -571500487_01 571542797_02 i0 \n",
|
|
"2 -571500487_01 571545870_01 i0 \n",
|
|
"3 -571542797_02 571510153_01 i0 \n",
|
|
"4 571545870_02 571510153_01 i0 \n",
|
|
".. ... ... ... \n",
|
|
"3 NaN NaN u60 \n",
|
|
"4 NaN NaN u60 \n",
|
|
"5 NaN NaN u60 \n",
|
|
"6 NaN NaN u60 \n",
|
|
"7 NaN NaN u60 \n",
|
|
"\n",
|
|
"[116 rows x 11 columns]"
|
|
]
|
|
},
|
|
"execution_count": 101,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.match6"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 77,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# node = self.net.getNode(node_id)\n",
|
|
"# conns = list(node.getConnections())\n",
|
|
"# print(node_id)\n",
|
|
"# for con in node.getConnections():\n",
|
|
"# print(con)\n",
|
|
"# print()\n",
|
|
"# for con in conns:\n",
|
|
"# print(con)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 71,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"i0\n",
|
|
"['g', 'r', 'r', 'r', 'g', 'r', 'r', 'r', 'g', 'r', 'r', 'r', 'r', 'r', 'g', 'r', 'r']\n",
|
|
"571545870_02\n",
|
|
"571542797_02\n",
|
|
"<connection from=\"571545870_02\" to=\"571542797_02\" fromLane=\"0\" toLane=\"1\" tl=\"i0\" linkIndex=\"7\" direction=\"l\">\n",
|
|
"['g', 'r', 'r', 'r', 'g', 'r', 'r', 'G', 'g', 'r', 'r', 'r', 'r', 'r', 'g', 'r', 'r']\n",
|
|
"[<sumolib.net.connection.Connection object at 0x0000022B6D65A400>, <sumolib.net.connection.Connection object at 0x0000022B6D65A460>, <sumolib.net.connection.Connection object at 0x0000022B6D65A490>, <sumolib.net.connection.Connection object at 0x0000022B6D65A4C0>, <sumolib.net.connection.Connection object at 0x0000022B6D65AB80>, <sumolib.net.connection.Connection object at 0x0000022B6D65ABB0>, <sumolib.net.connection.Connection object at 0x0000022B6D65ABE0>, <sumolib.net.connection.Connection object at 0x0000022B6D65AC10>, <sumolib.net.connection.Connection object at 0x0000022B6D65AC40>, <sumolib.net.connection.Connection object at 0x0000022B6D65AC70>, <sumolib.net.connection.Connection object at 0x0000022B6D593F10>, <sumolib.net.connection.Connection object at 0x0000022B6D593F40>, <sumolib.net.connection.Connection object at 0x0000022B6D593F70>, <sumolib.net.connection.Connection object at 0x0000022B6D82E7F0>, <sumolib.net.connection.Connection object at 0x0000022B6D82E820>, <sumolib.net.connection.Connection object at 0x0000022B6D82E850>, <sumolib.net.connection.Connection object at 0x0000022B6D82E880>]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"all_conns = list(node.getConnections())\n",
|
|
"allocated_conns = []\n",
|
|
"# display(matching)\n",
|
|
"row = self.matching.iloc[0]\n",
|
|
"node_id = row.node_id\n",
|
|
"move_no = row.move_no\n",
|
|
"inc_edge = row.inc_edge\n",
|
|
"out_edge = row.out_edge\n",
|
|
"state = copy.deepcopy(self.node2init)[node_id]\n",
|
|
"\n",
|
|
"node = self.net.getNode(node_id)\n",
|
|
"\n",
|
|
"print(node_id)\n",
|
|
"print(state)\n",
|
|
"print(inc_edge)\n",
|
|
"print(out_edge)\n",
|
|
"inc_edge = self.net.getEdge(inc_edge)\n",
|
|
"out_edge = self.net.getEdge(out_edge)\n",
|
|
"# incoming edge, outgoing edge가 지정된 이동류에 대하여\n",
|
|
"for conn in inc_edge.getConnections(out_edge):\n",
|
|
" allocated_conns.append(conns)\n",
|
|
" print(conn)\n",
|
|
" index = conn.getTLLinkIndex()\n",
|
|
" if index >= 0:\n",
|
|
" # 신호를 G로 지정\n",
|
|
" state[index] = 'G'\n",
|
|
"print(state)\n",
|
|
"for conn in allocated_conns:\n",
|
|
" print(conn)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 84,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<junction id=\"c30\"/>"
|
|
]
|
|
},
|
|
"execution_count": 84,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"node_id = self.node_ids[0]\n",
|
|
"node = self.net.getNode(node_id)\n",
|
|
"node"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 113,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"node2conns = dict()\n",
|
|
"node2allocated_conns = dict()\n",
|
|
"for node_id in self.node_ids:\n",
|
|
" node = self.net.getNode(node_id)\n",
|
|
" node2conns[node_id] = list(node.getConnections())\n",
|
|
" node2allocated_conns[node_id] = []"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 118,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"self.match6 = match6\n",
|
|
"self.matching=matching"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 119,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"i0\n",
|
|
"u00\n",
|
|
"i1\n",
|
|
"i1\n",
|
|
"i1\n",
|
|
"i1\n",
|
|
"i1\n",
|
|
"i1\n",
|
|
"i1\n",
|
|
"i1\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"i2\n",
|
|
"u20\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"i3\n",
|
|
"u30\n",
|
|
"u31\n",
|
|
"u32\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i8\n",
|
|
"i9\n",
|
|
"i9\n",
|
|
"i9\n",
|
|
"i9\n",
|
|
"i7\n",
|
|
"i7\n",
|
|
"i7\n",
|
|
"i7\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"i6\n",
|
|
"u60\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"self.matching['init_state'] = self.matching['node_id'].map(self.node2init)\n",
|
|
"self.matching['state'] = self.matching['init_state'].map(lambda x:''.join(x))\n",
|
|
" \n",
|
|
"node2allocated_conns = dict()\n",
|
|
"# matching의 각 행을 순회\n",
|
|
"for row in self.matching.itertuples(index=True):\n",
|
|
" node_id = row.node_id\n",
|
|
" move_no = row.move_no\n",
|
|
" inc_edge = row.inc_edge\n",
|
|
" out_edge = row.out_edge\n",
|
|
" state = copy.deepcopy(self.node2init)[node_id]\n",
|
|
"\n",
|
|
" if move_no != 21:\n",
|
|
" inc_edge = self.net.getEdge(inc_edge)\n",
|
|
" out_edge = self.net.getEdge(out_edge)\n",
|
|
" for conn in inc_edge.getConnections(out_edge):\n",
|
|
" # node2allocated_conns[node_id].append(conn)\n",
|
|
" index = conn.getTLLinkIndex()\n",
|
|
" if index >= 0:\n",
|
|
" state[index] = 'G'\n",
|
|
" self.matching.at[row.Index, 'state'] = ''.join(state)\n",
|
|
"\n",
|
|
"self.matching = self.matching.dropna(subset='state')\n",
|
|
"self.matching = self.matching.reset_index(drop=True)\n",
|
|
"self.matching = self.matching[['inter_no', 'node_id', 'move_no', 'state']]\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"node2allocated_conns"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 57,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2-3. 직진 및 좌회전(G)을 배정했습니다.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"self.assign_signals()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 62,
|
|
"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>inter_no</th>\n",
|
|
" <th>phase_no</th>\n",
|
|
" <th>ring_type</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>inc_dir</th>\n",
|
|
" <th>out_dir</th>\n",
|
|
" <th>inc_angle</th>\n",
|
|
" <th>out_angle</th>\n",
|
|
" <th>inc_edge</th>\n",
|
|
" <th>out_edge</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>179</td>\n",
|
|
" <td>004</td>\n",
|
|
" <td>-571542797_02</td>\n",
|
|
" <td>571500487_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>003</td>\n",
|
|
" <td>176</td>\n",
|
|
" <td>-571500487_01</td>\n",
|
|
" <td>571542797_02</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>001</td>\n",
|
|
" <td>095</td>\n",
|
|
" <td>-571500487_01</td>\n",
|
|
" <td>571545870_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>179</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>-571542797_02</td>\n",
|
|
" <td>571510153_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>571545870_02</td>\n",
|
|
" <td>571510153_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>359</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>000</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>u60</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>116 rows × 11 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phase_no ring_type move_no inc_dir out_dir inc_angle out_angle \\\n",
|
|
"0 175 1 A 8 남 북 179 004 \n",
|
|
"1 175 1 B 4 북 남 003 176 \n",
|
|
"2 175 2 A 7 북 동 001 095 \n",
|
|
"3 175 2 B 3 남 서 179 270 \n",
|
|
"4 175 3 A 6 동 서 090 270 \n",
|
|
".. ... ... ... ... ... ... ... ... \n",
|
|
"3 210 2 B 2 서 동 270 090 \n",
|
|
"4 210 3 A 7 북 동 359 090 \n",
|
|
"5 210 3 B 4 북 남 000 180 \n",
|
|
"6 210 4 A 8 남 북 180 000 \n",
|
|
"7 210 4 B 3 남 서 180 270 \n",
|
|
"\n",
|
|
" inc_edge out_edge node_id \n",
|
|
"0 -571542797_02 571500487_01 i0 \n",
|
|
"1 -571500487_01 571542797_02 i0 \n",
|
|
"2 -571500487_01 571545870_01 i0 \n",
|
|
"3 -571542797_02 571510153_01 i0 \n",
|
|
"4 571545870_02 571510153_01 i0 \n",
|
|
".. ... ... ... \n",
|
|
"3 NaN NaN u60 \n",
|
|
"4 NaN NaN u60 \n",
|
|
"5 NaN NaN u60 \n",
|
|
"6 NaN NaN u60 \n",
|
|
"7 NaN NaN u60 \n",
|
|
"\n",
|
|
"[116 rows x 11 columns]"
|
|
]
|
|
},
|
|
"execution_count": 62,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"match6"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 58,
|
|
"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>inter_no</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>phase_no</th>\n",
|
|
" <th>ring_type</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>grrrgrrrgGGGGrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>gGGrgrrrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>grrGgrrrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>grrrgrrrgrrrrGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>grrrgGGrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>111</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>112</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>113</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>114</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>115</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>116 rows × 6 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id phase_no ring_type move_no state\n",
|
|
"0 175 i0 1 A 8 grrrgrrrgGGGGrgrr\n",
|
|
"1 175 i0 1 B 4 gGGrgrrrgrrrrrgrr\n",
|
|
"2 175 i0 2 A 7 grrGgrrrgrrrrrgrr\n",
|
|
"3 175 i0 2 B 3 grrrgrrrgrrrrGgrr\n",
|
|
"4 175 i0 3 A 6 grrrgGGrgrrrrrgrr\n",
|
|
".. ... ... ... ... ... ...\n",
|
|
"111 210 u60 2 B 2 ggggggggr\n",
|
|
"112 210 u60 3 A 7 ggggggggr\n",
|
|
"113 210 u60 3 B 4 ggggggggr\n",
|
|
"114 210 u60 4 A 8 ggggggggr\n",
|
|
"115 210 u60 4 B 3 ggggggggr\n",
|
|
"\n",
|
|
"[116 rows x 6 columns]"
|
|
]
|
|
},
|
|
"execution_count": 58,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.match6"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"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>inter_no</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>phase_no</th>\n",
|
|
" <th>ring_type</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>grrrgrrrgGGGGrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>gGGrgrrrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>grrGgrrrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>grrrgrrrgrrrrGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>grrrgGGrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>111</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>112</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>113</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>114</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>115</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>116 rows × 6 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id phase_no ring_type move_no state\n",
|
|
"0 175 i0 1 A 8 grrrgrrrgGGGGrgrr\n",
|
|
"1 175 i0 1 B 4 gGGrgrrrgrrrrrgrr\n",
|
|
"2 175 i0 2 A 7 grrGgrrrgrrrrrgrr\n",
|
|
"3 175 i0 2 B 3 grrrgrrrgrrrrGgrr\n",
|
|
"4 175 i0 3 A 6 grrrgGGrgrrrrrgrr\n",
|
|
".. ... ... ... ... ... ...\n",
|
|
"111 210 u60 2 B 2 ggggggggr\n",
|
|
"112 210 u60 3 A 7 ggggggggr\n",
|
|
"113 210 u60 3 B 4 ggggggggr\n",
|
|
"114 210 u60 4 A 8 ggggggggr\n",
|
|
"115 210 u60 4 B 3 ggggggggr\n",
|
|
"\n",
|
|
"[116 rows x 6 columns]"
|
|
]
|
|
},
|
|
"execution_count": 25,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.match6"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "sts",
|
|
"language": "python",
|
|
"name": "sts"
|
|
},
|
|
"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
|
|
}
|