{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"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"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"이동류정보 불러오는 중: 100%|██████████| 17280/17280 [00:12<00:00, 1341.11it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import os\n",
|
|
"import json\n",
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"import sys\n",
|
|
"import copy\n",
|
|
"from datetime import datetime\n",
|
|
"sys.path.append('../../Scripts')\n",
|
|
"\n",
|
|
"from preprocess_daily import DailyPreprocessor\n",
|
|
"# from generate_signals import SignalGenerator\n",
|
|
"self = DailyPreprocessor()\n",
|
|
"# sg = SignalGenerator()\n",
|
|
"\n",
|
|
"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": 34,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"self.make_match6()\n",
|
|
"self.make_matching()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['c30', 'u00', 'u20', 'u30', 'u31', 'u32', 'u60']"
|
|
]
|
|
},
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.child_ids"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# initialize_state\n",
|
|
"'''\n",
|
|
"비보호우회전신호 (g) 배정\n",
|
|
"\n",
|
|
"input :\n",
|
|
"(1) net : 네트워크\n",
|
|
"(2) nodes : 노드 목록\n",
|
|
"(3) histids : 모든 교차로에 대한 시작유닉스 (시작유닉스, A현시, B현시)별 현시시간, 진입·진출엣지\n",
|
|
"\n",
|
|
"output : node2init\n",
|
|
"- 각 노드를 초기화된 신호로 맵핑하는 딕셔너리\n",
|
|
"- 초기화된 신호란, 우회전을 g로 나머지는 r로 지정한 신호를 말함.\n",
|
|
"'''\n",
|
|
"self.nodes = [self.net.getNode(node_id) for node_id in self.node_ids]\n",
|
|
"self.node2init = {}\n",
|
|
"# 모든 노드들을 순회\n",
|
|
"for node in self.nodes:\n",
|
|
" node_id = node.getID()\n",
|
|
" # 모든 connection\n",
|
|
" conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]\n",
|
|
" conns = [c for c in conns if c[0] >= 0]\n",
|
|
" conns = sorted(conns, key=lambda x: x[0])\n",
|
|
" state = []\n",
|
|
" # i번째 connection : ci\n",
|
|
" for i, ci in conns:\n",
|
|
" if ci.getTLLinkIndex() < 0:\n",
|
|
" continue\n",
|
|
" are_foes = False\n",
|
|
" # j번째 connection : cj\n",
|
|
" # 합류지점이 다르면서 상충되는 cj가 존재하면 are_foes = True (r)\n",
|
|
" # 그외의 경우에는 are_foes = False (g)\n",
|
|
" for j, cj in conns:\n",
|
|
" # ci, cj의 합류지점이 같으면 통과\n",
|
|
" if ci.getTo() == cj.getTo():\n",
|
|
" continue\n",
|
|
" # ci, cj가 상충되면 are_foes를 True로 지정.\n",
|
|
" if node.areFoes(i, j):\n",
|
|
" are_foes = True\n",
|
|
" break\n",
|
|
" state.append('r' if are_foes else 'g')\n",
|
|
" self.node2init[node_id] = state\n",
|
|
"\n",
|
|
"# 어떤 연결과도 상충이 일어나지는 않지만, 신호가 부여되어 있는 경우에는 r을 부여\n",
|
|
"for _, row in self.matching.iterrows():\n",
|
|
" node_id = row.node_id\n",
|
|
" move_no = row.move_no\n",
|
|
" inc_edge = row.inc_edge\n",
|
|
" out_edge = row.out_edge\n",
|
|
" if move_no != 21:\n",
|
|
" inc_edge = self.net.getEdge(inc_edge)\n",
|
|
" out_edge = self.net.getEdge(out_edge)\n",
|
|
" for conn in inc_edge.getConnections(out_edge):\n",
|
|
" index = conn.getTLLinkIndex()\n",
|
|
" if index >= 0:\n",
|
|
" self.node2init[node_id][index] = 'r'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'rrgrrrr'"
|
|
]
|
|
},
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"''.join(self.node2init['i2'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 38,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"old_match6 = self.match6\n",
|
|
"old_matching = self.matching"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# assign_signals\n",
|
|
"self.match6 = old_match6.copy()\n",
|
|
"self.matching = old_matching.copy()\n",
|
|
"\n",
|
|
"# assign signals on matching\n",
|
|
"self.matching['init_state'] = self.matching['node_id'].map(self.node2init)\n",
|
|
"self.matching['state'] = self.matching['init_state'].map(lambda x:''.join(x))\n",
|
|
"# matching의 각 행을 순회\n",
|
|
"for row in self.matching.itertuples(index=True):\n",
|
|
" node_id = row.node_id\n",
|
|
" move_no = row.move_no\n",
|
|
" inc_edge = row.inc_edge\n",
|
|
" out_edge = row.out_edge\n",
|
|
" state = copy.deepcopy(self.node2init)[node_id]\n",
|
|
"\n",
|
|
" if move_no != 21:\n",
|
|
" inc_edge = self.net.getEdge(inc_edge)\n",
|
|
" out_edge = self.net.getEdge(out_edge)\n",
|
|
" for conn in inc_edge.getConnections(out_edge):\n",
|
|
" index = conn.getTLLinkIndex()\n",
|
|
" if index >= 0:\n",
|
|
" state[index] = 'G'\n",
|
|
" self.matching.at[row.Index, 'state'] = ''.join(state)\n",
|
|
"\n",
|
|
"self.matching = self.matching.dropna(subset='state')\n",
|
|
"self.matching = self.matching.reset_index(drop=True)\n",
|
|
"self.matching = self.matching[['inter_no', 'node_id', 'move_no', 'state']]\n",
|
|
"\n",
|
|
"# assign signals on match6\n",
|
|
"\n",
|
|
"self.match6 = self.match6.reset_index(drop=True)\n",
|
|
"self.match6['init_state'] = self.match6['node_id'].map(self.node2init)\n",
|
|
"self.match6['state'] = self.match6['init_state'].map(lambda x:''.join(x))\n",
|
|
"\n",
|
|
"# match6의 각 행을 순회\n",
|
|
"for i, row in self.match6.iterrows():\n",
|
|
" node_id = row.node_id\n",
|
|
" move_no = row.move_no\n",
|
|
" inc_edge = row.inc_edge\n",
|
|
" out_edge = row.out_edge\n",
|
|
" state = copy.deepcopy(self.node2init)[node_id]\n",
|
|
" if (pd.isna(inc_edge)) or (pd.isna(out_edge)):\n",
|
|
" continue\n",
|
|
" if (move_no != 21):\n",
|
|
" # print(i, node_id, move_no, ''.join(state))\n",
|
|
" inc_edge = self.net.getEdge(inc_edge)\n",
|
|
" out_edge = self.net.getEdge(out_edge)\n",
|
|
" for conn in inc_edge.getConnections(out_edge):\n",
|
|
" index = conn.getTLLinkIndex()\n",
|
|
" if index >= 0:\n",
|
|
" state[index] = 'G'\n",
|
|
" # print(i, node_id, move_no, index, ''.join(state))\n",
|
|
" self.match6.at[i, 'state'] = ''.join(state)\n",
|
|
"\n",
|
|
"self.match6 = self.match6.dropna(subset='state')\n",
|
|
"self.match6 = self.match6.reset_index(drop=True)\n",
|
|
"self.match6 = self.match6[['inter_no', 'node_id', 'phase_no', 'ring_type', 'move_no', 'state']]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>grrrgrrGgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>grrrgrrrgrrrrrgGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>grrrgrrrgrrrrGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>gGGrgrrrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>grrrgrrrgrrrrrgrG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>70</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>71</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>72</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>73</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>74</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>ggggggggG</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>75 rows × 4 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id move_no state\n",
|
|
"0 175 i0 1 grrrgrrGgrrrrrgrr\n",
|
|
"1 175 i0 2 grrrgrrrgrrrrrgGr\n",
|
|
"2 175 i0 3 grrrgrrrgrrrrGgrr\n",
|
|
"3 175 i0 4 gGGrgrrrgrrrrrgrr\n",
|
|
"4 175 i0 5 grrrgrrrgrrrrrgrG\n",
|
|
".. ... ... ... ...\n",
|
|
"70 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"71 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"72 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"73 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"74 210 u60 19 ggggggggG\n",
|
|
"\n",
|
|
"[75 rows x 4 columns]"
|
|
]
|
|
},
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.matching"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 41,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"self.match6.to_csv('match6.csv',index=False)\n",
|
|
"self.matching.to_csv('matching.csv',index=False)\n",
|
|
"with open('node2init.json', 'w') as file:\n",
|
|
" json.dump(self.node2init, file)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 42,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1. 데이터를 준비합니다.\n",
|
|
"1-1. 네트워크가 로드되었습니다.\n",
|
|
"1-2. 테이블들이 로드되었습니다.\n",
|
|
"2. 신호이력 테이블을 변환합니다.\n",
|
|
"3. 이동류정보 테이블을 변환합니다.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import json\n",
|
|
"from generate_signals import SignalGenerator\n",
|
|
"self = SignalGenerator()\n",
|
|
"self.prepare_data() # 1\n",
|
|
"self.process_history() # 2\n",
|
|
"self.process_movement() # 3\n",
|
|
"\n",
|
|
"self.match6 = pd.read_csv('match6.csv')\n",
|
|
"self.matching = pd.read_csv('matching.csv')\n",
|
|
"with open('node2init.json', 'r') as file:\n",
|
|
" self.node2init = json.load(file)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 43,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>grrrgrrGgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>grrrgrrrgrrrrrgGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>grrrgrrrgrrrrGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>gGGrgrrrgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>grrrgrrrgrrrrrgrG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>70</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>71</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>72</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>73</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>grrrgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>74</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>ggggggggG</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>75 rows × 4 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id move_no state\n",
|
|
"0 175 i0 1 grrrgrrGgrrrrrgrr\n",
|
|
"1 175 i0 2 grrrgrrrgrrrrrgGr\n",
|
|
"2 175 i0 3 grrrgrrrgrrrrGgrr\n",
|
|
"3 175 i0 4 gGGrgrrrgrrrrrgrr\n",
|
|
"4 175 i0 5 grrrgrrrgrrrrrgrG\n",
|
|
".. ... ... ... ...\n",
|
|
"70 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"71 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"72 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"73 210 i6 21 grrrgrrrrgrrgrrr\n",
|
|
"74 210 u60 19 ggggggggG\n",
|
|
"\n",
|
|
"[75 rows x 4 columns]"
|
|
]
|
|
},
|
|
"execution_count": 43,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.matching"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 44,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>start_unix</th>\n",
|
|
" <th>phas_A</th>\n",
|
|
" <th>phas_B</th>\n",
|
|
" <th>move_A</th>\n",
|
|
" <th>move_B</th>\n",
|
|
" <th>duration</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416178</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>54</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416178</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416178</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>42</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416178</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>28</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416178</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>47</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no start_unix phas_A phas_B move_A move_B duration\n",
|
|
"0 175 1704416178 1 1 8 4 54\n",
|
|
"1 175 1704416178 2 2 7 3 57\n",
|
|
"2 175 1704416178 3 3 6 1 42\n",
|
|
"3 175 1704416178 3 4 6 2 28\n",
|
|
"4 175 1704416178 4 4 5 2 47"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# movedur : movements and durations\n",
|
|
"self.movedur = pd.merge(self.hrhists, self.movement_updated, how='inner', on=['inter_no', 'start_unix', 'phas_A', 'phas_B'])\n",
|
|
"self.movedur = self.movedur[['inter_no', 'start_unix', 'phas_A', 'phas_B', 'move_A', 'move_B', 'duration']]\n",
|
|
"display(self.movedur.head())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 45,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>start_unix</th>\n",
|
|
" <th>phas_A</th>\n",
|
|
" <th>phas_B</th>\n",
|
|
" <th>move_A</th>\n",
|
|
" <th>move_B</th>\n",
|
|
" <th>duration</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>gGGrgrrrgGGGGrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>grrGgrrrgrrrrGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>grrrgGGGgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>grrrgGGrgrrrrrgGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>grrrgrrrgrrrrrgGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>255</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704417410</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>grrrrrrrgGGGgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>256</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704417410</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>grrrrrrrgrrrgGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>257</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704417410</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>grrrGGGrgrrrgGGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>258</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704417410</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>grrrGGGGgrrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>259</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704417410</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>gGGGrrrrgrrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>203 rows × 9 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no start_unix phas_A phas_B move_A move_B duration node_id \\\n",
|
|
"10 175 1704416540 1 1 8 4 43 i0 \n",
|
|
"11 175 1704416540 2 2 7 3 46 i0 \n",
|
|
"12 175 1704416540 3 3 6 1 33 i0 \n",
|
|
"13 175 1704416540 3 4 6 2 23 i0 \n",
|
|
"14 175 1704416540 4 4 5 2 37 i0 \n",
|
|
".. ... ... ... ... ... ... ... ... \n",
|
|
"255 201 1704417410 1 1 8 3 33 i8 \n",
|
|
"256 201 1704417410 2 2 5 2 36 i8 \n",
|
|
"257 201 1704417410 3 3 6 2 25 i8 \n",
|
|
"258 201 1704417410 4 4 6 1 58 i8 \n",
|
|
"259 201 1704417410 5 5 7 4 18 i8 \n",
|
|
"\n",
|
|
" state \n",
|
|
"10 gGGrgrrrgGGGGrgrr \n",
|
|
"11 grrGgrrrgrrrrGgrr \n",
|
|
"12 grrrgGGGgrrrrrgrr \n",
|
|
"13 grrrgGGrgrrrrrgGr \n",
|
|
"14 grrrgrrrgrrrrrgGG \n",
|
|
".. ... \n",
|
|
"255 grrrrrrrgGGGgrrr \n",
|
|
"256 grrrrrrrgrrrgGGG \n",
|
|
"257 grrrGGGrgrrrgGGr \n",
|
|
"258 grrrGGGGgrrrgrrr \n",
|
|
"259 gGGGrrrrgrrrgrrr \n",
|
|
"\n",
|
|
"[203 rows x 9 columns]"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# histid\n",
|
|
"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",
|
|
"mapping_dict = self.matching.set_index(['node_id', 'move_no'])['state'].to_dict()\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\n",
|
|
"\n",
|
|
" # 통합된 state 지정\n",
|
|
" state = ''\n",
|
|
" for a, b in zip(state_A,state_B):\n",
|
|
" if a == b:\n",
|
|
" state += a\n",
|
|
" elif (a == 'G') or (b == 'G'):\n",
|
|
" state += 'G'\n",
|
|
" self.histid.at[i, 'state'] = state\n",
|
|
"display(self.histid)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 46,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>start_unix</th>\n",
|
|
" <th>phas_A</th>\n",
|
|
" <th>phas_B</th>\n",
|
|
" <th>move_A</th>\n",
|
|
" <th>move_B</th>\n",
|
|
" <th>duration</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>i9</td>\n",
|
|
" <td>1704416410</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>GGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>i9</td>\n",
|
|
" <td>1704416410</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>rrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>grrrgGGGrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>15</td>\n",
|
|
" <td>grrrgGGGrgrrgGGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>grrrgrrrrgrrgGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>383</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704417420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>16</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>384</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704417420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>385</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704417420</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>ggggggggG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>386</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704417420</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>387</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704417420</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>13</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>388 rows × 9 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id start_unix phas_A phas_B move_A move_B duration \\\n",
|
|
"0 202 i9 1704416410 1 1 6 2 46 \n",
|
|
"1 202 i9 1704416410 2 2 17 18 114 \n",
|
|
"2 210 i6 1704416420 1 1 6 18 28 \n",
|
|
"3 210 i6 1704416420 1 2 6 2 15 \n",
|
|
"4 210 i6 1704416420 2 2 5 2 43 \n",
|
|
".. ... ... ... ... ... ... ... ... \n",
|
|
"383 210 u60 1704417420 1 1 6 18 16 \n",
|
|
"384 210 u60 1704417420 1 2 6 2 8 \n",
|
|
"385 210 u60 1704417420 2 2 5 2 24 \n",
|
|
"386 210 u60 1704417420 3 3 7 4 39 \n",
|
|
"387 210 u60 1704417420 4 4 8 3 13 \n",
|
|
"\n",
|
|
" state \n",
|
|
"0 GGGG \n",
|
|
"1 rrrr \n",
|
|
"2 grrrgGGGrgrrgrrr \n",
|
|
"3 grrrgGGGrgrrgGGr \n",
|
|
"4 grrrgrrrrgrrgGGG \n",
|
|
".. ... \n",
|
|
"383 ggggggggr \n",
|
|
"384 ggggggggr \n",
|
|
"385 ggggggggG \n",
|
|
"386 ggggggggr \n",
|
|
"387 ggggggggr \n",
|
|
"\n",
|
|
"[388 rows x 9 columns]"
|
|
]
|
|
},
|
|
"execution_count": 46,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"new_histids = []\n",
|
|
"for parent_id in self.parent_ids:\n",
|
|
" for child_id in self.pa2ch[parent_id]:\n",
|
|
" new_histid = self.histid.copy()[self.histid.node_id==parent_id].drop(columns='state')\n",
|
|
" # new_histid[['inc_edge_A', 'out_edge_A', 'inc_edge_B', 'out_edge_B']] = np.nan\n",
|
|
" for i, row in new_histid.iterrows():\n",
|
|
" phas_A = row.phas_A\n",
|
|
" phas_B = row.phas_B\n",
|
|
" new_match = self.match6[self.match6.node_id==child_id]\n",
|
|
" Arow = new_match[(new_match.phase_no==phas_A) & (new_match.ring_type=='A')]\n",
|
|
"\n",
|
|
" # A링의 state 지정\n",
|
|
" state_A = Arow.iloc[0].state\n",
|
|
" # new_histid.at[i, 'state_A'] = state_A\n",
|
|
"\n",
|
|
" # B링의 state 지정\n",
|
|
" Brow = new_match[(new_match.phase_no==phas_B) & (new_match.ring_type=='B')]\n",
|
|
" state_B = Brow.iloc[0].state\n",
|
|
" # new_histid.at[i, 'state_B'] = state_B\n",
|
|
"\n",
|
|
" # 통합된 state 지정\n",
|
|
" state = ''\n",
|
|
" for a, b in zip(state_A,state_B):\n",
|
|
" if a == b:\n",
|
|
" state += a\n",
|
|
" elif (a == 'G') or (b == 'G'):\n",
|
|
" state += 'G'\n",
|
|
" new_histid.at[i, 'state'] = state\n",
|
|
" new_histid.at[i, 'node_id'] = child_id\n",
|
|
" new_histids.append(new_histid)\n",
|
|
"new_histids = pd.concat(new_histids)\n",
|
|
"self.histids = pd.concat([self.histid.copy(), new_histids])\n",
|
|
"self.histids = self.histids.sort_values(by=['start_unix', 'node_id', 'phas_A', 'phas_B']).reset_index(drop=True)\n",
|
|
"self.histids = self.histids[['inter_no', 'node_id', 'start_unix', 'phas_A', 'phas_B', 'move_A', 'move_B', 'duration', 'state']]\n",
|
|
"self.histids"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 48,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" <th>start_unix</th>\n",
|
|
" <th>phas_A</th>\n",
|
|
" <th>phas_B</th>\n",
|
|
" <th>move_A</th>\n",
|
|
" <th>move_B</th>\n",
|
|
" <th>duration</th>\n",
|
|
" <th>state</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>i9</td>\n",
|
|
" <td>1704416410</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>GGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>i9</td>\n",
|
|
" <td>1704416410</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>rrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>grrrgGGGrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>15</td>\n",
|
|
" <td>grrrgGGGrgrrgGGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>grrrgrrrrgrrgGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>gGGGgrrrrgrrgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>grrrgrrrrgGGgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>15</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>ggggggggG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>1704416420</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>ggggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>i7</td>\n",
|
|
" <td>1704416459</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>GGrggGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>i7</td>\n",
|
|
" <td>1704416459</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>53</td>\n",
|
|
" <td>rrrggrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>i7</td>\n",
|
|
" <td>1704416459</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>GGrggGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>i7</td>\n",
|
|
" <td>1704416459</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>rrrggrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>c30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>gggggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>c30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>GGGGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>c30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>GGGGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>c30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>GGGGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>i2</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>GGgrGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>i2</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>rrgrrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>i2</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>rrgrrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>i2</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>rrgrGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>i3</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>gGGGrgrrrrgGGGrgrrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>i3</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>grrrGgrrrrgrrrGgrrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>i3</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>grrrrgrrrrgrrrrgGGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>i3</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>grrrrgGGGGgrrrrgrrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>u20</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>gggggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>u20</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>gggggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>30</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>u20</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>ggGggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>31</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>u20</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>gggggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>32</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>ggggrggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>33</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>ggggrggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>34</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>ggggrggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>35</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u30</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>ggggGggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>36</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u31</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>ggggGggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>37</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u31</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>ggggrggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>38</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u31</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>ggggrggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>39</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u31</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>ggggrggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>40</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u32</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>gggggggG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>41</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u32</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>gggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>42</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u32</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>gggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>43</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u32</td>\n",
|
|
" <td>1704416520</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>gggggggr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>44</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>gGGrgrrrgGGGGrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>45</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>grrGgrrrgrrrrGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>46</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>grrrgGGGgrrrrrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>47</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>grrrgGGrgrrrrrgGr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>48</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>grrrgrrrgrrrrrgGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>49</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>i1</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>gGGGGGrgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>50</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>i1</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>grrGGGGgrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>51</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>i1</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>grrrrrrgGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>52</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>u00</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>ggggrgggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>53</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>u00</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>ggggGgggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>54</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>u00</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>ggggrgggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>55</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>u00</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>ggggrgggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>56</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>u00</td>\n",
|
|
" <td>1704416540</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>ggggrgggg</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>57</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>1704416560</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>grrrrrrrgGGGgrrr</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>58</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>1704416560</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>grrrrrrrgrrrgGGG</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>59</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>1704416560</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>grrrGGGrgrrrgGGr</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id start_unix phas_A phas_B move_A move_B duration \\\n",
|
|
"0 202 i9 1704416410 1 1 6 2 46 \n",
|
|
"1 202 i9 1704416410 2 2 17 18 114 \n",
|
|
"2 210 i6 1704416420 1 1 6 18 28 \n",
|
|
"3 210 i6 1704416420 1 2 6 2 15 \n",
|
|
"4 210 i6 1704416420 2 2 5 2 43 \n",
|
|
"5 210 i6 1704416420 3 3 7 4 70 \n",
|
|
"6 210 i6 1704416420 4 4 8 3 24 \n",
|
|
"7 210 u60 1704416420 1 1 6 18 28 \n",
|
|
"8 210 u60 1704416420 1 2 6 2 15 \n",
|
|
"9 210 u60 1704416420 2 2 5 2 43 \n",
|
|
"10 210 u60 1704416420 3 3 7 4 70 \n",
|
|
"11 210 u60 1704416420 4 4 8 3 24 \n",
|
|
"12 206 i7 1704416459 1 1 8 4 45 \n",
|
|
"13 206 i7 1704416459 2 2 17 18 53 \n",
|
|
"14 206 i7 1704416459 3 3 8 4 26 \n",
|
|
"15 206 i7 1704416459 4 4 17 18 26 \n",
|
|
"16 178 c30 1704416520 1 1 8 4 38 \n",
|
|
"17 178 c30 1704416520 2 2 7 3 39 \n",
|
|
"18 178 c30 1704416520 3 3 5 2 43 \n",
|
|
"19 178 c30 1704416520 4 4 6 1 22 \n",
|
|
"20 177 i2 1704416520 1 1 8 4 43 \n",
|
|
"21 177 i2 1704416520 2 2 7 3 27 \n",
|
|
"22 177 i2 1704416520 3 3 17 18 70 \n",
|
|
"23 177 i2 1704416520 4 4 5 1 40 \n",
|
|
"24 178 i3 1704416520 1 1 8 4 38 \n",
|
|
"25 178 i3 1704416520 2 2 7 3 39 \n",
|
|
"26 178 i3 1704416520 3 3 5 2 43 \n",
|
|
"27 178 i3 1704416520 4 4 6 1 22 \n",
|
|
"28 177 u20 1704416520 1 1 8 4 43 \n",
|
|
"29 177 u20 1704416520 2 2 7 3 27 \n",
|
|
"30 177 u20 1704416520 3 3 17 18 70 \n",
|
|
"31 177 u20 1704416520 4 4 5 1 40 \n",
|
|
"32 178 u30 1704416520 1 1 8 4 38 \n",
|
|
"33 178 u30 1704416520 2 2 7 3 39 \n",
|
|
"34 178 u30 1704416520 3 3 5 2 43 \n",
|
|
"35 178 u30 1704416520 4 4 6 1 22 \n",
|
|
"36 178 u31 1704416520 1 1 8 4 38 \n",
|
|
"37 178 u31 1704416520 2 2 7 3 39 \n",
|
|
"38 178 u31 1704416520 3 3 5 2 43 \n",
|
|
"39 178 u31 1704416520 4 4 6 1 22 \n",
|
|
"40 178 u32 1704416520 1 1 8 4 38 \n",
|
|
"41 178 u32 1704416520 2 2 7 3 39 \n",
|
|
"42 178 u32 1704416520 3 3 5 2 43 \n",
|
|
"43 178 u32 1704416520 4 4 6 1 22 \n",
|
|
"44 175 i0 1704416540 1 1 8 4 43 \n",
|
|
"45 175 i0 1704416540 2 2 7 3 46 \n",
|
|
"46 175 i0 1704416540 3 3 6 1 33 \n",
|
|
"47 175 i0 1704416540 3 4 6 2 23 \n",
|
|
"48 175 i0 1704416540 4 4 5 2 37 \n",
|
|
"49 176 i1 1704416540 1 1 8 4 37 \n",
|
|
"50 176 i1 1704416540 2 2 8 3 103 \n",
|
|
"51 176 i1 1704416540 3 3 5 18 40 \n",
|
|
"52 175 u00 1704416540 1 1 8 4 43 \n",
|
|
"53 175 u00 1704416540 2 2 7 3 46 \n",
|
|
"54 175 u00 1704416540 3 3 6 1 33 \n",
|
|
"55 175 u00 1704416540 3 4 6 2 23 \n",
|
|
"56 175 u00 1704416540 4 4 5 2 37 \n",
|
|
"57 201 i8 1704416560 1 1 8 3 33 \n",
|
|
"58 201 i8 1704416560 2 2 5 2 36 \n",
|
|
"59 201 i8 1704416560 3 3 6 2 25 \n",
|
|
"\n",
|
|
" state \n",
|
|
"0 GGGG \n",
|
|
"1 rrrr \n",
|
|
"2 grrrgGGGrgrrgrrr \n",
|
|
"3 grrrgGGGrgrrgGGr \n",
|
|
"4 grrrgrrrrgrrgGGG \n",
|
|
"5 gGGGgrrrrgrrgrrr \n",
|
|
"6 grrrgrrrrgGGgrrr \n",
|
|
"7 ggggggggr \n",
|
|
"8 ggggggggr \n",
|
|
"9 ggggggggG \n",
|
|
"10 ggggggggr \n",
|
|
"11 ggggggggr \n",
|
|
"12 GGrggGG \n",
|
|
"13 rrrggrr \n",
|
|
"14 GGrggGG \n",
|
|
"15 rrrggrr \n",
|
|
"16 gggggg \n",
|
|
"17 GGGGGG \n",
|
|
"18 GGGGGG \n",
|
|
"19 GGGGGG \n",
|
|
"20 GGgrGGG \n",
|
|
"21 rrgrrrr \n",
|
|
"22 rrgrrrr \n",
|
|
"23 rrgrGGG \n",
|
|
"24 gGGGrgrrrrgGGGrgrrrr \n",
|
|
"25 grrrGgrrrrgrrrGgrrrr \n",
|
|
"26 grrrrgrrrrgrrrrgGGGG \n",
|
|
"27 grrrrgGGGGgrrrrgrrrr \n",
|
|
"28 gggggg \n",
|
|
"29 gggggg \n",
|
|
"30 ggGggg \n",
|
|
"31 gggggg \n",
|
|
"32 ggggrggg \n",
|
|
"33 ggggrggg \n",
|
|
"34 ggggrggg \n",
|
|
"35 ggggGggg \n",
|
|
"36 ggggGggg \n",
|
|
"37 ggggrggg \n",
|
|
"38 ggggrggg \n",
|
|
"39 ggggrggg \n",
|
|
"40 gggggggG \n",
|
|
"41 gggggggr \n",
|
|
"42 gggggggr \n",
|
|
"43 gggggggr \n",
|
|
"44 gGGrgrrrgGGGGrgrr \n",
|
|
"45 grrGgrrrgrrrrGgrr \n",
|
|
"46 grrrgGGGgrrrrrgrr \n",
|
|
"47 grrrgGGrgrrrrrgGr \n",
|
|
"48 grrrgrrrgrrrrrgGG \n",
|
|
"49 gGGGGGrgrr \n",
|
|
"50 grrGGGGgrr \n",
|
|
"51 grrrrrrgGG \n",
|
|
"52 ggggrgggg \n",
|
|
"53 ggggGgggg \n",
|
|
"54 ggggrgggg \n",
|
|
"55 ggggrgggg \n",
|
|
"56 ggggrgggg \n",
|
|
"57 grrrrrrrgGGGgrrr \n",
|
|
"58 grrrrrrrgrrrgGGG \n",
|
|
"59 grrrGGGrgrrrgGGr "
|
|
]
|
|
},
|
|
"execution_count": 48,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.histids[:60]"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "rts",
|
|
"language": "python",
|
|
"name": "rts"
|
|
},
|
|
"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
|
|
}
|