@ -1,7 +1,4 @@ | |||
Data/tables/move/* | |||
Intermediates/histid/* | |||
Intermediates/movement/* | |||
Analysis/* | |||
!Analysis/0712_revise_code/ | |||
!Analysis/0709_fetch_tables/ | |||
test_0721/data/tables/move/* |
@ -0,0 +1,72 @@ | |||
{ | |||
"cells": [ | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 1, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"import os\n", | |||
"import pandas as pd" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 2, | |||
"metadata": {}, | |||
"outputs": [ | |||
{ | |||
"data": { | |||
"text/plain": [ | |||
"['.ipynb',\n", | |||
" 'TC_IF_TOD_DAY_PLAN.csv',\n", | |||
" 'TC_IF_TOD_HOLIDAY_PLAN.csv',\n", | |||
" 'TC_IF_TOD_RED_YELLO.csv',\n", | |||
" 'TC_IF_TOD_WEEK_PLAN.csv',\n", | |||
" 'TL_IF_SIGL.csv',\n", | |||
" 'TL_IF_SIGL_CYCL.csv',\n", | |||
" 'TM_FA_CRSRD.csv',\n", | |||
" 'TN_IF_SIGL_FLOW.csv']" | |||
] | |||
}, | |||
"execution_count": 2, | |||
"metadata": {}, | |||
"output_type": "execute_result" | |||
} | |||
], | |||
"source": [ | |||
"os.listdir()" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": null, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"pd.read_csv()" | |||
] | |||
} | |||
], | |||
"metadata": { | |||
"kernelspec": { | |||
"display_name": "siggen_env", | |||
"language": "python", | |||
"name": "python3" | |||
}, | |||
"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.12.4" | |||
} | |||
}, | |||
"nbformat": 4, | |||
"nbformat_minor": 2 | |||
} |
@ -0,0 +1,396 @@ | |||
{ | |||
"cells": [ | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 1, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"import pandas as pd\n", | |||
"import numpy as np\n", | |||
"import os, sys, json, argparse\n", | |||
"import sumolib, traci\n", | |||
"from tqdm import tqdm\n", | |||
"from datetime import datetime\n", | |||
"path_root = os.path.dirname(os.path.dirname(os.path.abspath('.')))" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 2, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"class SignalGenerator:\n", | |||
" pass\n", | |||
"self = SignalGenerator()\n", | |||
"self.config_name = 'test_0729'\n", | |||
"self.file_net = 'new_sungnam_network_internal_target_0721.net.xml'\n", | |||
"self.month = 7\n", | |||
"self.day = 29\n", | |||
"self.hour = 9\n", | |||
"self.minute = 25" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 3, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"# 루트폴더 지정\n", | |||
"self.path_root = path_root\n", | |||
"with open(os.path.join(self.path_root, 'configs', f'config_{self.config_name}.json'), 'r') as config_file:\n", | |||
" config = json.load(config_file)" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 4, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"# 주요 폴더 경로 지정\n", | |||
"self.paths = config['paths']\n", | |||
"self.path_data = os.path.join(self.path_root, *self.paths['data'])\n", | |||
"self.path_intermediates = os.path.join(self.path_root, *self.paths['intermediates'])\n", | |||
"self.path_results = os.path.join(self.path_root, *self.paths['results'])\n", | |||
"self.path_tables = os.path.join(self.path_root, *self.paths['tables'])\n", | |||
"self.path_networks = os.path.join(self.path_root, *self.paths['networks'])\n", | |||
"self.path_scripts = os.path.join(self.path_root, *self.paths['scripts'])\n", | |||
"\n", | |||
"# 이슈사항 목록\n", | |||
"self.issues = []" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 5, | |||
"metadata": {}, | |||
"outputs": [ | |||
{ | |||
"name": "stdout", | |||
"output_type": "stream", | |||
"text": [ | |||
"c:\\github\\siggen\\test_0729\\data\\tables\n" | |||
] | |||
} | |||
], | |||
"source": [ | |||
"print(self.path_tables)" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 6, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"self.midnight = int(datetime(2024, self.month, self.day, 0, 0, 0).timestamp())\n", | |||
"self.next_day = int(datetime(2024, self.month, self.day+1, 0, 0, 0).timestamp())\n", | |||
"self.fsecs = range(self.midnight, self.next_day, 5) # fsecs : unix time by Five SECondS\n", | |||
"self.fmins = range(self.midnight, self.next_day, 300) # fmins : unix time by Five MINuteS\n", | |||
"\n", | |||
"self.present_time = int(datetime(2024, self.month, self.day, self.hour, self.minute).timestamp())\n", | |||
"self.present_time = max([fmin for fmin in list(self.fmins) if fmin <= self.present_time])\n", | |||
"\n", | |||
"self.sim_timespan = 300\n", | |||
"self.adder = 600 # 10분 : '현재시점 + 10분'에 가상신호를 생성하기 위함.\n", | |||
"self.subtractor = 1800 # 30분 : '현재시점 - 30분'의 신호이력을 가져온다." | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 7, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"# 1-1. 네트워크 불러오기\n", | |||
"self.net = sumolib.net.readNet(os.path.join(self.path_networks, self.file_net))" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 8, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"# cnames = []\n", | |||
"# cnames.extend(list(self.inter_info))\n", | |||
"# cnames.extend(list(self.plan))\n", | |||
"# cnames.extend(list(self.history))\n", | |||
"# cnames.extend(list(self.inter_node))\n", | |||
"# cnames.extend(list(self.matching))\n", | |||
"# cnames.extend(list(self.match1))\n", | |||
"# cnames.extend(list(self.match6))\n", | |||
"# sorted(set(cnames))" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 9, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"# 1-2. 테이블 불러오기\n", | |||
"# 모든 컬럼에 대하여 데이터타입 지정\n", | |||
"loading_dtype_1 = {\n", | |||
" 'CRSRD_ID':int, 'FRST_REG_DT':str, 'LAST_MDFCN_DT':str,\n", | |||
" 'OCRN_DT':str, 'cycle':int, 'group_no':str,\n", | |||
" 'hh':int, 'inc_edge_id':str, 'inter_lat':float,\n", | |||
" 'inter_lon':float, 'inter_name':str, 'inter_no':int,\n", | |||
" 'inter_type':str, 'main_phase_no':str,'mm':int,\n", | |||
" 'move_A':int, 'move_B':int, 'move_no':int,\n", | |||
" 'node_id':str, 'offset':int, 'out_edge_id':str,\n", | |||
" 'phas_A':int, 'phas_B':int, 'phase_no':int,\n", | |||
" 'plan_no':int, 'ring_type':str, 'state':str,\n", | |||
" 'turn_type':str\n", | |||
" }\n", | |||
"loading_dtype_2 = dict()\n", | |||
"for alph in ['A', 'B']:\n", | |||
" for j in range(1,9):\n", | |||
" loading_dtype_2[f'RING{alph}_PHASE{j}'] = int\n", | |||
" loading_dtype_2[f'dura_{alph}{j}'] = int\n", | |||
" loading_dtype_2[f'red_{alph}{j}'] = int\n", | |||
" loading_dtype_2[f'yellow_{alph}{j}'] = int\n", | |||
"loading_dtype = {**loading_dtype_1, **loading_dtype_2}\n", | |||
"\n", | |||
"# 테이블 불러오기\n", | |||
"self.inter_info = pd.read_csv(os.path.join(self.path_tables, 'inter_info.csv'), dtype=loading_dtype)\n", | |||
"self.plan = pd.read_csv(os.path.join(self.path_tables, 'plan.csv'), dtype=loading_dtype)\n", | |||
"self.history = pd.read_csv(os.path.join(self.path_tables, 'TL_IF_SIGL_CYCL.csv'), dtype=loading_dtype)\n", | |||
"self.inter_node = pd.read_csv(os.path.join(self.path_tables, 'inter_node.csv'), dtype=loading_dtype)\n", | |||
"self.matching = pd.read_csv(os.path.join(self.path_intermediates, 'matching.csv'), dtype=loading_dtype)\n", | |||
"self.match1 = pd.read_csv(os.path.join(self.path_intermediates, 'match1.csv'), dtype=loading_dtype)\n", | |||
"self.match6 = pd.read_csv(os.path.join(self.path_intermediates, 'match6.csv'), dtype=loading_dtype)" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 10, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"# 컬럼명 변경 적용\n", | |||
"self.history = self.history.rename(columns={'OCRN_DT':'end_unix', 'CRSRD_ID':'inter_no'})\n", | |||
"self.history = self.history.rename(columns={f'RING{alph}_PHASE{i}':f'dura_{alph}{i}' for alph in ['A', 'B'] for i in range(1,9)})\n", | |||
"self.history = self.history.drop(columns='FRST_REG_DT')\n", | |||
"self.history['end_unix'] = pd.to_datetime(self.history['end_unix'])\n", | |||
"self.history['end_unix'] = self.history['end_unix'].astype(int) // 10**9\n", | |||
"self.plan = self.plan.rename(columns={'hh':'start_hour', 'mm':'start_minute'})" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 11, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"# 1-5. 보조 딕셔너리, 데이터프레임, 리스트 등 만들기\n", | |||
"\n", | |||
"# inter2node : a dictionary that maps inter_no to the node_id\n", | |||
"inter_node_p = self.inter_node[self.inter_node.inter_type=='parent']\n", | |||
"self.inter2node = dict(zip(inter_node_p['inter_no'], inter_node_p['node_id']))\n", | |||
"self.node2inter = dict(zip(self.inter_node['node_id'], self.inter_node['inter_no']))\n", | |||
"\n", | |||
"# split, isplit : A,B 분리 혹은 통합시 사용될 수 있는 딕셔너리 \n", | |||
"self.splits = {} # splits maps (inter_no, start_hour, start_minute) to split \n", | |||
"for i, row in self.plan.iterrows():\n", | |||
" inter_no = row.inter_no\n", | |||
" start_hour = row.start_hour\n", | |||
" start_minute = row.start_minute\n", | |||
" cycle = row.cycle\n", | |||
"\n", | |||
" dura_A = np.array(row[[f'dura_A{j}' for j in range(1, 9)]])\n", | |||
" dura_B = np.array(row[[f'dura_B{j}' for j in range(1, 9)]])\n", | |||
"\n", | |||
" cums_A = dura_A.cumsum()\n", | |||
" cums_B = dura_B.cumsum()\n", | |||
" combined_row = np.unique(np.concatenate((cums_A,cums_B)))\n", | |||
" detailed_durations = np.concatenate(([combined_row[0]], np.diff(combined_row)))\n", | |||
"\n", | |||
" self.splits[(inter_no, start_hour, start_minute)] = {} # split maps (phas_A, phas_B) to k\n", | |||
" ja = 0\n", | |||
" jb = 0\n", | |||
" for k in range(len(detailed_durations)):\n", | |||
" dura_A[ja] -= detailed_durations[k]\n", | |||
" dura_B[jb] -= detailed_durations[k]\n", | |||
" self.splits[(inter_no, start_hour, start_minute)][(ja+1, jb+1)] = k+1\n", | |||
" if dura_A[ja] == 0:\n", | |||
" ja += 1\n", | |||
" if dura_B[jb] == 0:\n", | |||
" jb += 1\n", | |||
"\n", | |||
"self.isplits = {} # the inverse of splits\n", | |||
"for i in self.splits:\n", | |||
" self.isplits[i] = {self.splits[i][k]:k for k in self.splits[i]} # isplit maps k to (phas_A, phas_B)\n", | |||
"\n", | |||
"# timetable : 교차로별 프로그램 시작시각\n", | |||
"self.timetable = self.plan[['start_hour', 'start_minute']].drop_duplicates()\n", | |||
"self.timetable['start_seconds'] = self.midnight + self.timetable['start_hour'] * 3600 + self.timetable['start_minute'] * 60\n", | |||
"\n", | |||
"with open(os.path.join(self.path_intermediates, 'ids.json'), 'r') as file:\n", | |||
" ids = json.load(file)\n", | |||
"self.inter_nos = ids['inter_nos']\n", | |||
"self.node_ids = ids['node_ids']\n", | |||
"self.parent_ids = ids['parent_ids']\n", | |||
"self.child_ids = ids['child_ids']\n", | |||
"self.uturn_ids = ids['uturn_ids']\n", | |||
"self.coord_ids = ids['coord_ids']\n", | |||
"\n", | |||
"# A dictionary that maps parent_id to a list of child_ids\n", | |||
"self.pa2ch = {}\n", | |||
"for parent_id in self.parent_ids:\n", | |||
" inter_no = self.node2inter[parent_id]\n", | |||
" self.pa2ch[parent_id] = list(self.inter_node[(self.inter_node.inter_no==inter_no) & (self.inter_node.inter_type=='child')].node_id)\n", | |||
"\n", | |||
"# node2num_cycles : A dictionary that maps a node_id to the number of cycles\n", | |||
"with open(os.path.join(self.path_intermediates, 'node2num_cycles.json'), 'r') as file:\n", | |||
" # json.load() 함수를 사용해 파일 내용을 Python 딕셔너리로 불러옵니다.\n", | |||
" self.node2num_cycles = json.load(file)\n", | |||
"\n", | |||
"# 초기화신호 불러오기\n", | |||
"with open(os.path.join(self.path_intermediates, 'node2init.json'), 'r') as file:\n", | |||
" self.node2init = json.load(file) \n", | |||
"\n", | |||
"self.plan_set = self.plan.set_index(['inter_no','start_hour','start_minute'])" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 15, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"def load_prow(inter_no, time):\n", | |||
" '''\n", | |||
" load the planned row\n", | |||
" '''\n", | |||
" # 프로그램 시작시각\n", | |||
" program_starts = np.array(self.timetable.start_seconds)\n", | |||
" idx = (program_starts <= time).sum() - 1\n", | |||
" program_start = program_starts[idx]\n", | |||
"\n", | |||
" # 최근 프로그램 시작시각에 대한 신호계획\n", | |||
" start_hour = self.timetable.iloc[idx].start_hour\n", | |||
" start_minute = self.timetable.iloc[idx].start_minute\n", | |||
" # prow = self.plan[(self.plan.inter_no==inter_no) & (self.plan.start_hour==start_hour) & (self.plan.start_minute==start_minute)] # planned row\n", | |||
" prow = self.plan_set.loc[(inter_no, start_hour, start_minute)]\n", | |||
" prow = pd.DataFrame([prow],index=[0])\n", | |||
" prow['inter_no'] = inter_no\n", | |||
"\n", | |||
" return program_start, prow\n" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 16, | |||
"metadata": {}, | |||
"outputs": [ | |||
{ | |||
"ename": "KeyError", | |||
"evalue": "(np.int64(456), np.int64(6), np.int64(0))", | |||
"output_type": "error", | |||
"traceback": [ | |||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", | |||
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexes\\multi.py:3220\u001b[0m, in \u001b[0;36mMultiIndex._get_loc_level\u001b[1;34m(self, key, level)\u001b[0m\n\u001b[0;32m 3219\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3220\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 3221\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", | |||
"File \u001b[1;32mindex.pyx:776\u001b[0m, in \u001b[0;36mpandas._libs.index.BaseMultiIndexCodesEngine.get_loc\u001b[1;34m()\u001b[0m\n", | |||
"File \u001b[1;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", | |||
"File \u001b[1;32mindex.pyx:196\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", | |||
"File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:2152\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.UInt64HashTable.get_item\u001b[1;34m()\u001b[0m\n", | |||
"File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:2176\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.UInt64HashTable.get_item\u001b[1;34m()\u001b[0m\n", | |||
"\u001b[1;31mKeyError\u001b[0m: 594", | |||
"\nThe above exception was the direct cause of the following exception:\n", | |||
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", | |||
"Cell \u001b[1;32mIn[16], line 24\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[38;5;66;03m# present_time + adder 의 시각에 한 주기의 신호 추가\u001b[39;00m\n\u001b[0;32m 23\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m inter_no \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mset\u001b[39m(whole_inter_nos):\n\u001b[1;32m---> 24\u001b[0m program_start, prow \u001b[38;5;241m=\u001b[39m \u001b[43mload_prow\u001b[49m\u001b[43m(\u001b[49m\u001b[43minter_no\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpresent_time\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 25\u001b[0m cycle \u001b[38;5;241m=\u001b[39m prow\u001b[38;5;241m.\u001b[39mcycle\u001b[38;5;241m.\u001b[39miloc[\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m 26\u001b[0m row3 \u001b[38;5;241m=\u001b[39m prow\u001b[38;5;241m.\u001b[39mcopy()\n", | |||
"Cell \u001b[1;32mIn[15], line 14\u001b[0m, in \u001b[0;36mload_prow\u001b[1;34m(inter_no, time)\u001b[0m\n\u001b[0;32m 12\u001b[0m start_minute \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtimetable\u001b[38;5;241m.\u001b[39miloc[idx]\u001b[38;5;241m.\u001b[39mstart_minute\n\u001b[0;32m 13\u001b[0m \u001b[38;5;66;03m# prow = self.plan[(self.plan.inter_no==inter_no) & (self.plan.start_hour==start_hour) & (self.plan.start_minute==start_minute)] # planned row\u001b[39;00m\n\u001b[1;32m---> 14\u001b[0m prow \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mplan_set\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloc\u001b[49m\u001b[43m[\u001b[49m\u001b[43m(\u001b[49m\u001b[43minter_no\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstart_hour\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstart_minute\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[0;32m 15\u001b[0m prow \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame([prow],index\u001b[38;5;241m=\u001b[39m[\u001b[38;5;241m0\u001b[39m])\n\u001b[0;32m 16\u001b[0m prow[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124minter_no\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m inter_no\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexing.py:1184\u001b[0m, in \u001b[0;36m_LocationIndexer.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 1182\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_scalar_access(key):\n\u001b[0;32m 1183\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39m_get_value(\u001b[38;5;241m*\u001b[39mkey, takeable\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_takeable)\n\u001b[1;32m-> 1184\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_getitem_tuple\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1185\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1186\u001b[0m \u001b[38;5;66;03m# we by definition only have the 0th axis\u001b[39;00m\n\u001b[0;32m 1187\u001b[0m axis \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxis \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;241m0\u001b[39m\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexing.py:1368\u001b[0m, in \u001b[0;36m_LocIndexer._getitem_tuple\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1366\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m suppress(IndexingError):\n\u001b[0;32m 1367\u001b[0m tup \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_expand_ellipsis(tup)\n\u001b[1;32m-> 1368\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_getitem_lowerdim\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtup\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1370\u001b[0m \u001b[38;5;66;03m# no multi-index, so validate all of the indexers\u001b[39;00m\n\u001b[0;32m 1371\u001b[0m tup \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_tuple_indexer(tup)\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexing.py:1057\u001b[0m, in \u001b[0;36m_LocationIndexer._getitem_lowerdim\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1047\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[0;32m 1048\u001b[0m \u001b[38;5;28misinstance\u001b[39m(ax0, MultiIndex)\n\u001b[0;32m 1049\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miloc\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1054\u001b[0m \u001b[38;5;66;03m# is equivalent.\u001b[39;00m\n\u001b[0;32m 1055\u001b[0m \u001b[38;5;66;03m# (see the other place where we call _handle_lowerdim_multi_index_axis0)\u001b[39;00m\n\u001b[0;32m 1056\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m suppress(IndexingError):\n\u001b[1;32m-> 1057\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mcast\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_LocIndexer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_handle_lowerdim_multi_index_axis0\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtup\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1059\u001b[0m tup \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_key_length(tup)\n\u001b[0;32m 1061\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, key \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tup):\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexing.py:1394\u001b[0m, in \u001b[0;36m_LocIndexer._handle_lowerdim_multi_index_axis0\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1390\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m ek:\n\u001b[0;32m 1391\u001b[0m \u001b[38;5;66;03m# raise KeyError if number of indexers match\u001b[39;00m\n\u001b[0;32m 1392\u001b[0m \u001b[38;5;66;03m# else IndexingError will be raised\u001b[39;00m\n\u001b[0;32m 1393\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mlen\u001b[39m(tup) \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39mindex\u001b[38;5;241m.\u001b[39mnlevels:\n\u001b[1;32m-> 1394\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ek\n\u001b[0;32m 1395\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m IndexingError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo label returned\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mek\u001b[39;00m\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexing.py:1388\u001b[0m, in \u001b[0;36m_LocIndexer._handle_lowerdim_multi_index_axis0\u001b[1;34m(self, tup)\u001b[0m\n\u001b[0;32m 1385\u001b[0m axis \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxis \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 1386\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 1387\u001b[0m \u001b[38;5;66;03m# fast path for series or for tup devoid of slices\u001b[39;00m\n\u001b[1;32m-> 1388\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_label\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtup\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1390\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m ek:\n\u001b[0;32m 1391\u001b[0m \u001b[38;5;66;03m# raise KeyError if number of indexers match\u001b[39;00m\n\u001b[0;32m 1392\u001b[0m \u001b[38;5;66;03m# else IndexingError will be raised\u001b[39;00m\n\u001b[0;32m 1393\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mlen\u001b[39m(tup) \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39mindex\u001b[38;5;241m.\u001b[39mnlevels:\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexing.py:1381\u001b[0m, in \u001b[0;36m_LocIndexer._get_label\u001b[1;34m(self, label, axis)\u001b[0m\n\u001b[0;32m 1379\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_label\u001b[39m(\u001b[38;5;28mself\u001b[39m, label, axis: AxisInt):\n\u001b[0;32m 1380\u001b[0m \u001b[38;5;66;03m# GH#5567 this will fail if the label is not present in the axis.\u001b[39;00m\n\u001b[1;32m-> 1381\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mxs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\generic.py:4293\u001b[0m, in \u001b[0;36mNDFrame.xs\u001b[1;34m(self, key, axis, level, drop_level)\u001b[0m\n\u001b[0;32m 4290\u001b[0m index \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex\n\u001b[0;32m 4292\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(index, MultiIndex):\n\u001b[1;32m-> 4293\u001b[0m loc, new_index \u001b[38;5;241m=\u001b[39m \u001b[43mindex\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_loc_level\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlevel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4294\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m drop_level:\n\u001b[0;32m 4295\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m lib\u001b[38;5;241m.\u001b[39mis_integer(loc):\n\u001b[0;32m 4296\u001b[0m \u001b[38;5;66;03m# Slice index must be an integer or None\u001b[39;00m\n", | |||
"File \u001b[1;32mc:\\github\\siggen\\siggen_env\\Lib\\site-packages\\pandas\\core\\indexes\\multi.py:3222\u001b[0m, in \u001b[0;36mMultiIndex._get_loc_level\u001b[1;34m(self, key, level)\u001b[0m\n\u001b[0;32m 3220\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine\u001b[38;5;241m.\u001b[39mget_loc(key), \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 3221\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[1;32m-> 3222\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 3223\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m 3224\u001b[0m \u001b[38;5;66;03m# e.g. partial string indexing\u001b[39;00m\n\u001b[0;32m 3225\u001b[0m \u001b[38;5;66;03m# test_partial_string_timestamp_multiindex\u001b[39;00m\n\u001b[0;32m 3226\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", | |||
"\u001b[1;31mKeyError\u001b[0m: (np.int64(456), np.int64(6), np.int64(0))" | |||
] | |||
} | |||
], | |||
"source": [ | |||
"# 2. 신호이력 전처리\n", | |||
"# 2-1. rhistory\n", | |||
"\n", | |||
"# 1. 조회시점의 유닉스 타임 이전의 신호이력 수집\n", | |||
"self.rhistory = self.history.copy() # recent history\n", | |||
"self.rhistory = self.rhistory[(self.rhistory.end_unix <= self.present_time) & (self.rhistory.end_unix > self.present_time - self.subtractor)]\n", | |||
"\n", | |||
"# rhistory에 모든 교차로번호가 존재하지 않으면 해당 교차로번호에 대한 신호이력을 추가함 (at 최근 프로그램 시작시각)\n", | |||
"whole_inter_nos = set(self.history.inter_no.unique())\n", | |||
"recent_inter_nos = set(self.rhistory.inter_no.unique())\n", | |||
"if not whole_inter_nos==recent_inter_nos:\n", | |||
" for inter_no in whole_inter_nos - recent_inter_nos:\n", | |||
" program_start, prow = load_prow(inter_no, self.present_time - self.subtractor)\n", | |||
" cycle = prow.cycle.iloc[0]\n", | |||
" row1 = prow.copy()\n", | |||
" row2 = prow.copy()\n", | |||
" # prow에서 필요한 부분을 rhistory에 추가\n", | |||
" row1['end_unix'] = program_start\n", | |||
" row2['end_unix'] = program_start + cycle\n", | |||
" self.rhistory = pd.concat([self.rhistory, row1, row2])#.reset_index(drop=True)\n", | |||
"\n", | |||
"# present_time + adder 의 시각에 한 주기의 신호 추가\n", | |||
"for inter_no in set(whole_inter_nos):\n", | |||
" program_start, prow = load_prow(inter_no, self.present_time)\n", | |||
" cycle = prow.cycle.iloc[0]\n", | |||
" row3 = prow.copy()\n", | |||
" # prow에서 필요한 부분을 rhistory에 추가\n", | |||
" row3['end_unix'] = self.present_time + self.adder\n", | |||
" self.rhistory = pd.concat([self.rhistory, row3])#.reset_index(drop=True)\n", | |||
"\n", | |||
"# 2. 시작 유닉스 타임컬럼 생성 후 종류 유닉스 타임에서 현시별 현시기간 컬럼의 합을 뺀 값으로 입력\n", | |||
"# - 현시시간의 합을 뺀 시간의 +- 10초 이내에 이전 주기정보가 존재하면 그 유닉스 시간을 시작 유닉스시간 값으로 하고, 존재하지 않으면 현시시간의 합을 뺀 유닉스 시간을 시작 유닉스 시간으로 지정\n", | |||
"for i, row in self.rhistory.iterrows():\n", | |||
" inter_no = row.inter_no\n", | |||
" end_unix = row.end_unix\n", | |||
" elapsed_time = row[[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]].sum() // 2 # 현시시간 합\n", | |||
" # 이전 유닉스 존재하지 않음 : 현시시간 합의 차\n", | |||
" start_unix = end_unix - elapsed_time\n", | |||
" pre_rows = self.history[:i] # previous rows\n", | |||
" if inter_no in pre_rows.inter_no.unique(): # 이전 유닉스 존재\n", | |||
" pre_unix = pre_rows[pre_rows.inter_no == inter_no]['end_unix'].iloc[-1] # previous unix time\n", | |||
" # 이전 유닉스 존재, abs < 10 : 이전 유닉스\n", | |||
" if abs(pre_unix - start_unix) < 10:\n", | |||
" start_unix = pre_unix\n", | |||
" # 이전 유닉스 존재, abs >=10 : 현시시간 합의 차\n", | |||
" else:\n", | |||
" pass\n", | |||
" self.rhistory.loc[i, 'start_unix'] = start_unix\n", | |||
"self.rhistory[self.rhistory.isna()] = 0\n", | |||
"self.rhistory['start_unix'] = self.rhistory['start_unix'].astype(int)\n", | |||
"self.rhistory = self.rhistory[['inter_no', 'start_unix'] + [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)] + ['cycle']]" | |||
] | |||
} | |||
], | |||
"metadata": { | |||
"kernelspec": { | |||
"display_name": "siggen_env", | |||
"language": "python", | |||
"name": "python3" | |||
}, | |||
"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.12.4" | |||
} | |||
}, | |||
"nbformat": 4, | |||
"nbformat_minor": 2 | |||
} |
@ -0,0 +1,144 @@ | |||
{ | |||
"cells": [ | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 1, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"import os, random, sumolib\n", | |||
"import sumolib\n", | |||
"import pandas as pd\n", | |||
"import numpy as np\n", | |||
"from datetime import datetime" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 2, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"path_root = os.path.dirname(os.path.dirname(os.path.abspath('.')))\n", | |||
"path_dayplan = os.path.join(path_root, 'data', 'tables', '20240729', 'TC_IF_TOD_DAY_PLAN.csv')\n", | |||
"path_sigl_cycl = os.path.join(path_root, 'test_0729', 'data', 'tables', 'TL_IF_SIGL_CYCL.csv')\n", | |||
"dayplan = pd.read_csv(path_dayplan)\n", | |||
"CRSRD_IDs = [436, 437, 438, 442, 443, 455, 456, 457, 458]\n", | |||
"dayplan = dayplan[dayplan.CRSRD_ID.isin(CRSRD_IDs)]\n", | |||
"\n", | |||
"dayplan = dayplan.drop(columns=['LAST_MDFCN_DT'])" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 3, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"midnight = int(datetime(2024, 7, 29).timestamp())\n", | |||
"next_day = int(datetime(2024, 7, 30).timestamp())\n", | |||
"\n", | |||
"histories = []\n", | |||
"\n", | |||
"for CRSRD_ID in CRSRD_IDs:\n", | |||
" dplan = dayplan[dayplan.CRSRD_ID==CRSRD_ID]\n", | |||
" if ((dplan.HOUR==0) & (dplan.MIN==0)).any():\n", | |||
" pass\n", | |||
" else:\n", | |||
" dplan_temp = dplan[-1:]\n", | |||
" dplan_temp['HOUR'] = 0\n", | |||
" dplan_temp['MIN'] = 0\n", | |||
" dplan = pd.concat([dplan, dplan_temp])\n", | |||
" dplan = dplan.sort_values(by=['HOUR', 'MIN']).reset_index(drop=True)\n", | |||
" dplan.loc[:, 'end_unix'] = dplan['HOUR'].astype(int) * 3600 + dplan['MIN'].astype(int) * 60 + midnight\n", | |||
" history = []\n", | |||
" current_time = midnight\n", | |||
" for i in range(len(dplan)):\n", | |||
" row = dplan.iloc[i]\n", | |||
" cycle = row.CYCL\n", | |||
" offset = row.OFFSET\n", | |||
" unix_end = dplan.iloc[i+1]['end_unix'] if i < len(dplan) - 1 else next_day\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.chisquare(df=1) * cycle) + r\n", | |||
" else:\n", | |||
" current_time += cycle + r # 결측/이상 없음\n", | |||
" new_row = row.copy()\n", | |||
" new_row['PHASE_DT'] = current_time\n", | |||
" new_row['CYCL'] = cycle\n", | |||
" new_row['OFFSET'] = offset\n", | |||
" history.append(new_row)\n", | |||
" history = pd.concat(history, axis=1).transpose()\n", | |||
" history = history[['PHASE_DT', 'CRSRD_ID']\n", | |||
" + [f'RING{alph}_PHASE{i}' for alph in ['A', 'B'] for i in range(1,9)]]\n", | |||
" history = history[history.PHASE_DT <= next_day]\n", | |||
" history = history.rename(columns={'PHASE_DT':'OCRN_DT'})\n", | |||
" histories.append(history)\n", | |||
"histories = pd.concat(histories)" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 4, | |||
"metadata": {}, | |||
"outputs": [], | |||
"source": [ | |||
"histories = histories.sort_values(by=['OCRN_DT', 'CRSRD_ID'])\n", | |||
"histories = histories.reset_index(drop=True)\n", | |||
"histories['FRST_REG_DT'] = ''\n", | |||
"histories['OCRN_DT'] = pd.to_datetime(histories['OCRN_DT'], unit='s')\n", | |||
"histories['OCRN_DT'] = histories['OCRN_DT'].dt.strftime('%Y-%m-%d %H:%M:%S.%f').str[:-3]\n", | |||
"histories.to_csv(path_sigl_cycl, index=False)" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 5, | |||
"metadata": {}, | |||
"outputs": [ | |||
{ | |||
"name": "stdout", | |||
"output_type": "stream", | |||
"text": [ | |||
"c:\\github\\siggen\\test_0729\\data\\tables\\TL_IF_SIGL_CYCL.csv\n" | |||
] | |||
} | |||
], | |||
"source": [ | |||
"print(path_sigl_cycl)" | |||
] | |||
} | |||
], | |||
"metadata": { | |||
"kernelspec": { | |||
"display_name": "siggen_env", | |||
"language": "python", | |||
"name": "python3" | |||
}, | |||
"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.12.4" | |||
} | |||
}, | |||
"nbformat": 4, | |||
"nbformat_minor": 2 | |||
} |
@ -0,0 +1,581 @@ | |||
PHASE_DT,CRSRD_ID,RINGA_PHASE,RINGA_FLOW,RINGB_PHASE,RINGB_FLOW,MAP_MODE,FRST_REG_DT | |||
2024-07-29 9:36:32,436,3,7,3,4,0,36:32.8 | |||
2024-07-29 9:36:32,437,4,7,4,4,0,36:32.8 | |||
2024-07-29 9:36:32,438,3,8,3,3,0,36:32.8 | |||
2024-07-29 9:36:32,442,4,7,4,4,0,36:32.8 | |||
2024-07-29 9:36:32,443,1,6,1,2,0,36:32.8 | |||
2024-07-29 9:36:32,444,3,6,3,1,0,36:32.8 | |||
2024-07-29 9:36:32,455,1,6,1,2,0,36:32.8 | |||
2024-07-29 9:36:32,456,4,17,4,1,0,36:32.8 | |||
2024-07-29 9:36:32,457,5,7,5,4,0,36:32.8 | |||
2024-07-29 9:36:32,458,1,8,1,4,0,36:32.8 | |||
2024-07-29 9:36:33,436,3,7,3,4,0,36:32.8 | |||
2024-07-29 9:36:33,437,4,7,4,4,0,36:32.8 | |||
2024-07-29 9:36:33,438,3,8,3,3,0,36:32.8 | |||
2024-07-29 9:36:33,442,4,7,4,4,0,36:32.8 | |||
2024-07-29 9:36:33,443,1,6,1,2,0,36:32.8 | |||
2024-07-29 9:36:33,444,3,6,3,1,0,36:32.8 | |||
2024-07-29 9:36:33,455,1,6,1,2,0,36:32.8 | |||
2024-07-29 9:36:33,456,4,17,4,1,0,36:32.8 | |||
2024-07-29 9:36:33,457,5,7,5,4,0,36:32.8 | |||
2024-07-29 9:36:33,458,1,8,1,4,0,36:32.8 | |||
2024-07-29 9:36:34,436,3,7,3,4,0,36:33.7 | |||
2024-07-29 9:36:34,437,4,7,4,4,0,36:33.7 | |||
2024-07-29 9:36:34,438,3,8,3,3,0,36:33.7 | |||
2024-07-29 9:36:34,442,4,7,4,4,0,36:33.7 | |||
2024-07-29 9:36:34,443,1,6,1,2,0,36:33.7 | |||
2024-07-29 9:36:34,444,3,6,3,1,0,36:33.7 | |||
2024-07-29 9:36:34,455,1,6,1,2,0,36:33.7 | |||
2024-07-29 9:36:34,456,4,17,4,1,0,36:33.7 | |||
2024-07-29 9:36:34,457,5,7,5,4,0,36:33.7 | |||
2024-07-29 9:36:34,458,1,8,1,4,0,36:33.7 | |||
2024-07-29 9:36:36,436,3,7,3,4,0,36:35.7 | |||
2024-07-29 9:36:36,437,4,7,4,4,0,36:35.7 | |||
2024-07-29 9:36:36,438,3,8,3,3,0,36:35.7 | |||
2024-07-29 9:36:36,442,4,7,4,4,0,36:35.7 | |||
2024-07-29 9:36:36,443,1,6,1,2,0,36:35.7 | |||
2024-07-29 9:36:36,444,3,6,3,1,0,36:35.7 | |||
2024-07-29 9:36:36,455,1,6,1,2,0,36:35.7 | |||
2024-07-29 9:36:36,456,4,17,4,1,0,36:35.7 | |||
2024-07-29 9:36:36,457,5,7,5,4,0,36:35.7 | |||
2024-07-29 9:36:36,458,1,8,1,4,0,36:35.7 | |||
2024-07-29 9:36:37,436,3,7,3,4,0,36:36.7 | |||
2024-07-29 9:36:37,437,4,7,4,4,0,36:36.7 | |||
2024-07-29 9:36:37,438,3,8,3,3,0,36:36.7 | |||
2024-07-29 9:36:37,442,4,7,4,4,0,36:36.7 | |||
2024-07-29 9:36:37,443,1,6,1,2,0,36:36.7 | |||
2024-07-29 9:36:37,444,3,6,3,1,0,36:36.7 | |||
2024-07-29 9:36:37,455,2,1,2,1,0,36:36.7 | |||
2024-07-29 9:36:37,456,4,17,4,1,0,36:36.7 | |||
2024-07-29 9:36:37,457,5,7,5,4,0,36:36.7 | |||
2024-07-29 9:36:37,458,1,8,1,4,0,36:36.7 | |||
2024-07-29 9:36:35,436,3,7,3,4,0,36:34.7 | |||
2024-07-29 9:36:35,437,4,7,4,4,0,36:34.7 | |||
2024-07-29 9:36:35,438,3,8,3,3,0,36:34.7 | |||
2024-07-29 9:36:35,442,4,7,4,4,0,36:34.7 | |||
2024-07-29 9:36:35,443,1,6,1,2,0,36:34.7 | |||
2024-07-29 9:36:35,444,3,6,3,1,0,36:34.7 | |||
2024-07-29 9:36:35,455,1,6,1,2,0,36:34.7 | |||
2024-07-29 9:36:35,456,4,17,4,1,0,36:34.7 | |||
2024-07-29 9:36:35,457,5,7,5,4,0,36:34.7 | |||
2024-07-29 9:36:35,458,1,8,1,4,0,36:34.7 | |||
2024-07-29 9:36:38,436,3,7,3,4,0,36:37.7 | |||
2024-07-29 9:36:38,437,4,7,4,4,0,36:37.7 | |||
2024-07-29 9:36:38,438,3,8,3,3,0,36:37.7 | |||
2024-07-29 9:36:38,442,4,7,4,4,0,36:37.7 | |||
2024-07-29 9:36:38,443,1,6,1,2,0,36:37.7 | |||
2024-07-29 9:36:38,444,3,6,3,1,0,36:37.7 | |||
2024-07-29 9:36:38,455,2,1,2,1,0,36:37.7 | |||
2024-07-29 9:36:38,456,4,17,4,1,0,36:37.7 | |||
2024-07-29 9:36:38,457,5,7,5,4,0,36:37.7 | |||
2024-07-29 9:36:38,458,1,8,1,4,0,36:37.7 | |||
2024-07-29 9:36:39,436,3,7,3,4,0,36:38.7 | |||
2024-07-29 9:36:39,437,4,7,4,4,0,36:38.7 | |||
2024-07-29 9:36:39,438,3,8,3,3,0,36:38.7 | |||
2024-07-29 9:36:39,442,4,7,4,4,0,36:38.7 | |||
2024-07-29 9:36:39,443,1,6,1,2,0,36:38.7 | |||
2024-07-29 9:36:39,444,3,6,3,1,0,36:38.7 | |||
2024-07-29 9:36:39,455,2,1,2,1,0,36:38.7 | |||
2024-07-29 9:36:39,456,4,17,4,1,0,36:38.7 | |||
2024-07-29 9:36:39,457,5,7,5,4,0,36:38.7 | |||
2024-07-29 9:36:39,458,1,8,1,4,0,36:38.7 | |||
2024-07-29 9:36:42,436,3,7,3,4,0,36:41.7 | |||
2024-07-29 9:36:42,437,4,7,4,4,0,36:41.7 | |||
2024-07-29 9:36:42,438,3,8,3,3,0,36:41.7 | |||
2024-07-29 9:36:42,442,4,7,4,4,0,36:41.7 | |||
2024-07-29 9:36:42,443,1,6,1,2,0,36:41.7 | |||
2024-07-29 9:36:42,444,3,6,3,1,0,36:41.7 | |||
2024-07-29 9:36:42,455,2,1,2,1,0,36:41.7 | |||
2024-07-29 9:36:42,456,4,17,4,1,0,36:41.7 | |||
2024-07-29 9:36:42,457,5,7,5,4,0,36:41.7 | |||
2024-07-29 9:36:42,458,1,8,1,4,0,36:41.7 | |||
2024-07-29 9:36:40,436,3,7,3,4,0,36:39.8 | |||
2024-07-29 9:36:40,437,4,7,4,4,0,36:39.8 | |||
2024-07-29 9:36:40,438,3,8,3,3,0,36:39.8 | |||
2024-07-29 9:36:40,442,4,7,4,4,0,36:39.8 | |||
2024-07-29 9:36:40,443,1,6,1,2,0,36:39.8 | |||
2024-07-29 9:36:40,444,3,6,3,1,0,36:39.8 | |||
2024-07-29 9:36:40,455,2,1,2,1,0,36:39.8 | |||
2024-07-29 9:36:40,456,4,17,4,1,0,36:39.8 | |||
2024-07-29 9:36:40,457,5,7,5,4,0,36:39.8 | |||
2024-07-29 9:36:40,458,1,8,1,4,0,36:39.8 | |||
2024-07-29 9:36:41,436,3,7,3,4,0,36:40.7 | |||
2024-07-29 9:36:41,437,4,7,4,4,0,36:40.7 | |||
2024-07-29 9:36:41,438,3,8,3,3,0,36:40.7 | |||
2024-07-29 9:36:41,442,4,7,4,4,0,36:40.7 | |||
2024-07-29 9:36:41,443,1,6,1,2,0,36:40.7 | |||
2024-07-29 9:36:41,444,3,6,3,1,0,36:40.7 | |||
2024-07-29 9:36:41,455,2,1,2,1,0,36:40.7 | |||
2024-07-29 9:36:41,456,4,17,4,1,0,36:40.7 | |||
2024-07-29 9:36:41,457,5,7,5,4,0,36:40.7 | |||
2024-07-29 9:36:41,458,1,8,1,4,0,36:40.7 | |||
2024-07-29 9:36:43,436,3,7,3,4,0,36:42.8 | |||
2024-07-29 9:36:43,437,4,7,4,4,0,36:42.8 | |||
2024-07-29 9:36:43,438,1,6,1,2,0,36:42.8 | |||
2024-07-29 9:36:43,442,4,7,4,4,0,36:42.8 | |||
2024-07-29 9:36:43,443,1,6,1,2,0,36:42.8 | |||
2024-07-29 9:36:43,444,3,6,3,1,0,36:42.8 | |||
2024-07-29 9:36:43,455,2,1,2,1,0,36:42.8 | |||
2024-07-29 9:36:43,456,4,17,4,1,0,36:42.8 | |||
2024-07-29 9:36:43,457,5,7,5,4,0,36:42.8 | |||
2024-07-29 9:36:43,458,1,8,1,4,0,36:42.8 | |||
2024-07-29 9:36:45,436,3,7,3,4,0,36:44.8 | |||
2024-07-29 9:36:45,437,4,7,4,4,0,36:44.8 | |||
2024-07-29 9:36:45,438,1,6,1,2,0,36:44.8 | |||
2024-07-29 9:36:45,442,4,7,4,4,0,36:44.8 | |||
2024-07-29 9:36:45,443,1,6,1,2,0,36:44.8 | |||
2024-07-29 9:36:45,444,3,6,3,1,0,36:44.8 | |||
2024-07-29 9:36:45,455,2,1,2,1,0,36:44.8 | |||
2024-07-29 9:36:45,456,4,17,4,1,0,36:44.8 | |||
2024-07-29 9:36:45,457,5,7,5,4,0,36:44.8 | |||
2024-07-29 9:36:45,458,1,8,1,4,0,36:44.8 | |||
2024-07-29 9:36:44,436,3,7,3,4,0,36:43.8 | |||
2024-07-29 9:36:44,437,4,7,4,4,0,36:43.8 | |||
2024-07-29 9:36:44,438,1,6,1,2,0,36:43.8 | |||
2024-07-29 9:36:44,442,4,7,4,4,0,36:43.8 | |||
2024-07-29 9:36:44,443,1,6,1,2,0,36:43.8 | |||
2024-07-29 9:36:44,444,3,6,3,1,0,36:43.8 | |||
2024-07-29 9:36:44,455,2,1,2,1,0,36:43.8 | |||
2024-07-29 9:36:44,456,4,17,4,1,0,36:43.8 | |||
2024-07-29 9:36:44,457,5,7,5,4,0,36:43.8 | |||
2024-07-29 9:36:44,458,1,8,1,4,0,36:43.8 | |||
2024-07-29 9:36:47,436,4,6,4,1,0,36:46.8 | |||
2024-07-29 9:36:47,437,1,6,1,2,0,36:46.8 | |||
2024-07-29 9:36:47,438,1,6,1,2,0,36:46.8 | |||
2024-07-29 9:36:47,442,4,7,4,4,0,36:46.8 | |||
2024-07-29 9:36:47,443,1,6,1,2,0,36:46.8 | |||
2024-07-29 9:36:47,444,3,6,3,1,0,36:46.8 | |||
2024-07-29 9:36:47,455,2,1,2,1,0,36:46.8 | |||
2024-07-29 9:36:47,456,4,17,4,1,0,36:46.8 | |||
2024-07-29 9:36:47,457,5,7,5,4,0,36:46.8 | |||
2024-07-29 9:36:47,458,1,8,1,4,0,36:46.8 | |||
2024-07-29 9:36:48,436,4,6,4,1,0,36:47.8 | |||
2024-07-29 9:36:48,437,1,6,1,2,0,36:47.8 | |||
2024-07-29 9:36:48,438,1,6,1,2,0,36:47.8 | |||
2024-07-29 9:36:48,442,4,7,4,4,0,36:47.8 | |||
2024-07-29 9:36:48,443,1,6,1,2,0,36:47.8 | |||
2024-07-29 9:36:48,444,3,6,3,1,0,36:47.8 | |||
2024-07-29 9:36:48,455,2,1,2,1,0,36:47.8 | |||
2024-07-29 9:36:48,456,4,17,4,1,0,36:47.8 | |||
2024-07-29 9:36:48,457,5,7,5,4,0,36:47.8 | |||
2024-07-29 9:36:48,458,1,8,1,4,0,36:47.8 | |||
2024-07-29 9:36:46,436,4,6,4,1,0,36:45.8 | |||
2024-07-29 9:36:46,437,4,7,4,4,0,36:45.8 | |||
2024-07-29 9:36:46,438,1,6,1,2,0,36:45.8 | |||
2024-07-29 9:36:46,442,4,7,4,4,0,36:45.8 | |||
2024-07-29 9:36:46,443,1,6,1,2,0,36:45.8 | |||
2024-07-29 9:36:46,444,3,6,3,1,0,36:45.8 | |||
2024-07-29 9:36:46,455,2,1,2,1,0,36:45.8 | |||
2024-07-29 9:36:46,456,4,17,4,1,0,36:45.8 | |||
2024-07-29 9:36:46,457,5,7,5,4,0,36:45.8 | |||
2024-07-29 9:36:46,458,1,8,1,4,0,36:45.8 | |||
2024-07-29 9:36:49,436,4,6,4,1,0,36:48.8 | |||
2024-07-29 9:36:49,437,1,6,1,2,0,36:48.8 | |||
2024-07-29 9:36:49,438,1,6,1,2,0,36:48.8 | |||
2024-07-29 9:36:49,442,4,7,4,4,0,36:48.8 | |||
2024-07-29 9:36:49,443,1,6,1,2,0,36:48.8 | |||
2024-07-29 9:36:49,444,3,6,3,1,0,36:48.8 | |||
2024-07-29 9:36:49,455,2,1,2,1,0,36:48.8 | |||
2024-07-29 9:36:49,456,4,17,4,1,0,36:48.8 | |||
2024-07-29 9:36:49,457,5,7,5,4,0,36:48.8 | |||
2024-07-29 9:36:49,458,1,8,1,4,0,36:48.8 | |||
2024-07-29 9:36:50,436,4,6,4,1,0,36:49.8 | |||
2024-07-29 9:36:50,437,1,6,1,2,0,36:49.8 | |||
2024-07-29 9:36:50,438,1,6,1,2,0,36:49.8 | |||
2024-07-29 9:36:50,442,4,7,4,4,0,36:49.8 | |||
2024-07-29 9:36:50,443,1,6,1,2,0,36:49.8 | |||
2024-07-29 9:36:50,444,3,6,3,1,0,36:49.8 | |||
2024-07-29 9:36:50,455,2,1,2,1,0,36:49.8 | |||
2024-07-29 9:36:50,456,4,17,4,1,0,36:49.8 | |||
2024-07-29 9:36:50,457,1,6,1,2,0,36:49.8 | |||
2024-07-29 9:36:50,458,1,8,1,4,0,36:49.8 | |||
2024-07-29 9:36:51,436,4,6,4,1,0,36:50.8 | |||
2024-07-29 9:36:51,437,1,6,1,2,0,36:50.8 | |||
2024-07-29 9:36:51,438,1,6,1,2,0,36:50.8 | |||
2024-07-29 9:36:51,442,4,7,4,4,0,36:50.8 | |||
2024-07-29 9:36:51,443,1,6,1,2,0,36:50.8 | |||
2024-07-29 9:36:51,444,3,6,3,1,0,36:50.8 | |||
2024-07-29 9:36:51,455,2,1,2,1,0,36:50.8 | |||
2024-07-29 9:36:51,456,4,17,4,1,0,36:50.8 | |||
2024-07-29 9:36:51,457,1,6,1,2,0,36:50.8 | |||
2024-07-29 9:36:51,458,1,8,1,4,0,36:50.8 | |||
2024-07-29 9:36:52,436,4,6,4,1,0,36:51.8 | |||
2024-07-29 9:36:52,437,1,6,1,2,0,36:51.8 | |||
2024-07-29 9:36:52,438,1,6,1,2,0,36:51.8 | |||
2024-07-29 9:36:52,442,4,7,4,4,0,36:51.8 | |||
2024-07-29 9:36:52,443,1,6,1,2,0,36:51.8 | |||
2024-07-29 9:36:52,444,3,6,3,1,0,36:51.8 | |||
2024-07-29 9:36:52,455,2,1,2,1,0,36:51.8 | |||
2024-07-29 9:36:52,456,4,17,4,1,0,36:51.8 | |||
2024-07-29 9:36:52,457,1,6,1,2,0,36:51.8 | |||
2024-07-29 9:36:52,458,1,8,1,4,0,36:51.8 | |||
2024-07-29 9:36:53,436,4,6,4,1,0,36:52.8 | |||
2024-07-29 9:36:53,437,1,6,1,2,0,36:52.8 | |||
2024-07-29 9:36:53,438,1,6,1,2,0,36:52.8 | |||
2024-07-29 9:36:53,442,4,7,4,4,0,36:52.8 | |||
2024-07-29 9:36:53,443,1,6,1,2,0,36:52.8 | |||
2024-07-29 9:36:53,444,3,6,3,1,0,36:52.8 | |||
2024-07-29 9:36:53,455,2,1,2,1,0,36:52.8 | |||
2024-07-29 9:36:53,456,4,17,4,1,0,36:52.8 | |||
2024-07-29 9:36:53,457,1,6,1,2,0,36:52.8 | |||
2024-07-29 9:36:53,458,1,8,1,4,0,36:52.8 | |||
2024-07-29 9:36:54,436,4,6,4,1,0,36:53.8 | |||
2024-07-29 9:36:54,437,1,6,1,2,0,36:53.8 | |||
2024-07-29 9:36:54,438,1,6,1,2,0,36:53.8 | |||
2024-07-29 9:36:54,442,4,7,4,4,0,36:53.8 | |||
2024-07-29 9:36:54,443,1,6,1,2,0,36:53.8 | |||
2024-07-29 9:36:54,444,3,6,3,1,0,36:53.8 | |||
2024-07-29 9:36:54,455,2,1,2,1,0,36:53.8 | |||
2024-07-29 9:36:54,456,4,17,4,1,0,36:53.8 | |||
2024-07-29 9:36:54,457,1,6,1,2,0,36:53.8 | |||
2024-07-29 9:36:54,458,1,8,1,4,0,36:53.8 | |||
2024-07-29 9:36:56,436,4,6,4,1,0,36:55.8 | |||
2024-07-29 9:36:56,437,1,6,1,2,0,36:55.8 | |||
2024-07-29 9:36:56,438,1,6,1,2,0,36:55.8 | |||
2024-07-29 9:36:56,442,4,7,4,4,0,36:55.8 | |||
2024-07-29 9:36:56,443,1,6,1,2,0,36:55.8 | |||
2024-07-29 9:36:56,444,3,6,3,1,0,36:55.8 | |||
2024-07-29 9:36:56,455,2,1,2,1,0,36:55.8 | |||
2024-07-29 9:36:56,456,1,5,1,2,0,36:55.8 | |||
2024-07-29 9:36:56,457,1,6,1,2,0,36:55.8 | |||
2024-07-29 9:36:56,458,1,8,1,4,0,36:55.8 | |||
2024-07-29 9:36:57,436,4,6,4,1,0,36:56.8 | |||
2024-07-29 9:36:57,437,1,6,1,2,0,36:56.8 | |||
2024-07-29 9:36:57,438,1,6,1,2,0,36:56.8 | |||
2024-07-29 9:36:57,442,4,7,4,4,0,36:56.8 | |||
2024-07-29 9:36:57,443,1,6,1,2,0,36:56.8 | |||
2024-07-29 9:36:57,444,4,7,4,4,0,36:56.8 | |||
2024-07-29 9:36:57,455,2,1,2,1,0,36:56.8 | |||
2024-07-29 9:36:57,456,1,5,1,2,0,36:56.8 | |||
2024-07-29 9:36:57,457,1,6,1,2,0,36:56.8 | |||
2024-07-29 9:36:57,458,1,8,1,4,0,36:56.8 | |||
2024-07-29 9:36:58,436,4,6,4,1,0,36:57.8 | |||
2024-07-29 9:36:58,437,1,6,1,2,0,36:57.8 | |||
2024-07-29 9:36:58,438,1,6,1,2,0,36:57.8 | |||
2024-07-29 9:36:58,442,4,7,4,4,0,36:57.8 | |||
2024-07-29 9:36:58,443,1,6,1,2,0,36:57.8 | |||
2024-07-29 9:36:58,444,4,7,4,4,0,36:57.8 | |||
2024-07-29 9:36:58,455,2,1,2,1,0,36:57.8 | |||
2024-07-29 9:36:58,456,1,5,1,2,0,36:57.8 | |||
2024-07-29 9:36:58,457,1,6,1,2,0,36:57.8 | |||
2024-07-29 9:36:58,458,1,8,1,4,0,36:57.8 | |||
2024-07-29 9:36:59,436,4,6,4,1,0,36:58.8 | |||
2024-07-29 9:36:59,437,1,6,1,2,0,36:58.8 | |||
2024-07-29 9:36:59,438,1,6,1,2,0,36:58.8 | |||
2024-07-29 9:36:59,442,4,7,4,4,0,36:58.8 | |||
2024-07-29 9:36:59,443,1,6,1,2,0,36:58.8 | |||
2024-07-29 9:36:59,444,4,7,4,4,0,36:58.8 | |||
2024-07-29 9:36:59,455,2,1,2,1,0,36:58.8 | |||
2024-07-29 9:36:59,456,1,5,1,2,0,36:58.8 | |||
2024-07-29 9:36:59,457,1,6,1,2,0,36:58.8 | |||
2024-07-29 9:36:59,458,1,8,1,4,0,36:58.8 | |||
2024-07-29 9:37:00,436,4,6,4,1,0,36:59.8 | |||
2024-07-29 9:37:00,437,1,6,1,2,0,36:59.8 | |||
2024-07-29 9:37:00,438,1,6,1,2,0,36:59.8 | |||
2024-07-29 9:37:00,442,4,7,4,4,0,36:59.8 | |||
2024-07-29 9:37:00,443,1,6,1,2,0,36:59.8 | |||
2024-07-29 9:37:00,444,4,7,4,4,0,36:59.8 | |||
2024-07-29 9:37:00,455,2,1,2,1,0,36:59.8 | |||
2024-07-29 9:37:00,456,1,5,1,2,0,36:59.8 | |||
2024-07-29 9:37:00,457,1,6,1,2,0,36:59.8 | |||
2024-07-29 9:37:00,458,1,8,1,4,0,36:59.8 | |||
2024-07-29 9:37:01,436,4,6,4,1,0,37:00.8 | |||
2024-07-29 9:37:01,437,1,6,1,2,0,37:00.8 | |||
2024-07-29 9:37:01,438,1,6,1,2,0,37:00.8 | |||
2024-07-29 9:37:01,442,4,7,4,4,0,37:00.8 | |||
2024-07-29 9:37:01,443,1,6,1,2,0,37:00.8 | |||
2024-07-29 9:37:01,444,4,7,4,4,0,37:00.8 | |||
2024-07-29 9:37:01,455,2,1,2,1,0,37:00.8 | |||
2024-07-29 9:37:01,456,1,5,1,2,0,37:00.8 | |||
2024-07-29 9:37:01,457,1,6,1,2,0,37:00.8 | |||
2024-07-29 9:37:01,458,1,8,1,4,0,37:00.8 | |||
2024-07-29 9:37:02,436,4,6,4,1,0,37:01.8 | |||
2024-07-29 9:37:02,437,1,6,1,2,0,37:01.8 | |||
2024-07-29 9:37:02,438,1,6,1,2,0,37:01.8 | |||
2024-07-29 9:37:02,442,4,7,4,4,0,37:01.8 | |||
2024-07-29 9:37:02,443,1,6,1,2,0,37:01.8 | |||
2024-07-29 9:37:02,444,4,7,4,4,0,37:01.8 | |||
2024-07-29 9:37:02,455,2,1,2,1,0,37:01.8 | |||
2024-07-29 9:37:02,456,1,5,1,2,0,37:01.8 | |||
2024-07-29 9:37:02,457,1,6,1,2,0,37:01.8 | |||
2024-07-29 9:37:02,458,1,8,1,4,0,37:01.8 | |||
2024-07-29 9:37:03,436,4,6,4,1,0,37:02.8 | |||
2024-07-29 9:37:03,437,1,6,1,2,0,37:02.8 | |||
2024-07-29 9:37:03,438,1,6,1,2,0,37:02.8 | |||
2024-07-29 9:37:03,442,4,7,4,4,0,37:02.8 | |||
2024-07-29 9:37:03,443,1,6,1,2,0,37:02.8 | |||
2024-07-29 9:37:03,444,4,7,4,4,0,37:02.8 | |||
2024-07-29 9:37:03,455,2,1,2,1,0,37:02.8 | |||
2024-07-29 9:37:03,456,1,5,1,2,0,37:02.8 | |||
2024-07-29 9:37:03,457,1,6,1,2,0,37:02.8 | |||
2024-07-29 9:37:03,458,1,8,1,4,0,37:02.8 | |||
2024-07-29 9:37:04,436,4,6,4,1,0,37:03.8 | |||
2024-07-29 9:37:04,437,1,6,1,2,0,37:03.8 | |||
2024-07-29 9:37:04,438,1,6,1,2,0,37:03.8 | |||
2024-07-29 9:37:04,442,4,7,4,4,0,37:03.8 | |||
2024-07-29 9:37:04,443,1,6,1,2,0,37:03.8 | |||
2024-07-29 9:37:04,444,4,7,4,4,0,37:03.8 | |||
2024-07-29 9:37:04,455,2,1,2,1,0,37:03.8 | |||
2024-07-29 9:37:04,456,1,5,1,2,0,37:03.8 | |||
2024-07-29 9:37:04,457,1,6,1,2,0,37:03.8 | |||
2024-07-29 9:37:04,458,1,8,1,4,0,37:03.8 | |||
2024-07-29 9:37:05,436,4,6,4,1,0,37:04.8 | |||
2024-07-29 9:37:05,437,1,6,1,2,0,37:04.8 | |||
2024-07-29 9:37:05,438,1,6,1,2,0,37:04.8 | |||
2024-07-29 9:37:05,442,4,7,4,4,0,37:04.8 | |||
2024-07-29 9:37:05,443,1,6,1,2,0,37:04.8 | |||
2024-07-29 9:37:05,444,4,7,4,4,0,37:04.8 | |||
2024-07-29 9:37:05,455,1,6,1,2,0,37:04.8 | |||
2024-07-29 9:37:05,456,1,5,1,2,0,37:04.8 | |||
2024-07-29 9:37:05,457,1,6,1,2,0,37:04.8 | |||
2024-07-29 9:37:05,458,1,8,1,4,0,37:04.8 | |||
2024-07-29 9:37:06,436,4,6,4,1,0,37:05.9 | |||
2024-07-29 9:37:06,437,1,6,1,2,0,37:05.9 | |||
2024-07-29 9:37:06,438,1,6,1,2,0,37:05.9 | |||
2024-07-29 9:37:06,442,4,7,4,4,0,37:05.9 | |||
2024-07-29 9:37:06,443,2,5,2,2,0,37:05.9 | |||
2024-07-29 9:37:06,444,4,7,4,4,0,37:05.9 | |||
2024-07-29 9:37:06,455,1,6,1,2,0,37:05.9 | |||
2024-07-29 9:37:06,456,1,5,1,2,0,37:05.9 | |||
2024-07-29 9:37:06,457,1,6,1,2,0,37:05.9 | |||
2024-07-29 9:37:06,458,1,8,1,4,0,37:05.9 | |||
2024-07-29 9:36:55,436,4,6,4,1,0,36:54.8 | |||
2024-07-29 9:36:55,437,1,6,1,2,0,36:54.8 | |||
2024-07-29 9:36:55,438,1,6,1,2,0,36:54.8 | |||
2024-07-29 9:36:55,442,4,7,4,4,0,36:54.8 | |||
2024-07-29 9:36:55,443,1,6,1,2,0,36:54.8 | |||
2024-07-29 9:36:55,444,3,6,3,1,0,36:54.8 | |||
2024-07-29 9:36:55,455,2,1,2,1,0,36:54.8 | |||
2024-07-29 9:36:55,456,4,17,4,1,0,36:54.8 | |||
2024-07-29 9:36:55,457,1,6,1,2,0,36:54.8 | |||
2024-07-29 9:36:55,458,1,8,1,4,0,36:54.8 | |||
2024-07-29 9:37:07,436,4,6,4,1,0,37:06.8 | |||
2024-07-29 9:37:07,437,1,6,1,2,0,37:06.8 | |||
2024-07-29 9:37:07,438,1,6,1,2,0,37:06.8 | |||
2024-07-29 9:37:07,442,4,7,4,4,0,37:06.8 | |||
2024-07-29 9:37:07,443,2,5,2,2,0,37:06.8 | |||
2024-07-29 9:37:07,444,4,7,4,4,0,37:06.8 | |||
2024-07-29 9:37:07,455,1,6,1,2,0,37:06.8 | |||
2024-07-29 9:37:07,456,1,5,1,2,0,37:06.8 | |||
2024-07-29 9:37:07,457,1,6,1,2,0,37:06.8 | |||
2024-07-29 9:37:07,458,1,8,1,4,0,37:06.8 | |||
2024-07-29 9:37:08,436,4,6,4,1,0,37:07.8 | |||
2024-07-29 9:37:08,437,1,6,1,2,0,37:07.8 | |||
2024-07-29 9:37:08,438,1,6,1,2,0,37:07.8 | |||
2024-07-29 9:37:08,442,4,7,4,4,0,37:07.8 | |||
2024-07-29 9:37:08,443,2,5,2,2,0,37:07.8 | |||
2024-07-29 9:37:08,444,4,7,4,4,0,37:07.8 | |||
2024-07-29 9:37:08,455,1,6,1,2,0,37:07.8 | |||
2024-07-29 9:37:08,456,1,5,1,2,0,37:07.8 | |||
2024-07-29 9:37:08,457,1,6,1,2,0,37:07.8 | |||
2024-07-29 9:37:08,458,1,8,1,4,0,37:07.8 | |||
2024-07-29 9:37:09,436,4,6,4,1,0,37:08.8 | |||
2024-07-29 9:37:09,437,1,6,1,2,0,37:08.8 | |||
2024-07-29 9:37:09,438,1,6,1,2,0,37:08.8 | |||
2024-07-29 9:37:09,442,4,7,4,4,0,37:08.8 | |||
2024-07-29 9:37:09,443,2,5,2,2,0,37:08.8 | |||
2024-07-29 9:37:09,444,4,7,4,4,0,37:08.8 | |||
2024-07-29 9:37:09,455,1,6,1,2,0,37:08.8 | |||
2024-07-29 9:37:09,456,1,5,1,2,0,37:08.8 | |||
2024-07-29 9:37:09,457,1,6,1,2,0,37:08.8 | |||
2024-07-29 9:37:09,458,1,8,1,4,0,37:08.8 | |||
2024-07-29 9:37:10,436,4,6,4,1,0,37:09.8 | |||
2024-07-29 9:37:10,437,1,6,1,2,0,37:09.8 | |||
2024-07-29 9:37:10,438,1,6,1,2,0,37:09.8 | |||
2024-07-29 9:37:10,442,4,7,4,4,0,37:09.8 | |||
2024-07-29 9:37:10,443,2,5,2,2,0,37:09.8 | |||
2024-07-29 9:37:10,444,4,7,4,4,0,37:09.8 | |||
2024-07-29 9:37:10,455,1,6,1,2,0,37:09.8 | |||
2024-07-29 9:37:10,456,1,5,1,2,0,37:09.8 | |||
2024-07-29 9:37:10,457,1,6,1,2,0,37:09.8 | |||
2024-07-29 9:37:10,458,1,8,1,4,0,37:09.8 | |||
2024-07-29 9:37:11,436,4,6,4,1,0,37:10.8 | |||
2024-07-29 9:37:11,437,1,6,1,2,0,37:10.8 | |||
2024-07-29 9:37:11,438,1,6,1,2,0,37:10.8 | |||
2024-07-29 9:37:11,442,4,7,4,4,0,37:10.8 | |||
2024-07-29 9:37:11,443,2,5,2,2,0,37:10.8 | |||
2024-07-29 9:37:11,444,4,7,4,4,0,37:10.8 | |||
2024-07-29 9:37:11,455,1,6,1,2,0,37:10.8 | |||
2024-07-29 9:37:11,456,2,6,2,2,0,37:10.8 | |||
2024-07-29 9:37:11,457,1,6,1,2,0,37:10.8 | |||
2024-07-29 9:37:11,458,1,8,1,4,0,37:10.8 | |||
2024-07-29 9:37:12,436,4,6,4,1,0,37:11.8 | |||
2024-07-29 9:37:12,437,1,6,1,2,0,37:11.8 | |||
2024-07-29 9:37:12,438,1,6,1,2,0,37:11.8 | |||
2024-07-29 9:37:12,442,4,7,4,4,0,37:11.8 | |||
2024-07-29 9:37:12,443,2,5,2,2,0,37:11.8 | |||
2024-07-29 9:37:12,444,4,7,4,4,0,37:11.8 | |||
2024-07-29 9:37:12,455,1,6,1,2,0,37:11.8 | |||
2024-07-29 9:37:12,456,2,6,2,2,0,37:11.8 | |||
2024-07-29 9:37:12,457,1,6,1,2,0,37:11.8 | |||
2024-07-29 9:37:12,458,1,8,1,4,0,37:11.8 | |||
2024-07-29 9:37:13,436,4,6,4,1,0,37:12.8 | |||
2024-07-29 9:37:13,437,1,6,1,2,0,37:12.8 | |||
2024-07-29 9:37:13,438,1,6,1,2,0,37:12.8 | |||
2024-07-29 9:37:13,442,4,7,4,4,0,37:12.8 | |||
2024-07-29 9:37:13,443,2,5,2,2,0,37:12.8 | |||
2024-07-29 9:37:13,444,4,7,4,4,0,37:12.8 | |||
2024-07-29 9:37:13,455,1,6,1,2,0,37:12.8 | |||
2024-07-29 9:37:13,456,2,6,2,2,0,37:12.8 | |||
2024-07-29 9:37:13,457,1,6,1,2,0,37:12.8 | |||
2024-07-29 9:37:13,458,1,8,1,4,0,37:12.8 | |||
2024-07-29 9:37:14,436,4,6,4,1,0,37:13.9 | |||
2024-07-29 9:37:14,437,1,6,1,2,0,37:13.9 | |||
2024-07-29 9:37:14,438,1,6,1,2,0,37:13.9 | |||
2024-07-29 9:37:14,442,5,8,5,3,0,37:13.9 | |||
2024-07-29 9:37:14,443,2,5,2,2,0,37:13.9 | |||
2024-07-29 9:37:14,444,4,7,4,4,0,37:13.9 | |||
2024-07-29 9:37:14,455,1,6,1,2,0,37:13.9 | |||
2024-07-29 9:37:14,456,2,6,2,2,0,37:13.9 | |||
2024-07-29 9:37:14,457,1,6,1,2,0,37:13.9 | |||
2024-07-29 9:37:14,458,1,8,1,4,0,37:13.9 | |||
2024-07-29 9:37:15,436,4,6,4,1,0,37:14.8 | |||
2024-07-29 9:37:15,437,1,6,1,2,0,37:14.8 | |||
2024-07-29 9:37:15,438,1,6,1,2,0,37:14.8 | |||
2024-07-29 9:37:15,442,5,8,5,3,0,37:14.8 | |||
2024-07-29 9:37:15,443,2,5,2,2,0,37:14.8 | |||
2024-07-29 9:37:15,444,4,7,4,4,0,37:14.8 | |||
2024-07-29 9:37:15,455,1,6,1,2,0,37:14.8 | |||
2024-07-29 9:37:15,456,2,6,2,2,0,37:14.8 | |||
2024-07-29 9:37:15,457,1,6,1,2,0,37:14.8 | |||
2024-07-29 9:37:15,458,1,8,1,4,0,37:14.8 | |||
2024-07-29 9:37:16,436,4,6,4,1,0,37:15.8 | |||
2024-07-29 9:37:16,437,1,6,1,2,0,37:15.8 | |||
2024-07-29 9:37:16,438,1,6,1,2,0,37:15.8 | |||
2024-07-29 9:37:16,442,5,8,5,3,0,37:15.8 | |||
2024-07-29 9:37:16,443,2,5,2,2,0,37:15.8 | |||
2024-07-29 9:37:16,444,4,7,4,4,0,37:15.8 | |||
2024-07-29 9:37:16,455,1,6,1,2,0,37:15.8 | |||
2024-07-29 9:37:16,456,2,6,2,2,0,37:15.8 | |||
2024-07-29 9:37:16,457,1,6,1,2,0,37:15.8 | |||
2024-07-29 9:37:16,458,1,8,1,4,0,37:15.8 | |||
2024-07-29 9:37:17,436,1,5,1,2,0,37:16.8 | |||
2024-07-29 9:37:17,437,1,6,1,2,0,37:16.8 | |||
2024-07-29 9:37:17,438,1,6,1,2,0,37:16.8 | |||
2024-07-29 9:37:17,442,5,8,5,3,0,37:16.8 | |||
2024-07-29 9:37:17,443,2,5,2,2,0,37:16.8 | |||
2024-07-29 9:37:17,444,4,7,4,4,0,37:16.8 | |||
2024-07-29 9:37:17,455,1,6,1,2,0,37:16.8 | |||
2024-07-29 9:37:17,456,2,6,2,2,0,37:16.8 | |||
2024-07-29 9:37:17,457,1,6,1,2,0,37:16.8 | |||
2024-07-29 9:37:17,458,1,8,1,4,0,37:16.8 | |||
2024-07-29 9:37:21,436,1,5,1,2,0,37:19.8 | |||
2024-07-29 9:37:21,437,1,6,1,2,0,37:19.8 | |||
2024-07-29 9:37:21,438,1,6,1,2,0,37:19.8 | |||
2024-07-29 9:37:21,442,5,8,5,3,0,37:19.8 | |||
2024-07-29 9:37:21,443,2,5,2,2,0,37:19.8 | |||
2024-07-29 9:37:21,444,4,7,4,4,0,37:19.8 | |||
2024-07-29 9:37:21,455,1,6,1,2,0,37:19.8 | |||
2024-07-29 9:37:21,456,2,6,2,2,0,37:19.8 | |||
2024-07-29 9:37:21,457,1,6,1,2,0,37:19.8 | |||
2024-07-29 9:37:21,458,1,8,1,4,0,37:19.8 | |||
2024-07-29 9:37:22,436,1,5,1,2,0,37:20.8 | |||
2024-07-29 9:37:22,437,1,6,1,2,0,37:20.8 | |||
2024-07-29 9:37:22,438,1,6,1,2,0,37:20.8 | |||
2024-07-29 9:37:22,442,5,8,5,3,0,37:20.8 | |||
2024-07-29 9:37:22,443,2,5,2,2,0,37:20.8 | |||
2024-07-29 9:37:22,444,4,7,4,4,0,37:20.8 | |||
2024-07-29 9:37:22,455,1,6,1,2,0,37:20.8 | |||
2024-07-29 9:37:22,456,2,6,2,2,0,37:20.8 | |||
2024-07-29 9:37:22,457,1,6,1,2,0,37:20.8 | |||
2024-07-29 9:37:22,458,1,8,1,4,0,37:20.8 | |||
2024-07-29 9:37:23,436,1,5,1,2,0,37:21.8 | |||
2024-07-29 9:37:23,437,1,6,1,2,0,37:21.8 | |||
2024-07-29 9:37:23,438,1,6,1,2,0,37:21.8 | |||
2024-07-29 9:37:23,442,5,8,5,3,0,37:21.8 | |||
2024-07-29 9:37:23,443,2,5,2,2,0,37:21.8 | |||
2024-07-29 9:37:23,444,4,7,4,4,0,37:21.8 | |||
2024-07-29 9:37:23,455,1,6,1,2,0,37:21.8 | |||
2024-07-29 9:37:23,456,2,6,2,2,0,37:21.8 | |||
2024-07-29 9:37:23,457,1,6,1,2,0,37:21.8 | |||
2024-07-29 9:37:23,458,1,8,1,4,0,37:21.8 | |||
2024-07-29 9:37:24,436,1,5,1,2,0,37:22.9 | |||
2024-07-29 9:37:24,437,1,6,1,2,0,37:22.9 | |||
2024-07-29 9:37:24,438,1,6,1,2,0,37:22.9 | |||
2024-07-29 9:37:24,442,5,8,5,3,0,37:22.9 | |||
2024-07-29 9:37:24,443,2,5,2,2,0,37:22.9 | |||
2024-07-29 9:37:24,444,4,7,4,4,0,37:22.9 | |||
2024-07-29 9:37:24,455,1,6,1,2,0,37:22.9 | |||
2024-07-29 9:37:24,456,2,6,2,2,0,37:22.9 | |||
2024-07-29 9:37:24,457,1,6,1,2,0,37:22.9 | |||
2024-07-29 9:37:24,458,1,8,1,4,0,37:22.9 | |||
2024-07-29 9:37:25,436,1,5,1,2,0,37:23.9 | |||
2024-07-29 9:37:25,437,1,6,1,2,0,37:23.9 | |||
2024-07-29 9:37:25,438,1,6,1,2,0,37:23.9 | |||
2024-07-29 9:37:25,442,5,8,5,3,0,37:23.9 | |||
2024-07-29 9:37:25,443,2,5,2,2,0,37:23.9 | |||
2024-07-29 9:37:25,444,4,7,4,4,0,37:23.9 | |||
2024-07-29 9:37:25,455,1,6,1,2,0,37:23.9 | |||
2024-07-29 9:37:25,456,2,6,2,2,0,37:23.9 | |||
2024-07-29 9:37:25,457,1,6,1,2,0,37:23.9 | |||
2024-07-29 9:37:25,458,1,8,1,4,0,37:23.9 | |||
2024-07-29 9:37:26,436,1,5,1,2,0,37:24.8 | |||
2024-07-29 9:37:26,437,1,6,1,2,0,37:24.8 | |||
2024-07-29 9:37:26,438,1,6,1,2,0,37:24.8 | |||
2024-07-29 9:37:26,442,5,8,5,3,0,37:24.8 | |||
2024-07-29 9:37:26,443,2,5,2,2,0,37:24.8 | |||
2024-07-29 9:37:26,444,4,7,4,4,0,37:24.8 | |||
2024-07-29 9:37:26,455,1,6,1,2,0,37:24.8 | |||
2024-07-29 9:37:26,456,2,6,2,2,0,37:24.8 | |||
2024-07-29 9:37:26,457,1,6,1,2,0,37:24.8 | |||
2024-07-29 9:37:26,458,1,8,1,4,0,37:24.8 | |||
2024-07-29 9:37:27,436,1,5,1,2,0,37:25.8 | |||
2024-07-29 9:37:27,437,1,6,1,2,0,37:25.8 | |||
2024-07-29 9:37:27,438,1,6,1,2,0,37:25.8 | |||
2024-07-29 9:37:27,442,5,8,5,3,0,37:25.8 | |||
2024-07-29 9:37:27,443,2,5,2,2,0,37:25.8 | |||
2024-07-29 9:37:27,444,4,7,4,4,0,37:25.8 | |||
2024-07-29 9:37:27,455,1,6,1,2,0,37:25.8 | |||
2024-07-29 9:37:27,456,2,6,2,2,0,37:25.8 | |||
2024-07-29 9:37:27,457,1,6,1,2,0,37:25.8 | |||
2024-07-29 9:37:27,458,1,8,1,4,0,37:25.8 | |||
2024-07-29 9:37:28,436,1,5,1,2,0,37:26.9 | |||
2024-07-29 9:37:28,437,1,6,1,2,0,37:26.9 | |||
2024-07-29 9:37:28,438,1,6,1,2,0,37:26.9 | |||
2024-07-29 9:37:28,442,5,8,5,3,0,37:26.9 | |||
2024-07-29 9:37:28,443,2,5,2,2,0,37:26.9 | |||
2024-07-29 9:37:28,444,4,7,4,4,0,37:26.9 | |||
2024-07-29 9:37:28,455,1,6,1,2,0,37:26.9 | |||
2024-07-29 9:37:28,456,2,6,2,2,0,37:26.9 | |||
2024-07-29 9:37:28,457,1,6,1,2,0,37:26.9 | |||
2024-07-29 9:37:28,458,1,8,1,4,0,37:26.9 | |||
2024-07-29 9:37:29,436,1,5,1,2,0,37:27.9 | |||
2024-07-29 9:37:29,437,1,6,1,2,0,37:27.9 | |||
2024-07-29 9:37:29,438,1,6,1,2,0,37:27.9 | |||
2024-07-29 9:37:29,442,5,8,5,3,0,37:27.9 | |||
2024-07-29 9:37:29,443,2,5,2,2,0,37:27.9 | |||
2024-07-29 9:37:29,444,4,7,4,4,0,37:27.9 | |||
2024-07-29 9:37:29,455,1,6,1,2,0,37:27.9 | |||
2024-07-29 9:37:29,456,2,6,2,2,0,37:27.9 | |||
2024-07-29 9:37:29,457,1,6,1,2,0,37:27.9 | |||
2024-07-29 9:37:29,458,1,8,1,4,0,37:27.9 | |||
2024-07-29 9:37:18,436,1,5,1,2,0,37:17.8 | |||
2024-07-29 9:37:18,437,1,6,1,2,0,37:17.8 | |||
2024-07-29 9:37:18,438,1,6,1,2,0,37:17.8 | |||
2024-07-29 9:37:18,442,5,8,5,3,0,37:17.8 | |||
2024-07-29 9:37:18,443,2,5,2,2,0,37:17.8 | |||
2024-07-29 9:37:18,444,4,7,4,4,0,37:17.8 | |||
2024-07-29 9:37:18,455,1,6,1,2,0,37:17.8 | |||
2024-07-29 9:37:18,456,2,6,2,2,0,37:17.8 | |||
2024-07-29 9:37:18,457,1,6,1,2,0,37:17.8 | |||
2024-07-29 9:37:18,458,1,8,1,4,0,37:17.8 | |||
2024-07-29 9:37:19,436,1,5,1,2,0,37:18.9 | |||
2024-07-29 9:37:19,437,1,6,1,2,0,37:18.9 | |||
2024-07-29 9:37:19,438,1,6,1,2,0,37:18.9 | |||
2024-07-29 9:37:19,442,5,8,5,3,0,37:18.9 | |||
2024-07-29 9:37:19,443,2,5,2,2,0,37:18.9 | |||
2024-07-29 9:37:19,444,4,7,4,4,0,37:18.9 | |||
2024-07-29 9:37:19,455,1,6,1,2,0,37:18.9 | |||
2024-07-29 9:37:19,456,2,6,2,2,0,37:18.9 | |||
2024-07-29 9:37:19,457,1,6,1,2,0,37:18.9 | |||
2024-07-29 9:37:19,458,1,8,1,4,0,37:18.9 | |||
2024-07-29 9:37:30,436,1,5,1,2,0,37:28.9 | |||
2024-07-29 9:37:30,437,1,6,1,2,0,37:28.9 | |||
2024-07-29 9:37:30,438,1,6,1,2,0,37:28.9 | |||
2024-07-29 9:37:30,442,5,8,5,3,0,37:28.9 | |||
2024-07-29 9:37:30,443,2,5,2,2,0,37:28.9 | |||
2024-07-29 9:37:30,444,4,7,4,4,0,37:28.9 | |||
2024-07-29 9:37:30,455,1,6,1,2,0,37:28.9 | |||
2024-07-29 9:37:30,456,2,6,2,2,0,37:28.9 | |||
2024-07-29 9:37:30,457,1,6,1,2,0,37:28.9 | |||
2024-07-29 9:37:30,458,1,8,1,4,0,37:28.9 |
@ -0,0 +1 @@ | |||
{"A": { |