{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "import numpy as np\n", "import sys\n", "sys.path.append('../../Scripts')\n", "from preprocess_daily import DailyPreprocessor\n", "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, "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", "2. 중간산출물을 생성합니다.\n", "2-1. 매칭 테이블들을 생성했습니다.\n", "2-2. 비보호우회전(g)을 배정했습니다.\n", "2-3. 직진 및 좌회전(G)을 배정했습니다.\n", "2-2. node2num_cycles.json를 저장했습니다.\n", "3. 이슈사항을 저장합니다.\n" ] } ], "source": [ "self = DailyPreprocessor()\n", "self.main()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "self." ] }, { "cell_type": "code", "execution_count": 3, "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", "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angle
01751A8179000
11751B4001180
21752A7001090
31752B3179270
41753A6090270
\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle out_angle\n", "0 175 1 A 8 남 북 179 000\n", "1 175 1 B 4 북 남 001 180\n", "2 175 2 A 7 북 동 001 090\n", "3 175 2 B 3 남 서 179 270\n", "4 175 3 A 6 동 서 090 270" ] }, "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", "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angleinc_edge_idout_edge_idnode_id
01751A8179000-571542797_02571500487_01i0
11751B4001180-571500487_01571542797_02i0
21752A7001090-571500487_01571545870_01i0
31752B3179270-571542797_02571510153_01i0
41753A6090270571545870_02571510153_01i0
\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", "\n", " out_angle inc_edge_id out_edge_id node_id \n", "0 000 -571542797_02 571500487_01 i0 \n", "1 180 -571500487_01 571542797_02 i0 \n", "2 090 -571500487_01 571545870_01 i0 \n", "3 270 -571542797_02 571510153_01 i0 \n", "4 270 571545870_02 571510153_01 i0 " ] }, "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", "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstate
0175i01A8-571542797_02571500487_01grrrgrrrgGGGGrgrr
1175i01B4-571500487_01571542797_02gGGrgrrrgrrrrrgrr
2175i02A7-571500487_01571545870_01grrGgrrrgrrrrrgrr
3175i02B3-571542797_02571510153_01grrrgrrrgrrrrGgrr
4175i03A6571545870_02571510153_01grrrgGGrgrrrrrgrr
\n", "
" ], "text/plain": [ " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", "0 175 i0 1 A 8 -571542797_02 571500487_01 \n", "1 175 i0 1 B 4 -571500487_01 571542797_02 \n", "2 175 i0 2 A 7 -571500487_01 571545870_01 \n", "3 175 i0 2 B 3 -571542797_02 571510153_01 \n", "4 175 i0 3 A 6 571545870_02 571510153_01 \n", "\n", " state \n", "0 grrrgrrrgGGGGrgrr \n", "1 gGGrgrrrgrrrrrgrr \n", "2 grrGgrrrgrrrrrgrr \n", "3 grrrgrrrgrrrrGgrr \n", "4 grrrgGGrgrrrrrgrr " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(self.match4.head())\n", "display(self.match5.head())\n", "display(self.match6.head())" ] }, { "cell_type": "code", "execution_count": 18, "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", " \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", " \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", " \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", " \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", " \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", " \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", " \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", "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angleinc_edge_idout_edge_idnode_id
0FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
1FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
3FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
4FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
5FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
6FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
7FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
8FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
9FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
10FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
11FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
12FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
13FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
14FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
15FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
16FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
17FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
18FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
19FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
20FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
21FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
22FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
23FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
24FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
25FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
26FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
27FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
28FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
29FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
30FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
31FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
32FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
33FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
34FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
35FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
36FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
37FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
38FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
39FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
40FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
41FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
42FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
43FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
44FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
45FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
46FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
47FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
48FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
49FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
50FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
51FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
52FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
53FalseFalseFalseFalseTrueTrueTrueTrueTrueTrueFalse
54FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
55FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
56FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
57FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
58FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
59FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", "0 False False False False False False False \n", "1 False False False False False False False \n", "2 False False False False False False False \n", "3 False False False False False False False \n", "4 False False False False False False False \n", "5 False False False False False False False \n", "6 False False False False False False False \n", "7 False False False False False False False \n", "8 False False False False False False False \n", "9 False False False False False False False \n", "10 False False False False False False False \n", "11 False False False False False False False \n", "12 False False False False False False False \n", "13 False False False False True True True \n", "14 False False False False False False False \n", "15 False False False False False False False \n", "16 False False False False False False False \n", "17 False False False False False False False \n", "18 False False False False True True True \n", "19 False False False False True True True \n", "20 False False False False False False False \n", "21 False False False False False False False \n", "22 False False False False False False False \n", "23 False False False False False False False \n", "24 False False False False False False False \n", "25 False False False False False False False \n", "26 False False False False False False False \n", "27 False False False False False False False \n", "28 False False False False False False False \n", "29 False False False False False False False \n", "30 False False False False False False False \n", "31 False False False False False False False \n", "32 False False False False False False False \n", "33 False False False False False False False \n", "34 False False False False False False False \n", "35 False False False False False False False \n", "36 False False False False False False False \n", "37 False False False False False False False \n", "38 False False False False False False False \n", "39 False False False False False False False \n", "40 False False False False False False False \n", "41 False False False False False False False \n", "42 False False False False True True True \n", "43 False False False False True True True \n", "44 False False False False False False False \n", "45 False False False False False False False \n", "46 False False False False True True True \n", "47 False False False False True True True \n", "48 False False False False False False False \n", "49 False False False False False False False \n", "50 False False False False True True True \n", "51 False False False False True True True \n", "52 False False False False False False False \n", "53 False False False False True True True \n", "54 False False False False False False False \n", "55 False False False False False False False \n", "56 False False False False False False False \n", "57 False False False False False False False \n", "58 False False False False False False False \n", "59 False False False False False False False \n", "\n", " out_angle inc_edge_id out_edge_id node_id \n", "0 False False False False \n", "1 False False False False \n", "2 False False False False \n", "3 False False False False \n", "4 False False False False \n", "5 False False False False \n", "6 False False False False \n", "7 False False False False \n", "8 False False False False \n", "9 False False False False \n", "10 False False False False \n", "11 False False False False \n", "12 False False False False \n", "13 True True True False \n", "14 False False False False \n", "15 False False False False \n", "16 False False False False \n", "17 False False False False \n", "18 True True True False \n", "19 True True True False \n", "20 False False False False \n", "21 False False False False \n", "22 False False False False \n", "23 False False False False \n", "24 False False False False \n", "25 False False False False \n", "26 False False False False \n", "27 False False False False \n", "28 False False False False \n", "29 False False False False \n", "30 False False False False \n", "31 False False False False \n", "32 False False False False \n", "33 False False False False \n", "34 False False False False \n", "35 False False False False \n", "36 False False False False \n", "37 False False False False \n", "38 False False False False \n", "39 False False False False \n", "40 False False False False \n", "41 False False False False \n", "42 True True True False \n", "43 True True True False \n", "44 False False False False \n", "45 False False False False \n", "46 True True True False \n", "47 True True True False \n", "48 False False False False \n", "49 False False False False \n", "50 True True True False \n", "51 True True True False \n", "52 False False False False \n", "53 True True True False \n", "54 False False False False \n", "55 False False False False \n", "56 False False False False \n", "57 False False False False \n", "58 False False False False \n", "59 False False False False " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.match5.dropna([''])" ] }, { "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", "
parent_idchild_idhead_edge_idinc_edge_idout_edge_id
0i0u00-571500487_01571500487_02571500487_01.32
1i2u20571542811_02571542810_01.51571542810_02
2i3u30571556450_02571556452_01571556452_02
3i3u31-571500475_01571500475_02571500475_01.26
4i3u32571540303_02.21571540303_02-571540303_02
5i6u60571500535_02.18571500535_02-571500535_02
\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" ] }, "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", "
child_idcondition
0u00좌회전시
1u20보행신호시
2u30보행신호시
3u31보행신호시
4u32보행신호시
5u60좌회전시
\n", "
" ], "text/plain": [ " child_id condition\n", "0 u00 좌회전시\n", "1 u20 보행신호시\n", "2 u30 보행신호시\n", "3 u31 보행신호시\n", "4 u32 보행신호시\n", "5 u60 좌회전시" ] }, "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", "
parent_idchild_idhead_edge_idinc_edge_idout_edge_idcondition
0i0u00-571500487_01571500487_02571500487_01.32좌회전시
1i2u20571542811_02571542810_01.51571542810_02보행신호시
2i3u30571556450_02571556452_01571556452_02보행신호시
3i3u31-571500475_01571500475_02571500475_01.26보행신호시
4i3u32571540303_02.21571540303_02-571540303_02보행신호시
5i6u60571500535_02.18571500535_02-571500535_02좌회전시
\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", "\n", " condition \n", "0 좌회전시 \n", "1 보행신호시 \n", "2 보행신호시 \n", "3 보행신호시 \n", "4 보행신호시 \n", "5 좌회전시 " ] }, "execution_count": 5, "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" ] }, { "cell_type": "code", "execution_count": 10, "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" ] } ], "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" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "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" ] }, { "cell_type": "code", "execution_count": 51, "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" ] } ], "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()" ] }, { "cell_type": "code", "execution_count": null, "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`.'''" ] } ], "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 }