diff --git a/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb b/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb
index 34e4cd3cd..081c50ced 100644
--- a/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb
+++ b/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -15,78 +15,68 @@
"from generate_signals import SignalGenerator"
]
},
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "비보호좌회전, 신호우회전, 유턴\n",
- "\n",
- "줄임말 목록\n",
- "- `i` : 교차로번호, `inter_no`\n",
- "- `f` : 진입, from, `inc_edge_id`\n",
- "- `t` : 진출, to, `out_edge_id`\n",
- "- `vec` : 방향벡터, unit vector (`np.array([0.6, 0.8])`)\n",
- "- `dire` : 방위, direction (동, 서, 남, 북, 북동, 북서, 남동, 남서)\n",
- "- `rvec` : 정방향 방향벡터, unit vector to the right direction (`np.array([0,1])`)\n",
- "\n",
- "필요한 객체들 목록\n",
- "\n",
- "- `inter2dire2rvec` : `inter_no` $\\mapsto$ `dire2rvec`\n",
- " - `dire2rvec` : `dire` $\\mapsto$ `rvec`\n",
- "- `inter2incs` : `inter_no` $\\mapsto$ `inc_edge_ids`\n",
- "- `inter2outs` : `inter_no` $\\mapsto$ `out_edge_ids`\n",
- "- `inter2inc2dire` : `inter_no` $\\mapsto$ `int2dire`\n",
- " - `inc2dire` : `out_edge_id` $\\mapsto$ `dire`\n",
- "- `inter2out2dire` : `inter_no` $\\mapsto$ `out2dire`\n",
- " - `out2dire` : `inc_edge_id` $\\mapsto$ `dire`\n",
- "- `inter2inc2vec` : `inter_no` $\\mapsto$ `int2vec`\n",
- " - `inc2vec` : `out_edge_id` $\\mapsto$ `vec`\n",
- "- `inter2out2vec` : `inter_no` $\\mapsto$ `out2vec`\n",
- " - `out2vec` : `inc_edge_id` $\\mapsto$ `vec`\n",
- "\n",
- "좌회전 판단\n",
- "\n",
- "Given `inter_no`, `inc_edge_id` and `out_edge_id`, we have `inc_vec = inter2inc2vec[inter_no][inc_edge_id]` and `out_vec = inter2out2vec[inter_no][out_edge_id]`.\n",
- "Rotate `inc_vec` by 90, 180 and 270 degrees clockwise, to define \n",
- "`out_vec_left`, `out_vec_straight` and `out_vec_right`.\n",
- "Define `out_vecs={'right':out_vec_left, 'straight':out_vec_straight, 'right':out_vec_right}`.\n",
- "Select the key that maximize the similarity of the corresponding value of the key and `inc_vec`."
- ]
- },
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "1. 데이터를 로드합니다.\n",
+ "1. 데이터를 준비합니다.\n",
"1-1. 네트워크가 로드되었습니다.\n",
"1-2. 테이블들이 로드되었습니다.\n",
- "1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n",
- "1-4. 테이블들의 무결성 검사를 완료했습니다.\n",
- "1-5. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n",
- "2. 중간산출물을 생성합니다.\n",
- "2-1. 매칭 테이블들을 생성했습니다.\n",
- "2-2. 비보호우회전(g)을 배정했습니다.\n",
- "2-3. 직진 및 좌회전(G)을 배정했습니다.\n",
- "2-2. node2num_cycles.json를 저장했습니다.\n",
- "3. 이슈사항을 저장합니다.\n"
+ "2. 신호이력 테이블을 변환합니다.\n",
+ "3. 이동류정보 테이블을 변환합니다.\n",
+ "4. 통합 테이블을 생성합니다.\n",
+ "5. 신호를 생성합니다.\n",
+ "6. 이슈사항을 저장합니다.\n",
+ "(1) 0:00:00.068803\n",
+ "(1-1) 0:00:00.007337\n",
+ "(1-2) 0:00:00.033005\n",
+ "(1-3) 0:00:00\n",
+ "(1-4) 0:00:00\n",
+ "(1-5) 0:00:00.028461\n",
+ "(2) 0:00:00.369125\n",
+ "(2-1) 0:00:00.074089\n",
+ "(2-2) 0:00:00.244743\n",
+ "(2-3) 0:00:00.050293\n",
+ "(3) 0:00:00.580612\n",
+ "(3-1) 0:00:00.559406\n",
+ "(3-2) 0:00:00.021206\n",
+ "(4) 0:00:00.186527\n",
+ "(4-1) 0:00:00.002003\n",
+ "(4-2) 0:00:00.014893\n",
+ "(4-2) 0:00:00.169631\n",
+ "(5) 0:00:00.715907\n",
+ "(5-1) 0:00:00.013178\n",
+ "(5-2) 0:00:00.696977\n",
+ "(5-3) 0:00:00.005752\n",
+ "(6) 0:00:00.001000\n",
+ "total time : 0:00:01.921974\n"
]
}
],
"source": [
- "self = DailyPreprocessor()\n",
+ "self = SignalGenerator()\n",
"self.main()"
]
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 27,
"metadata": {},
"outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1. 데이터를 준비합니다.\n",
+ "1-1. 네트워크가 로드되었습니다.\n",
+ "1-2. 테이블들이 로드되었습니다.\n"
+ ]
+ },
{
"data": {
"text/html": [
@@ -108,1339 +98,200 @@
" \n",
" \n",
" \n",
" \n",
" \n",
+ " Unnamed: 0 \n",
" inter_no \n",
- " phase_no \n",
- " ring_type \n",
+ " node_id \n",
" move_no \n",
- " inc_dire \n",
- " out_dire \n",
- " inc_angle \n",
- " out_angle \n",
" inc_edge_id \n",
" out_edge_id \n",
- " node_id \n",
- " turn_type \n",
+ " state \n",
"
\n", - " | parent_id | \n", - "child_id | \n", - "direction | \n", - "condition | \n", - "inc_edge_id | \n", - "out_edge_id | \n", - "
---|---|---|---|---|---|---|
0 | \n", - "i0 | \n", - "u00 | \n", - "북 | \n", - "좌회전시 | \n", - "571500487_02 | \n", - "571500487_01.32 | \n", - "
1 | \n", - "i2 | \n", - "u20 | \n", - "북 | \n", - "보행신호시 | \n", - "571542810_01.51 | \n", - "571542810_02 | \n", - "
2 | \n", - "i3 | \n", - "u30 | \n", - "북 | \n", - "보행신호시 | \n", - "571556452_01 | \n", - "571556452_02 | \n", - "
3 | \n", - "i3 | \n", - "u31 | \n", - "동 | \n", - "보행신호시 | \n", - "571500475_02 | \n", - "571500475_01.26 | \n", - "
4 | \n", - "i3 | \n", - "u32 | \n", - "서 | \n", - "보행신호시 | \n", - "571540303_02 | \n", - "-571540303_02 | \n", - "
5 | \n", - "i6 | \n", - "u60 | \n", - "서 | \n", - "좌회전시 | \n", - "571500535_02 | \n", - "-571500535_02 | \n", - "
\n", - " | parent_id | \n", - "child_id | \n", - "head_edge_id | \n", - "inc_edge_id | \n", - "out_edge_id | \n", - "||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", - "i0 | \n", - "u00 | \n", - "-571500487_01 | \n", - "571500487_02 | \n", - "571500487_01.32 | \n", + "571510153_02 | \n", + "571500487_01 | \n", + "grrrgrrrgrrrrrgrG | \n", "|||||
1 | \n", - "i2 | \n", - "u20 | \n", - "571542811_02 | \n", - "571542810_01.51 | \n", - "571542810_02 | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", "
2 | \n", - "i3 | \n", - "u30 | \n", - "571556450_02 | \n", - "571556452_01 | \n", - "571556452_02 | \n", + "67 | \n", + "67 | \n", + "210 | \n", + "i6 | \n", + "21 | \n", + "571511538_02.121 | \n", + "571500535_01 | \n", + "grrrgrrrrgrrgrrr | \n", "
3 | \n", - "i3 | \n", - "u31 | \n", - "-571500475_01 | \n", - "571500475_02 | \n", - "571500475_01.26 | \n", + "68 | \n", + "68 | \n", + "210 | \n", + "i6 | \n", + "21 | \n", + "571500535_02.18 | \n", + "571500585_01 | \n", + "grrrgrrrrgrrgrrr | \n", "
4 | \n", - "i3 | \n", - "u32 | \n", - "571540303_02.21 | \n", - "571540303_02 | \n", - "-571540303_02 | \n", + "69 | \n", + "69 | \n", + "210 | \n", + "i6 | \n", + "21 | \n", + "571500585_02 | \n", + "571542115_01 | \n", + "grrrgrrrrgrrgrrr | \n", "
5 | \n", + "70 | \n", + "70 | \n", + "210 | \n", "i6 | \n", + "21 | \n", + "-571542115_01 | \n", + "571511538_01 | \n", + "grrrgrrrrgrrgrrr | \n", + "|||||
71 | \n", + "71 | \n", + "210 | \n", "u60 | \n", - "571500535_02.18 | \n", + "5 | \n", "571500535_02 | \n", "-571500535_02 | \n", + "ggggggggG | \n", "
72 rows × 7 columns
\n", "192 rows × 8 columns
\n", "" ], "text/plain": [ - " child_id condition\n", - "0 u00 좌회전시\n", - "1 u20 보행신호시\n", - "2 u30 보행신호시\n", - "3 u31 보행신호시\n", - "4 u32 보행신호시\n", - "5 u60 좌회전시" + " inter_no start_unix phas_A phas_B move_A move_B duration node_id\n", + "6 176 1704418870 1 1 8 4 37 i1\n", + "7 176 1704418870 2 2 8 3 103 i1\n", + "8 176 1704418870 3 3 5 18 40 i1\n", + "9 176 1704419051 1 1 8 4 37 i1\n", + "10 176 1704419051 2 2 8 3 103 i1\n", + ".. ... ... ... ... ... ... ... ...\n", + "245 210 1704419810 1 1 6 18 28 i6\n", + "246 210 1704419810 1 2 6 2 15 i6\n", + "247 210 1704419810 2 2 5 2 43 i6\n", + "248 210 1704419810 3 3 7 4 70 i6\n", + "249 210 1704419810 4 4 8 3 24 i6\n", + "\n", + "[192 rows x 8 columns]" ] }, + "execution_count": 16, "metadata": {}, - "output_type": "display_data" - }, + "output_type": "execute_result" + } + ], + "source": [ + "self.histid = self.movedur.copy()\n", + "self.histid['node_id'] = self.histid['inter_no'].map(self.inter2node)\n", + "histid_start = self.present_time - 600\n", + "self.histid = self.histid[self.histid.start_unix > histid_start]\n", + "\n", + "self.histid" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -1535,608 +507,303 @@ " \n", "72 rows × 7 columns
\n", "" ], "text/plain": [ - " parent_id child_id head_edge_id inc_edge_id out_edge_id \\\n", - "0 i0 u00 -571500487_01 571500487_02 571500487_01.32 \n", - "1 i2 u20 571542811_02 571542810_01.51 571542810_02 \n", - "2 i3 u30 571556450_02 571556452_01 571556452_02 \n", - "3 i3 u31 -571500475_01 571500475_02 571500475_01.26 \n", - "4 i3 u32 571540303_02.21 571540303_02 -571540303_02 \n", - "5 i6 u60 571500535_02.18 571500535_02 -571500535_02 \n", + " Unnamed: 0 inter_no node_id move_no inc_edge_id out_edge_id \\\n", + "0 0 175 i0 1 571545870_02 571542797_02 \n", + "1 1 175 i0 2 571510153_02 571545870_01 \n", + "2 2 175 i0 3 -571542797_02 571510153_01 \n", + "3 3 175 i0 4 -571500487_01 571542797_02 \n", + "4 4 175 i0 5 571510153_02 571500487_01 \n", + ".. ... ... ... ... ... ... \n", + "67 67 210 i6 21 571511538_02.121 571500535_01 \n", + "68 68 210 i6 21 571500535_02.18 571500585_01 \n", + "69 69 210 i6 21 571500585_02 571542115_01 \n", + "70 70 210 i6 21 -571542115_01 571511538_01 \n", + "71 71 210 u60 5 571500535_02 -571500535_02 \n", "\n", - " condition \n", - "0 좌회전시 \n", - "1 보행신호시 \n", - "2 보행신호시 \n", - "3 보행신호시 \n", - "4 보행신호시 \n", - "5 좌회전시 " + " state \n", + "0 grrrgrrGgrrrrrgrr \n", + "1 grrrgrrrgrrrrrgGr \n", + "2 grrrgrrrgrrrrGgrr \n", + "3 gGGrgrrrgrrrrrgrr \n", + "4 grrrgrrrgrrrrrgrG \n", + ".. ... \n", + "67 grrrgrrrrgrrgrrr \n", + "68 grrrgrrrrgrrgrrr \n", + "69 grrrgrrrrgrrgrrr \n", + "70 grrrgrrrrgrrgrrr \n", + "71 ggggggggG \n", + "\n", + "[72 rows x 7 columns]" ] }, - "execution_count": 5, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "display(self.uturn)\n", - "display(self.u_turn)\n", - "display(self.u_condition)\n", - "\n", - "self.u_turn = pd.merge(self.u_turn, self.u_condition, on='child_id')\n", - "self.u_turn" + "self.matching[]" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 24, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "parent_id i0\n", - "child_id u00\n", - "head_edge_id -571500487_01\n", - "inc_edge_id 571500487_02\n", - "out_edge_id 571500487_01.32\n", - "condition 좌회전시\n", - "Name: 0, dtype: object\n" - ] + "data": { + "text/plain": [ + "node_id move_no\n", + "i0 1 grrrgrrGgrrrrrgrr\n", + " 2 grrrgrrrgrrrrrgGr\n", + " 3 grrrgrrrgrrrrGgrr\n", + " 4 gGGrgrrrgrrrrrgrr\n", + " 5 grrrgrrrgrrrrrgrG\n", + " ... \n", + "i6 21 grrrgrrrrgrrgrrr\n", + " 21 grrrgrrrrgrrgrrr\n", + " 21 grrrgrrrrgrrgrrr\n", + " 21 grrrgrrrrgrrgrrr\n", + "u60 5 ggggggggG\n", + "Name: state, Length: 72, dtype: object" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "cmatches = []\n", - "i = 0\n", - "row = self.u_turn.iloc[0]\n", - "print(row)\n", - "child_id = row.child_id\n", - "parent_id = row.parent_id\n", - "condition = row.condition\n", - "inc_edge_id = row.inc_edge_id\n", - "out_edge_id = row.out_edge_id\n", - "cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n", - "cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n", - "cmatch['node_id'] = child_id" + "# self.matching.set_index(['node_id', 'move_no'])['state']" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{('i0', 1): 'grrrgrrGgrrrrrgrr',\n", + " ('i0', 2): 'grrrgrrrgrrrrrgGr',\n", + " ('i0', 3): 'grrrgrrrgrrrrGgrr',\n", + " ('i0', 4): 'gGGrgrrrgrrrrrgrr',\n", + " ('i0', 5): 'grrrgrrrgrrrrrgrG',\n", + " ('i0', 6): 'grrrgGGrgrrrrrgrr',\n", + " ('i0', 7): 'grrGgrrrgrrrrrgrr',\n", + " ('i0', 8): 'grrrgrrrgGGGGrgrr',\n", + " ('i0', 21): 'grrrgrrrgrrrrrgrr',\n", + " ('u00', 7): 'ggggGgggg',\n", + " ('i1', 3): 'grrrrrGgrr',\n", + " ('i1', 4): 'gGGrrrrgrr',\n", + " ('i1', 5): 'grrrrrrgGG',\n", + " ('i1', 8): 'grrGGGrgrr',\n", + " ('i1', 21): 'grrrrrrgrr',\n", + " ('i2', 4): 'GGggrrr',\n", + " ('i2', 8): 'rrggGGG',\n", + " ('u20', 17): 'ggGggg',\n", + " ('c30', 20): 'rrrGGG',\n", + " ('i3', 1): 'grrrrgrrrGgrrrrgrrrr',\n", + " ('i3', 2): 'grrrrgrrrrgrrrrgGGGr',\n", + " ('i3', 3): 'grrrrgrrrrgrrrGgrrrr',\n", + " ('i3', 4): 'gGGGrgrrrrgrrrrgrrrr',\n", + " ('i3', 5): 'grrrrgrrrrgrrrrgrrrG',\n", + " ('i3', 6): 'grrrrgGGGrgrrrrgrrrr',\n", + " ('i3', 7): 'grrrGgrrrrgrrrrgrrrr',\n", + " ('i3', 8): 'grrrrgrrrrgGGGrgrrrr',\n", + " ('i3', 21): 'grrrrgrrrrgrrrrgrrrr',\n", + " ('u30', 6): 'ggggGggg',\n", + " ('u31', 8): 'ggggGggg',\n", + " ('u32', 4): 'gggggggG',\n", + " ('i8', 1): 'grrrrrrGgrrrgrrr',\n", + " ('i8', 2): 'grrrrrrrgrrrgGGr',\n", + " ('i8', 3): 'grrrrrrrgrrGgrrr',\n", + " ('i8', 4): 'gGGrrrrrgrrrgrrr',\n", + " ('i8', 5): 'grrrrrrrgrrrgrrG',\n", + " ('i8', 6): 'grrrGGGrgrrrgrrr',\n", + " ('i8', 7): 'grrGrrrrgrrrgrrr',\n", + " ('i8', 8): 'grrrrrrrgGGrgrrr',\n", + " ('i8', 21): 'grrrrrrrgrrrgrrr',\n", + " ('i9', 2): 'rrGG',\n", + " ('i9', 6): 'GGrr',\n", + " ('i7', 4): 'GGrggrr',\n", + " ('i7', 8): 'rrrggGG',\n", + " ('i6', 1): 'grrrgrrrGgrrgrrr',\n", + " ('i6', 2): 'grrrgrrrrgrrgGGr',\n", + " ('i6', 3): 'grrrgrrrrgrrgrrr',\n", + " ('i6', 4): 'gGGrgrrrrgrrgrrr',\n", + " ('i6', 5): 'grrrgrrrrgrrgrrG',\n", + " ('i6', 6): 'grrrgGGGrgrrgrrr',\n", + " ('i6', 7): 'grrGgrrrrgrrgrrr',\n", + " ('i6', 8): 'grrrgrrrrgGGgrrr',\n", + " ('i6', 21): 'grrrgrrrrgrrgrrr',\n", + " ('u60', 5): 'ggggggggG'}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# 각 uturn node에 대하여 (inc_edge_id, out_edge_id) 부여\n", - "cmatches = []\n", - "for _, row in self.uturn.iterrows():\n", - " child_id = row.child_id\n", - " parent_id = row.parent_id\n", - " dire = row.direction\n", - " condition = row.condition\n", - " inc_edge_id = row.inc_edge_id\n", - " out_edge_id = row.out_edge_id\n", - "\n", - " print(parent_id, condition)\n", - "\n", - " # match5에서 부모노드id에 해당하는 행들을 가져옴 (cmatch)\n", - " cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n", - " cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n", - " cmatch['node_id'] = child_id\n", - " cmatch[['inc_edge_id', 'out_edge_id']] = np.nan\n", - " display(cmatch)\n", - "\n", - " # 보행신호시/좌회전시 진입/진출방향\n", - " ind = self.dires.index(dire)\n", - " inc_dire_pedes = self.dires[(ind + 2) % len(self.dires)]\n", - " out_dire_pedes = self.dires[(ind - 2) % len(self.dires)]\n", - " inc_dire_right = dire\n", - " out_dire_right = self.dires[(ind + 2) % len(self.dires)]\n", - "\n", - " if condition == '보행신호시':\n", - " print(inc_dire_pedes, out_dire_pedes)\n", - " else:\n", - " print(inc_dire_right, out_dire_right)\n", - "\n", - " # 보행신호시/좌회전시 조건\n", - " pedes_exists = (cmatch.inc_dire==inc_dire_pedes) & (cmatch.out_dire==out_dire_pedes)\n", - " right_exists = (cmatch.inc_dire==inc_dire_right) & (cmatch.out_dire==out_dire_right)\n", - "\n", - " # 보행신호시/좌회전시 진입/진출 엣지id 배정\n", - " ind = self.dires.index(dire)\n", - " if condition == \"보행신호시\":\n", - " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " elif condition == \"좌회전시\":\n", - " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " display(cmatch)\n", - "\n", - " # 신호없음이동류발생시/보행신호이동류발생시 조건\n", - " all_redsigns = cmatch.move_no == 18\n", - " crosswalk_on = cmatch.move_no == 17\n", - "\n", - " # 만약 어떤 유턴신호도 배정되지 않았다면\n", - " # 좌회전시 → 보행신호시 → 보행신호이동류발생시 → 신호없음이동류발생시 순으로 진입/진출 엣지id 배정\n", - " uturn_not_assigned = cmatch[['inc_edge_id','out_edge_id']].isna().any(axis=1).all()\n", - " if uturn_not_assigned:\n", - " # 좌회전시\n", - " if right_exists.any():\n", - " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " # 보행신호시\n", - " elif pedes_exists.any():\n", - " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " # 보행신호이동류(17) 발생시\n", - " elif crosswalk_on.any():\n", - " cmatch.loc[crosswalk_on & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " # 신호없음이동류(18) 발생시\n", - " elif all_redsigns.any():\n", - " cmatch.loc[all_redsigns & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", - " display(cmatch)\n", - "cmatches.append(cmatch)\n" + "mapping_dict" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 14, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "u31\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 t\n", - "\n", - "i3\n", - "5 5 r\n", - "6 6 s\n", - "7 7 s\n", - "8 8 s\n", - "9 9 l\n", - "15 15 r\n", - "16 16 s\n", - "17 17 s\n", - "18 18 s\n", - "19 19 l\n", - "10 10 r\n", - "11 11 s\n", - "12 12 s\n", - "13 13 s\n", - "14 14 l\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 l\n", - "\n", - "u00\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "8 8 s\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 t\n", - "\n", - "i0\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 l\n", - "8 8 r\n", - "9 9 s\n", - "10 10 s\n", - "11 11 s\n", - "12 12 s\n", - "13 13 l\n", - "14 14 r\n", - "15 15 s\n", - "16 16 l\n", - "4 4 r\n", - "5 5 s\n", - "6 6 s\n", - "7 7 l\n", - "\n", - "u60\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "8 8 t\n", - "\n", - "d12\n", - "\n", - "n13\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "\n", - "i8\n", - "8 8 r\n", - "9 9 s\n", - "10 10 s\n", - "11 11 l\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 l\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "7 7 l\n", - "12 12 r\n", - "13 13 s\n", - "14 14 s\n", - "15 15 l\n", - "\n", - "i9\n", - "2 2 s\n", - "3 3 s\n", - "0 0 s\n", - "1 1 s\n", - "\n", - "n14\n", - "2 -1 r\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 l\n", - "0 -1 r\n", - "1 -1 l\n", - "\n", - "n11\n", - "3 -1 s\n", - "4 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "\n", - "i7\n", - "4 4 r\n", - "5 5 s\n", - "6 6 s\n", - "3 3 r\n", - "0 0 s\n", - "1 1 s\n", - "2 2 l\n", - "\n", - "u32\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "7 7 t\n", - "\n", - "n06\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "\n", - "n09\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "\n", - "i6\n", - "4 4 r\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "8 8 l\n", - "12 12 r\n", - "13 13 s\n", - "14 14 s\n", - "15 15 l\n", - "9 9 r\n", - "10 10 s\n", - "11 11 s\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "3 3 l\n", - "\n", - "i5\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "\n", - "n08\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 l\n", - "7 -1 r\n", - "8 -1 s\n", - "9 -1 s\n", - "10 -1 s\n", - "4 -1 r\n", - "5 -1 l\n", - "6 -1 l\n", - "\n", - "c30\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "\n", - "n00\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "\n", - "i1\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "6 6 l\n", - "0 0 r\n", - "1 1 s\n", - "2 2 s\n", - "7 7 r\n", - "8 8 l\n", - "9 9 l\n", - "\n", - "n10\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 t\n", - "\n", - "n04\n", - "5 -1 r\n", - "6 -1 s\n", - "7 -1 s\n", - "8 -1 s\n", - "9 -1 l\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 l\n", - "10 -1 r\n", - "4 -1 r\n", - "\n", - "n03\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "\n", - "i2\n", - "3 3 r\n", - "4 4 s\n", - "5 5 s\n", - "6 6 s\n", - "2 2 r\n", - "0 0 s\n", - "1 1 s\n", - "\n", - "n01\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "0 -1 s\n", - "1 -1 s\n", - "\n", - "n02\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "\n", - "d07\n", - "\n", - "d00\n", - "\n", - "n12\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 r\n", - "3 -1 l\n", - "4 -1 r\n", - "5 -1 s\n", - "6 -1 s\n", - "\n", - "d16\n", - "\n", - "d11\n", - "\n", - "d15\n", - "\n", - "d17\n", - "\n", - "n15\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 s\n", - "8 -1 l\n", - "2 -1 r\n", - "3 -1 s\n", - "4 -1 s\n", - "0 -1 r\n", - "1 -1 l\n", - "\n", - "d18\n", - "\n", - "n07\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 l\n", - "7 -1 s\n", - "8 -1 s\n", - "9 -1 s\n", - "4 -1 r\n", - "5 -1 l\n", - "6 -1 l\n", - "\n", - "d08\n", - "\n", - "d14\n", - "\n", - "d13\n", - "\n", - "d04\n", - "\n", - "d09\n", - "\n", - "n05\n", - "0 -1 s\n", - "1 -1 s\n", - "2 -1 s\n", - "3 -1 s\n", - "4 -1 s\n", - "5 -1 s\n", - "6 -1 s\n", - "7 -1 s\n", - "8 -1 s\n", - "\n", - "u20\n", - "0 0 s\n", - "1 1 s\n", - "2 2 t\n", - "3 3 s\n", - "4 4 s\n", - "5 5 s\n", - "\n", - "d10\n", - "\n", - "d03\n", - "\n", - "d06\n", - "\n", - "d01\n", - "\n", - "d05\n", - "\n", - "u30\n", - "5 5 s\n", - "6 6 s\n", - "7 7 s\n", - "0 0 s\n", - "1 1 s\n", - "2 2 s\n", - "3 3 s\n", - "4 4 t\n", - "\n" - ] - } - ], + "outputs": [], "source": [ - "nodes = self.net.getNodes()\n", - "for node in nodes:\n", - " node_id = node.getID()\n", - " print(node_id)\n", - " conns = [con for con in node.getConnections()]\n", - " for con in conns:\n", - " print(con.getJunctionIndex(), con.getTLLinkIndex(), con.getDirection())\n", - " print()" + "mapping_dict = self.matching.set_index(['node_id', 'move_no'])['state'].to_dict()\n", + "# matching : 가능한 모든 (노드id, 이동류번호)에 대한 신호 * 시차제와 연관 有\n", + "\n", + "\n", + "for i, row in self.histid.iterrows():\n", + " node_id = row.node_id\n", + " move_A = row.move_A\n", + " move_B = row.move_B\n", + " \n", + " # A링의 state 지정\n", + " if (node_id, move_A) in mapping_dict:\n", + " state_A = mapping_dict[(node_id, move_A)]\n", + " else:\n", + " state_A = ''.join(self.node2init[node_id])\n", + " self.histid.at[i, 'state_A'] = state_A\n", + "\n", + " # B링의 state 지정\n", + " if (node_id, move_B) in mapping_dict:\n", + " state_B = mapping_dict[(node_id, move_B)]\n", + " else:\n", + " state_B = ''.join(self.node2init[node_id])\n", + " self.histid.at[i, 'state_B'] = state_B " ] }, { @@ -2145,11 +812,7 @@ "metadata": {}, "outputs": [], "source": [ - "'''Given `inter_no`, `inc_edge_id` and `out_edge_id`, we have `inc_vec = inter2inc2vec[inter_no][inc_edge_id]` and `out_vec = inter2out2vec[inter_no][out_edge_id]`.\n", - "Rotate `inc_vec` by 90, 180 and 270 degrees clockwise, to define \n", - "`out_vec_left`, `out_vec_straight` and `out_vec_right`.\n", - "Define `out_vecs={'right':out_vec_left, 'straight':out_vec_straight, 'right':out_vec_right}`.\n", - "Select the key that maximize the similarity of the corresponding value of the key and `inc_vec`.'''" + "self.assign_signals()" ] } ], diff --git a/Intermediates/match6.csv b/Intermediates/match6.csv index c81cc4a94..459672b49 100644 --- a/Intermediates/match6.csv +++ b/Intermediates/match6.csv @@ -25,10 +25,10 @@ 23,177,i2,1,B,4,571542811_02,571542809_01,GGggrrr 24,177,i2,2,A,17,,,rrggrrr 25,177,i2,2,B,18,,,rrggrrr -26,177,u20,1,A,8,,,ggrggg -27,177,u20,1,B,4,,,ggrggg +26,177,u20,1,A,8,,,gggggg +27,177,u20,1,B,4,,,gggggg 28,177,u20,2,A,17,571542810_01.51,571542810_02,ggGggg -29,177,u20,2,B,18,,,ggrggg +29,177,u20,2,B,18,,,gggggg 30,178,c30,1,A,20,,,rrrrrr 31,178,c30,1,B,20,,,rrrrrr 32,178,c30,2,A,20,571542116_01,-571542116_02.96,GGGrrr diff --git a/Intermediates/matching.csv b/Intermediates/matching.csv index 36f933730..07a7e729a 100644 --- a/Intermediates/matching.csv +++ b/Intermediates/matching.csv @@ -20,54 +20,47 @@ 18,176,i1,21,571543469_02,571542810_01,grrrrrrgrr 19,177,i2,4,571542811_02,571542809_01,GGggrrr 20,177,i2,8,-571542809_01,571542811_01,rrggGGG -21,177,u20,17,571542810_01.51,571542810_02,ggGggg -22,178,c30,20,571542116_01,-571542116_02.96,GGGrrr -23,178,c30,20,571542116_02.96,571542116_02.164,rrrGGG -24,178,c30,20,571542116_01,-571542116_02.96,GGGrrr -25,178,c30,20,571542116_02.96,571542116_02.164,rrrGGG -26,178,c30,20,571542116_01,-571542116_02.96,GGGrrr -27,178,c30,20,571542116_02.96,571542116_02.164,rrrGGG -28,178,i3,1,-571500475_01,571540304_01,grrrrgrrrGgrrrrgrrrr -29,178,i3,2,571540303_02.21,571500475_01,grrrrgrrrrgrrrrgGGGr -30,178,i3,3,571540304_02,571540303_01,grrrrgrrrrgrrrGgrrrr -31,178,i3,4,571556450_02,571540304_01,gGGGrgrrrrgrrrrgrrrr -32,178,i3,5,571540303_02.21,571556450_01,grrrrgrrrrgrrrrgrrrG -33,178,i3,6,-571500475_01,571540303_01,grrrrgGGGrgrrrrgrrrr -34,178,i3,7,571556450_02,571500475_01,grrrGgrrrrgrrrrgrrrr -35,178,i3,8,571540304_02,571556450_01,grrrrgrrrrgGGGrgrrrr -36,178,i3,21,571556450_02,571540303_01,grrrrgrrrrgrrrrgrrrr -37,178,i3,21,571540303_02.21,571540304_01,grrrrgrrrrgrrrrgrrrr -38,178,i3,21,571540304_02,571500475_01,grrrrgrrrrgrrrrgrrrr -39,178,i3,21,-571500475_01,571556450_01,grrrrgrrrrgrrrrgrrrr -40,178,u30,6,571556452_01,571556452_02,ggggGggg -41,178,u31,8,571500475_02,571500475_01.26,ggggGggg -42,178,u32,4,571540303_02,-571540303_02,gggggggG -43,201,i8,1,571500617_02,571500569_01,grrrrrrGgrrrgrrr -44,201,i8,2,571500618_02,571500617_01,grrrrrrrgrrrgGGr -45,201,i8,3,-571500569_01,571500618_01,grrrrrrrgrrGgrrr -46,201,i8,4,571500583_01,571500569_01,gGGrrrrrgrrrgrrr -47,201,i8,5,571500618_02,571500583_02,grrrrrrrgrrrgrrG -48,201,i8,6,571500617_02,571500618_01,grrrGGGrgrrrgrrr -49,201,i8,7,571500583_01,571500617_01,grrGrrrrgrrrgrrr -50,201,i8,8,-571500569_01,571500583_02,grrrrrrrgGGrgrrr -51,201,i8,21,571500583_01,571500618_01,grrrrrrrgrrrgrrr -52,201,i8,21,571500618_02,571500569_01,grrrrrrrgrrrgrrr -53,201,i8,21,-571500569_01,571500617_01,grrrrrrrgrrrgrrr -54,201,i8,21,571500617_02,571500583_02,grrrrrrrgrrrgrrr -55,202,i9,2,571510152_01,571510152_01.65,rrGG -56,202,i9,6,571510152_02,-571510152_01,GGrr -57,206,i7,4,571542073_01,571511538_02,GGrggrr -58,206,i7,8,-571511538_02,571542073_02,rrrggGG -59,210,i6,1,-571542115_01,571500585_01,grrrgrrrGgrrgrrr -60,210,i6,2,571500535_02.18,571542115_01,grrrgrrrrgrrgGGr -61,210,i6,3,571500585_02,571500535_01,grrrgrrrrgrrgrrr -62,210,i6,4,571511538_02.121,571500585_01,gGGrgrrrrgrrgrrr -63,210,i6,5,571500535_02.18,571511538_01,grrrgrrrrgrrgrrG -64,210,i6,6,-571542115_01,571500535_01,grrrgGGGrgrrgrrr -65,210,i6,7,571511538_02.121,571542115_01,grrGgrrrrgrrgrrr -66,210,i6,8,571500585_02,571511538_01,grrrgrrrrgGGgrrr -67,210,i6,21,571511538_02.121,571500535_01,grrrgrrrrgrrgrrr -68,210,i6,21,571500535_02.18,571500585_01,grrrgrrrrgrrgrrr -69,210,i6,21,571500585_02,571542115_01,grrrgrrrrgrrgrrr -70,210,i6,21,-571542115_01,571511538_01,grrrgrrrrgrrgrrr -71,210,u60,5,571500535_02,-571500535_02,ggggggggG +21,178,i3,1,-571500475_01,571540304_01,grrrrgrrrGgrrrrgrrrr +22,178,i3,2,571540303_02.21,571500475_01,grrrrgrrrrgrrrrgGGGr +23,178,i3,3,571540304_02,571540303_01,grrrrgrrrrgrrrGgrrrr +24,178,i3,4,571556450_02,571540304_01,gGGGrgrrrrgrrrrgrrrr +25,178,i3,5,571540303_02.21,571556450_01,grrrrgrrrrgrrrrgrrrG +26,178,i3,6,-571500475_01,571540303_01,grrrrgGGGrgrrrrgrrrr +27,178,i3,7,571556450_02,571500475_01,grrrGgrrrrgrrrrgrrrr +28,178,i3,8,571540304_02,571556450_01,grrrrgrrrrgGGGrgrrrr +29,178,i3,21,571556450_02,571540303_01,grrrrgrrrrgrrrrgrrrr +30,178,i3,21,571540303_02.21,571540304_01,grrrrgrrrrgrrrrgrrrr +31,178,i3,21,571540304_02,571500475_01,grrrrgrrrrgrrrrgrrrr +32,178,i3,21,-571500475_01,571556450_01,grrrrgrrrrgrrrrgrrrr +33,178,u30,6,571556452_01,571556452_02,ggggGggg +34,178,u31,8,571500475_02,571500475_01.26,ggggGggg +35,178,u32,4,571540303_02,-571540303_02,gggggggG +36,201,i8,1,571500617_02,571500569_01,grrrrrrGgrrrgrrr +37,201,i8,2,571500618_02,571500617_01,grrrrrrrgrrrgGGr +38,201,i8,3,-571500569_01,571500618_01,grrrrrrrgrrGgrrr +39,201,i8,4,571500583_01,571500569_01,gGGrrrrrgrrrgrrr +40,201,i8,5,571500618_02,571500583_02,grrrrrrrgrrrgrrG +41,201,i8,6,571500617_02,571500618_01,grrrGGGrgrrrgrrr +42,201,i8,7,571500583_01,571500617_01,grrGrrrrgrrrgrrr +43,201,i8,8,-571500569_01,571500583_02,grrrrrrrgGGrgrrr +44,201,i8,21,571500583_01,571500618_01,grrrrrrrgrrrgrrr +45,201,i8,21,571500618_02,571500569_01,grrrrrrrgrrrgrrr +46,201,i8,21,-571500569_01,571500617_01,grrrrrrrgrrrgrrr +47,201,i8,21,571500617_02,571500583_02,grrrrrrrgrrrgrrr +48,202,i9,2,571510152_01,571510152_01.65,rrGG +49,202,i9,6,571510152_02,-571510152_01,GGrr +50,206,i7,4,571542073_01,571511538_02,GGrggrr +51,206,i7,8,-571511538_02,571542073_02,rrrggGG +52,210,i6,1,-571542115_01,571500585_01,grrrgrrrGgrrgrrr +53,210,i6,2,571500535_02.18,571542115_01,grrrgrrrrgrrgGGr +54,210,i6,3,571500585_02,571500535_01,grrrgrrrrgrrgrrr +55,210,i6,4,571511538_02.121,571500585_01,gGGrgrrrrgrrgrrr +56,210,i6,5,571500535_02.18,571511538_01,grrrgrrrrgrrgrrG +57,210,i6,6,-571542115_01,571500535_01,grrrgGGGrgrrgrrr +58,210,i6,7,571511538_02.121,571542115_01,grrGgrrrrgrrgrrr +59,210,i6,8,571500585_02,571511538_01,grrrgrrrrgGGgrrr +60,210,i6,21,571511538_02.121,571500535_01,grrrgrrrrgrrgrrr +61,210,i6,21,571500535_02.18,571500585_01,grrrgrrrrgrrgrrr +62,210,i6,21,571500585_02,571542115_01,grrrgrrrrgrrgrrr +63,210,i6,21,-571542115_01,571511538_01,grrrgrrrrgrrgrrr +64,210,u60,5,571500535_02,-571500535_02,ggggggggG diff --git a/Intermediates/node2init.json b/Intermediates/node2init.json index 10176bfea..cf11a5284 100644 --- a/Intermediates/node2init.json +++ b/Intermediates/node2init.json @@ -1 +1 @@ -{"c30": ["r", "r", "r", "r", "r", "r"], "i0": ["g", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r", "r", "r", "g", "r", "r"], "i1": ["g", "r", "r", "r", "r", "r", "r", "g", "r", "r"], "i2": ["r", "r", "g", "g", "r", "r", "r"], "i3": ["g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r"], "i6": ["g", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "g", "r", "r", "r"], "i7": ["r", "r", "r", "g", "g", "r", "r"], "i8": ["g", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r"], "i9": ["r", "r", "r", "r"], "u00": ["g", "g", "g", "g", "r", "g", "g", "g", "g"], "u20": ["g", "g", "r", "g", "g", "g"], "u30": ["g", "g", "g", "g", "r", "g", "g", "g"], "u31": ["g", "g", "g", "g", "r", "g", "g", "g"], "u32": ["g", "g", "g", "g", "g", "g", "g", "r"], "u60": ["g", "g", "g", "g", "g", "g", "g", "g", "r"]} \ No newline at end of file +{"c30": ["r", "r", "r", "r", "r", "r"], "i0": ["g", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r", "r", "r", "g", "r", "r"], "i1": ["g", "r", "r", "r", "r", "r", "r", "g", "r", "r"], "i2": ["r", "r", "g", "g", "r", "r", "r"], "i3": ["g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "r", "r"], "i6": ["g", "r", "r", "r", "g", "r", "r", "r", "r", "g", "r", "r", "g", "r", "r", "r"], "i7": ["r", "r", "r", "g", "g", "r", "r"], "i8": ["g", "r", "r", "r", "r", "r", "r", "r", "g", "r", "r", "r", "g", "r", "r", "r"], "i9": ["r", "r", "r", "r"], "u00": ["g", "g", "g", "g", "r", "g", "g", "g", "g"], "u20": ["g", "g", "g", "g", "g", "g"], "u30": ["g", "g", "g", "g", "r", "g", "g", "g"], "u31": ["g", "g", "g", "g", "r", "g", "g", "g"], "u32": ["g", "g", "g", "g", "g", "g", "g", "r"], "u60": ["g", "g", "g", "g", "g", "g", "g", "g", "r"]} \ No newline at end of file diff --git a/Results/sn_1704419400.add.xml b/Results/sn_1704419400.add.xml index f275d3679..0591ccb48 100644 --- a/Results/sn_1704419400.add.xml +++ b/Results/sn_1704419400.add.xml @@ -1,5 +1,5 @@