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 2c9db6cd5..aac4cd7c9 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 @@ -67,6 +67,7 @@ "1-2. 테이블들이 로드되었습니다.\n", "1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n", "1-4. 테이블들의 무결성 검사를 완료했습니다.\n", + "1-5. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n", "2. 중간산출물을 생성합니다.\n", "2-1. 매칭 테이블들을 생성했습니다.\n", "2-2. 비보호우회전(g)을 배정했습니다.\n", @@ -83,7 +84,16 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "self." + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -339,153 +349,104 @@ " \n", " \n", " inter_no\n", + " node_id\n", " phase_no\n", " ring_type\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", + " state\n", " \n", " \n", " \n", " \n", " 0\n", " 175\n", + " i0\n", " 1\n", " A\n", " 8\n", - " 남\n", - " 북\n", - " 179\n", - " 000\n", " -571542797_02\n", " 571500487_01\n", - " i0\n", + " grrrgrrrgGGGGrgrr\n", " \n", " \n", " 1\n", " 175\n", + " i0\n", " 1\n", " B\n", " 4\n", - " 북\n", - " 남\n", - " 001\n", - " 180\n", " -571500487_01\n", " 571542797_02\n", - " i0\n", + " gGGrgrrrgrrrrrgrr\n", " \n", " \n", " 2\n", " 175\n", + " i0\n", " 2\n", " A\n", " 7\n", - " 북\n", - " 동\n", - " 001\n", - " 090\n", " -571500487_01\n", " 571545870_01\n", - " i0\n", + " grrGgrrrgrrrrrgrr\n", " \n", " \n", " 3\n", " 175\n", + " i0\n", " 2\n", " B\n", " 3\n", - " 남\n", - " 서\n", - " 179\n", - " 270\n", " -571542797_02\n", " 571510153_01\n", - " i0\n", + " grrrgrrrgrrrrGgrr\n", " \n", " \n", " 4\n", " 175\n", + " i0\n", " 3\n", " A\n", " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", " 571545870_02\n", " 571510153_01\n", - " i0\n", + " grrrgGGrgrrrrrgrr\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", + " 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", - " 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 " + " state \n", + "0 grrrgrrrgGGGGrgrr \n", + "1 gGGrgrrrgrrrrrgrr \n", + "2 grrGgrrrgrrrrrgrr \n", + "3 grrrgrrrgrrrrGgrr \n", + "4 grrrgGGrgrrrrrgrr " ] }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n" - ] } ], "source": [ "display(self.match4.head())\n", "display(self.match5.head())\n", - "display(self.match6.head())\n", - "print((self.match5.head()==self.match6.head()).all().all())" - ] - }, - { - "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", - "2-1. 매칭 테이블들을 생성했습니다.\n" - ] - } - ], - "source": [ - "self.load_data()\n", - "self.get_matches()" + "display(self.match6.head())" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -524,989 +485,1257 @@ " \n", " \n", " \n", + " 0\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 1\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 2\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 4\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 5\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 6\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 7\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 8\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 9\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 10\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 11\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 12\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 13\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", + " \n", + " \n", + " 14\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 15\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 16\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 17\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 18\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", + " \n", + " \n", + " 19\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", + " \n", + " \n", + " 20\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 21\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 22\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 23\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 24\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 25\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 26\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 27\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 28\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 29\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 31\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 32\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 33\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 34\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 35\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 36\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 37\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 38\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", + " 39\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " \n", + " \n", " 40\n", - " 178\n", - " 2\n", - " A\n", - " 20\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 571542116_01\n", - " -571542116_02.96\n", - " c30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 41\n", - " 178\n", - " 2\n", - " B\n", - " 20\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 571542116_02.96\n", - " 571542116_02.164\n", - " c30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 42\n", - " 178\n", - " 3\n", - " A\n", - " 20\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 571542116_01\n", - " -571542116_02.96\n", - " c30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", " \n", " \n", " 43\n", - " 178\n", - " 3\n", - " B\n", - " 20\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 571542116_02.96\n", - " 571542116_02.164\n", - " c30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", " \n", " \n", " 44\n", - " 178\n", - " 4\n", - " A\n", - " 20\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 571542116_01\n", - " -571542116_02.96\n", - " c30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 45\n", - " 178\n", - " 4\n", - " B\n", - " 20\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 571542116_02.96\n", - " 571542116_02.164\n", - " c30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 46\n", - " 178\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " 571540304_02\n", - " 571556450_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", " \n", " \n", " 47\n", - " 178\n", - " 1\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " 571556450_02\n", - " 571540304_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", " \n", " \n", " 48\n", - " 178\n", - " 2\n", - " A\n", - " 7\n", - " 북\n", - " 동\n", - " 000\n", - " 090\n", - " 571556450_02\n", - " 571500475_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 49\n", - " 178\n", - " 2\n", - " B\n", - " 3\n", - " 남\n", - " 서\n", - " 180\n", - " 270\n", - " 571540304_02\n", - " 571540303_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 50\n", - " 178\n", - " 3\n", - " A\n", - " 5\n", - " 서\n", - " 북\n", - " 270\n", - " 000\n", - " 571540303_02.21\n", - " 571556450_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", " \n", " \n", " 51\n", - " 178\n", - " 3\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " 571540303_02.21\n", - " 571500475_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", " \n", " \n", " 52\n", - " 178\n", - " 4\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " -571500475_01\n", - " 571540303_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 53\n", - " 178\n", - " 4\n", - " B\n", - " 1\n", - " 동\n", - " 남\n", - " 090\n", - " 180\n", - " -571500475_01\n", - " 571540304_01\n", - " i3\n", + " False\n", + " False\n", + " False\n", + " False\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " True\n", + " False\n", " \n", " \n", " 54\n", - " 178\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " NaN\n", - " NaN\n", - " u30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 55\n", - " 178\n", - " 1\n", - " B\n", - " 4\n", - " 북\n", - " 남\n", - " 000\n", - " 180\n", - " NaN\n", - " NaN\n", - " u30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 56\n", - " 178\n", - " 2\n", - " A\n", - " 7\n", - " 북\n", - " 동\n", - " 000\n", - " 090\n", - " NaN\n", - " NaN\n", - " u30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 57\n", - " 178\n", - " 2\n", - " B\n", - " 3\n", - " 남\n", - " 서\n", - " 180\n", - " 270\n", - " NaN\n", - " NaN\n", - " u30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 58\n", - " 178\n", - " 3\n", - " A\n", - " 5\n", - " 서\n", - " 북\n", - " 270\n", - " 000\n", - " NaN\n", - " NaN\n", - " u30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", " \n", " 59\n", - " 178\n", - " 3\n", - " B\n", - " 2\n", - " 서\n", - " 동\n", - " 270\n", - " 090\n", - " NaN\n", - " NaN\n", - " u30\n", - " \n", - " \n", - " 60\n", - " 178\n", - " 4\n", - " A\n", - " 6\n", - " 동\n", - " 서\n", - " 090\n", - " 270\n", - " 571556452_01\n", - " 571556452_02\n", - " u30\n", - " \n", - " \n", - " 61\n", - " 178\n", - " 4\n", - " B\n", - " 1\n", - " 동\n", - " 남\n", - " 090\n", - " 180\n", - " NaN\n", - " NaN\n", - " u30\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", + " False\n", " \n", - " \n", - " 62\n", - " 178\n", - " 1\n", - " A\n", - " 8\n", - " 남\n", - " 북\n", - " 180\n", - " 000\n", - " 571500475_02\n", - " 571500475_01.26\n", - " u31\n", + " \n", + "\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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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
631781B40i0u00000180NaNNaNu31좌회전시571500487_02571500487_01.32
641782A71i2u20000090NaNNaNu31
651782B3180270NaNNaNu31보행신호시571542810_01.51571542810_02
661783A52i3u30270000NaNNaNu31
671783B2270090NaNNaNu31보행신호시571556452_01571556452_02
681784A6090270NaNNaN3i3u31
691784B1090180NaNNaNu31보행신호시571500475_02571500475_01.26
701781A8180000NaNNaN4i3u32
711781B4000180보행신호시571540303_02-571540303_02u32
721782A7000090NaNNaNu32
731782B3180270NaNNaNu32
741783A5270000NaNNaNu32
751783B2270090NaNNaNu32
761784A6090270NaNNaNu32
771784B1090180NaNNaNu32
782011A8180000-571500569_01571500583_02i8
792011B3180270-571500569_01571500618_01i8
802012A5270000571500618_02571500583_02i8
812012B2270090571500618_02571500617_01i8
822013A6090270571500617_02571500618_01i8
832013B2270090571500618_02571500617_01i8
842014A65i6u60090270571500617_02571500618_01i8
852014B1090180571500617_02571500569_01i8
862015A7000090571500583_01571500617_01i8
872015B4000180571500583_01571500569_01i8좌회전시571500535_02-571500535_02
882021A6090270571510152_02-571510152_01i9
\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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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
892021B2270090571510152_01571510152_01.65i90i0u00-571500487_01571500487_02571500487_01.32
902022A17NaNNaNNaNNaNNaNNaNi9
912022B18NaNNaNNaNNaNNaNNaNi9
922061A8180000-571511538_02571542073_02i71i2u20571542811_02571542810_01.51571542810_02
932061B4000180571542073_01571511538_02i72i3u30571556450_02571556452_01571556452_02
942062A17NaNNaNNaNNaNNaNNaNi7
952062B18NaNNaNNaNNaNNaNNaNi7
962063A8180000-571511538_02571542073_02i73i3u31-571500475_01571500475_02571500475_01.26
972063B4000180571542073_01571511538_02i74i3u32571540303_02.21571540303_02-571540303_02
982064A17NaNNaNNaNNaNNaNNaNi7
992064B18NaNNaNNaNNaNNaNNaNi75i6u60571500535_02.18571500535_02-571500535_02
\n", "
" ], "text/plain": [ - " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", - "40 178 2 A 20 NaN NaN NaN \n", - "41 178 2 B 20 NaN NaN NaN \n", - "42 178 3 A 20 NaN NaN NaN \n", - "43 178 3 B 20 NaN NaN NaN \n", - "44 178 4 A 20 NaN NaN NaN \n", - "45 178 4 B 20 NaN NaN NaN \n", - "46 178 1 A 8 남 북 180 \n", - "47 178 1 B 4 북 남 000 \n", - "48 178 2 A 7 북 동 000 \n", - "49 178 2 B 3 남 서 180 \n", - "50 178 3 A 5 서 북 270 \n", - "51 178 3 B 2 서 동 270 \n", - "52 178 4 A 6 동 서 090 \n", - "53 178 4 B 1 동 남 090 \n", - "54 178 1 A 8 남 북 180 \n", - "55 178 1 B 4 북 남 000 \n", - "56 178 2 A 7 북 동 000 \n", - "57 178 2 B 3 남 서 180 \n", - "58 178 3 A 5 서 북 270 \n", - "59 178 3 B 2 서 동 270 \n", - "60 178 4 A 6 동 서 090 \n", - "61 178 4 B 1 동 남 090 \n", - "62 178 1 A 8 남 북 180 \n", - "63 178 1 B 4 북 남 000 \n", - "64 178 2 A 7 북 동 000 \n", - "65 178 2 B 3 남 서 180 \n", - "66 178 3 A 5 서 북 270 \n", - "67 178 3 B 2 서 동 270 \n", - "68 178 4 A 6 동 서 090 \n", - "69 178 4 B 1 동 남 090 \n", - "70 178 1 A 8 남 북 180 \n", - "71 178 1 B 4 북 남 000 \n", - "72 178 2 A 7 북 동 000 \n", - "73 178 2 B 3 남 서 180 \n", - "74 178 3 A 5 서 북 270 \n", - "75 178 3 B 2 서 동 270 \n", - "76 178 4 A 6 동 서 090 \n", - "77 178 4 B 1 동 남 090 \n", - "78 201 1 A 8 남 북 180 \n", - "79 201 1 B 3 남 서 180 \n", - "80 201 2 A 5 서 북 270 \n", - "81 201 2 B 2 서 동 270 \n", - "82 201 3 A 6 동 서 090 \n", - "83 201 3 B 2 서 동 270 \n", - "84 201 4 A 6 동 서 090 \n", - "85 201 4 B 1 동 남 090 \n", - "86 201 5 A 7 북 동 000 \n", - "87 201 5 B 4 북 남 000 \n", - "88 202 1 A 6 동 서 090 \n", - "89 202 1 B 2 서 동 270 \n", - "90 202 2 A 17 NaN NaN NaN \n", - "91 202 2 B 18 NaN NaN NaN \n", - "92 206 1 A 8 남 북 180 \n", - "93 206 1 B 4 북 남 000 \n", - "94 206 2 A 17 NaN NaN NaN \n", - "95 206 2 B 18 NaN NaN NaN \n", - "96 206 3 A 8 남 북 180 \n", - "97 206 3 B 4 북 남 000 \n", - "98 206 4 A 17 NaN NaN NaN \n", - "99 206 4 B 18 NaN NaN NaN \n", - "\n", - " out_angle inc_edge_id out_edge_id node_id \n", - "40 NaN 571542116_01 -571542116_02.96 c30 \n", - "41 NaN 571542116_02.96 571542116_02.164 c30 \n", - "42 NaN 571542116_01 -571542116_02.96 c30 \n", - "43 NaN 571542116_02.96 571542116_02.164 c30 \n", - "44 NaN 571542116_01 -571542116_02.96 c30 \n", - "45 NaN 571542116_02.96 571542116_02.164 c30 \n", - "46 000 571540304_02 571556450_01 i3 \n", - "47 180 571556450_02 571540304_01 i3 \n", - "48 090 571556450_02 571500475_01 i3 \n", - "49 270 571540304_02 571540303_01 i3 \n", - "50 000 571540303_02.21 571556450_01 i3 \n", - "51 090 571540303_02.21 571500475_01 i3 \n", - "52 270 -571500475_01 571540303_01 i3 \n", - "53 180 -571500475_01 571540304_01 i3 \n", - "54 000 NaN NaN u30 \n", - "55 180 NaN NaN u30 \n", - "56 090 NaN NaN u30 \n", - "57 270 NaN NaN u30 \n", - "58 000 NaN NaN u30 \n", - "59 090 NaN NaN u30 \n", - "60 270 571556452_01 571556452_02 u30 \n", - "61 180 NaN NaN u30 \n", - "62 000 571500475_02 571500475_01.26 u31 \n", - "63 180 NaN NaN u31 \n", - "64 090 NaN NaN u31 \n", - "65 270 NaN NaN u31 \n", - "66 000 NaN NaN u31 \n", - "67 090 NaN NaN u31 \n", - "68 270 NaN NaN u31 \n", - "69 180 NaN NaN u31 \n", - "70 000 NaN NaN u32 \n", - "71 180 571540303_02 -571540303_02 u32 \n", - "72 090 NaN NaN u32 \n", - "73 270 NaN NaN u32 \n", - "74 000 NaN NaN u32 \n", - "75 090 NaN NaN u32 \n", - "76 270 NaN NaN u32 \n", - "77 180 NaN NaN u32 \n", - "78 000 -571500569_01 571500583_02 i8 \n", - "79 270 -571500569_01 571500618_01 i8 \n", - "80 000 571500618_02 571500583_02 i8 \n", - "81 090 571500618_02 571500617_01 i8 \n", - "82 270 571500617_02 571500618_01 i8 \n", - "83 090 571500618_02 571500617_01 i8 \n", - "84 270 571500617_02 571500618_01 i8 \n", - "85 180 571500617_02 571500569_01 i8 \n", - "86 090 571500583_01 571500617_01 i8 \n", - "87 180 571500583_01 571500569_01 i8 \n", - "88 270 571510152_02 -571510152_01 i9 \n", - "89 090 571510152_01 571510152_01.65 i9 \n", - "90 NaN NaN NaN i9 \n", - "91 NaN NaN NaN i9 \n", - "92 000 -571511538_02 571542073_02 i7 \n", - "93 180 571542073_01 571511538_02 i7 \n", - "94 NaN NaN NaN i7 \n", - "95 NaN NaN NaN i7 \n", - "96 000 -571511538_02 571542073_02 i7 \n", - "97 180 571542073_01 571511538_02 i7 \n", - "98 NaN NaN NaN i7 \n", - "99 NaN NaN NaN i7 " + " 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" ] }, - "execution_count": 5, "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "self.match6[40:100]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ + "output_type": "display_data" + }, { "data": { "text/html": [ @@ -1528,168 +1757,694 @@ " \n", " \n", " \n", - " inter_no\n", - " move_no\n", - " inc_dire\n", - " out_dire\n", - " inc_edge_id\n", - " out_edge_id\n", - " node_id\n", + " child_id\n", + " condition\n", " \n", " \n", " \n", " \n", " 0\n", - " 175\n", - " 1\n", - " 동\n", - " 남\n", - " 571545870_02\n", - " 571542797_02\n", - " i0\n", + " u00\n", + " 좌회전시\n", " \n", " \n", " 1\n", - " 175\n", - " 2\n", - " 서\n", - " 동\n", - " 571510153_02\n", - " 571545870_01\n", - " i0\n", + " u20\n", + " 보행신호시\n", " \n", " \n", " 2\n", - " 175\n", - " 3\n", - " 남\n", - " 서\n", - " -571542797_02\n", - " 571510153_01\n", - " i0\n", + " u30\n", + " 보행신호시\n", " \n", " \n", " 3\n", - " 175\n", - " 4\n", - " 북\n", - " 남\n", - " -571500487_01\n", - " 571542797_02\n", - " i0\n", + " u31\n", + " 보행신호시\n", " \n", " \n", " 4\n", - " 175\n", - " 5\n", - " 서\n", - " 북\n", - " 571510153_02\n", - " 571500487_01\n", - " i0\n", + " u32\n", + " 보행신호시\n", + " \n", + " \n", + " 5\n", + " u60\n", + " 좌회전시\n", + " \n", + " \n", + "\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", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \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좌회전시
7121021571511538_02.121571500535_01i61i2u20571542811_02571542810_01.51571542810_02보행신호시
7221021571500535_02.18571500585_01i62i3u30571556450_02571556452_01571556452_02보행신호시
7321021571500585_02571542115_01i63i3u31-571500475_01571500475_02571500475_01.26보행신호시
7421021-571542115_01571511538_01i64i3u32571540303_02.21571540303_02-571540303_02보행신호시
7521055i6u60571500535_02.18571500535_02-571500535_02u60좌회전시
\n", - "

