diff --git a/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb b/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb index 34e4cd3cd..081c50ced 100644 --- a/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb +++ b/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -15,78 +15,68 @@ "from generate_signals import SignalGenerator" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "비보호좌회전, 신호우회전, 유턴\n", - "\n", - "줄임말 목록\n", - "- `i` : 교차로번호, `inter_no`\n", - "- `f` : 진입, from, `inc_edge_id`\n", - "- `t` : 진출, to, `out_edge_id`\n", - "- `vec` : 방향벡터, unit vector (`np.array([0.6, 0.8])`)\n", - "- `dire` : 방위, direction (동, 서, 남, 북, 북동, 북서, 남동, 남서)\n", - "- `rvec` : 정방향 방향벡터, unit vector to the right direction (`np.array([0,1])`)\n", - "\n", - "필요한 객체들 목록\n", - "\n", - "- `inter2dire2rvec` : `inter_no` $\\mapsto$ `dire2rvec`\n", - " - `dire2rvec` : `dire` $\\mapsto$ `rvec`\n", - "- `inter2incs` : `inter_no` $\\mapsto$ `inc_edge_ids`\n", - "- `inter2outs` : `inter_no` $\\mapsto$ `out_edge_ids`\n", - "- `inter2inc2dire` : `inter_no` $\\mapsto$ `int2dire`\n", - " - `inc2dire` : `out_edge_id` $\\mapsto$ `dire`\n", - "- `inter2out2dire` : `inter_no` $\\mapsto$ `out2dire`\n", - " - `out2dire` : `inc_edge_id` $\\mapsto$ `dire`\n", - "- `inter2inc2vec` : `inter_no` $\\mapsto$ `int2vec`\n", - " - `inc2vec` : `out_edge_id` $\\mapsto$ `vec`\n", - "- `inter2out2vec` : `inter_no` $\\mapsto$ `out2vec`\n", - " - `out2vec` : `inc_edge_id` $\\mapsto$ `vec`\n", - "\n", - "좌회전 판단\n", - "\n", - "Given `inter_no`, `inc_edge_id` and `out_edge_id`, we have `inc_vec = inter2inc2vec[inter_no][inc_edge_id]` and `out_vec = inter2out2vec[inter_no][out_edge_id]`.\n", - "Rotate `inc_vec` by 90, 180 and 270 degrees clockwise, to define \n", - "`out_vec_left`, `out_vec_straight` and `out_vec_right`.\n", - "Define `out_vecs={'right':out_vec_left, 'straight':out_vec_straight, 'right':out_vec_right}`.\n", - "Select the key that maximize the similarity of the corresponding value of the key and `inc_vec`." - ] - }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1. 데이터를 로드합니다.\n", + "1. 데이터를 준비합니다.\n", "1-1. 네트워크가 로드되었습니다.\n", "1-2. 테이블들이 로드되었습니다.\n", - "1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n", - "1-4. 테이블들의 무결성 검사를 완료했습니다.\n", - "1-5. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n", - "2. 중간산출물을 생성합니다.\n", - "2-1. 매칭 테이블들을 생성했습니다.\n", - "2-2. 비보호우회전(g)을 배정했습니다.\n", - "2-3. 직진 및 좌회전(G)을 배정했습니다.\n", - "2-2. node2num_cycles.json를 저장했습니다.\n", - "3. 이슈사항을 저장합니다.\n" + "2. 신호이력 테이블을 변환합니다.\n", + "3. 이동류정보 테이블을 변환합니다.\n", + "4. 통합 테이블을 생성합니다.\n", + "5. 신호를 생성합니다.\n", + "6. 이슈사항을 저장합니다.\n", + "(1) 0:00:00.068803\n", + "(1-1) 0:00:00.007337\n", + "(1-2) 0:00:00.033005\n", + "(1-3) 0:00:00\n", + "(1-4) 0:00:00\n", + "(1-5) 0:00:00.028461\n", + "(2) 0:00:00.369125\n", + "(2-1) 0:00:00.074089\n", + "(2-2) 0:00:00.244743\n", + "(2-3) 0:00:00.050293\n", + "(3) 0:00:00.580612\n", + "(3-1) 0:00:00.559406\n", + "(3-2) 0:00:00.021206\n", + "(4) 0:00:00.186527\n", + "(4-1) 0:00:00.002003\n", + "(4-2) 0:00:00.014893\n", + "(4-2) 0:00:00.169631\n", + "(5) 0:00:00.715907\n", + "(5-1) 0:00:00.013178\n", + "(5-2) 0:00:00.696977\n", + "(5-3) 0:00:00.005752\n", + "(6) 0:00:00.001000\n", + "total time : 0:00:01.921974\n" ] } ], "source": [ - "self = DailyPreprocessor()\n", + "self = SignalGenerator()\n", "self.main()" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 27, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1. 데이터를 준비합니다.\n", + "1-1. 네트워크가 로드되었습니다.\n", + "1-2. 테이블들이 로드되었습니다.\n" + ] + }, { "data": { "text/html": [ @@ -108,1339 +98,200 @@ " \n", " \n", " \n", + " Unnamed: 0\n", " inter_no\n", - " phase_no\n", - " ring_type\n", + " node_id\n", " move_no\n", - " inc_dire\n", - " out_dire\n", - " inc_angle\n", - " out_angle\n", " inc_edge_id\n", " out_edge_id\n", - " node_id\n", - " turn_type\n", + " state\n", " \n", " \n", " \n", " \n", " 0\n", + " 0\n", " 175\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 179\n", - " 000\n", - " -571542797_02\n", - " 571500487_01\n", " i0\n", - " straight\n", - " \n", - " \n", - " 1\n", - " 175\n", " 1\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 001\n", - " 180\n", - " -571500487_01\n", + " 571545870_02\n", " 571542797_02\n", - " i0\n", - " straight\n", + " grrrgrrGgrrrrrgrr\n", " \n", " \n", - " 2\n", + " 1\n", + " 1\n", " 175\n", + " i0\n", " 2\n", - " A\n", - " 7\n", - " 북\n", - " 동\n", - " 001\n", - " 090\n", - " -571500487_01\n", + " 571510153_02\n", " 571545870_01\n", - " i0\n", - " left\n", + " grrrgrrrgrrrrrgGr\n", " \n", " \n", - " 3\n", - " 175\n", + " 2\n", " 2\n", - " B\n", + " 175\n", + " i0\n", " 3\n", - " 남\n", - " 서\n", - " 179\n", - " 270\n", " -571542797_02\n", " 571510153_01\n", - " i0\n", - " left\n", + " grrrgrrrgrrrrGgrr\n", " \n", " \n", - " 4\n", - " 175\n", + " 3\n", " 3\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " 571545870_02\n", - " 571510153_01\n", - " i0\n", - " straight\n", - " \n", - " \n", - " 5\n", " 175\n", - " 3\n", - " B\n", - " 1\n", - " 동\n", - " 남\n", - " 090\n", - " 180\n", - " 571545870_02\n", - " 571542797_02\n", " i0\n", - " left\n", - " \n", - " \n", - " 6\n", - " 175\n", " 4\n", - " A\n", - " 5\n", - " 서\n", - " 북\n", - " 270\n", - " 000\n", - " 571510153_02\n", - " 571500487_01\n", - " i0\n", - " left\n", + " -571500487_01\n", + " 571542797_02\n", + " gGGrgrrrgrrrrrgrr\n", " \n", " \n", - " 7\n", - " 175\n", + " 4\n", " 4\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " 571510153_02\n", - " 571545870_01\n", + " 175\n", " i0\n", - " straight\n", - " \n", - " \n", - " 8\n", - " 176\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 356\n", - " -571542810_01\n", - " -571542797_02.99\n", - " i1\n", - " straight\n", - " \n", - " \n", - " 9\n", - " 176\n", - " 1\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 359\n", - " 180\n", - " 571542797_02.99\n", - " 571542810_01\n", - " i1\n", - " straight\n", - " \n", - " \n", - " 10\n", - " 176\n", - " 2\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 356\n", - " -571542810_01\n", - " -571542797_02.99\n", - " i1\n", - " straight\n", - " \n", - " \n", - " 11\n", - " 176\n", - " 2\n", - " B\n", - " 3\n", - " 남\n", - " 서\n", - " 180\n", - " 270\n", - " -571542810_01\n", - " 571543469_01\n", - " i1\n", - " left\n", - " \n", - " \n", - " 12\n", - " 176\n", - " 3\n", - " A\n", - " 5\n", - " 서\n", - " 북\n", - " 270\n", - " 356\n", - " 571543469_02\n", - " -571542797_02.99\n", - " i1\n", - " left\n", - " \n", - " \n", - " 13\n", - " 176\n", - " 3\n", - " B\n", - " 18\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i1\n", - " NaN\n", - " \n", - " \n", - " 14\n", - " 177\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 179\n", - " 000\n", - " -571542809_01\n", - " 571542811_01\n", - " i2\n", - " left\n", - " \n", - " \n", - " 15\n", - " 177\n", - " 1\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " 571542811_02\n", - " 571542809_01\n", - " i2\n", - " straight\n", - " \n", - " \n", - " 16\n", - " 177\n", - " 2\n", - " A\n", - " 7\n", - " 북\n", - " 동\n", - " 000\n", - " 090\n", - " 571542811_02\n", - " 571542107_01\n", - " i2\n", - " left\n", - " \n", - " \n", - " 17\n", - " 177\n", - " 2\n", - " B\n", - " 3\n", - " 남\n", - " 서\n", - " 179\n", - " 270\n", - " -571542809_01\n", - " 571542809_01\n", - " i2\n", - " left\n", - " \n", - " \n", - " 18\n", - " 177\n", - " 3\n", - " A\n", - " 17\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i2\n", - " NaN\n", - " \n", - " \n", - " 19\n", - " 177\n", - " 3\n", - " B\n", - " 18\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i2\n", - " NaN\n", - " \n", - " \n", - " 20\n", - " 177\n", - " 4\n", - " A\n", - " 5\n", - " 서\n", - " 북\n", - " 268\n", - " 000\n", - " -571542809_01\n", - " 571542811_01\n", - " i2\n", - " left\n", - " \n", - " \n", - " 21\n", - " 177\n", - " 4\n", - " B\n", - " 1\n", - " 동\n", - " 남\n", - " 090\n", - " 180\n", - " 571542107_02\n", - " 571542809_01\n", - " i2\n", - " left\n", - " \n", - " \n", - " 22\n", - " 178\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " 571540304_02\n", - " 571556450_01\n", - " i3\n", - " straight\n", - " \n", - " \n", - " 23\n", - " 178\n", - " 1\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " 571556450_02\n", - " 571540304_01\n", - " i3\n", - " straight\n", - " \n", - " \n", - " 24\n", - " 178\n", - " 2\n", - " A\n", - " 7\n", - " 북\n", - " 동\n", - " 000\n", - " 090\n", - " 571556450_02\n", - " 571500475_01\n", - " i3\n", - " left\n", - " \n", - " \n", - " 25\n", - " 178\n", - " 2\n", - " B\n", - " 3\n", - " 남\n", - " 서\n", - " 180\n", - " 270\n", - " 571540304_02\n", - " 571540303_01\n", - " i3\n", - " left\n", - " \n", - " \n", - " 26\n", - " 178\n", - " 3\n", - " A\n", - " 5\n", - " 서\n", - " 북\n", - " 270\n", - " 000\n", - " 571540303_02.21\n", - " 571556450_01\n", - " i3\n", - " left\n", - " \n", - " \n", - " 27\n", - " 178\n", - " 3\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " 571540303_02.21\n", - " 571500475_01\n", - " i3\n", - " straight\n", - " \n", - " \n", - " 28\n", - " 178\n", - " 4\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " -571500475_01\n", - " 571540303_01\n", - " i3\n", - " straight\n", - " \n", - " \n", - " 29\n", - " 178\n", - " 4\n", - " B\n", - " 1\n", - " 동\n", - " 남\n", - " 090\n", - " 180\n", - " -571500475_01\n", - " 571540304_01\n", - " i3\n", - " left\n", - " \n", - " \n", - " 30\n", - " 201\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " -571500569_01\n", - " 571500583_02\n", - " i8\n", - " straight\n", - " \n", - " \n", - " 31\n", - " 201\n", - " 1\n", - " B\n", - " 3\n", - " 남\n", - " 서\n", - " 180\n", - " 270\n", - " -571500569_01\n", - " 571500618_01\n", - " i8\n", - " left\n", - " \n", - " \n", - " 32\n", - " 201\n", - " 2\n", - " A\n", - " 5\n", - " 서\n", - " 북\n", - " 270\n", - " 000\n", - " 571500618_02\n", - " 571500583_02\n", - " i8\n", - " left\n", - " \n", - " \n", - " 33\n", - " 201\n", - " 2\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " 571500618_02\n", - " 571500617_01\n", - " i8\n", - " straight\n", - " \n", - " \n", - " 34\n", - " 201\n", - " 3\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " 571500617_02\n", - " 571500618_01\n", - " i8\n", - " straight\n", - " \n", - " \n", - " 35\n", - " 201\n", - " 3\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " 571500618_02\n", - " 571500617_01\n", - " i8\n", - " straight\n", - " \n", - " \n", - " 36\n", - " 201\n", - " 4\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " 571500617_02\n", - " 571500618_01\n", - " i8\n", - " straight\n", - " \n", - " \n", - " 37\n", - " 201\n", - " 4\n", - " B\n", - " 1\n", - " 동\n", - " 남\n", - " 090\n", - " 180\n", - " 571500617_02\n", - " 571500569_01\n", - " i8\n", - " left\n", - " \n", - " \n", - " 38\n", - " 201\n", - " 5\n", - " A\n", - " 7\n", - " 북\n", - " 동\n", - " 000\n", - " 090\n", - " 571500583_01\n", - " 571500617_01\n", - " i8\n", - " left\n", - " \n", - " \n", - " 39\n", - " 201\n", - " 5\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " 571500583_01\n", - " 571500569_01\n", - " i8\n", - " straight\n", - " \n", - " \n", - " 40\n", - " 202\n", - " 1\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " 571510152_02\n", - " -571510152_01\n", - " i9\n", - " straight\n", - " \n", - " \n", - " 41\n", - " 202\n", - " 1\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " 571510152_01\n", - " 571510152_01.65\n", - " i9\n", - " straight\n", - " \n", - " \n", - " 42\n", - " 202\n", - " 2\n", - " A\n", - " 17\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i9\n", - " NaN\n", - " \n", - " \n", - " 43\n", - " 202\n", - " 2\n", - " B\n", - " 18\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i9\n", - " NaN\n", - " \n", - " \n", - " 44\n", - " 206\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " -571511538_02\n", - " 571542073_02\n", - " i7\n", - " straight\n", - " \n", - " \n", - " 45\n", - " 206\n", - " 1\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " 571542073_01\n", - " 571511538_02\n", - " i7\n", - " straight\n", - " \n", - " \n", - " 46\n", - " 206\n", - " 2\n", - " A\n", - " 17\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i7\n", - " NaN\n", - " \n", - " \n", - " 47\n", - " 206\n", - " 2\n", - " B\n", - " 18\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i7\n", - " NaN\n", - " \n", - " \n", - " 48\n", - " 206\n", - " 3\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " -571511538_02\n", - " 571542073_02\n", - " i7\n", - " straight\n", - " \n", - " \n", - " 49\n", - " 206\n", - " 3\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " 571542073_01\n", - " 571511538_02\n", - " i7\n", - " straight\n", - " \n", - " \n", - " 50\n", - " 206\n", - " 4\n", - " A\n", - " 17\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i7\n", - " NaN\n", - " \n", - " \n", - " 51\n", - " 206\n", - " 4\n", - " B\n", - " 18\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i7\n", - " NaN\n", - " \n", - " \n", - " 52\n", - " 210\n", - " 1\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " -571542115_01\n", - " 571500535_01\n", - " i6\n", - " straight\n", - " \n", - " \n", - " 53\n", - " 210\n", - " 1\n", - " B\n", - " 18\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " i6\n", - " NaN\n", - " \n", - " \n", - " 54\n", - " 210\n", - " 2\n", - " A\n", " 5\n", - " 서\n", - " 북\n", - " 270\n", - " 000\n", - " 571500535_02.18\n", - " 571511538_01\n", - " i6\n", - " left\n", - " \n", - " \n", - " 55\n", - " 210\n", - " 2\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " 571500535_02.18\n", - " 571542115_01\n", - " i6\n", - " straight\n", - " \n", - " \n", - " 56\n", - " 210\n", - " 3\n", - " A\n", - " 7\n", - " 북\n", - " 동\n", - " 000\n", - " 090\n", - " 571511538_02.121\n", - " 571542115_01\n", - " i6\n", - " left\n", - " \n", - " \n", - " 57\n", - " 210\n", - " 3\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " 571511538_02.121\n", - " 571500585_01\n", - " i6\n", - " straight\n", - " \n", - " \n", - " 58\n", - " 210\n", - " 4\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " 571500585_02\n", - " 571511538_01\n", - " i6\n", - " straight\n", - " \n", - " \n", - " 59\n", - " 210\n", - " 4\n", - " B\n", - " 3\n", - " 남\n", - " 서\n", - " 180\n", - " 270\n", - " 571500585_02\n", - " 571500535_01\n", - " i6\n", - " left\n", - " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", - "0 175 1 A 8 남 북 179 \n", - "1 175 1 B 4 북 남 001 \n", - "2 175 2 A 7 북 동 001 \n", - "3 175 2 B 3 남 서 179 \n", - "4 175 3 A 6 동 서 090 \n", - "5 175 3 B 1 동 남 090 \n", - "6 175 4 A 5 서 북 270 \n", - "7 175 4 B 2 서 동 270 \n", - "8 176 1 A 8 남 북 180 \n", - "9 176 1 B 4 북 남 359 \n", - "10 176 2 A 8 남 북 180 \n", - "11 176 2 B 3 남 서 180 \n", - "12 176 3 A 5 서 북 270 \n", - "13 176 3 B 18 NaN NaN NaN \n", - "14 177 1 A 8 남 북 179 \n", - "15 177 1 B 4 북 남 000 \n", - "16 177 2 A 7 북 동 000 \n", - "17 177 2 B 3 남 서 179 \n", - "18 177 3 A 17 NaN NaN NaN \n", - "19 177 3 B 18 NaN NaN NaN \n", - "20 177 4 A 5 서 북 268 \n", - "21 177 4 B 1 동 남 090 \n", - "22 178 1 A 8 남 북 180 \n", - "23 178 1 B 4 북 남 000 \n", - "24 178 2 A 7 북 동 000 \n", - "25 178 2 B 3 남 서 180 \n", - "26 178 3 A 5 서 북 270 \n", - "27 178 3 B 2 서 동 270 \n", - "28 178 4 A 6 동 서 090 \n", - "29 178 4 B 1 동 남 090 \n", - "30 201 1 A 8 남 북 180 \n", - "31 201 1 B 3 남 서 180 \n", - "32 201 2 A 5 서 북 270 \n", - "33 201 2 B 2 서 동 270 \n", - "34 201 3 A 6 동 서 090 \n", - "35 201 3 B 2 서 동 270 \n", - "36 201 4 A 6 동 서 090 \n", - "37 201 4 B 1 동 남 090 \n", - "38 201 5 A 7 북 동 000 \n", - "39 201 5 B 4 북 남 000 \n", - "40 202 1 A 6 동 서 090 \n", - "41 202 1 B 2 서 동 270 \n", - "42 202 2 A 17 NaN NaN NaN \n", - "43 202 2 B 18 NaN NaN NaN \n", - "44 206 1 A 8 남 북 180 \n", - "45 206 1 B 4 북 남 000 \n", - "46 206 2 A 17 NaN NaN NaN \n", - "47 206 2 B 18 NaN NaN NaN \n", - "48 206 3 A 8 남 북 180 \n", - "49 206 3 B 4 북 남 000 \n", - "50 206 4 A 17 NaN NaN NaN \n", - "51 206 4 B 18 NaN NaN NaN \n", - "52 210 1 A 6 동 서 090 \n", - "53 210 1 B 18 NaN NaN NaN \n", - "54 210 2 A 5 서 북 270 \n", - "55 210 2 B 2 서 동 270 \n", - "56 210 3 A 7 북 동 000 \n", - "57 210 3 B 4 북 남 000 \n", - "58 210 4 A 8 남 북 180 \n", - "59 210 4 B 3 남 서 180 \n", - "\n", - " out_angle inc_edge_id out_edge_id node_id turn_type \n", - "0 000 -571542797_02 571500487_01 i0 straight \n", - "1 180 -571500487_01 571542797_02 i0 straight \n", - "2 090 -571500487_01 571545870_01 i0 left \n", - "3 270 -571542797_02 571510153_01 i0 left \n", - "4 270 571545870_02 571510153_01 i0 straight \n", - "5 180 571545870_02 571542797_02 i0 left \n", - "6 000 571510153_02 571500487_01 i0 left \n", - "7 090 571510153_02 571545870_01 i0 straight \n", - "8 356 -571542810_01 -571542797_02.99 i1 straight \n", - "9 180 571542797_02.99 571542810_01 i1 straight \n", - "10 356 -571542810_01 -571542797_02.99 i1 straight \n", - "11 270 -571542810_01 571543469_01 i1 left \n", - "12 356 571543469_02 -571542797_02.99 i1 left \n", - "13 NaN NaN NaN i1 NaN \n", - "14 000 -571542809_01 571542811_01 i2 left \n", - "15 180 571542811_02 571542809_01 i2 straight \n", - "16 090 571542811_02 571542107_01 i2 left \n", - "17 270 -571542809_01 571542809_01 i2 left \n", - "18 NaN NaN NaN i2 NaN \n", - "19 NaN NaN NaN i2 NaN \n", - "20 000 -571542809_01 571542811_01 i2 left \n", - "21 180 571542107_02 571542809_01 i2 left \n", - "22 000 571540304_02 571556450_01 i3 straight \n", - "23 180 571556450_02 571540304_01 i3 straight \n", - "24 090 571556450_02 571500475_01 i3 left \n", - "25 270 571540304_02 571540303_01 i3 left \n", - "26 000 571540303_02.21 571556450_01 i3 left \n", - "27 090 571540303_02.21 571500475_01 i3 straight \n", - "28 270 -571500475_01 571540303_01 i3 straight \n", - "29 180 -571500475_01 571540304_01 i3 left \n", - "30 000 -571500569_01 571500583_02 i8 straight \n", - "31 270 -571500569_01 571500618_01 i8 left \n", - "32 000 571500618_02 571500583_02 i8 left \n", - "33 090 571500618_02 571500617_01 i8 straight \n", - "34 270 571500617_02 571500618_01 i8 straight \n", - "35 090 571500618_02 571500617_01 i8 straight \n", - "36 270 571500617_02 571500618_01 i8 straight \n", - "37 180 571500617_02 571500569_01 i8 left \n", - "38 090 571500583_01 571500617_01 i8 left \n", - "39 180 571500583_01 571500569_01 i8 straight \n", - "40 270 571510152_02 -571510152_01 i9 straight \n", - "41 090 571510152_01 571510152_01.65 i9 straight \n", - "42 NaN NaN NaN i9 NaN \n", - "43 NaN NaN NaN i9 NaN \n", - "44 000 -571511538_02 571542073_02 i7 straight \n", - "45 180 571542073_01 571511538_02 i7 straight \n", - "46 NaN NaN NaN i7 NaN \n", - "47 NaN NaN NaN i7 NaN \n", - "48 000 -571511538_02 571542073_02 i7 straight \n", - "49 180 571542073_01 571511538_02 i7 straight \n", - "50 NaN NaN NaN i7 NaN \n", - "51 NaN NaN NaN i7 NaN \n", - "52 270 -571542115_01 571500535_01 i6 straight \n", - "53 NaN NaN NaN i6 NaN \n", - "54 000 571500535_02.18 571511538_01 i6 left \n", - "55 090 571500535_02.18 571542115_01 i6 straight \n", - "56 090 571511538_02.121 571542115_01 i6 left \n", - "57 180 571511538_02.121 571500585_01 i6 straight \n", - "58 000 571500585_02 571511538_01 i6 straight \n", - "59 270 571500585_02 571500535_01 i6 left " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for i, row in self.match5.iterrows():\n", - " node_id = row.node_id\n", - " inc_edge_id = row.inc_edge_id\n", - " out_edge_id = row.out_edge_id\n", - " if not (pd.isna(inc_edge_id) and pd.isna(out_edge_id)):\n", - " turn_type = n2io2turn[node_id][(inc_edge_id, out_edge_id)]\n", - " self.match5.at[i, 'turn_type']=turn_type\n", - "display(self.match5)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4\n", - "2\n", - "1\n", - "1\n", - "2\n", - "1\n", - "1\n", - "1\n", - "3\n", - "2\n", - "3\n", - "1\n", - "2\n" - ] - }, - { - "ename": "KeyError", - "evalue": "nan", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[15], line 4\u001b[0m\n\u001b[0;32m 2\u001b[0m inc_edge_id \u001b[38;5;241m=\u001b[39m row\u001b[38;5;241m.\u001b[39minc_edge_id\n\u001b[0;32m 3\u001b[0m out_edge_id \u001b[38;5;241m=\u001b[39m row\u001b[38;5;241m.\u001b[39mout_edge_id\n\u001b[1;32m----> 4\u001b[0m inc_edge \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnet\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetEdge\u001b[49m\u001b[43m(\u001b[49m\u001b[43minc_edge_id\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 5\u001b[0m out_edge \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnet\u001b[38;5;241m.\u001b[39mgetEdge(out_edge_id)\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;28mlen\u001b[39m(inc_edge\u001b[38;5;241m.\u001b[39mgetConnections(out_edge)))\n", - "File \u001b[1;32mC:\\Program Files (x86)\\Eclipse\\Sumo\\tools\\sumolib\\net\\__init__.py:261\u001b[0m, in \u001b[0;36mNet.getEdge\u001b[1;34m(self, id)\u001b[0m\n\u001b[0;32m 260\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetEdge\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28mid\u001b[39m):\n\u001b[1;32m--> 261\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_id2edge\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mid\u001b[39;49m\u001b[43m]\u001b[49m\n", - "\u001b[1;31mKeyError\u001b[0m: nan" - ] - } - ], - "source": [ - "for row in self.match5.itertuples():\n", - " inc_edge_id = row.inc_edge_id\n", - " out_edge_id = row.out_edge_id\n", - " inc_edge = self.net.getEdge(inc_edge_id)\n", - " out_edge = self.net.getEdge(out_edge_id)\n", - " print(len(inc_edge.getConnections(out_edge)))" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "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", - "1-5. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n" - ] - } - ], - "source": [ - "self.load_data()\n", - "self.make_match1()\n", - "self.make_match2()\n", - "self.make_match3()\n", - "self.make_match4()\n", - "self.make_match5()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "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", - "
parent_idchild_iddirectionconditioninc_edge_idout_edge_id
0i0u00좌회전시571500487_02571500487_01.32
1i2u20보행신호시571542810_01.51571542810_02
2i3u30보행신호시571556452_01571556452_02
3i3u31보행신호시571500475_02571500475_01.26
4i3u32보행신호시571540303_02-571540303_02
5i6u60좌회전시571500535_02-571500535_02
\n", - "
" - ], - "text/plain": [ - " parent_id child_id direction condition inc_edge_id out_edge_id\n", - "0 i0 u00 북 좌회전시 571500487_02 571500487_01.32\n", - "1 i2 u20 북 보행신호시 571542810_01.51 571542810_02\n", - "2 i3 u30 북 보행신호시 571556452_01 571556452_02\n", - "3 i3 u31 동 보행신호시 571500475_02 571500475_01.26\n", - "4 i3 u32 서 보행신호시 571540303_02 -571540303_02\n", - "5 i6 u60 서 좌회전시 571500535_02 -571500535_02" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", "
parent_idchild_idhead_edge_idinc_edge_idout_edge_id
0i0u00-571500487_01571500487_02571500487_01.32571510153_02571500487_01grrrgrrrgrrrrrgrG
1i2u20571542811_02571542810_01.51571542810_02........................
2i3u30571556450_02571556452_01571556452_026767210i621571511538_02.121571500535_01grrrgrrrrgrrgrrr
3i3u31-571500475_01571500475_02571500475_01.266868210i621571500535_02.18571500585_01grrrgrrrrgrrgrrr
4i3u32571540303_02.21571540303_02-571540303_026969210i621571500585_02571542115_01grrrgrrrrgrrgrrr
57070210i621-571542115_01571511538_01grrrgrrrrgrrgrrr
7171210u60571500535_02.185571500535_02-571500535_02ggggggggG
\n", + "

72 rows × 7 columns

\n", "
" ], "text/plain": [ - " parent_id child_id head_edge_id inc_edge_id out_edge_id\n", - "0 i0 u00 -571500487_01 571500487_02 571500487_01.32\n", - "1 i2 u20 571542811_02 571542810_01.51 571542810_02\n", - "2 i3 u30 571556450_02 571556452_01 571556452_02\n", - "3 i3 u31 -571500475_01 571500475_02 571500475_01.26\n", - "4 i3 u32 571540303_02.21 571540303_02 -571540303_02\n", - "5 i6 u60 571500535_02.18 571500535_02 -571500535_02" + " Unnamed: 0 inter_no node_id move_no inc_edge_id out_edge_id \\\n", + "0 0 175 i0 1 571545870_02 571542797_02 \n", + "1 1 175 i0 2 571510153_02 571545870_01 \n", + "2 2 175 i0 3 -571542797_02 571510153_01 \n", + "3 3 175 i0 4 -571500487_01 571542797_02 \n", + "4 4 175 i0 5 571510153_02 571500487_01 \n", + ".. ... ... ... ... ... ... \n", + "67 67 210 i6 21 571511538_02.121 571500535_01 \n", + "68 68 210 i6 21 571500535_02.18 571500585_01 \n", + "69 69 210 i6 21 571500585_02 571542115_01 \n", + "70 70 210 i6 21 -571542115_01 571511538_01 \n", + "71 71 210 u60 5 571500535_02 -571500535_02 \n", + "\n", + " state \n", + "0 grrrgrrGgrrrrrgrr \n", + "1 grrrgrrrgrrrrrgGr \n", + "2 grrrgrrrgrrrrGgrr \n", + "3 gGGrgrrrgrrrrrgrr \n", + "4 grrrgrrrgrrrrrgrG \n", + ".. ... \n", + "67 grrrgrrrrgrrgrrr \n", + "68 grrrgrrrrgrrgrrr \n", + "69 grrrgrrrrgrrgrrr \n", + "70 grrrgrrrrgrrgrrr \n", + "71 ggggggggG \n", + "\n", + "[72 rows x 7 columns]" ] }, + "execution_count": 27, "metadata": {}, - "output_type": "display_data" - }, + "output_type": "execute_result" + } + ], + "source": [ + "self.prepare_data() # 1\n", + "self.matching" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1. 데이터를 준비합니다.\n", + "1-1. 네트워크가 로드되었습니다.\n", + "1-2. 테이블들이 로드되었습니다.\n", + "2. 신호이력 테이블을 변환합니다.\n", + "3. 이동류정보 테이블을 변환합니다.\n" + ] + } + ], + "source": [ + "self.prepare_data() # 1\n", + "self.process_history() # 2\n", + "self.process_movement() # 3\n", + "self.merge_dfs() # 4-1" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -1462,58 +313,179 @@ " \n", " \n", " \n", - " child_id\n", - " condition\n", + " inter_no\n", + " start_unix\n", + " phas_A\n", + " phas_B\n", + " move_A\n", + " move_B\n", + " duration\n", + " node_id\n", " \n", " \n", " \n", " \n", - " 0\n", - " u00\n", - " 좌회전시\n", + " 6\n", + " 176\n", + " 1704418870\n", + " 1\n", + " 1\n", + " 8\n", + " 4\n", + " 37\n", + " i1\n", " \n", " \n", - " 1\n", - " u20\n", - " 보행신호시\n", + " 7\n", + " 176\n", + " 1704418870\n", + " 2\n", + " 2\n", + " 8\n", + " 3\n", + " 103\n", + " i1\n", " \n", " \n", - " 2\n", - " u30\n", - " 보행신호시\n", + " 8\n", + " 176\n", + " 1704418870\n", + " 3\n", + " 3\n", + " 5\n", + " 18\n", + " 40\n", + " i1\n", " \n", " \n", - " 3\n", - " u31\n", - " 보행신호시\n", + " 9\n", + " 176\n", + " 1704419051\n", + " 1\n", + " 1\n", + " 8\n", + " 4\n", + " 37\n", + " i1\n", " \n", " \n", - " 4\n", - " u32\n", - " 보행신호시\n", + " 10\n", + " 176\n", + " 1704419051\n", + " 2\n", + " 2\n", + " 8\n", + " 3\n", + " 103\n", + " i1\n", " \n", " \n", - " 5\n", - " u60\n", - " 좌회전시\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " \n", + " \n", + " 245\n", + " 210\n", + " 1704419810\n", + " 1\n", + " 1\n", + " 6\n", + " 18\n", + " 28\n", + " i6\n", + " \n", + " \n", + " 246\n", + " 210\n", + " 1704419810\n", + " 1\n", + " 2\n", + " 6\n", + " 2\n", + " 15\n", + " i6\n", + " \n", + " \n", + " 247\n", + " 210\n", + " 1704419810\n", + " 2\n", + " 2\n", + " 5\n", + " 2\n", + " 43\n", + " i6\n", + " \n", + " \n", + " 248\n", + " 210\n", + " 1704419810\n", + " 3\n", + " 3\n", + " 7\n", + " 4\n", + " 70\n", + " i6\n", + " \n", + " \n", + " 249\n", + " 210\n", + " 1704419810\n", + " 4\n", + " 4\n", + " 8\n", + " 3\n", + " 24\n", + " i6\n", " \n", " \n", "\n", + "

192 rows × 8 columns

\n", "" ], "text/plain": [ - " child_id condition\n", - "0 u00 좌회전시\n", - "1 u20 보행신호시\n", - "2 u30 보행신호시\n", - "3 u31 보행신호시\n", - "4 u32 보행신호시\n", - "5 u60 좌회전시" + " inter_no start_unix phas_A phas_B move_A move_B duration node_id\n", + "6 176 1704418870 1 1 8 4 37 i1\n", + "7 176 1704418870 2 2 8 3 103 i1\n", + "8 176 1704418870 3 3 5 18 40 i1\n", + "9 176 1704419051 1 1 8 4 37 i1\n", + "10 176 1704419051 2 2 8 3 103 i1\n", + ".. ... ... ... ... ... ... ... ...\n", + "245 210 1704419810 1 1 6 18 28 i6\n", + "246 210 1704419810 1 2 6 2 15 i6\n", + "247 210 1704419810 2 2 5 2 43 i6\n", + "248 210 1704419810 3 3 7 4 70 i6\n", + "249 210 1704419810 4 4 8 3 24 i6\n", + "\n", + "[192 rows x 8 columns]" ] }, + "execution_count": 16, "metadata": {}, - "output_type": "display_data" - }, + "output_type": "execute_result" + } + ], + "source": [ + "self.histid = self.movedur.copy()\n", + "self.histid['node_id'] = self.histid['inter_no'].map(self.inter2node)\n", + "histid_start = self.present_time - 600\n", + "self.histid = self.histid[self.histid.start_unix > histid_start]\n", + "\n", + "self.histid" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -1535,608 +507,303 @@ " \n", " \n", " \n", - " parent_id\n", - " child_id\n", - " head_edge_id\n", + " Unnamed: 0\n", + " inter_no\n", + " node_id\n", + " move_no\n", " inc_edge_id\n", " out_edge_id\n", - " condition\n", + " state\n", " \n", " \n", " \n", " \n", " 0\n", + " 0\n", + " 175\n", " i0\n", - " u00\n", - " -571500487_01\n", - " 571500487_02\n", - " 571500487_01.32\n", - " 좌회전시\n", + " 1\n", + " 571545870_02\n", + " 571542797_02\n", + " grrrgrrGgrrrrrgrr\n", " \n", " \n", " 1\n", - " i2\n", - " u20\n", - " 571542811_02\n", - " 571542810_01.51\n", - " 571542810_02\n", - " 보행신호시\n", + " 1\n", + " 175\n", + " i0\n", + " 2\n", + " 571510153_02\n", + " 571545870_01\n", + " grrrgrrrgrrrrrgGr\n", " \n", " \n", " 2\n", - " i3\n", - " u30\n", - " 571556450_02\n", - " 571556452_01\n", - " 571556452_02\n", - " 보행신호시\n", + " 2\n", + " 175\n", + " i0\n", + " 3\n", + " -571542797_02\n", + " 571510153_01\n", + " grrrgrrrgrrrrGgrr\n", " \n", " \n", " 3\n", - " i3\n", - " u31\n", - " -571500475_01\n", - " 571500475_02\n", - " 571500475_01.26\n", - " 보행신호시\n", + " 3\n", + " 175\n", + " i0\n", + " 4\n", + " -571500487_01\n", + " 571542797_02\n", + " gGGrgrrrgrrrrrgrr\n", " \n", " \n", " 4\n", - " i3\n", - " u32\n", - " 571540303_02.21\n", - " 571540303_02\n", - " -571540303_02\n", - " 보행신호시\n", + " 4\n", + " 175\n", + " i0\n", + " 5\n", + " 571510153_02\n", + " 571500487_01\n", + " grrrgrrrgrrrrrgrG\n", " \n", " \n", - " 5\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " \n", + " \n", + " 67\n", + " 67\n", + " 210\n", " i6\n", - " u60\n", + " 21\n", + " 571511538_02.121\n", + " 571500535_01\n", + " grrrgrrrrgrrgrrr\n", + " \n", + " \n", + " 68\n", + " 68\n", + " 210\n", + " i6\n", + " 21\n", " 571500535_02.18\n", + " 571500585_01\n", + " grrrgrrrrgrrgrrr\n", + " \n", + " \n", + " 69\n", + " 69\n", + " 210\n", + " i6\n", + " 21\n", + " 571500585_02\n", + " 571542115_01\n", + " grrrgrrrrgrrgrrr\n", + " \n", + " \n", + " 70\n", + " 70\n", + " 210\n", + " i6\n", + " 21\n", + " -571542115_01\n", + " 571511538_01\n", + " grrrgrrrrgrrgrrr\n", + " \n", + " \n", + " 71\n", + " 71\n", + " 210\n", + " u60\n", + " 5\n", " 571500535_02\n", " -571500535_02\n", - " 좌회전시\n", + " ggggggggG\n", " \n", " \n", "\n", + "

72 rows × 7 columns

\n", "" ], "text/plain": [ - " parent_id child_id head_edge_id inc_edge_id out_edge_id \\\n", - "0 i0 u00 -571500487_01 571500487_02 571500487_01.32 \n", - "1 i2 u20 571542811_02 571542810_01.51 571542810_02 \n", - "2 i3 u30 571556450_02 571556452_01 571556452_02 \n", - "3 i3 u31 -571500475_01 571500475_02 571500475_01.26 \n", - "4 i3 u32 571540303_02.21 571540303_02 -571540303_02 \n", - "5 i6 u60 571500535_02.18 571500535_02 -571500535_02 \n", + " Unnamed: 0 inter_no node_id move_no inc_edge_id out_edge_id \\\n", + "0 0 175 i0 1 571545870_02 571542797_02 \n", + "1 1 175 i0 2 571510153_02 571545870_01 \n", + "2 2 175 i0 3 -571542797_02 571510153_01 \n", + "3 3 175 i0 4 -571500487_01 571542797_02 \n", + "4 4 175 i0 5 571510153_02 571500487_01 \n", + ".. ... ... ... ... ... ... \n", + "67 67 210 i6 21 571511538_02.121 571500535_01 \n", + "68 68 210 i6 21 571500535_02.18 571500585_01 \n", + "69 69 210 i6 21 571500585_02 571542115_01 \n", + "70 70 210 i6 21 -571542115_01 571511538_01 \n", + "71 71 210 u60 5 571500535_02 -571500535_02 \n", "\n", - " condition \n", - "0 좌회전시 \n", - "1 보행신호시 \n", - "2 보행신호시 \n", - "3 보행신호시 \n", - "4 보행신호시 \n", - "5 좌회전시 " + " state \n", + "0 grrrgrrGgrrrrrgrr \n", + "1 grrrgrrrgrrrrrgGr \n", + "2 grrrgrrrgrrrrGgrr \n", + "3 gGGrgrrrgrrrrrgrr \n", + "4 grrrgrrrgrrrrrgrG \n", + ".. ... \n", + "67 grrrgrrrrgrrgrrr \n", + "68 grrrgrrrrgrrgrrr \n", + "69 grrrgrrrrgrrgrrr \n", + "70 grrrgrrrrgrrgrrr \n", + "71 ggggggggG \n", + "\n", + "[72 rows x 7 columns]" ] }, - "execution_count": 5, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "display(self.uturn)\n", - "display(self.u_turn)\n", - "display(self.u_condition)\n", - "\n", - "self.u_turn = pd.merge(self.u_turn, self.u_condition, on='child_id')\n", - "self.u_turn" + "self.matching[]" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 24, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "parent_id i0\n", - "child_id u00\n", - "head_edge_id -571500487_01\n", - "inc_edge_id 571500487_02\n", - "out_edge_id 571500487_01.32\n", - "condition 좌회전시\n", - "Name: 0, dtype: object\n" - ] + "data": { + "text/plain": [ + "node_id move_no\n", + "i0 1 grrrgrrGgrrrrrgrr\n", + " 2 grrrgrrrgrrrrrgGr\n", + " 3 grrrgrrrgrrrrGgrr\n", + " 4 gGGrgrrrgrrrrrgrr\n", + " 5 grrrgrrrgrrrrrgrG\n", + " ... \n", + "i6 21 grrrgrrrrgrrgrrr\n", + " 21 grrrgrrrrgrrgrrr\n", + " 21 grrrgrrrrgrrgrrr\n", + " 21 grrrgrrrrgrrgrrr\n", + "u60 5 ggggggggG\n", + "Name: state, Length: 72, dtype: object" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "cmatches = []\n", - "i = 0\n", - "row = self.u_turn.iloc[0]\n", - "print(row)\n", - "child_id = row.child_id\n", - "parent_id = row.parent_id\n", - "condition = row.condition\n", - "inc_edge_id = row.inc_edge_id\n", - "out_edge_id = row.out_edge_id\n", - "cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n", - "cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n", - "cmatch['node_id'] = child_id" + "# self.matching.set_index(['node_id', 'move_no'])['state']" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{('i0', 1): 'grrrgrrGgrrrrrgrr',\n", + " ('i0', 2): 'grrrgrrrgrrrrrgGr',\n", + " ('i0', 3): 'grrrgrrrgrrrrGgrr',\n", + " ('i0', 4): 'gGGrgrrrgrrrrrgrr',\n", + " ('i0', 5): 'grrrgrrrgrrrrrgrG',\n", + " ('i0', 6): 'grrrgGGrgrrrrrgrr',\n", + " ('i0', 7): 'grrGgrrrgrrrrrgrr',\n", + " ('i0', 8): 'grrrgrrrgGGGGrgrr',\n", + " ('i0', 21): 'grrrgrrrgrrrrrgrr',\n", + " ('u00', 7): 'ggggGgggg',\n", + " ('i1', 3): 'grrrrrGgrr',\n", + " ('i1', 4): 'gGGrrrrgrr',\n", + " ('i1', 5): 'grrrrrrgGG',\n", + " ('i1', 8): 'grrGGGrgrr',\n", + " ('i1', 21): 'grrrrrrgrr',\n", + " ('i2', 4): 'GGggrrr',\n", + " ('i2', 8): 'rrggGGG',\n", + " ('u20', 17): 'ggGggg',\n", + " ('c30', 20): 'rrrGGG',\n", + " ('i3', 1): 'grrrrgrrrGgrrrrgrrrr',\n", + " ('i3', 2): 'grrrrgrrrrgrrrrgGGGr',\n", + " ('i3', 3): 'grrrrgrrrrgrrrGgrrrr',\n", + " ('i3', 4): 'gGGGrgrrrrgrrrrgrrrr',\n", + " ('i3', 5): 'grrrrgrrrrgrrrrgrrrG',\n", + " ('i3', 6): 'grrrrgGGGrgrrrrgrrrr',\n", + " ('i3', 7): 'grrrGgrrrrgrrrrgrrrr',\n", + " ('i3', 8): 'grrrrgrrrrgGGGrgrrrr',\n", + " ('i3', 21): 'grrrrgrrrrgrrrrgrrrr',\n", + " ('u30', 6): 'ggggGggg',\n", + " ('u31', 8): 'ggggGggg',\n", + " ('u32', 4): 'gggggggG',\n", + " ('i8', 1): 'grrrrrrGgrrrgrrr',\n", + " ('i8', 2): 'grrrrrrrgrrrgGGr',\n", + " ('i8', 3): 'grrrrrrrgrrGgrrr',\n", + " ('i8', 4): 'gGGrrrrrgrrrgrrr',\n", + " ('i8', 5): 'grrrrrrrgrrrgrrG',\n", + " ('i8', 6): 'grrrGGGrgrrrgrrr',\n", + " ('i8', 7): 'grrGrrrrgrrrgrrr',\n", + " ('i8', 8): 'grrrrrrrgGGrgrrr',\n", + " ('i8', 21): 'grrrrrrrgrrrgrrr',\n", + " ('i9', 2): 'rrGG',\n", + " ('i9', 6): 'GGrr',\n", + " ('i7', 4): 'GGrggrr',\n", + " ('i7', 8): 'rrrggGG',\n", + " ('i6', 1): 'grrrgrrrGgrrgrrr',\n", + " ('i6', 2): 'grrrgrrrrgrrgGGr',\n", + " ('i6', 3): 'grrrgrrrrgrrgrrr',\n", + " ('i6', 4): 'gGGrgrrrrgrrgrrr',\n", + " ('i6', 5): 'grrrgrrrrgrrgrrG',\n", + " ('i6', 6): 'grrrgGGGrgrrgrrr',\n", + " ('i6', 7): 'grrGgrrrrgrrgrrr',\n", + " ('i6', 8): 'grrrgrrrrgGGgrrr',\n", + " ('i6', 21): 'grrrgrrrrgrrgrrr',\n", + " ('u60', 5): 'ggggggggG'}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# 각 uturn node에 대하여 (inc_edge_id, out_edge_id) 부여\n", - "cmatches = []\n", - "for _, row in self.uturn.iterrows():\n", - " child_id = row.child_id\n", - " parent_id = row.parent_id\n", - " dire = row.direction\n", - " condition = row.condition\n", - " inc_edge_id = row.inc_edge_id\n", - " out_edge_id = row.out_edge_id\n", - "\n", - " print(parent_id, condition)\n", - "\n", - " # match5에서 부모노드id에 해당하는 행들을 가져옴 (cmatch)\n", - " cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n", - " cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n", - " cmatch['node_id'] = child_id\n", - " cmatch[['inc_edge_id', 'out_edge_id']] = np.nan\n", - " display(cmatch)\n", - "\n", - " # 보행신호시/좌회전시 진입/진출방향\n", - " ind = self.dires.index(dire)\n", - " inc_dire_pedes = self.dires[(ind + 2) % len(self.dires)]\n", - " out_dire_pedes = self.dires[(ind - 2) % len(self.dires)]\n", - " inc_dire_right = dire\n", - " out_dire_right = self.dires[(ind + 2) % len(self.dires)]\n", - "\n", - " if condition == '보행신호시':\n", - " print(inc_dire_pedes, out_dire_pedes)\n", - " else:\n", - " print(inc_dire_right, out_dire_right)\n", - "\n", - " # 보행신호시/좌회전시 조건\n", - " pedes_exists = (cmatch.inc_dire==inc_dire_pedes) & (cmatch.out_dire==out_dire_pedes)\n", - " right_exists = (cmatch.inc_dire==inc_dire_right) & (cmatch.out_dire==out_dire_right)\n", - "\n", - " # 보행신호시/좌회전시 진입/진출 엣지id 배정\n", - " ind = self.dires.index(dire)\n", - " if condition == \"보행신호시\":\n", - " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " elif condition == \"좌회전시\":\n", - " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " display(cmatch)\n", - "\n", - " # 신호없음이동류발생시/보행신호이동류발생시 조건\n", - " all_redsigns = cmatch.move_no == 18\n", - " crosswalk_on = cmatch.move_no == 17\n", - "\n", - " # 만약 어떤 유턴신호도 배정되지 않았다면\n", - " # 좌회전시 → 보행신호시 → 보행신호이동류발생시 → 신호없음이동류발생시 순으로 진입/진출 엣지id 배정\n", - " uturn_not_assigned = cmatch[['inc_edge_id','out_edge_id']].isna().any(axis=1).all()\n", - " if uturn_not_assigned:\n", - " # 좌회전시\n", - " if right_exists.any():\n", - " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " # 보행신호시\n", - " elif pedes_exists.any():\n", - " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " # 보행신호이동류(17) 발생시\n", - " elif crosswalk_on.any():\n", - " cmatch.loc[crosswalk_on & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " # 신호없음이동류(18) 발생시\n", - " elif all_redsigns.any():\n", - " cmatch.loc[all_redsigns & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " display(cmatch)\n", - "cmatches.append(cmatch)\n" + "mapping_dict" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 14, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "u31\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 t\n", - "\n", - "i3\n", - "5 5 r\n", - "6 6 s\n", - "7 7 s\n", - "8 8 s\n", - "9 9 l\n", - "15 15 r\n", - "16 16 s\n", - "17 17 s\n", - "18 18 s\n", - "19 19 l\n", - "10 10 r\n", - "11 11 s\n", - "12 12 s\n", - "13 13 s\n", - "14 14 l\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 l\n", - "\n", - "u00\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "8 8 s\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 t\n", - "\n", - "i0\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 l\n", - "8 8 r\n", - "9 9 s\n", - "10 10 s\n", - "11 11 s\n", - "12 12 s\n", - "13 13 l\n", - "14 14 r\n", - "15 15 s\n", - "16 16 l\n", - "4 4 r\n", - "5 5 s\n", - "6 6 s\n", - "7 7 l\n", - "\n", - "u60\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "8 8 t\n", - "\n", - "d12\n", - "\n", - "n13\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "\n", - "i8\n", - "8 8 r\n", - "9 9 s\n", - "10 10 s\n", - "11 11 l\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 l\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "7 7 l\n", - "12 12 r\n", - "13 13 s\n", - "14 14 s\n", - "15 15 l\n", - "\n", - "i9\n", - "2 2 s\n", - "3 3 s\n", - "0 0 s\n", - "1 1 s\n", - "\n", - "n14\n", - "2 -1 r\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 l\n", - "0 -1 r\n", - "1 -1 l\n", - "\n", - "n11\n", - "3 -1 s\n", - "4 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "\n", - "i7\n", - "4 4 r\n", - "5 5 s\n", - "6 6 s\n", - "3 3 r\n", - "0 0 s\n", - "1 1 s\n", - "2 2 l\n", - "\n", - "u32\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "7 7 t\n", - "\n", - "n06\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "\n", - "n09\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "\n", - "i6\n", - "4 4 r\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "8 8 l\n", - "12 12 r\n", - "13 13 s\n", - "14 14 s\n", - "15 15 l\n", - "9 9 r\n", - "10 10 s\n", - "11 11 s\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 l\n", - "\n", - "i5\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "\n", - "n08\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 l\n", - "7 -1 r\n", - "8 -1 s\n", - "9 -1 s\n", - "10 -1 s\n", - "4 -1 r\n", - "5 -1 l\n", - "6 -1 l\n", - "\n", - "c30\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "\n", - "n00\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "\n", - "i1\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "6 6 l\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "7 7 r\n", - "8 8 l\n", - "9 9 l\n", - "\n", - "n10\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 t\n", - "\n", - "n04\n", - "5 -1 r\n", - "6 -1 s\n", - "7 -1 s\n", - "8 -1 s\n", - "9 -1 l\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 l\n", - "10 -1 r\n", - "4 -1 r\n", - "\n", - "n03\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "\n", - "i2\n", - "3 3 r\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "2 2 r\n", - "0 0 s\n", - "1 1 s\n", - "\n", - "n01\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "\n", - "n02\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "\n", - "d07\n", - "\n", - "d00\n", - "\n", - "n12\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 r\n", - "3 -1 l\n", - "4 -1 r\n", - "5 -1 s\n", - "6 -1 s\n", - "\n", - "d16\n", - "\n", - "d11\n", - "\n", - "d15\n", - "\n", - "d17\n", - "\n", - "n15\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 s\n", - "8 -1 l\n", - "2 -1 r\n", - "3 -1 s\n", - "4 -1 s\n", - "0 -1 r\n", - "1 -1 l\n", - "\n", - "d18\n", - "\n", - "n07\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 l\n", - "7 -1 s\n", - "8 -1 s\n", - "9 -1 s\n", - "4 -1 r\n", - "5 -1 l\n", - "6 -1 l\n", - "\n", - "d08\n", - "\n", - "d14\n", - "\n", - "d13\n", - "\n", - "d04\n", - "\n", - "d09\n", - "\n", - "n05\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 s\n", - "8 -1 s\n", - "\n", - "u20\n", - "0 0 s\n", - "1 1 s\n", - "2 2 t\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "\n", - "d10\n", - "\n", - "d03\n", - "\n", - "d06\n", - "\n", - "d01\n", - "\n", - "d05\n", - "\n", - "u30\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 t\n", - "\n" - ] - } - ], + "outputs": [], "source": [ - "nodes = self.net.getNodes()\n", - "for node in nodes:\n", - " node_id = node.getID()\n", - " print(node_id)\n", - " conns = [con for con in node.getConnections()]\n", - " for con in conns:\n", - " print(con.getJunctionIndex(), con.getTLLinkIndex(), con.getDirection())\n", - " print()" + "mapping_dict = self.matching.set_index(['node_id', 'move_no'])['state'].to_dict()\n", + "# matching : 가능한 모든 (노드id, 이동류번호)에 대한 신호 * 시차제와 연관 有\n", + "\n", + "\n", + "for i, row in self.histid.iterrows():\n", + " node_id = row.node_id\n", + " move_A = row.move_A\n", + " move_B = row.move_B\n", + " \n", + " # A링의 state 지정\n", + " if (node_id, move_A) in mapping_dict:\n", + " state_A = mapping_dict[(node_id, move_A)]\n", + " else:\n", + " state_A = ''.join(self.node2init[node_id])\n", + " self.histid.at[i, 'state_A'] = state_A\n", + "\n", + " # B링의 state 지정\n", + " if (node_id, move_B) in mapping_dict:\n", + " state_B = mapping_dict[(node_id, move_B)]\n", + " else:\n", + " state_B = ''.join(self.node2init[node_id])\n", + " self.histid.at[i, 'state_B'] = state_B " ] }, { @@ -2145,11 +812,7 @@ "metadata": {}, "outputs": [], "source": [ - "'''Given `inter_no`, `inc_edge_id` and `out_edge_id`, we have `inc_vec = inter2inc2vec[inter_no][inc_edge_id]` and `out_vec = inter2out2vec[inter_no][out_edge_id]`.\n", - "Rotate `inc_vec` by 90, 180 and 270 degrees clockwise, to define \n", - "`out_vec_left`, `out_vec_straight` and `out_vec_right`.\n", - "Define `out_vecs={'right':out_vec_left, 'straight':out_vec_straight, 'right':out_vec_right}`.\n", - "Select the key that maximize the similarity of the corresponding value of the key and `inc_vec`.'''" + "self.assign_signals()" ] } ], diff --git a/Intermediates/match6.csv b/Intermediates/match6.csv index c81cc4a94..459672b49 100644 --- a/Intermediates/match6.csv +++ b/Intermediates/match6.csv @@ -25,10 +25,10 @@ 23,177,i2,1,B,4,571542811_02,571542809_01,GGggrrr 24,177,i2,2,A,17,,,rrggrrr 25,177,i2,2,B,18,,,rrggrrr -26,177,u20,1,A,8,,,ggrggg -27,177,u20,1,B,4,,,ggrggg +26,177,u20,1,A,8,,,gggggg +27,177,u20,1,B,4,,,gggggg 28,177,u20,2,A,17,571542810_01.51,571542810_02,ggGggg -29,177,u20,2,B,18,,,ggrggg +29,177,u20,2,B,18,,,gggggg 30,178,c30,1,A,20,,,rrrrrr 31,178,c30,1,B,20,,,rrrrrr 32,178,c30,2,A,20,571542116_01,-571542116_02.96,GGGrrr diff --git a/Intermediates/matching.csv b/Intermediates/matching.csv index 36f933730..07a7e729a 100644 --- a/Intermediates/matching.csv +++ b/Intermediates/matching.csv @@ -20,54 +20,47 @@ 18,176,i1,21,571543469_02,571542810_01,grrrrrrgrr 19,177,i2,4,571542811_02,571542809_01,GGggrrr 20,177,i2,8,-571542809_01,571542811_01,rrggGGG -21,177,u20,17,571542810_01.51,571542810_02,ggGggg -22,178,c30,20,571542116_01,-571542116_02.96,GGGrrr -23,178,c30,20,571542116_02.96,571542116_02.164,rrrGGG -24,178,c30,20,571542116_01,-571542116_02.96,GGGrrr -25,178,c30,20,571542116_02.96,571542116_02.164,rrrGGG -26,178,c30,20,571542116_01,-571542116_02.96,GGGrrr -27,178,c30,20,571542116_02.96,571542116_02.164,rrrGGG -28,178,i3,1,-571500475_01,571540304_01,grrrrgrrrGgrrrrgrrrr -29,178,i3,2,571540303_02.21,571500475_01,grrrrgrrrrgrrrrgGGGr -30,178,i3,3,571540304_02,571540303_01,grrrrgrrrrgrrrGgrrrr -31,178,i3,4,571556450_02,571540304_01,gGGGrgrrrrgrrrrgrrrr -32,178,i3,5,571540303_02.21,571556450_01,grrrrgrrrrgrrrrgrrrG -33,178,i3,6,-571500475_01,571540303_01,grrrrgGGGrgrrrrgrrrr -34,178,i3,7,571556450_02,571500475_01,grrrGgrrrrgrrrrgrrrr -35,178,i3,8,571540304_02,571556450_01,grrrrgrrrrgGGGrgrrrr -36,178,i3,21,571556450_02,571540303_01,grrrrgrrrrgrrrrgrrrr -37,178,i3,21,571540303_02.21,571540304_01,grrrrgrrrrgrrrrgrrrr -38,178,i3,21,571540304_02,571500475_01,grrrrgrrrrgrrrrgrrrr -39,178,i3,21,-571500475_01,571556450_01,grrrrgrrrrgrrrrgrrrr -40,178,u30,6,571556452_01,571556452_02,ggggGggg -41,178,u31,8,571500475_02,571500475_01.26,ggggGggg -42,178,u32,4,571540303_02,-571540303_02,gggggggG -43,201,i8,1,571500617_02,571500569_01,grrrrrrGgrrrgrrr -44,201,i8,2,571500618_02,571500617_01,grrrrrrrgrrrgGGr -45,201,i8,3,-571500569_01,571500618_01,grrrrrrrgrrGgrrr -46,201,i8,4,571500583_01,571500569_01,gGGrrrrrgrrrgrrr -47,201,i8,5,571500618_02,571500583_02,grrrrrrrgrrrgrrG -48,201,i8,6,571500617_02,571500618_01,grrrGGGrgrrrgrrr -49,201,i8,7,571500583_01,571500617_01,grrGrrrrgrrrgrrr -50,201,i8,8,-571500569_01,571500583_02,grrrrrrrgGGrgrrr -51,201,i8,21,571500583_01,571500618_01,grrrrrrrgrrrgrrr -52,201,i8,21,571500618_02,571500569_01,grrrrrrrgrrrgrrr -53,201,i8,21,-571500569_01,571500617_01,grrrrrrrgrrrgrrr -54,201,i8,21,571500617_02,571500583_02,grrrrrrrgrrrgrrr -55,202,i9,2,571510152_01,571510152_01.65,rrGG -56,202,i9,6,571510152_02,-571510152_01,GGrr -57,206,i7,4,571542073_01,571511538_02,GGrggrr -58,206,i7,8,-571511538_02,571542073_02,rrrggGG -59,210,i6,1,-571542115_01,571500585_01,grrrgrrrGgrrgrrr -60,210,i6,2,571500535_02.18,571542115_01,grrrgrrrrgrrgGGr -61,210,i6,3,571500585_02,571500535_01,grrrgrrrrgrrgrrr -62,210,i6,4,571511538_02.121,571500585_01,gGGrgrrrrgrrgrrr -63,210,i6,5,571500535_02.18,571511538_01,grrrgrrrrgrrgrrG -64,210,i6,6,-571542115_01,571500535_01,grrrgGGGrgrrgrrr -65,210,i6,7,571511538_02.121,571542115_01,grrGgrrrrgrrgrrr -66,210,i6,8,571500585_02,571511538_01,grrrgrrrrgGGgrrr -67,210,i6,21,571511538_02.121,571500535_01,grrrgrrrrgrrgrrr -68,210,i6,21,571500535_02.18,571500585_01,grrrgrrrrgrrgrrr -69,210,i6,21,571500585_02,571542115_01,grrrgrrrrgrrgrrr -70,210,i6,21,-571542115_01,571511538_01,grrrgrrrrgrrgrrr -71,210,u60,5,571500535_02,-571500535_02,ggggggggG +21,178,i3,1,-571500475_01,571540304_01,grrrrgrrrGgrrrrgrrrr +22,178,i3,2,571540303_02.21,571500475_01,grrrrgrrrrgrrrrgGGGr +23,178,i3,3,571540304_02,571540303_01,grrrrgrrrrgrrrGgrrrr +24,178,i3,4,571556450_02,571540304_01,gGGGrgrrrrgrrrrgrrrr +25,178,i3,5,571540303_02.21,571556450_01,grrrrgrrrrgrrrrgrrrG +26,178,i3,6,-571500475_01,571540303_01,grrrrgGGGrgrrrrgrrrr +27,178,i3,7,571556450_02,571500475_01,grrrGgrrrrgrrrrgrrrr +28,178,i3,8,571540304_02,571556450_01,grrrrgrrrrgGGGrgrrrr +29,178,i3,21,571556450_02,571540303_01,grrrrgrrrrgrrrrgrrrr +30,178,i3,21,571540303_02.21,571540304_01,grrrrgrrrrgrrrrgrrrr +31,178,i3,21,571540304_02,571500475_01,grrrrgrrrrgrrrrgrrrr +32,178,i3,21,-571500475_01,571556450_01,grrrrgrrrrgrrrrgrrrr +33,178,u30,6,571556452_01,571556452_02,ggggGggg +34,178,u31,8,571500475_02,571500475_01.26,ggggGggg +35,178,u32,4,571540303_02,-571540303_02,gggggggG +36,201,i8,1,571500617_02,571500569_01,grrrrrrGgrrrgrrr +37,201,i8,2,571500618_02,571500617_01,grrrrrrrgrrrgGGr +38,201,i8,3,-571500569_01,571500618_01,grrrrrrrgrrGgrrr +39,201,i8,4,571500583_01,571500569_01,gGGrrrrrgrrrgrrr +40,201,i8,5,571500618_02,571500583_02,grrrrrrrgrrrgrrG +41,201,i8,6,571500617_02,571500618_01,grrrGGGrgrrrgrrr +42,201,i8,7,571500583_01,571500617_01,grrGrrrrgrrrgrrr +43,201,i8,8,-571500569_01,571500583_02,grrrrrrrgGGrgrrr +44,201,i8,21,571500583_01,571500618_01,grrrrrrrgrrrgrrr +45,201,i8,21,571500618_02,571500569_01,grrrrrrrgrrrgrrr +46,201,i8,21,-571500569_01,571500617_01,grrrrrrrgrrrgrrr +47,201,i8,21,571500617_02,571500583_02,grrrrrrrgrrrgrrr +48,202,i9,2,571510152_01,571510152_01.65,rrGG +49,202,i9,6,571510152_02,-571510152_01,GGrr +50,206,i7,4,571542073_01,571511538_02,GGrggrr +51,206,i7,8,-571511538_02,571542073_02,rrrggGG +52,210,i6,1,-571542115_01,571500585_01,grrrgrrrGgrrgrrr +53,210,i6,2,571500535_02.18,571542115_01,grrrgrrrrgrrgGGr +54,210,i6,3,571500585_02,571500535_01,grrrgrrrrgrrgrrr +55,210,i6,4,571511538_02.121,571500585_01,gGGrgrrrrgrrgrrr +56,210,i6,5,571500535_02.18,571511538_01,grrrgrrrrgrrgrrG +57,210,i6,6,-571542115_01,571500535_01,grrrgGGGrgrrgrrr +58,210,i6,7,571511538_02.121,571542115_01,grrGgrrrrgrrgrrr +59,210,i6,8,571500585_02,571511538_01,grrrgrrrrgGGgrrr +60,210,i6,21,571511538_02.121,571500535_01,grrrgrrrrgrrgrrr +61,210,i6,21,571500535_02.18,571500585_01,grrrgrrrrgrrgrrr +62,210,i6,21,571500585_02,571542115_01,grrrgrrrrgrrgrrr +63,210,i6,21,-571542115_01,571511538_01,grrrgrrrrgrrgrrr +64,210,u60,5,571500535_02,-571500535_02,ggggggggG diff --git a/Intermediates/node2init.json b/Intermediates/node2init.json index 10176bfea..cf11a5284 100644 --- a/Intermediates/node2init.json +++ b/Intermediates/node2init.json @@ -1 +1 @@ -{"c30": ["r", "r", "r", "r", "r", "r"], "i0": ["g", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r", "r", "r", "g", "r", "r"], "i1": ["g", "r", "r", "r", "r", "r", "r", "g", "r", "r"], "i2": ["r", "r", "g", "g", "r", "r", "r"], "i3": ["g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r"], "i6": ["g", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "g", "r", "r", "r"], "i7": ["r", "r", "r", "g", "g", "r", "r"], "i8": ["g", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r"], "i9": ["r", "r", "r", "r"], "u00": ["g", "g", "g", "g", "r", "g", "g", "g", "g"], "u20": ["g", "g", "r", "g", "g", "g"], "u30": ["g", "g", "g", "g", "r", "g", "g", "g"], "u31": ["g", "g", "g", "g", "r", "g", "g", "g"], "u32": ["g", "g", "g", "g", "g", "g", "g", "r"], "u60": ["g", "g", "g", "g", "g", "g", "g", "g", "r"]} \ No newline at end of file +{"c30": ["r", "r", "r", "r", "r", "r"], "i0": ["g", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r", "r", "r", "g", "r", "r"], "i1": ["g", "r", "r", "r", "r", "r", "r", "g", "r", "r"], "i2": ["r", "r", "g", "g", "r", "r", "r"], "i3": ["g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r"], "i6": ["g", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "g", "r", "r", "r"], "i7": ["r", "r", "r", "g", "g", "r", "r"], "i8": ["g", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r"], "i9": ["r", "r", "r", "r"], "u00": ["g", "g", "g", "g", "r", "g", "g", "g", "g"], "u20": ["g", "g", "g", "g", "g", "g"], "u30": ["g", "g", "g", "g", "r", "g", "g", "g"], "u31": ["g", "g", "g", "g", "r", "g", "g", "g"], "u32": ["g", "g", "g", "g", "g", "g", "g", "r"], "u60": ["g", "g", "g", "g", "g", "g", "g", "g", "r"]} \ No newline at end of file diff --git a/Results/sn_1704419400.add.xml b/Results/sn_1704419400.add.xml index f275d3679..0591ccb48 100644 --- a/Results/sn_1704419400.add.xml +++ b/Results/sn_1704419400.add.xml @@ -1,5 +1,5 @@ - + @@ -44,7 +44,7 @@ - + @@ -54,7 +54,7 @@ - + @@ -69,7 +69,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -137,52 +137,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -227,7 +203,7 @@ - + @@ -285,130 +261,142 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + + + - - + + + + - - + + + + - - + + + + - - + + + + - - + + + + - + @@ -418,7 +406,7 @@ - + @@ -433,7 +421,7 @@ - + @@ -448,52 +436,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - + + - - + + - - + + - - + + - + - + @@ -538,7 +502,7 @@ - + @@ -583,7 +547,7 @@ - + @@ -628,7 +592,7 @@ - + diff --git a/Scripts/__pycache__/generate_signals.cpython-38.pyc b/Scripts/__pycache__/generate_signals.cpython-38.pyc index 2b7ad65bc..ad0fa8a2b 100644 Binary files a/Scripts/__pycache__/generate_signals.cpython-38.pyc and b/Scripts/__pycache__/generate_signals.cpython-38.pyc differ diff --git a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc index c3f9fb62a..7e8415151 100644 Binary files a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc and b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc differ diff --git a/Scripts/preprocess_daily.py b/Scripts/preprocess_daily.py index f8e6a0a2f..ad8ccbbcb 100644 --- a/Scripts/preprocess_daily.py +++ b/Scripts/preprocess_daily.py @@ -752,7 +752,6 @@ class DailyPreprocessor(): self.matching = self.matching[['inter_no', 'node_id', 'move_no', 'inc_edge_id', 'out_edge_id', 'state']] # assign signals on match6 - self.match6 = self.match6.reset_index(drop=True) self.match6['init_state'] = self.match6['node_id'].map(self.node2init) self.match6['state'] = self.match6['init_state'].map(lambda x:''.join(x)) @@ -781,7 +780,7 @@ class DailyPreprocessor(): self.match6 = self.match6.reset_index(drop=True) self.match6 = self.match6[['inter_no', 'node_id', 'phase_no', 'ring_type', 'move_no', 'inc_edge_id', 'out_edge_id', 'state']] self.match6.to_csv(os.path.join(self.path_intermediates, 'match6.csv')) - self.matching.to_csv(os.path.join(self.path_intermediates, 'matching.csv')) + self.matching.to_csv(os.path.join(self.path_intermediates, 'matching.csv'), index=0) print('2-3. 직진 및 좌회전(G)을 배정했습니다.') uid2uindex = {}