{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"from datetime import datetime\n",
|
|
"import os\n",
|
|
"import random\n",
|
|
"from tqdm import tqdm"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"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>inter_name</th>\n",
|
|
" <th>inter_lat</th>\n",
|
|
" <th>inter_lon</th>\n",
|
|
" <th>group_no</th>\n",
|
|
" <th>main_phase_no</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>한솔삼거리(한솔마을3거리)</td>\n",
|
|
" <td>37.36857</td>\n",
|
|
" <td>127.11478</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>느티마을4단지</td>\n",
|
|
" <td>37.36724</td>\n",
|
|
" <td>127.11480</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>한솔6단지(정자동사무소)</td>\n",
|
|
" <td>37.36619</td>\n",
|
|
" <td>127.11480</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>신기4거리</td>\n",
|
|
" <td>37.36346</td>\n",
|
|
" <td>127.11480</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>느티마을4거리</td>\n",
|
|
" <td>37.36854</td>\n",
|
|
" <td>127.10984</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>느티마을 안촌유치원</td>\n",
|
|
" <td>37.36855</td>\n",
|
|
" <td>127.11241</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>상록마을 321동</td>\n",
|
|
" <td>37.36483</td>\n",
|
|
" <td>127.10981</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>상록4거리(상록마을입구4거리)</td>\n",
|
|
" <td>37.36347</td>\n",
|
|
" <td>127.10982</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no inter_name inter_lat inter_lon group_no main_phase_no\n",
|
|
"0 175 한솔삼거리(한솔마을3거리) 37.36857 127.11478 3 2\n",
|
|
"1 176 느티마을4단지 37.36724 127.11480 3 2\n",
|
|
"2 177 한솔6단지(정자동사무소) 37.36619 127.11480 3 2\n",
|
|
"3 178 신기4거리 37.36346 127.11480 3 2\n",
|
|
"4 201 느티마을4거리 37.36854 127.10984 3 2\n",
|
|
"5 202 느티마을 안촌유치원 37.36855 127.11241 3 2\n",
|
|
"6 206 상록마을 321동 37.36483 127.10981 3 2\n",
|
|
"7 210 상록4거리(상록마을입구4거리) 37.36347 127.10982 3 2"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 교차로정보\n",
|
|
"inter_info = pd.read_csv(\"inter_info.csv\")\n",
|
|
"inter_info['group_no'] = 3\n",
|
|
"inter_info['main_phase_no'] = 2\n",
|
|
"display(inter_info)\n",
|
|
"inter_info.to_csv('../inter_info.csv', index=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# # 현시구성\n",
|
|
"# phase_info = pd.read_csv(\"phase_info.csv\")\n",
|
|
"# phase_info.drop('flow_no', axis=1, inplace=True)\n",
|
|
"# # display(phase_info)\n",
|
|
"# mg = phase_info.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='min_green_dur').fillna(0).astype(int)\n",
|
|
"# y = phase_info.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='yellow_dur').fillna(0).astype(int)\n",
|
|
"# r = phase_info.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='red_dur').fillna(0).astype(int)\n",
|
|
"# max_phase_no = phase_info['phase_no'].max()\n",
|
|
"# new_columns = [f'{col}{phase}{ring}' for col in ['mg', 'y', 'r'] for phase in range(1, max_phase_no + 1) for ring in ['A', 'B']]\n",
|
|
"# phase_info = pd.concat([mg, y, r], axis=1)\n",
|
|
"# phase_info.columns = new_columns\n",
|
|
"# # phase_info['main_phase'] = 2\n",
|
|
"# phase_info['mg6A'] = phase_info['mg6B'] = phase_info['mg7A'] = phase_info['mg7B'] = phase_info['mg8A'] = phase_info['mg8B']= 0\n",
|
|
"# phase_info['y6A'] = phase_info['y6B'] = phase_info['y7A'] = phase_info['y7B'] = phase_info['y8A'] = phase_info['y8B']= 0\n",
|
|
"# phase_info['r6A'] = phase_info['r6B'] = phase_info['r7A'] = phase_info['r7B'] = phase_info['r8A'] = phase_info['r8B']= 0\n",
|
|
"# phase_info = phase_info[sorted(phase_info.columns)]\n",
|
|
"# phase_info.reset_index(inplace=True)\n",
|
|
"# with pd.option_context('display.max_rows', None, 'display.max_columns', None): \n",
|
|
"# display(phase_info)\n",
|
|
"# phase_info.to_csv('../phase_info.csv')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"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>angle_A1</th>\n",
|
|
" <th>angle_A2</th>\n",
|
|
" <th>angle_A3</th>\n",
|
|
" <th>angle_A4</th>\n",
|
|
" <th>angle_A5</th>\n",
|
|
" <th>angle_A6</th>\n",
|
|
" <th>angle_A7</th>\n",
|
|
" <th>angle_A8</th>\n",
|
|
" <th>angle_B1</th>\n",
|
|
" <th>angle_B2</th>\n",
|
|
" <th>angle_B3</th>\n",
|
|
" <th>angle_B4</th>\n",
|
|
" <th>angle_B5</th>\n",
|
|
" <th>angle_B6</th>\n",
|
|
" <th>angle_B7</th>\n",
|
|
" <th>angle_B8</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>179004</td>\n",
|
|
" <td>001095</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>268000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>003176</td>\n",
|
|
" <td>179270</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>270356</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>359180</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>000090</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>268000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>001176</td>\n",
|
|
" <td>179270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>000090</td>\n",
|
|
" <td>270000</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>270000</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>000090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>090180</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>stop</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>090270</td>\n",
|
|
" <td>268000</td>\n",
|
|
" <td>359090</td>\n",
|
|
" <td>180000</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>270090</td>\n",
|
|
" <td>000180</td>\n",
|
|
" <td>180270</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no angle_A1 angle_A2 angle_A3 angle_A4 angle_A5 angle_A6 angle_A7 \\\n",
|
|
"0 175 179004 001095 090270 268000 NaN NaN NaN \n",
|
|
"1 176 180000 180000 270356 NaN NaN NaN NaN \n",
|
|
"2 177 180000 000090 stop 268000 NaN NaN NaN \n",
|
|
"3 178 180000 000090 270000 090270 NaN NaN NaN \n",
|
|
"4 201 180000 270000 090270 090270 000090 NaN NaN \n",
|
|
"5 202 090270 stop NaN NaN NaN NaN NaN \n",
|
|
"6 206 180000 stop 180000 stop NaN NaN NaN \n",
|
|
"7 210 090270 268000 359090 180000 NaN NaN NaN \n",
|
|
"\n",
|
|
" angle_A8 angle_B1 angle_B2 angle_B3 angle_B4 angle_B5 angle_B6 angle_B7 \\\n",
|
|
"0 NaN 003176 179270 090180 270090 NaN NaN NaN \n",
|
|
"1 NaN 359180 180270 NaN NaN NaN NaN NaN \n",
|
|
"2 NaN 001176 179270 NaN 090180 NaN NaN NaN \n",
|
|
"3 NaN 000180 180270 270090 090180 NaN NaN NaN \n",
|
|
"4 NaN 180270 270090 270090 090180 000180 NaN NaN \n",
|
|
"5 NaN 270090 NaN NaN NaN NaN NaN NaN \n",
|
|
"6 NaN 000180 NaN 000180 NaN NaN NaN NaN \n",
|
|
"7 NaN NaN 270090 000180 180270 NaN NaN NaN \n",
|
|
"\n",
|
|
" angle_B8 \n",
|
|
"0 NaN \n",
|
|
"1 NaN \n",
|
|
"2 NaN \n",
|
|
"3 NaN \n",
|
|
"4 NaN \n",
|
|
"5 NaN \n",
|
|
"6 NaN \n",
|
|
"7 NaN "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 방위각정보\n",
|
|
"flow_angle = pd.read_csv(\"flow_angle.csv\")\n",
|
|
"angle = flow_angle.pivot_table(index='inter_no', columns=['phase_no', 'ring_type'], values='angle_code', aggfunc='first').fillna('NaN')\n",
|
|
"new_columns = [f'angle_{ring}{phase}' for phase in range(1, 6) for ring in ['A', 'B']]\n",
|
|
"angle.columns = new_columns\n",
|
|
"angle['angle_A6'] = angle['angle_A7'] = angle['angle_A8'] = np.nan\n",
|
|
"angle['angle_B6'] = angle['angle_B7'] = angle['angle_B8'] = np.nan\n",
|
|
"angle = angle[sorted(angle.columns)]\n",
|
|
"angle = angle.reset_index()\n",
|
|
"display(angle)\n",
|
|
"angle.to_csv('../angle_old.csv')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def generate_moves():\n",
|
|
" # 이동류번호\n",
|
|
" plan = pd.read_csv(\"time_plan.csv\")\n",
|
|
" phase = pd.read_csv('phase_info.csv')\n",
|
|
" plan = plan[plan.ID.isin([1, 5, 8, 11])]\n",
|
|
" ID2starttime = {1:\"00:00\", 5:\"07:00\", 8:\"09:00\", 11:\"18:30\"}\n",
|
|
" plan['start_hour'] = plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[0])\n",
|
|
" plan['start_minute']=plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[1])\n",
|
|
" plan = plan[['inter_no', 'start_hour', 'start_minute', 'phase_no', 'ring_type', 'duration', 'cycle']]\n",
|
|
" plan_ = pd.merge(plan, phase[['inter_no', 'phase_no', 'ring_type', 'flow_no']], on=['inter_no', 'phase_no', 'ring_type'], how='left')\n",
|
|
" plan_['flow_no'] = plan_['flow_no'].fillna(18).astype(int)\n",
|
|
" plan_['start_second'] = plan_.start_hour.astype(int)*3600 + plan_.start_minute.astype(int)*60\n",
|
|
" plan_ = plan_[['inter_no', 'start_second', 'phase_no', 'ring_type', 'duration', 'flow_no', 'cycle']]\n",
|
|
" cycle_dict = dict(zip(zip(plan_['inter_no'], plan_['start_second']), plan_['cycle']))\n",
|
|
" df = plan_[['inter_no','start_second','cycle']].drop_duplicates()\n",
|
|
" df = df.reset_index(drop=True)\n",
|
|
" df['start_second_exact'] = 0\n",
|
|
" for i in range(1, len(df)):\n",
|
|
" if i % 4 != 0:\n",
|
|
" prev = df.loc[i-1, 'start_second_exact']\n",
|
|
" start_second = df.loc[i, 'start_second']\n",
|
|
" cycle = df.loc[i-1, 'cycle']\n",
|
|
" df.loc[i, 'start_second_exact'] = (start_second - prev) % cycle + start_second\n",
|
|
" plan_ = plan_.pivot_table(index=['inter_no', 'start_second', 'phase_no'],\n",
|
|
" columns='ring_type',\n",
|
|
" values=['duration', 'flow_no'],\n",
|
|
" aggfunc='first').reset_index()\n",
|
|
" plan_.columns = ['inter_no', 'start_second', 'phase_no', 'dura_A', 'dura_B', 'move_A', 'move_B']\n",
|
|
" inter2no_phase = {inter_no:group.phase_no.unique().max() for (inter_no, group) in plan.groupby('inter_no')}\n",
|
|
"\n",
|
|
" midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
|
|
" next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
|
|
" for current_time in tqdm(range(midnight, next_day, 5)):\n",
|
|
" sec = current_time - midnight\n",
|
|
" the_start_second = np.max(df.start_second[df.start_second <= sec])\n",
|
|
" move = []\n",
|
|
" for inter_no in plan_.inter_no.unique():\n",
|
|
" cycle = cycle_dict[(inter_no, the_start_second)]\n",
|
|
" df = plan_[(plan_.inter_no==inter_no)&(plan_.start_second==the_start_second)].reset_index(drop=True)\n",
|
|
" remainder = sec % cycle\n",
|
|
" df['cums_A'] = df.copy().dura_A.cumsum()\n",
|
|
" df['cums_B'] = df.copy().dura_B.cumsum()\n",
|
|
" ind_A = len(df.cums_A[df.cums_A <= remainder]) % inter2no_phase[inter_no]\n",
|
|
" ind_B = len(df.cums_B[df.cums_B <= remainder]) % inter2no_phase[inter_no]\n",
|
|
" phas_A = df.loc[ind_A, 'phase_no']\n",
|
|
" phas_B = df.loc[ind_B, 'phase_no']\n",
|
|
" move_A = df.loc[ind_A, 'move_A']\n",
|
|
" move_B = df.loc[ind_B, 'move_B']\n",
|
|
" move.append(pd.DataFrame({'inter_no':[inter_no], 'phas_A':[phas_A], 'phas_B':[phas_B], 'move_A':[move_A], 'move_B':[move_B]}))\n",
|
|
" move = pd.concat(move)\n",
|
|
" move.to_csv(f'../move/move_{current_time}.csv')\n",
|
|
" display(move)\n",
|
|
"# generate_moves()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"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_hour</th>\n",
|
|
" <th>start_minute</th>\n",
|
|
" <th>dura_A1</th>\n",
|
|
" <th>dura_A2</th>\n",
|
|
" <th>dura_A3</th>\n",
|
|
" <th>dura_A4</th>\n",
|
|
" <th>dura_A5</th>\n",
|
|
" <th>dura_A6</th>\n",
|
|
" <th>dura_A7</th>\n",
|
|
" <th>dura_A8</th>\n",
|
|
" <th>dura_B1</th>\n",
|
|
" <th>dura_B2</th>\n",
|
|
" <th>dura_B3</th>\n",
|
|
" <th>dura_B4</th>\n",
|
|
" <th>dura_B5</th>\n",
|
|
" <th>dura_B6</th>\n",
|
|
" <th>dura_B7</th>\n",
|
|
" <th>dura_B8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" <th>yellow_A1</th>\n",
|
|
" <th>yellow_B1</th>\n",
|
|
" <th>yellow_A2</th>\n",
|
|
" <th>yellow_B2</th>\n",
|
|
" <th>yellow_A3</th>\n",
|
|
" <th>yellow_B3</th>\n",
|
|
" <th>yellow_A4</th>\n",
|
|
" <th>yellow_B4</th>\n",
|
|
" <th>yellow_A5</th>\n",
|
|
" <th>yellow_B5</th>\n",
|
|
" <th>yellow_A6</th>\n",
|
|
" <th>yellow_B6</th>\n",
|
|
" <th>yellow_A7</th>\n",
|
|
" <th>yellow_B7</th>\n",
|
|
" <th>yellow_A8</th>\n",
|
|
" <th>yellow_B8</th>\n",
|
|
" <th>red_A1</th>\n",
|
|
" <th>red_B1</th>\n",
|
|
" <th>red_A2</th>\n",
|
|
" <th>red_B2</th>\n",
|
|
" <th>red_A3</th>\n",
|
|
" <th>red_B3</th>\n",
|
|
" <th>red_A4</th>\n",
|
|
" <th>red_B4</th>\n",
|
|
" <th>red_A5</th>\n",
|
|
" <th>red_B5</th>\n",
|
|
" <th>red_A6</th>\n",
|
|
" <th>red_B6</th>\n",
|
|
" <th>red_A7</th>\n",
|
|
" <th>red_B7</th>\n",
|
|
" <th>red_A8</th>\n",
|
|
" <th>red_B8</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>153</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>169</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>113</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>113</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>185</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>34</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>34</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>77</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>77</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>49</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>90</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>71</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>80</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>80</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>75</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>132</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>134</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>50</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>137</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>114</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>122</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>122</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>103</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>53</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>53</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>62</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>10</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>07</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>65</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>65</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>131</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>30</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>09</td>\n",
|
|
" <td>00</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>70</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>137</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>31</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>47</td>\n",
|
|
" <td>75</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>66</td>\n",
|
|
" <td>75</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>143</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no start_hour start_minute dura_A1 dura_A2 dura_A3 dura_A4 \\\n",
|
|
"0 175 00 00 37 39 55 29 \n",
|
|
"1 175 07 00 40 42 55 33 \n",
|
|
"2 175 09 00 43 45 55 37 \n",
|
|
"3 175 18 30 46 48 55 41 \n",
|
|
"4 176 00 00 37 73 40 0 \n",
|
|
"5 176 07 00 37 93 40 0 \n",
|
|
"6 176 09 00 37 103 40 0 \n",
|
|
"7 176 18 30 37 113 40 0 \n",
|
|
"8 177 00 00 36 20 68 26 \n",
|
|
"9 177 07 00 40 25 71 34 \n",
|
|
"10 177 09 00 43 27 70 40 \n",
|
|
"11 177 18 30 45 32 77 36 \n",
|
|
"12 178 00 00 38 39 40 23 \n",
|
|
"13 178 07 00 38 39 42 41 \n",
|
|
"14 178 09 00 38 39 43 50 \n",
|
|
"15 178 18 30 38 39 44 59 \n",
|
|
"16 201 00 00 24 24 17 58 \n",
|
|
"17 201 07 00 30 36 18 58 \n",
|
|
"18 201 09 00 33 36 25 58 \n",
|
|
"19 201 18 30 36 50 18 58 \n",
|
|
"20 202 00 00 39 101 0 0 \n",
|
|
"21 202 07 00 46 114 0 0 \n",
|
|
"22 202 09 00 46 114 0 0 \n",
|
|
"23 202 18 30 48 122 0 0 \n",
|
|
"24 206 00 00 33 35 26 26 \n",
|
|
"25 206 07 00 44 44 26 26 \n",
|
|
"26 206 09 00 45 53 26 26 \n",
|
|
"27 206 18 30 46 62 26 26 \n",
|
|
"28 210 00 00 43 29 56 22 \n",
|
|
"29 210 07 00 43 39 65 23 \n",
|
|
"30 210 09 00 43 43 70 24 \n",
|
|
"31 210 18 30 43 47 75 25 \n",
|
|
"\n",
|
|
" dura_A5 dura_A6 dura_A7 dura_A8 dura_B1 dura_B2 dura_B3 dura_B4 \\\n",
|
|
"0 0 0 0 0 37 39 25 59 \n",
|
|
"1 0 0 0 0 40 42 29 59 \n",
|
|
"2 0 0 0 0 43 45 33 59 \n",
|
|
"3 0 0 0 0 46 48 37 59 \n",
|
|
"4 0 0 0 0 37 73 40 0 \n",
|
|
"5 0 0 0 0 37 93 40 0 \n",
|
|
"6 0 0 0 0 37 103 40 0 \n",
|
|
"7 0 0 0 0 37 113 40 0 \n",
|
|
"8 0 0 0 0 36 20 68 26 \n",
|
|
"9 0 0 0 0 40 25 71 34 \n",
|
|
"10 0 0 0 0 43 27 70 40 \n",
|
|
"11 0 0 0 0 45 32 77 36 \n",
|
|
"12 0 0 0 0 38 39 40 23 \n",
|
|
"13 0 0 0 0 38 39 62 21 \n",
|
|
"14 0 0 0 0 38 39 71 22 \n",
|
|
"15 0 0 0 0 38 39 80 23 \n",
|
|
"16 17 0 0 0 24 24 17 58 \n",
|
|
"17 18 0 0 0 30 36 18 58 \n",
|
|
"18 18 0 0 0 33 36 25 58 \n",
|
|
"19 18 0 0 0 36 50 18 58 \n",
|
|
"20 0 0 0 0 39 101 0 0 \n",
|
|
"21 0 0 0 0 46 114 0 0 \n",
|
|
"22 0 0 0 0 46 114 0 0 \n",
|
|
"23 0 0 0 0 48 122 0 0 \n",
|
|
"24 0 0 0 0 33 35 26 26 \n",
|
|
"25 0 0 0 0 44 44 26 26 \n",
|
|
"26 0 0 0 0 45 53 26 26 \n",
|
|
"27 0 0 0 0 46 62 26 26 \n",
|
|
"28 0 0 0 0 24 48 56 22 \n",
|
|
"29 0 0 0 0 24 58 65 23 \n",
|
|
"30 0 0 0 0 28 58 70 24 \n",
|
|
"31 0 0 0 0 24 66 75 25 \n",
|
|
"\n",
|
|
" dura_B5 dura_B6 dura_B7 dura_B8 cycle offset yellow_A1 yellow_B1 \\\n",
|
|
"0 0 0 0 0 160 57 4 4 \n",
|
|
"1 0 0 0 0 170 40 4 4 \n",
|
|
"2 0 0 0 0 180 28 4 4 \n",
|
|
"3 0 0 0 0 190 18 4 4 \n",
|
|
"4 0 0 0 0 150 131 4 4 \n",
|
|
"5 0 0 0 0 170 153 4 4 \n",
|
|
"6 0 0 0 0 180 169 4 4 \n",
|
|
"7 0 0 0 0 190 185 4 4 \n",
|
|
"8 0 0 0 0 150 35 5 5 \n",
|
|
"9 0 0 0 0 170 33 5 5 \n",
|
|
"10 0 0 0 0 180 41 5 5 \n",
|
|
"11 0 0 0 0 190 49 5 5 \n",
|
|
"12 0 0 0 0 140 50 4 4 \n",
|
|
"13 0 0 0 0 160 90 4 4 \n",
|
|
"14 0 0 0 0 170 80 4 4 \n",
|
|
"15 0 0 0 0 180 75 4 4 \n",
|
|
"16 17 0 0 0 140 133 4 4 \n",
|
|
"17 18 0 0 0 160 132 4 4 \n",
|
|
"18 18 0 0 0 170 134 4 4 \n",
|
|
"19 18 0 0 0 180 137 4 4 \n",
|
|
"20 0 0 0 0 140 103 4 4 \n",
|
|
"21 0 0 0 0 160 103 4 4 \n",
|
|
"22 0 0 0 0 160 103 4 4 \n",
|
|
"23 0 0 0 0 170 103 4 4 \n",
|
|
"24 0 0 0 0 120 10 4 4 \n",
|
|
"25 0 0 0 0 140 7 4 4 \n",
|
|
"26 0 0 0 0 150 17 4 4 \n",
|
|
"27 0 0 0 0 160 10 4 4 \n",
|
|
"28 0 0 0 0 150 115 4 4 \n",
|
|
"29 0 0 0 0 170 131 4 4 \n",
|
|
"30 0 0 0 0 180 137 4 4 \n",
|
|
"31 0 0 0 0 190 143 4 4 \n",
|
|
"\n",
|
|
" yellow_A2 yellow_B2 yellow_A3 yellow_B3 yellow_A4 yellow_B4 \\\n",
|
|
"0 4 4 4 4 4 4 \n",
|
|
"1 4 4 4 4 4 4 \n",
|
|
"2 4 4 4 4 4 4 \n",
|
|
"3 4 4 4 4 4 4 \n",
|
|
"4 4 4 4 4 4 4 \n",
|
|
"5 4 4 4 4 4 4 \n",
|
|
"6 4 4 4 4 4 4 \n",
|
|
"7 4 4 4 4 4 4 \n",
|
|
"8 5 5 5 5 5 5 \n",
|
|
"9 5 5 5 5 5 5 \n",
|
|
"10 5 5 5 5 5 5 \n",
|
|
"11 5 5 5 5 5 5 \n",
|
|
"12 4 4 4 4 4 4 \n",
|
|
"13 4 4 4 4 4 4 \n",
|
|
"14 4 4 4 4 4 4 \n",
|
|
"15 4 4 4 4 4 4 \n",
|
|
"16 4 4 4 4 4 4 \n",
|
|
"17 4 4 4 4 4 4 \n",
|
|
"18 4 4 4 4 4 4 \n",
|
|
"19 4 4 4 4 4 4 \n",
|
|
"20 4 4 4 4 4 4 \n",
|
|
"21 4 4 4 4 4 4 \n",
|
|
"22 4 4 4 4 4 4 \n",
|
|
"23 4 4 4 4 4 4 \n",
|
|
"24 4 4 4 4 4 4 \n",
|
|
"25 4 4 4 4 4 4 \n",
|
|
"26 4 4 4 4 4 4 \n",
|
|
"27 4 4 4 4 4 4 \n",
|
|
"28 4 4 4 4 4 4 \n",
|
|
"29 4 4 4 4 4 4 \n",
|
|
"30 4 4 4 4 4 4 \n",
|
|
"31 4 4 4 4 4 4 \n",
|
|
"\n",
|
|
" yellow_A5 yellow_B5 yellow_A6 yellow_B6 yellow_A7 yellow_B7 \\\n",
|
|
"0 4 4 4 4 4 4 \n",
|
|
"1 4 4 4 4 4 4 \n",
|
|
"2 4 4 4 4 4 4 \n",
|
|
"3 4 4 4 4 4 4 \n",
|
|
"4 4 4 4 4 4 4 \n",
|
|
"5 4 4 4 4 4 4 \n",
|
|
"6 4 4 4 4 4 4 \n",
|
|
"7 4 4 4 4 4 4 \n",
|
|
"8 5 5 5 5 5 5 \n",
|
|
"9 5 5 5 5 5 5 \n",
|
|
"10 5 5 5 5 5 5 \n",
|
|
"11 5 5 5 5 5 5 \n",
|
|
"12 4 4 4 4 4 4 \n",
|
|
"13 4 4 4 4 4 4 \n",
|
|
"14 4 4 4 4 4 4 \n",
|
|
"15 4 4 4 4 4 4 \n",
|
|
"16 4 4 4 4 4 4 \n",
|
|
"17 4 4 4 4 4 4 \n",
|
|
"18 4 4 4 4 4 4 \n",
|
|
"19 4 4 4 4 4 4 \n",
|
|
"20 4 4 4 4 4 4 \n",
|
|
"21 4 4 4 4 4 4 \n",
|
|
"22 4 4 4 4 4 4 \n",
|
|
"23 4 4 4 4 4 4 \n",
|
|
"24 4 4 4 4 4 4 \n",
|
|
"25 4 4 4 4 4 4 \n",
|
|
"26 4 4 4 4 4 4 \n",
|
|
"27 4 4 4 4 4 4 \n",
|
|
"28 4 4 4 4 4 4 \n",
|
|
"29 4 4 4 4 4 4 \n",
|
|
"30 4 4 4 4 4 4 \n",
|
|
"31 4 4 4 4 4 4 \n",
|
|
"\n",
|
|
" yellow_A8 yellow_B8 red_A1 red_B1 red_A2 red_B2 red_A3 red_B3 \\\n",
|
|
"0 4 4 2 2 2 2 2 2 \n",
|
|
"1 4 4 2 2 2 2 2 2 \n",
|
|
"2 4 4 2 2 2 2 2 2 \n",
|
|
"3 4 4 2 2 2 2 2 2 \n",
|
|
"4 4 4 0 0 0 0 0 0 \n",
|
|
"5 4 4 0 0 0 0 0 0 \n",
|
|
"6 4 4 0 0 0 0 0 0 \n",
|
|
"7 4 4 0 0 0 0 0 0 \n",
|
|
"8 5 5 1 1 1 1 1 1 \n",
|
|
"9 5 5 1 1 1 1 1 1 \n",
|
|
"10 5 5 1 1 1 1 1 1 \n",
|
|
"11 5 5 1 1 1 1 1 1 \n",
|
|
"12 4 4 0 0 0 0 0 0 \n",
|
|
"13 4 4 0 0 0 0 0 0 \n",
|
|
"14 4 4 0 0 0 0 0 0 \n",
|
|
"15 4 4 0 0 0 0 0 0 \n",
|
|
"16 4 4 1 1 1 1 1 1 \n",
|
|
"17 4 4 1 1 1 1 1 1 \n",
|
|
"18 4 4 1 1 1 1 1 1 \n",
|
|
"19 4 4 1 1 1 1 1 1 \n",
|
|
"20 4 4 1 1 1 1 1 1 \n",
|
|
"21 4 4 1 1 1 1 1 1 \n",
|
|
"22 4 4 1 1 1 1 1 1 \n",
|
|
"23 4 4 1 1 1 1 1 1 \n",
|
|
"24 4 4 1 1 1 1 1 1 \n",
|
|
"25 4 4 1 1 1 1 1 1 \n",
|
|
"26 4 4 1 1 1 1 1 1 \n",
|
|
"27 4 4 1 1 1 1 1 1 \n",
|
|
"28 4 4 1 1 1 1 1 1 \n",
|
|
"29 4 4 1 1 1 1 1 1 \n",
|
|
"30 4 4 1 1 1 1 1 1 \n",
|
|
"31 4 4 1 1 1 1 1 1 \n",
|
|
"\n",
|
|
" red_A4 red_B4 red_A5 red_B5 red_A6 red_B6 red_A7 red_B7 red_A8 \\\n",
|
|
"0 2 2 2 2 2 2 2 2 2 \n",
|
|
"1 2 2 2 2 2 2 2 2 2 \n",
|
|
"2 2 2 2 2 2 2 2 2 2 \n",
|
|
"3 2 2 2 2 2 2 2 2 2 \n",
|
|
"4 0 0 0 0 0 0 0 0 0 \n",
|
|
"5 0 0 0 0 0 0 0 0 0 \n",
|
|
"6 0 0 0 0 0 0 0 0 0 \n",
|
|
"7 0 0 0 0 0 0 0 0 0 \n",
|
|
"8 1 1 1 1 1 1 1 1 1 \n",
|
|
"9 1 1 1 1 1 1 1 1 1 \n",
|
|
"10 1 1 1 1 1 1 1 1 1 \n",
|
|
"11 1 1 1 1 1 1 1 1 1 \n",
|
|
"12 0 0 0 0 0 0 0 0 0 \n",
|
|
"13 0 0 0 0 0 0 0 0 0 \n",
|
|
"14 0 0 0 0 0 0 0 0 0 \n",
|
|
"15 0 0 0 0 0 0 0 0 0 \n",
|
|
"16 1 1 1 1 1 1 1 1 1 \n",
|
|
"17 1 1 1 1 1 1 1 1 1 \n",
|
|
"18 1 1 1 1 1 1 1 1 1 \n",
|
|
"19 1 1 1 1 1 1 1 1 1 \n",
|
|
"20 1 1 1 1 1 1 1 1 1 \n",
|
|
"21 1 1 1 1 1 1 1 1 1 \n",
|
|
"22 1 1 1 1 1 1 1 1 1 \n",
|
|
"23 1 1 1 1 1 1 1 1 1 \n",
|
|
"24 1 1 1 1 1 1 1 1 1 \n",
|
|
"25 1 1 1 1 1 1 1 1 1 \n",
|
|
"26 1 1 1 1 1 1 1 1 1 \n",
|
|
"27 1 1 1 1 1 1 1 1 1 \n",
|
|
"28 1 1 1 1 1 1 1 1 1 \n",
|
|
"29 1 1 1 1 1 1 1 1 1 \n",
|
|
"30 1 1 1 1 1 1 1 1 1 \n",
|
|
"31 1 1 1 1 1 1 1 1 1 \n",
|
|
"\n",
|
|
" red_B8 \n",
|
|
"0 2 \n",
|
|
"1 2 \n",
|
|
"2 2 \n",
|
|
"3 2 \n",
|
|
"4 0 \n",
|
|
"5 0 \n",
|
|
"6 0 \n",
|
|
"7 0 \n",
|
|
"8 1 \n",
|
|
"9 1 \n",
|
|
"10 1 \n",
|
|
"11 1 \n",
|
|
"12 0 \n",
|
|
"13 0 \n",
|
|
"14 0 \n",
|
|
"15 0 \n",
|
|
"16 1 \n",
|
|
"17 1 \n",
|
|
"18 1 \n",
|
|
"19 1 \n",
|
|
"20 1 \n",
|
|
"21 1 \n",
|
|
"22 1 \n",
|
|
"23 1 \n",
|
|
"24 1 \n",
|
|
"25 1 \n",
|
|
"26 1 \n",
|
|
"27 1 \n",
|
|
"28 1 \n",
|
|
"29 1 \n",
|
|
"30 1 \n",
|
|
"31 1 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 신호계획\n",
|
|
"plan = pd.read_csv(\"time_plan.csv\")\n",
|
|
"plan = plan[plan.ID.isin([1, 5, 8, 11])]\n",
|
|
"ID2starttime = {1:\"00:00\", 5:\"07:00\", 8:\"09:00\", 11:\"18:30\"}\n",
|
|
"plan['start_hour'] = plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[0])\n",
|
|
"plan['start_minute']=plan.ID.apply(lambda id:ID2starttime[id].split(\":\")[1])\n",
|
|
"plan = plan[['inter_no', 'start_hour', 'start_minute', 'phase_no', 'ring_type', 'duration', 'cycle', 'offset']]\n",
|
|
"plan = plan.pivot_table(index=['inter_no', 'start_hour', 'start_minute', 'cycle', 'offset'], columns=['phase_no','ring_type'], values='duration', aggfunc='first').fillna(0).astype(int)\n",
|
|
"new_columns = [f'dura_{ring}{phase}' for phase in range(1, 6) for ring in ['A', 'B']]\n",
|
|
"plan.columns = new_columns\n",
|
|
"new_columns = [f'dura_{ring}{phase}' for phase in range(1, 9) for ring in ['A', 'B']]\n",
|
|
"for col in new_columns:\n",
|
|
" if col not in plan.columns:\n",
|
|
" plan[col] = 0\n",
|
|
"plan.reset_index(inplace=True)\n",
|
|
"plan = plan[list(plan.columns)[:3] + sorted(plan.columns)[1:-4] + list(plan.columns)[3:5]]\n",
|
|
"\n",
|
|
"yellow_columns = [f'yellow_{ring}{phase}' for phase in range(1, 9) for ring in ['A', 'B']]\n",
|
|
"red_columns = [f'red_{ring}{phase}' for phase in range(1, 9) for ring in ['A', 'B']]\n",
|
|
"\n",
|
|
"inter_nos = plan.inter_no.unique()\n",
|
|
"yellow_list = np.random.choice([3, 4, 5], size=plan.inter_no.nunique(), p=[0.1, 0.7, 0.2])\n",
|
|
"inter2yellow = dict(zip(inter_nos, yellow_list))\n",
|
|
"red_list = np.random.choice([0, 1, 2], size=plan.inter_no.nunique(), p=[0.1, 0.7, 0.2])\n",
|
|
"inter2red = dict(zip(inter_nos, red_list))\n",
|
|
"\n",
|
|
"for phase in range(1, 9):\n",
|
|
" for ring in ['A', 'B']:\n",
|
|
" plan[f'yellow_{ring}{phase}'] = plan['inter_no'].map(inter2yellow)\n",
|
|
"for phase in range(1, 9):\n",
|
|
" for ring in ['A', 'B']:\n",
|
|
" plan[f'red_{ring}{phase}'] = plan['inter_no'].map(inter2red)\n",
|
|
"\n",
|
|
"plan.to_csv('../plan.csv', index=0)\n",
|
|
"pland = plan.copy()\n",
|
|
"cums_A = np.array(pland[[f'dura_A{k}' for k in range(1,9)]].cumsum(axis=1))\n",
|
|
"cums_B = np.array(pland[[f'dura_B{k}' for k in range(1,9)]].cumsum(axis=1))\n",
|
|
"detailed_cums = []\n",
|
|
"i = 0\n",
|
|
"for row_A, row_B in zip(cums_A, cums_B):\n",
|
|
" combined_row = np.unique(np.concatenate((row_A, row_B)))\n",
|
|
" ddur = np.concatenate(([combined_row[0]], np.diff(combined_row)))\n",
|
|
" ddur = np.pad(ddur, (0, 8 - len(ddur)), constant_values=(0))\n",
|
|
" detailed_cums.append(ddur)\n",
|
|
" for j in range(8):\n",
|
|
" pland.at[i, f'ddur_{j+1}'] = ddur[j]\n",
|
|
" i+=1\n",
|
|
"pland = pland[['inter_no', 'start_hour', 'start_minute'] + [f'ddur_{i}' for i in range(1,9)] + ['cycle', 'offset']] # plan detailed\n",
|
|
"pland[[f'ddur_{i}' for i in range(1,9)]] = pland[[f'ddur_{i}' for i in range(1,9)]].astype(int)\n",
|
|
"with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n",
|
|
" display(plan)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"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>end_unix</th>\n",
|
|
" <th>dura_A1</th>\n",
|
|
" <th>dura_A2</th>\n",
|
|
" <th>dura_A3</th>\n",
|
|
" <th>dura_A4</th>\n",
|
|
" <th>dura_A5</th>\n",
|
|
" <th>dura_A6</th>\n",
|
|
" <th>dura_A7</th>\n",
|
|
" <th>dura_A8</th>\n",
|
|
" <th>dura_B1</th>\n",
|
|
" <th>dura_B2</th>\n",
|
|
" <th>dura_B3</th>\n",
|
|
" <th>dura_B4</th>\n",
|
|
" <th>dura_B5</th>\n",
|
|
" <th>dura_B6</th>\n",
|
|
" <th>dura_B7</th>\n",
|
|
" <th>dura_B8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380520</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1704380550</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704380551</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704380560</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380640</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380680</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1704380700</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>36</td>\n",
|
|
" <td>20</td>\n",
|
|
" <td>68</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>35</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1704380700</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1704380701</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>56</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>115</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704380720</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>55</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>59</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380760</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380820</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 dura_A6 \\\n",
|
|
"0 206 1704380520 33 35 26 26 0 0 \n",
|
|
"1 178 1704380540 38 39 40 23 0 0 \n",
|
|
"2 201 1704380540 24 24 17 58 17 0 \n",
|
|
"3 202 1704380540 39 101 0 0 0 0 \n",
|
|
"4 177 1704380550 36 20 68 26 0 0 \n",
|
|
"5 210 1704380550 43 29 56 22 0 0 \n",
|
|
"6 176 1704380551 37 73 40 0 0 0 \n",
|
|
"7 175 1704380560 37 39 55 29 0 0 \n",
|
|
"8 206 1704380640 33 35 26 26 0 0 \n",
|
|
"9 201 1704380680 24 24 17 58 17 0 \n",
|
|
"10 202 1704380680 39 101 0 0 0 0 \n",
|
|
"11 178 1704380680 38 39 40 23 0 0 \n",
|
|
"12 177 1704380700 36 20 68 26 0 0 \n",
|
|
"13 176 1704380700 37 73 40 0 0 0 \n",
|
|
"14 210 1704380701 43 29 56 22 0 0 \n",
|
|
"15 175 1704380720 37 39 55 29 0 0 \n",
|
|
"16 206 1704380760 33 35 26 26 0 0 \n",
|
|
"17 201 1704380820 24 24 17 58 17 0 \n",
|
|
"18 202 1704380820 39 101 0 0 0 0 \n",
|
|
"19 178 1704380820 38 39 40 23 0 0 \n",
|
|
"\n",
|
|
" dura_A7 dura_A8 dura_B1 dura_B2 dura_B3 dura_B4 dura_B5 dura_B6 dura_B7 \\\n",
|
|
"0 0 0 33 35 26 26 0 0 0 \n",
|
|
"1 0 0 38 39 40 23 0 0 0 \n",
|
|
"2 0 0 24 24 17 58 17 0 0 \n",
|
|
"3 0 0 39 101 0 0 0 0 0 \n",
|
|
"4 0 0 36 20 68 26 0 0 0 \n",
|
|
"5 0 0 24 48 56 22 0 0 0 \n",
|
|
"6 0 0 37 73 40 0 0 0 0 \n",
|
|
"7 0 0 37 39 25 59 0 0 0 \n",
|
|
"8 0 0 33 35 26 26 0 0 0 \n",
|
|
"9 0 0 24 24 17 58 17 0 0 \n",
|
|
"10 0 0 39 101 0 0 0 0 0 \n",
|
|
"11 0 0 38 39 40 23 0 0 0 \n",
|
|
"12 0 0 36 20 68 26 0 0 0 \n",
|
|
"13 0 0 37 73 40 0 0 0 0 \n",
|
|
"14 0 0 24 48 56 22 0 0 0 \n",
|
|
"15 0 0 37 39 25 59 0 0 0 \n",
|
|
"16 0 0 33 35 26 26 0 0 0 \n",
|
|
"17 0 0 24 24 17 58 17 0 0 \n",
|
|
"18 0 0 39 101 0 0 0 0 0 \n",
|
|
"19 0 0 38 39 40 23 0 0 0 \n",
|
|
"\n",
|
|
" dura_B8 cycle offset \n",
|
|
"0 0 120 10 \n",
|
|
"1 0 140 50 \n",
|
|
"2 0 140 133 \n",
|
|
"3 0 140 103 \n",
|
|
"4 0 150 35 \n",
|
|
"5 0 150 115 \n",
|
|
"6 0 150 131 \n",
|
|
"7 0 160 57 \n",
|
|
"8 0 120 10 \n",
|
|
"9 0 140 133 \n",
|
|
"10 0 140 103 \n",
|
|
"11 0 140 50 \n",
|
|
"12 0 150 35 \n",
|
|
"13 0 150 131 \n",
|
|
"14 0 150 115 \n",
|
|
"15 0 160 57 \n",
|
|
"16 0 120 10 \n",
|
|
"17 0 140 133 \n",
|
|
"18 0 140 103 \n",
|
|
"19 0 140 50 "
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 신호이력\n",
|
|
"midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
|
|
"next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
|
|
"plan['end_unix'] = plan['start_hour'].astype(int) * 3600 + plan['start_minute'].astype(int) * 60 + midnight # 각 plan의 마지막 시점\n",
|
|
"history = []\n",
|
|
"for inter_no in plan.inter_no.unique():\n",
|
|
" aplan = plan[plan.inter_no == inter_no] # a (specific) plan\n",
|
|
" rows = []\n",
|
|
" current_time = midnight # 현재시각\n",
|
|
" for i in range(len(aplan)):\n",
|
|
" first_row = aplan.iloc[i]\n",
|
|
" cycle = first_row['cycle']\n",
|
|
" unix_end = aplan.iloc[i + 1]['end_unix'] if i < len(aplan) - 1 else next_day # a plan의 마지막 시점\n",
|
|
" r = 0\n",
|
|
" while current_time <= unix_end:\n",
|
|
" remainder = current_time % 10\n",
|
|
" if remainder != 0: # 현재시각의 일의자리가 0이 아니면 다음 현재시각의 일의자리가 0이 되도록 맞춰준다.\n",
|
|
" r = (5 - remainder) % 10 - 5 # 1>-1, 2>-2, 3>-3, 4>-4, 5>-5, 6>4, 7>3, 8>2, 9>1\n",
|
|
" else:\n",
|
|
" r = random.choices([0, -1, 1], weights=[10, 1, 1])[0] # 측정오차\n",
|
|
" # 0.001의 확률로 결측 발생\n",
|
|
" if random.random() < 0.001: # 주기의 배수만큼 결측\n",
|
|
" n = random.randint(0,100)\n",
|
|
" current_time += n * cycle + r\n",
|
|
" # 0.01의 확률로 이상치 발생\n",
|
|
" elif random.random() > 0.99: # 카이제곱분포값 * 주기만큼의 이상치 발생. 카이제곱분포값은 항상 양수이고 평균이 1\n",
|
|
" current_time += int(np.random.normal()**2 * cycle) + r\n",
|
|
" else:\n",
|
|
" current_time += cycle + r # 결측/이상 없음\n",
|
|
" new_row = first_row.copy()\n",
|
|
" new_row['end_unix'] = current_time\n",
|
|
" rows.append(new_row)\n",
|
|
" ahistory = pd.concat(rows, axis=1).transpose().reset_index(drop=True) # a (specific) history\n",
|
|
" history.append(ahistory)\n",
|
|
"history = pd.concat(history)\n",
|
|
"history = history[history.end_unix <= next_day]\n",
|
|
"history = history.sort_values(by='end_unix').reset_index(drop=True)\n",
|
|
"history = history[['inter_no', 'end_unix'] + [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)] + ['cycle', 'offset']]\n",
|
|
"history.to_csv('../history.csv', index=0)\n",
|
|
"history[:20]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# # 신호이력\n",
|
|
"# midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
|
|
"# next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
|
|
"# pland['end_unix'] = pland['start_hour'].astype(int) * 3600 + pland['start_minute'].astype(int) * 60 + midnight # 각 plan의 마지막 시점\n",
|
|
"# history = []\n",
|
|
"# for inter_no in pland.inter_no.unique():\n",
|
|
"# aplan = pland[pland.inter_no == inter_no] # a (specific) plan\n",
|
|
"# rows = []\n",
|
|
"# current_time = midnight # 현재시각\n",
|
|
"# for i in range(len(aplan)):\n",
|
|
"# first_row = aplan.iloc[i]\n",
|
|
"# cycle = first_row['cycle']\n",
|
|
"# unix_end = aplan.iloc[i + 1]['end_unix'] if i < len(aplan) - 1 else next_day # a plan의 마지막 시점\n",
|
|
"# r = 0\n",
|
|
"# while current_time <= unix_end:\n",
|
|
"# remainder = current_time % 10\n",
|
|
"# if remainder != 0: # 현재시각의 일의자리가 0이 아니면 다음 현재시각의 일이자리가 0이 되도록 맞춰준다.\n",
|
|
"# r = (5 - remainder) % 10 - 5 # 1>-1, 2>-2, 3>-3, 4>-4, 5>-5, 6>4, 7>3, 8>2, 9>1\n",
|
|
"# else:\n",
|
|
"# r = random.choices([0, -1, 1], weights=[10, 1, 1])[0] # 측정오차\n",
|
|
"# # 0.001의 확률로 결측 발생\n",
|
|
"# if random.random() < 0.001: # 주기의 배수만큼 결측\n",
|
|
"# n = random.randint(0,100)\n",
|
|
"# current_time += n * cycle + r\n",
|
|
"# # 0.01의 확률로 이상치 발생\n",
|
|
"# elif random.random() > 0.99: # 카이제곱분포값 * 주기만큼의 이상치 발생. 카이제곱분포값은 항상 양수이고 평균이 1\n",
|
|
"# current_time += int(np.random.normal()**2 * cycle) + r\n",
|
|
"# else:\n",
|
|
"# current_time += cycle + r # 결측/이상 없음\n",
|
|
"# new_row = first_row.copy()\n",
|
|
"# new_row['end_unix'] = current_time\n",
|
|
"# rows.append(new_row)\n",
|
|
"# ahistory = pd.concat(rows, axis=1).transpose().reset_index(drop=True) # a (specific) history\n",
|
|
"# history.append(ahistory)\n",
|
|
"# history = pd.concat(history)\n",
|
|
"# history = history[history.end_unix <= next_day]\n",
|
|
"# history = history.sort_values(by='end_unix').reset_index(drop=True)\n",
|
|
"# history = history[['inter_no', 'end_unix'] + [f'ddur_{j}' for j in range(1, 9)] + ['cycle', 'offset']]\n",
|
|
"# history.to_csv('../history.csv')\n",
|
|
"# display(history[:30])\n",
|
|
"# # hist = history.copy()[history.inter_no==175]\n",
|
|
"# # hist['diff'] = hist['end_unix'].diff()\n",
|
|
"# # with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n",
|
|
"# # display(hist)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"uturn = pd.read_csv('U_TURN.csv')\n",
|
|
"uturn = uturn.rename(columns={'inode_id':'parent_id', 'unode_id':'child_id'})\n",
|
|
"uturn = uturn[['parent_id', 'child_id', 'adj_from_edge_id', 'adj_to_edge_id', 'from_edge_id', 'to_edge_id']]\n",
|
|
"uturn.to_csv('../uturn.csv', index=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"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>inter_type</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>i0</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>u00</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>i1</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>i2</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>u20</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>i3</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u30</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u31</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>u32</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>i8</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>i9</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>i7</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>i6</td>\n",
|
|
" <td>parent</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>u60</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>c30</td>\n",
|
|
" <td>child</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no node_id inter_type\n",
|
|
"0 175 i0 parent\n",
|
|
"1 175 u00 child\n",
|
|
"2 176 i1 parent\n",
|
|
"3 177 i2 parent\n",
|
|
"4 177 u20 child\n",
|
|
"5 178 i3 parent\n",
|
|
"6 178 u30 child\n",
|
|
"7 178 u31 child\n",
|
|
"8 178 u32 child\n",
|
|
"9 201 i8 parent\n",
|
|
"10 202 i9 parent\n",
|
|
"11 206 i7 parent\n",
|
|
"12 210 i6 parent\n",
|
|
"13 210 u60 child\n",
|
|
"14 178 c30 child"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 교차로-노드 매칭\n",
|
|
"inter_node = pd.read_csv('inter.csv')\n",
|
|
"inter_node = inter_node[['INT_NO', 'node_id', 'P/C']]\n",
|
|
"# inter_node.drop(index=len(inter_node) - 1, inplace=True)\n",
|
|
"inter_node.columns = ['inter_no', 'node_id', 'inter_type'] # parent : 주교차로, child : 부교차로\n",
|
|
"inter_node['inter_no'] = inter_node['inter_no'].astype(int) # i : intersection, u : u-turn intersection, c : coupling intersection\n",
|
|
"inter_node = pd.concat([inter_node, pd.DataFrame({'inter_no':[178], 'node_id':['c30'], 'inter_type':['child']})]).reset_index(drop=True)\n",
|
|
"inter_node.to_csv('../inter_node.csv', index=0)\n",
|
|
"display(inter_node)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import sys\n",
|
|
"sys.path.append('../../../Scripts')\n",
|
|
"\n",
|
|
"from preprocess_daily import DailyPreprocessor"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"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 = DailyPreprocessor()\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()\n",
|
|
"self.make_match6()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"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>phas_A</th>\n",
|
|
" <th>phas_B</th>\n",
|
|
" <th>move_A</th>\n",
|
|
" <th>move_B</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phas_A phas_B move_A move_B\n",
|
|
"0 175 1 1 8 4\n",
|
|
"1 175 2 2 7 3\n",
|
|
"2 175 3 3 6 1\n",
|
|
"3 175 3 4 6 2\n",
|
|
"4 175 4 4 5 2\n",
|
|
"5 176 1 1 8 4\n",
|
|
"6 176 2 2 8 3\n",
|
|
"7 176 3 3 5 18\n",
|
|
"8 177 1 1 8 4\n",
|
|
"9 177 2 2 17 18\n",
|
|
"10 178 1 1 8 4\n",
|
|
"11 178 2 2 7 3\n",
|
|
"12 178 3 3 5 2\n",
|
|
"13 178 4 4 6 1\n",
|
|
"14 201 1 1 8 3\n",
|
|
"15 201 2 2 5 2\n",
|
|
"16 201 3 3 6 2\n",
|
|
"17 201 4 4 6 1\n",
|
|
"18 201 5 5 7 4\n",
|
|
"19 202 1 1 6 2\n",
|
|
"20 202 2 2 17 18\n",
|
|
"21 206 1 1 8 4\n",
|
|
"22 206 2 2 17 18\n",
|
|
"23 206 3 3 8 4\n",
|
|
"24 206 4 4 17 18\n",
|
|
"25 210 1 1 6 18\n",
|
|
"26 210 1 2 6 2\n",
|
|
"27 210 2 2 5 2\n",
|
|
"28 210 3 3 7 4\n",
|
|
"29 210 4 4 8 3"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"self.match1"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"self.match7 = self.match6.copy()\n",
|
|
"self.match7 = self.match7[['inter_no', 'move_no', 'inc_dire', 'out_dire', 'inc_edge_id', 'out_edge_id', 'node_id']]\n",
|
|
"\n",
|
|
"# parent_ids = sorted(self.inter_node[self.inter_node.inter_type=='parent'].node_id.unique())\n",
|
|
"# child_ids = sorted(self.inter_node[self.inter_node.inter_type=='child'].node_id.unique())\n",
|
|
"\n",
|
|
"# (1) 가능한 (진입방향, 진출방향) 목록 \n",
|
|
"flows = self.nema.dropna().apply(lambda row: (row['inc_dire'], row['out_dire']), axis=1).tolist()\n",
|
|
"# (2) 각 교차로별 방향 목록 : pdires (possible directions)\n",
|
|
"pdires = {}\n",
|
|
"for node_id in self.parent_ids:\n",
|
|
" dires = self.match7[self.match7.node_id == node_id][['inc_dire','out_dire']].values.flatten()\n",
|
|
" dires = {dire for dire in dires if type(dire)==str}\n",
|
|
" pdires[node_id] = dires\n",
|
|
"# (3) 각 (교차로, 진입방향) 별 진입id 목록 : inc2id (incoming direction to incoming edge_id)\n",
|
|
"inc2id = {}\n",
|
|
"for node_id in self.parent_ids:\n",
|
|
" for inc_dire in pdires[node_id]:\n",
|
|
" df = self.match7[(self.match7.node_id==node_id) & (self.match7.inc_dire==inc_dire)]\n",
|
|
" inc2id[(node_id, inc_dire)] = df.inc_edge_id.iloc[0]\n",
|
|
"# (4) 각 (교차로, 진출방향) 별 진출id 목록 : out2id (outgoing direction to outgoing edge_id)\n",
|
|
"out2id = {}\n",
|
|
"for node_id in self.parent_ids:\n",
|
|
" for out_dire in pdires[node_id]:\n",
|
|
" df = self.match7[(self.match7.node_id==node_id) & (self.match7.out_dire==out_dire)]\n",
|
|
" out2id[(node_id, out_dire)] = df.out_edge_id.iloc[0]\n",
|
|
"# (5) 각 교차로별 가능한 (진입방향, 진출방향) 목록 : pflow (possible flows)\n",
|
|
"pflow = {}\n",
|
|
"for node_id in self.parent_ids:\n",
|
|
" pflow[node_id] = [flow for flow in flows if set(flow).issubset(pdires[node_id])]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"inc_dir2angles = dict()\n",
|
|
"out_dir2angles = dict()\n",
|
|
"for inter_no in self.match4.inter_no.unique():\n",
|
|
" df = self.match4[self.match4.inter_no==inter_no].dropna()\n",
|
|
" inc_dir2angle = dict(zip(df['inc_dire'], df['inc_angle']))\n",
|
|
" out_dir2angle = dict(zip(df['out_dire'], df['out_angle']))\n",
|
|
" inc_dir2angles[inter_no] = inc_dir2angle\n",
|
|
" out_dir2angles[inter_no] = out_dir2angle"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"angles = []\n",
|
|
"for inter_no in self.inter_nos:\n",
|
|
" node_id = self.inter2node[inter_no]\n",
|
|
" flows = pflow[node_id]\n",
|
|
" inc_dir2angle = inc_dir2angles[inter_no]\n",
|
|
" out_dir2angle = out_dir2angles[inter_no]\n",
|
|
" for (inc_dire, out_dire) in flows:\n",
|
|
" inc_angle = inc_dir2angle[inc_dire]\n",
|
|
" out_angle = out_dir2angle[out_dire]\n",
|
|
" angle_code = inc_angle + out_angle\n",
|
|
" nema_row = self.nema[(self.nema.inc_dire==inc_dire)&(self.nema.out_dire==out_dire)]\n",
|
|
" move_no = nema_row.iloc[0].move_no\n",
|
|
" angle = pd.DataFrame({'inter_no':[inter_no],'move_no':[move_no], 'angle_code':[angle_code]})\n",
|
|
" angles.append(angle)\n",
|
|
"angles = pd.concat(angles).reset_index(drop=True)\n",
|
|
"angles.to_csv('../angle.csv', index=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['ids.json',\n",
|
|
" 'match1.csv',\n",
|
|
" 'match6.csv',\n",
|
|
" 'matching.csv',\n",
|
|
" 'modify_match1.py',\n",
|
|
" 'movement',\n",
|
|
" 'node2init.json',\n",
|
|
" 'node2num_cycles.json',\n",
|
|
" 'uid2uindex.json']"
|
|
]
|
|
},
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"os.listdir('../../../Intermediates')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"match6 = pd.read_csv('../../../Intermediates/match6.csv', index_col=0)\n",
|
|
"with open('../../../Intermediates/ids.json', 'r') as file:\n",
|
|
" ids = json.load(file)\n",
|
|
"parent_ids = ids['parent_ids']\n",
|
|
"turn_type = match6.copy()\n",
|
|
"turn_type = turn_type[(turn_type.node_id.isin(parent_ids)) & (turn_type.move_no.isin(range(1,17)))]\n",
|
|
"turn_type.loc[turn_type.move_no%2==0, 'turn_type'] = 'straight'\n",
|
|
"turn_type.loc[turn_type.move_no%2==1, 'turn_type'] = 'left'\n",
|
|
"turn_type = turn_type[['node_id', 'inc_edge_id', 'out_edge_id', 'turn_type']]\n",
|
|
"turn_type.to_csv('../turn_type.csv', index=0)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "sts",
|
|
"language": "python",
|
|
"name": "sts"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.8.10"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|