76 rows × 7 columns

\n", "
" ], "text/plain": [ - " inter_no move_no inc_dire out_dire inc_edge_id out_edge_id \\\n", - "0 175 1 동 남 571545870_02 571542797_02 \n", - "1 175 2 서 동 571510153_02 571545870_01 \n", - "2 175 3 남 서 -571542797_02 571510153_01 \n", - "3 175 4 북 남 -571500487_01 571542797_02 \n", - "4 175 5 서 북 571510153_02 571500487_01 \n", - ".. ... ... ... ... ... ... \n", - "71 210 21 북 서 571511538_02.121 571500535_01 \n", - "72 210 21 서 남 571500535_02.18 571500585_01 \n", - "73 210 21 남 동 571500585_02 571542115_01 \n", - "74 210 21 동 북 -571542115_01 571511538_01 \n", - "75 210 5 서 북 571500535_02 -571500535_02 \n", + " 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", - " node_id \n", - "0 i0 \n", - "1 i0 \n", - "2 i0 \n", - "3 i0 \n", - "4 i0 \n", - ".. ... \n", - "71 i6 \n", - "72 i6 \n", - "73 i6 \n", - "74 i6 \n", - "75 u60 \n", - "\n", - "[76 rows x 7 columns]" + " condition \n", + "0 좌회전시 \n", + "1 보행신호시 \n", + "2 보행신호시 \n", + "3 보행신호시 \n", + "4 보행신호시 \n", + "5 좌회전시 " ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "self.matching" + "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`.'''" ] } ], diff --git a/Data/tables/uturn.csv b/Data/tables/uturn.csv index e45af0cda..f5c589f18 100644 --- a/Data/tables/uturn.csv +++ b/Data/tables/uturn.csv @@ -1,4 +1,4 @@ -parent_id,child_id,head_edge_id,from_edge_id,to_edge_id +parent_id,child_id,head_edge_id,inc_edge_id,out_edge_id i0,u00,-571500487_01,571500487_02,571500487_01.32 i2,u20,571542811_02,571542810_01.51,571542810_02 i3,u30,571556450_02,571556452_01,571556452_02 diff --git a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc index 1021878b8..95e89beb3 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 aea0a228d..86c47b9fa 100644 --- a/Scripts/preprocess_daily.py +++ b/Scripts/preprocess_daily.py @@ -60,6 +60,8 @@ class DailyPreprocessor(): self.plan = pd.read_csv(os.path.join(self.path_tables, 'plan.csv'), dtype=loading_dtype) self.inter_node = pd.read_csv(os.path.join(self.path_tables, 'inter_node.csv'), dtype=loading_dtype) self.uturn = pd.read_csv(os.path.join(self.path_tables, 'child_uturn.csv'), dtype=loading_dtype) + self.u_turn = pd.read_csv(os.path.join(self.path_tables, 'uturn.csv'), dtype=loading_dtype) + self.u_condition= pd.read_csv(os.path.join(self.path_tables, 'u_condition.csv'), dtype=loading_dtype) self.coord = pd.read_csv(os.path.join(self.path_tables, 'child_coord.csv'), dtype=loading_dtype) self.nema = pd.read_csv(os.path.join(self.path_tables, 'nema.csv'), encoding='cp949', dtype=loading_dtype)