diff --git a/.vscode/launch.json b/.vscode/launch.json index 0324fb55a..e24de026f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,6 +1,7 @@ { "version": "0.2.0", "configurations": [ + { "name": "Python: Current File", "type": "python", diff --git a/Scripts/__pycache__/generate_signals.cpython-312.pyc b/Scripts/__pycache__/generate_signals.cpython-312.pyc index 8b4ff2c0e..34671001b 100644 Binary files a/Scripts/__pycache__/generate_signals.cpython-312.pyc and b/Scripts/__pycache__/generate_signals.cpython-312.pyc differ diff --git a/Scripts/__pycache__/preprocess_daily.cpython-312.pyc b/Scripts/__pycache__/preprocess_daily.cpython-312.pyc index 469d5d82c..cf6fb9b7e 100644 Binary files a/Scripts/__pycache__/preprocess_daily.cpython-312.pyc and b/Scripts/__pycache__/preprocess_daily.cpython-312.pyc differ diff --git a/Scripts/generate_signals.py b/Scripts/generate_signals.py index a3064fc93..826f6f995 100644 --- a/Scripts/generate_signals.py +++ b/Scripts/generate_signals.py @@ -7,7 +7,7 @@ from tqdm import tqdm from datetime import datetime, timedelta class SignalGenerator(): - def __init__(self, config_name='test_0721', month=7, day=22, hour=9, minute=25): + def __init__(self, config_name='test_0731', month=7, day=31, hour=9, minute=5): self.config_name = config_name self.month, self.day, self.hour, self.minute = month, day, hour, minute @@ -1006,8 +1006,33 @@ class SignalGenerator(): csig = pd.concat(csig).reset_index(drop=True) return csig - - # 5-3. 신호파일 생성 + # 5-3. 부적절하게 연속된 신호조합 체크 + def find_impropers(self): + improper_pairs = dict() + improper_pairs['ry'] = [] + improper_pairs['Gr'] = [] + improper_pairs['yG'] = [] + for node_id, group in self.SIGTABLE.groupby('node_id'): + state_length = len(group.iloc[0].state) + # 상태를 리스트로 변환 + state_lists = group['state'].apply(list) + # 새로운 열들을 한 번에 추가 + cnxnwises = {str(j): [state[j] for state in state_lists] for j in range(state_length)} + for state_order in cnxnwises: + cnxnwise = cnxnwises[state_order] + for phase_order, (p, q) in enumerate(zip(cnxnwise[:-1], cnxnwise[1:])): + if (p, q) == ('r', 'y'): + improper_pairs['ry'].append({'node_id':node_id, 'state_order':state_order, 'phase_order':phase_order}) + if (p, q) == ('G', 'r'): + improper_pairs['Gr'].append({'node_id':node_id, 'state_order':state_order, 'phase_order':phase_order}) + if (p, q) == ('y', 'G'): + improper_pairs['ry'].append({'node_id':node_id, 'state_order':state_order, 'phase_order':phase_order}) + if any(value for value in improper_pairs.values()): + print('부적절하게 연속된 신호조합(r->y, G->r, y->G)이 존재합니다 :') + print(improper_pairs) + + + # 5-4. 신호파일 생성 def make_tl_file(self): strings = ['\n'] for node_id, group in self.SIGTABLE.groupby('node_id'): diff --git a/Scripts/preprocess_daily.py b/Scripts/preprocess_daily.py index 5b6739ed6..99a7812d9 100644 --- a/Scripts/preprocess_daily.py +++ b/Scripts/preprocess_daily.py @@ -451,6 +451,7 @@ class DailyPreprocessor(): self.initialize_state() self.assign_indices() self.assign_signals() + self.avoid_all_reds() self.save_intermediates() # 2-1 매칭테이블 생성 @@ -1102,7 +1103,58 @@ class DailyPreprocessor(): self.matching.to_csv(os.path.join(self.path_intermediates, 'matching.csv'), index=0) print('2-4. 직진 및 좌회전(G)을 배정했습니다.') - # 2-5 기반파일 저장 + + # 2-5 모든 현시에서 적색신호인 경우는 상시 s로 정의 + def avoid_all_reds(self): + ''' + s에 대한 설명 + 'green right-turn arrow' requires stopping - vehicles may pass the junction if no vehicle uses a higher priorised foe stream. They always stop before passing. This is only generated for junction type traffic_light_right_on_red. + https://sumo.dlr.de/docs/Simulation/Traffic_Lights.html + ''' + + # match6에 적용 + for node_id, group in self.match6.groupby('node_id'): + state_length = len(group.iloc[0].state) + consistent_length = all([len(state)==state_length for state in group.state]) + # state 길이 일정 여부 + if not consistent_length: + print(f"node_id : {node_id}에 대하여 state 길이가 일정하지 않습니다.") + any_non_red_indices = set() + for state in group.state: + state = list(state) + any_non_red_indices.update({index for index, char in enumerate(state) if not char == 'r'}) + # 모든 현시에서 적색신호인 인덱스 목록 + all_red_indices = set(range(state_length)) - any_non_red_indices + for i, row in group.iterrows(): + state = list(row.state) + for index in all_red_indices: + state[index] = 's' + state = ''.join(state) + self.match6.at[i, 'state'] = state + + # matching에 적용 + for node_id, group in self.matching.groupby('node_id'): + state_length = len(group.iloc[0].state) + consistent_length = all([len(state)==state_length for state in group.state]) + # state 길이 일정 여부 + if not consistent_length: + print(f"node_id : {node_id}에 대하여 state 길이가 일정하지 않습니다.") + any_non_red_indices = set() + for state in group.state: + state = list(state) + any_non_red_indices.update({index for index, char in enumerate(state) if not char == 'r'}) + # 모든 현시에서 적색신호인 인덱스 목록 + all_red_indices = set(range(state_length)) - any_non_red_indices + for i, row in group.iterrows(): + state = list(row.state) + for index in all_red_indices: + state[index] = 's' + state = ''.join(state) + self.matching.at[i, 'state'] = state + print("2-5. 모든 현시에서 적색신호인 경우에 대한 처리 완료") + + + # 2-6 기반파일 저장 def save_intermediates(self): # 신호계획 저장 self.plan.to_csv(os.path.join(self.path_tables, 'plan.csv'), index=0) @@ -1117,8 +1169,9 @@ class DailyPreprocessor(): node2num_cycles = {node_id : inter2num_cycles[self.node2inter[node_id]] for node_id in self.node_ids} with open(os.path.join(self.path_intermediates,'node2num_cycles.json'), 'w') as file: json.dump(node2num_cycles, file, indent=4) - print("2-5. node2num_cycles.json를 저장했습니다.") - + print("2-6. node2num_cycles.json를 저장했습니다.") + + # 3. 이슈사항 저장 def write_issues(self): print('3. 이슈사항을 저장합니다.') diff --git a/analysis/0725_main_test/4_use_class_pd.ipynb b/analysis/0725_main_test/4_use_class_pd.ipynb index 38c37deec..ad97ec15c 100644 --- a/analysis/0725_main_test/4_use_class_pd.ipynb +++ b/analysis/0725_main_test/4_use_class_pd.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -30,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -52,2476 +52,25 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2-1. 매칭 테이블들을 생성했습니다.\n" + "2. 중간산출물을 생성합니다.\n", + "2-1. 매칭 테이블들을 생성했습니다.\n", + "2-2. 초기화 신호가 지정되었습니다. (우회전 : g)\n", + "2-3. 유턴 인덱스 / 비보호좌회전 인덱스를 지정했습니다.\n", + "2-4. 직진 및 좌회전(G)을 배정했습니다.\n", + "2-5. node2num_cycles.json를 저장했습니다.\n" ] } ], "source": [ - "self.get_matches()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2-2. 초기화 신호가 지정되었습니다. (우회전 : g)\n" - ] - } - ], - "source": [ - "self.initialize_state()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2-3. 유턴 인덱스 / 비보호좌회전 인덱스를 지정했습니다.\n" - ] - } - ], - "source": [ - "self.assign_indices()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2-4. 직진 및 좌회전(G)을 배정했습니다.\n" - ] - } - ], - "source": [ - "self.assign_signals()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
664561062311A5513136513139grgrrrrGleft
674561062311B2513136513137grgrrGGrstraight
684561062312A6513138513135grgGGrrrstraight
694561062312B2513136513137grgrrGGrstraight
704561062313A7513140513137gGgrrrrrleft
714561062313B7513140513137gGgrrrrrleft
724561062314A17NaNNaNgrgrrrrrNaN
734561062314B17NaNNaNgrgrrrrrNaN
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "66 456 106231 1 A 5 513136 513139 \n", - "67 456 106231 1 B 2 513136 513137 \n", - "68 456 106231 2 A 6 513138 513135 \n", - "69 456 106231 2 B 2 513136 513137 \n", - "70 456 106231 3 A 7 513140 513137 \n", - "71 456 106231 3 B 7 513140 513137 \n", - "72 456 106231 4 A 17 NaN NaN \n", - "73 456 106231 4 B 17 NaN NaN \n", - "\n", - " state turn_type \n", - "66 grgrrrrG left \n", - "67 grgrrGGr straight \n", - "68 grgGGrrr straight \n", - "69 grgrrGGr straight \n", - "70 gGgrrrrr left \n", - "71 gGgrrrrr left \n", - "72 grgrrrrr NaN \n", - "73 grgrrrrr NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
824571062341A6513152513155gGGGrgrrrrgrrrrgrrrstraight
834571062341B2513156513151grrrrgrrrrgGGGrgrrrstraight
844571062342A5513156513157grrrrgrrrrgrrrGgrrrleft
854571062342B1513152513153grrrGgrrrrgrrrrgrrrleft
864571062343A17NaNNaNgrrrrgrrrrgrrrrgrrrNaN
874571062343B17NaNNaNgrrrrgrrrrgrrrrgrrrNaN
884571062344A8513154513157grrrrgGGrrgrrrrgrrrstraight
894571062344B3513154513155grrrrgrrGGgrrrrgrrrleft
904571062345A7513158513151grrrrgrrrrgrrrrgrrGleft
914571062345B4513158513153grrrrgrrrrgrrrrgGGrstraight
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "82 457 106234 1 A 6 513152 513155 \n", - "83 457 106234 1 B 2 513156 513151 \n", - "84 457 106234 2 A 5 513156 513157 \n", - "85 457 106234 2 B 1 513152 513153 \n", - "86 457 106234 3 A 17 NaN NaN \n", - "87 457 106234 3 B 17 NaN NaN \n", - "88 457 106234 4 A 8 513154 513157 \n", - "89 457 106234 4 B 3 513154 513155 \n", - "90 457 106234 5 A 7 513158 513151 \n", - "91 457 106234 5 B 4 513158 513153 \n", - "\n", - " state turn_type \n", - "82 gGGGrgrrrrgrrrrgrrr straight \n", - "83 grrrrgrrrrgGGGrgrrr straight \n", - "84 grrrrgrrrrgrrrGgrrr left \n", - "85 grrrGgrrrrgrrrrgrrr left \n", - "86 grrrrgrrrrgrrrrgrrr NaN \n", - "87 grrrrgrrrrgrrrrgrrr NaN \n", - "88 grrrrgGGrrgrrrrgrrr straight \n", - "89 grrrrgrrGGgrrrrgrrr left \n", - "90 grrrrgrrrrgrrrrgrrG left \n", - "91 grrrrgrrrrgrrrrgGGr straight " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "106238\n", - "all_red_indices : {4, 6, 7, 12, 14, 15}\n", - "all_red_state : ggggrgrrggggrgrr\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
1124581062381A8513193513188gGGGrgrrgrrrrgrrstraight
1134581062381B4513189513192grrrrgrrgGGGrgrrstraight
1144581062382A17NaNNaNgrrrrgrrgrrrrgrrNaN
1154581062382B17NaNNaNgrrrrgrrgrrrrgrrNaN
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "112 458 106238 1 A 8 513193 513188 \n", - "113 458 106238 1 B 4 513189 513192 \n", - "114 458 106238 2 A 17 NaN NaN \n", - "115 458 106238 2 B 17 NaN NaN \n", - "\n", - " state turn_type \n", - "112 gGGGrgrrgrrrrgrr straight \n", - "113 grrrrgrrgGGGrgrr straight \n", - "114 grrrrgrrgrrrrgrr NaN \n", - "115 grrrrgrrgrrrrgrr NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "106332\n", - "all_red_indices : {11, 4, 12, 14}\n", - "all_red_state : ggggrggggggrrgrgggggggggggg\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
404421063321A6519824513731gGGGrrrrrrgrrgrrrrrrrrgrrrrstraight
414421063321B1519824513726grrrrGGrrrgrrgrrrrrrrrgrrrrleft
424421063322A6519824513731gGGGrrrrrrgrrgrrrrrrrrgrrrrstraight
434421063322B2513732513728grrrrrrrrrgrrgrGGGGGrrgrrrrstraight
444421063323A5513732513729grrrrrrrrrgrrgrrrrrrGGgrrrrleft
454421063323B2513732513728grrrrrrrrrgrrgrGGGGGrrgrrrrstraight
464421063324A7513730513728grrrrrrrrrgrrgrrrrrrrrgrrrGleft
474421063324B4513730513726grrrrrrrrrgrrgrrrrrrrrgGGGrstraight
484421063325A8513727513729grrrrrrGGrgrrgrrrrrrrrgrrrrstraight
494421063325B3513727513731grrrrrrrrGgrrgrrrrrrrrgrrrrleft
504421063326A8513727513729grrrrrrGGrgrrgrrrrrrrrgrrrrstraight
514421063326B3513727513731grrrrrrrrGgrrgrrrrrrrrgrrrrleft
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "40 442 106332 1 A 6 519824 513731 \n", - "41 442 106332 1 B 1 519824 513726 \n", - "42 442 106332 2 A 6 519824 513731 \n", - "43 442 106332 2 B 2 513732 513728 \n", - "44 442 106332 3 A 5 513732 513729 \n", - "45 442 106332 3 B 2 513732 513728 \n", - "46 442 106332 4 A 7 513730 513728 \n", - "47 442 106332 4 B 4 513730 513726 \n", - "48 442 106332 5 A 8 513727 513729 \n", - "49 442 106332 5 B 3 513727 513731 \n", - "50 442 106332 6 A 8 513727 513729 \n", - "51 442 106332 6 B 3 513727 513731 \n", - "\n", - " state turn_type \n", - "40 gGGGrrrrrrgrrgrrrrrrrrgrrrr straight \n", - "41 grrrrGGrrrgrrgrrrrrrrrgrrrr left \n", - "42 gGGGrrrrrrgrrgrrrrrrrrgrrrr straight \n", - "43 grrrrrrrrrgrrgrGGGGGrrgrrrr straight \n", - "44 grrrrrrrrrgrrgrrrrrrGGgrrrr left \n", - "45 grrrrrrrrrgrrgrGGGGGrrgrrrr straight \n", - "46 grrrrrrrrrgrrgrrrrrrrrgrrrG left \n", - "47 grrrrrrrrrgrrgrrrrrrrrgGGGr straight \n", - "48 grrrrrrGGrgrrgrrrrrrrrgrrrr straight \n", - "49 grrrrrrrrGgrrgrrrrrrrrgrrrr left \n", - "50 grrrrrrGGrgrrgrrrrrrrrgrrrr straight \n", - "51 grrrrrrrrGgrrgrrrrrrrrgrrrr left " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
324381063501A6513817513811grrGGGGrrrrrstraight
334381063501B2513810513816grrrrrrGGGGrstraight
344381063502A5513810513793grrrrrrrrrrGleft
354381063502B1513817513816grrrrrrrrrrrNaN
364381063503A8513817513793grGrrrrrrrrrNaN
374381063503B3513817513811grrGGGGrrrrrstraight
384381063504A7513792513816gGrrrrrrrrrrleft
394381063504B4513792513816gGrrrrrrrrrrleft
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "32 438 106350 1 A 6 513817 513811 \n", - "33 438 106350 1 B 2 513810 513816 \n", - "34 438 106350 2 A 5 513810 513793 \n", - "35 438 106350 2 B 1 513817 513816 \n", - "36 438 106350 3 A 8 513817 513793 \n", - "37 438 106350 3 B 3 513817 513811 \n", - "38 438 106350 4 A 7 513792 513816 \n", - "39 438 106350 4 B 4 513792 513816 \n", - "\n", - " state turn_type \n", - "32 grrGGGGrrrrr straight \n", - "33 grrrrrrGGGGr straight \n", - "34 grrrrrrrrrrG left \n", - "35 grrrrrrrrrrr NaN \n", - "36 grGrrrrrrrrr NaN \n", - "37 grrGGGGrrrrr straight \n", - "38 gGrrrrrrrrrr left \n", - "39 gGrrrrrrrrrr left " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
84371075871A6NoneNoneGGGGrstraight
94371075871B2NoneNoneGGGGrstraight
104371075872A5NoneNoneGGGGrleft
114371075872B1516929517055GGGGGleft
124371075873A8NoneNoneGGGGrstraight
134371075873B3NoneNoneGGGGrleft
144371075874A7NoneNoneGGGGrleft
154371075874B4NoneNoneGGGGrstraight
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "8 437 107587 1 A 6 None None \n", - "9 437 107587 1 B 2 None None \n", - "10 437 107587 2 A 5 None None \n", - "11 437 107587 2 B 1 516929 517055 \n", - "12 437 107587 3 A 8 None None \n", - "13 437 107587 3 B 3 None None \n", - "14 437 107587 4 A 7 None None \n", - "15 437 107587 4 B 4 None None \n", - "\n", - " state turn_type \n", - "8 GGGGr straight \n", - "9 GGGGr straight \n", - "10 GGGGr left \n", - "11 GGGGG left \n", - "12 GGGGr straight \n", - "13 GGGGr left \n", - "14 GGGGr left \n", - "15 GGGGr straight " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
524431087691A6516916513863gGGGGGrrrrrrgrrstraight
534431087691B2513862516917grrrrrGGGGGrgrrstraight
544431087692A5513862518550grrrrrrrrrrGgrrleft
554431087692B2513862516917grrrrrGGGGGrgrrstraight
564431087693A7518549516917grrrrrrrrrrrgGGleft
574431087693B18NaNNaNgrrrrrrrrrrrgrrNaN
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "52 443 108769 1 A 6 516916 513863 \n", - "53 443 108769 1 B 2 513862 516917 \n", - "54 443 108769 2 A 5 513862 518550 \n", - "55 443 108769 2 B 2 513862 516917 \n", - "56 443 108769 3 A 7 518549 516917 \n", - "57 443 108769 3 B 18 NaN NaN \n", - "\n", - " state turn_type \n", - "52 gGGGGGrrrrrrgrr straight \n", - "53 grrrrrGGGGGrgrr straight \n", - "54 grrrrrrrrrrGgrr left \n", - "55 grrrrrGGGGGrgrr straight \n", - "56 grrrrrrrrrrrgGG left \n", - "57 grrrrrrrrrrrgrr NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
744561092951A5519797519796GGGGGGGGleft
754561092951B2NoneNoneGGGGGGrrstraight
764561092952A6NoneNoneGGGGGGrrstraight
774561092952B2NoneNoneGGGGGGrrstraight
784561092953A7NoneNoneGGGGGGrrleft
794561092953B7NoneNoneGGGGGGrrleft
804561092954A17NoneNoneGGGGGGrrNaN
814561092954B17NoneNoneGGGGGGrrNaN
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "74 456 109295 1 A 5 519797 519796 \n", - "75 456 109295 1 B 2 None None \n", - "76 456 109295 2 A 6 None None \n", - "77 456 109295 2 B 2 None None \n", - "78 456 109295 3 A 7 None None \n", - "79 456 109295 3 B 7 None None \n", - "80 456 109295 4 A 17 None None \n", - "81 456 109295 4 B 17 None None \n", - "\n", - " state turn_type \n", - "74 GGGGGGGG left \n", - "75 GGGGGGrr straight \n", - "76 GGGGGGrr straight \n", - "77 GGGGGGrr straight \n", - "78 GGGGGGrr left \n", - "79 GGGGGGrr left \n", - "80 GGGGGGrr NaN \n", - "81 GGGGGGrr NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
924571092961A6NoneNoneGGGrrGGGstraight
934571092961B2NoneNoneGGGrrGGGstraight
944571092962A5NoneNoneGGGrrGGGleft
954571092962B1519799519798GGGGGGGGleft
964571092963A17NoneNoneGGGrrGGGNaN
974571092963B17NoneNoneGGGrrGGGNaN
984571092964A8NoneNoneGGGrrGGGstraight
994571092964B3NoneNoneGGGrrGGGleft
1004571092965A7NoneNoneGGGrrGGGleft
1014571092965B4NoneNoneGGGrrGGGstraight
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "92 457 109296 1 A 6 None None \n", - "93 457 109296 1 B 2 None None \n", - "94 457 109296 2 A 5 None None \n", - "95 457 109296 2 B 1 519799 519798 \n", - "96 457 109296 3 A 17 None None \n", - "97 457 109296 3 B 17 None None \n", - "98 457 109296 4 A 8 None None \n", - "99 457 109296 4 B 3 None None \n", - "100 457 109296 5 A 7 None None \n", - "101 457 109296 5 B 4 None None \n", - "\n", - " state turn_type \n", - "92 GGGrrGGG straight \n", - "93 GGGrrGGG straight \n", - "94 GGGrrGGG left \n", - "95 GGGGGGGG left \n", - "96 GGGrrGGG NaN \n", - "97 GGGrrGGG NaN \n", - "98 GGGrrGGG straight \n", - "99 GGGrrGGG left \n", - "100 GGGrrGGG left \n", - "101 GGGrrGGG straight " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
1024571092971A6NoneNoneGGGGGGrrstraight
1034571092971B2NoneNoneGGGGGGrrstraight
1044571092972A5519801519800GGGGGGGGleft
1054571092972B1NoneNoneGGGGGGrrleft
1064571092973A17NoneNoneGGGGGGrrNaN
1074571092973B17NoneNoneGGGGGGrrNaN
1084571092974A8NoneNoneGGGGGGrrstraight
1094571092974B3NoneNoneGGGGGGrrleft
1104571092975A7NoneNoneGGGGGGrrleft
1114571092975B4NoneNoneGGGGGGrrstraight
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "102 457 109297 1 A 6 None None \n", - "103 457 109297 1 B 2 None None \n", - "104 457 109297 2 A 5 519801 519800 \n", - "105 457 109297 2 B 1 None None \n", - "106 457 109297 3 A 17 None None \n", - "107 457 109297 3 B 17 None None \n", - "108 457 109297 4 A 8 None None \n", - "109 457 109297 4 B 3 None None \n", - "110 457 109297 5 A 7 None None \n", - "111 457 109297 5 B 4 None None \n", - "\n", - " state turn_type \n", - "102 GGGGGGrr straight \n", - "103 GGGGGGrr straight \n", - "104 GGGGGGGG left \n", - "105 GGGGGGrr left \n", - "106 GGGGGGrr NaN \n", - "107 GGGGGGrr NaN \n", - "108 GGGGGGrr straight \n", - "109 GGGGGGrr left \n", - "110 GGGGGGrr left \n", - "111 GGGGGGrr straight " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
164371093131A6NoneNoneGGGGGGGGrstraight
174371093131B2NoneNoneGGGGGGGGrstraight
184371093132A5519834519833GGGGGGGGGleft
194371093132B1NoneNoneGGGGGGGGrleft
204371093133A8NoneNoneGGGGGGGGrstraight
214371093133B3NoneNoneGGGGGGGGrleft
224371093134A7NoneNoneGGGGGGGGrleft
234371093134B4NoneNoneGGGGGGGGrstraight
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "16 437 109313 1 A 6 None None \n", - "17 437 109313 1 B 2 None None \n", - "18 437 109313 2 A 5 519834 519833 \n", - "19 437 109313 2 B 1 None None \n", - "20 437 109313 3 A 8 None None \n", - "21 437 109313 3 B 3 None None \n", - "22 437 109313 4 A 7 None None \n", - "23 437 109313 4 B 4 None None \n", - "\n", - " state turn_type \n", - "16 GGGGGGGGr straight \n", - "17 GGGGGGGGr straight \n", - "18 GGGGGGGGG left \n", - "19 GGGGGGGGr left \n", - "20 GGGGGGGGr straight \n", - "21 GGGGGGGGr left \n", - "22 GGGGGGGGr left \n", - "23 GGGGGGGGr straight " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
584431093331A6NoneNoneGGGGGGGGGGGrstraight
594431093331B2NoneNoneGGGGGGGGGGGrstraight
604431093332A5519873519874GGGGGGGGGGGGleft
614431093332B2NoneNoneGGGGGGGGGGGrstraight
624431093333A7NoneNoneGGGGGGGGGGGrleft
634431093333B18NoneNoneGGGGGGGGGGGrNaN
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "58 443 109333 1 A 6 None None \n", - "59 443 109333 1 B 2 None None \n", - "60 443 109333 2 A 5 519873 519874 \n", - "61 443 109333 2 B 2 None None \n", - "62 443 109333 3 A 7 None None \n", - "63 443 109333 3 B 18 None None \n", - "\n", - " state turn_type \n", - "58 GGGGGGGGGGGr straight \n", - "59 GGGGGGGGGGGr straight \n", - "60 GGGGGGGGGGGG left \n", - "61 GGGGGGGGGGGr straight \n", - "62 GGGGGGGGGGGr left \n", - "63 GGGGGGGGGGGr NaN " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
04361098361A5517505517507grrrrgrrgrGgrrleft
14361098361B2517505517004grrrrgrrgGrgrrstraight
24361098362A8517509517507grrrrgGrgrrgrrstraight
34361098362B3517509517504grrrrgrGgrrgrrleft
44361098363A7517002517004grrrrgrrgrrgrGleft
54361098363B4517002517506grrrrgrrgrrgGrstraight
64361098364A6517003517504gGGGrgrrgrrgrrstraight
74361098364B1517003517506grrrGgrrgrrgrrleft
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "0 436 109836 1 A 5 517505 517507 \n", - "1 436 109836 1 B 2 517505 517004 \n", - "2 436 109836 2 A 8 517509 517507 \n", - "3 436 109836 2 B 3 517509 517504 \n", - "4 436 109836 3 A 7 517002 517004 \n", - "5 436 109836 3 B 4 517002 517506 \n", - "6 436 109836 4 A 6 517003 517504 \n", - "7 436 109836 4 B 1 517003 517506 \n", - "\n", - " state turn_type \n", - "0 grrrrgrrgrGgrr left \n", - "1 grrrrgrrgGrgrr straight \n", - "2 grrrrgGrgrrgrr straight \n", - "3 grrrrgrGgrrgrr left \n", - "4 grrrrgrrgrrgrG left \n", - "5 grrrrgrrgrrgGr straight \n", - "6 gGGGrgrrgrrgrr straight \n", - "7 grrrGgrrgrrgrr left " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
644551099011A6513580513581GGrrstraight
654551099011B2513582513584rrGGstraight
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "64 455 109901 1 A 6 513580 513581 \n", - "65 455 109901 1 B 2 513582 513584 \n", - "\n", - " state turn_type \n", - "64 GGrr straight \n", - "65 rrGG straight " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idphase_noring_typemove_noinc_edge_idout_edge_idstateturn_type
244371099861A6517054513840gGGGGrgrrgrrrrrgrrstraight
254371099861B2513841512766grrrrrgrrgGGGGrgrrstraight
264371099862A5513841513786grrrrrgrrgrrrrGgrrleft
274371099862B1517054513842grrrrGgrrgrrrrrgrrleft
284371099863A8513843513786grrrrrgGrgrrrrrgrrstraight
294371099863B3513843513840grrrrrgrGgrrrrrgrrleft
304371099864A7513785512766grrrrrgrrgrrrrrgrGleft
314371099864B4513785513842grrrrrgrrgrrrrrgGrstraight
\n", - "
" - ], - "text/plain": [ - " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n", - "24 437 109986 1 A 6 517054 513840 \n", - "25 437 109986 1 B 2 513841 512766 \n", - "26 437 109986 2 A 5 513841 513786 \n", - "27 437 109986 2 B 1 517054 513842 \n", - "28 437 109986 3 A 8 513843 513786 \n", - "29 437 109986 3 B 3 513843 513840 \n", - "30 437 109986 4 A 7 513785 512766 \n", - "31 437 109986 4 B 4 513785 513842 \n", - "\n", - " state turn_type \n", - "24 gGGGGrgrrgrrrrrgrr straight \n", - "25 grrrrrgrrgGGGGrgrr straight \n", - "26 grrrrrgrrgrrrrGgrr left \n", - "27 grrrrGgrrgrrrrrgrr left \n", - "28 grrrrrgGrgrrrrrgrr straight \n", - "29 grrrrrgrGgrrrrrgrr left \n", - "30 grrrrrgrrgrrrrrgrG left \n", - "31 grrrrrgrrgrrrrrgGr straight " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# all red 검증\n", - "for node_id, group in self.match6.groupby('node_id'):\n", - " state_length = len(group.iloc[0].state)\n", - " consistent_length = all([len(state)==state_length for state in group.state])\n", - " if not consistent_length:\n", - " print(f\"node_id : {node_id}에 대하여 state 길이가 일정하지 않습니다.\")\n", - " any_non_red_indices = set()\n", - " for state in group.state:\n", - " state = list(state)\n", - " any_non_red_indices.update({index for index, char in enumerate(state) if not char == 'r'})\n", - " all_red_indices = set(range(state_length)) - any_non_red_indices\n", - " all_red_state = ['g'] * state_length\n", - " for ind in all_red_indices:\n", - " all_red_state[ind] = 'r'\n", - " all_red_state = ''.join(all_red_state)\n", - " if all_red_indices:\n", - " print(node_id)\n", - " print(f'all_red_indices : {all_red_indices}')\n", - " print(f'all_red_state : {all_red_state}')\n", - " display(group)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "enode_id = '106332' # errornous node_id" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "self.make_match1()\n", - "self.make_match2()\n", - "self.make_match3()\n", - "self.make_match4()\n", - "self.make_match5()\n", - "self.make_match6()\n", - "self.match6" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# 2. 중간산출물 만들기\n", "self.get_intermediates()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# 3. 이슈사항 저장\n", - "self.write_issues()" - ] } ], "metadata": { diff --git a/analysis/0725_main_test/6_use_class_gs.ipynb b/analysis/0725_main_test/6_use_class_gs.ipynb index 67eb25066..4abad84bc 100644 --- a/analysis/0725_main_test/6_use_class_gs.ipynb +++ b/analysis/0725_main_test/6_use_class_gs.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 46, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -55,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -100,7 +100,7 @@ "1722384300" ] }, - "execution_count": 51, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -277,7 +277,7 @@ "[11100 rows x 7 columns]" ] }, - "execution_count": 52, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -302,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -311,7 +311,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -336,7 +336,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -730,7 +730,7 @@ "8 457 3 3 0 17 17 1722384232" ] }, - "execution_count": 55, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -776,7 +776,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -942,7 +942,7 @@ "[11100 rows x 7 columns]" ] }, - "execution_count": 56, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -953,7 +953,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -976,7 +976,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -1812,7 +1812,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -1988,7 +1988,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -2009,7 +2009,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -2213,7 +2213,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -2237,7 +2237,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -2250,7 +2250,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -2267,7 +2267,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2284,7 +2284,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -2309,7 +2309,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -2329,7 +2329,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -2346,7 +2346,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -2376,47 +2376,25 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "sorted(inter_no for inter_no in set(self.history.inter_no))" ] }, { "cell_type": "code", - "execution_count": 71, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2. 신호이력 테이블을 변환합니다.\n" - ] - }, - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "self.process_history()\n", "sorted(inter_no for inter_no in set(self.rhistory.inter_no))" @@ -2424,67 +2402,27 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(inter_no for inter_no in set(self.rhists.inter_no))" ] }, { "cell_type": "code", - "execution_count": 73, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(inter_no for inter_no in set(self.hrhists.inter_no))" ] }, { "cell_type": "code", - "execution_count": 74, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3. 이동류정보 테이블을 변환합니다.\n" - ] - }, - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "self.process_movement()\n", "sorted(inter_no for inter_no in set(self.movement.inter_no))" @@ -2492,382 +2430,79 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4. 통합 테이블을 생성합니다.\n" - ] - } - ], + "outputs": [], "source": [ "self.make_histids()" ] }, { "cell_type": "code", - "execution_count": 76, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(inter_no for inter_no in set(self.movement_updated.inter_no))" ] }, { "cell_type": "code", - "execution_count": 77, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(inter_no for inter_no in set(self.movedur.inter_no))" ] }, { "cell_type": "code", - "execution_count": 78, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(inter_no for inter_no in set(self.histid.inter_no))" ] }, { "cell_type": "code", - "execution_count": 79, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['106231', '106234', '106332', '108769', '109836', '109901', '109986']" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(node_id for node_id in set(self.histid.node_id))" ] }, { "cell_type": "code", - "execution_count": 80, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[436, 437, 442, 443, 455, 456, 457]" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(inter_no for inter_no in set(self.histids.inter_no))" ] }, { "cell_type": "code", - "execution_count": 81, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['106231',\n", - " '106234',\n", - " '106332',\n", - " '107587',\n", - " '108769',\n", - " '109295',\n", - " '109296',\n", - " '109297',\n", - " '109313',\n", - " '109333',\n", - " '109836',\n", - " '109901',\n", - " '109986']" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sorted(node_id for node_id in set(self.histids.node_id))" ] }, { "cell_type": "code", - "execution_count": 82, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idstart_unixphas_Aphas_Bmove_Amove_Bdurationstate_Astate_B
04571062341722383873116245gGGGrgrrrrgrrrrgrrrgrrrrgrrrrgGGGrgrrr
14571062341722383873225120grrrrgrrrrgrrrGgrrrgrrrGgrrrrgrrrrgrrr
2457106234172238387333171740grrrrgrrrrgrrrrgrrrgrrrrgrrrrgrrrrgrrr
34571062341722383873448335grrrrgGGrrgrrrrgrrrgrrrrgrrGGgrrrrgrrr
44571062341722383873557440grrrrgrrrrgrrrrgrrGgrrrrgrrrrgrrrrgGGr
.................................
29044310933317223847003371849GGGGGGGGGGGrGGGGGGGGGGGr
2914371099861722384700116271gGGGGrgrrgrrrrrgrrgrrrrrgrrgGGGGrgrr
2924371099861722384700225128grrrrrgrrgrrrrGgrrgrrrrGgrrgrrrrrgrr
2934371099861722384700338358grrrrrgGrgrrrrrgrrgrrrrrgrGgrrrrrgrr
2944371099861722384700447443grrrrrgrrgrrrrrgrGgrrrrrgrrgrrrrrgGr
\n", - "

295 rows × 10 columns

\n", - "
" - ], - "text/plain": [ - " inter_no node_id start_unix phas_A phas_B move_A move_B duration \\\n", - "0 457 106234 1722383873 1 1 6 2 45 \n", - "1 457 106234 1722383873 2 2 5 1 20 \n", - "2 457 106234 1722383873 3 3 17 17 40 \n", - "3 457 106234 1722383873 4 4 8 3 35 \n", - "4 457 106234 1722383873 5 5 7 4 40 \n", - ".. ... ... ... ... ... ... ... ... \n", - "290 443 109333 1722384700 3 3 7 18 49 \n", - "291 437 109986 1722384700 1 1 6 2 71 \n", - "292 437 109986 1722384700 2 2 5 1 28 \n", - "293 437 109986 1722384700 3 3 8 3 58 \n", - "294 437 109986 1722384700 4 4 7 4 43 \n", - "\n", - " state_A state_B \n", - "0 gGGGrgrrrrgrrrrgrrr grrrrgrrrrgGGGrgrrr \n", - "1 grrrrgrrrrgrrrGgrrr grrrGgrrrrgrrrrgrrr \n", - "2 grrrrgrrrrgrrrrgrrr grrrrgrrrrgrrrrgrrr \n", - "3 grrrrgGGrrgrrrrgrrr grrrrgrrGGgrrrrgrrr \n", - "4 grrrrgrrrrgrrrrgrrG grrrrgrrrrgrrrrgGGr \n", - ".. ... ... \n", - "290 GGGGGGGGGGGr GGGGGGGGGGGr \n", - "291 gGGGGrgrrgrrrrrgrr grrrrrgrrgGGGGrgrr \n", - "292 grrrrrgrrgrrrrGgrr grrrrGgrrgrrrrrgrr \n", - "293 grrrrrgGrgrrrrrgrr grrrrrgrGgrrrrrgrr \n", - "294 grrrrrgrrgrrrrrgrG grrrrrgrrgrrrrrgGr \n", - "\n", - "[295 rows x 10 columns]" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "self.histids" ] }, { "cell_type": "code", - "execution_count": 83, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2876,238 +2511,9 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inter_nonode_idstart_unixphas_Aphas_Bmove_Amove_Bdurationstate_Astate_Bphase_sumo
04561062311722383968115215grgrrrrGgrgrrGGr0
14561062311722383968226228grgGGrrrgrgrrGGr1
24561062311722383968337712gGgrrrrrgGgrrrrr2
3456106231172238396844171735grgrrrrrgrgrrrrr3
44561062311722384057115215grgrrrrGgrgrrGGr0
....................................
1534371099861722384007447449grrrrrgrrgrrrrrgrGgrrrrrgrrgrrrrrgGr3
1544371099861722384700116271gGGGGrgrrgrrrrrgrrgrrrrrgrrgGGGGrgrr0
1554371099861722384700225128grrrrrgrrgrrrrGgrrgrrrrGgrrgrrrrrgrr1
1564371099861722384700338358grrrrrgGrgrrrrrgrrgrrrrrgrGgrrrrrgrr2
1574371099861722384700447443grrrrrgrrgrrrrrgrGgrrrrrgrrgrrrrrgGr3
\n", - "

158 rows × 11 columns

\n", - "
" - ], - "text/plain": [ - " inter_no node_id start_unix phas_A phas_B move_A move_B duration \\\n", - "0 456 106231 1722383968 1 1 5 2 15 \n", - "1 456 106231 1722383968 2 2 6 2 28 \n", - "2 456 106231 1722383968 3 3 7 7 12 \n", - "3 456 106231 1722383968 4 4 17 17 35 \n", - "4 456 106231 1722384057 1 1 5 2 15 \n", - ".. ... ... ... ... ... ... ... ... \n", - "153 437 109986 1722384007 4 4 7 4 49 \n", - "154 437 109986 1722384700 1 1 6 2 71 \n", - "155 437 109986 1722384700 2 2 5 1 28 \n", - "156 437 109986 1722384700 3 3 8 3 58 \n", - "157 437 109986 1722384700 4 4 7 4 43 \n", - "\n", - " state_A state_B phase_sumo \n", - "0 grgrrrrG grgrrGGr 0 \n", - "1 grgGGrrr grgrrGGr 1 \n", - "2 gGgrrrrr gGgrrrrr 2 \n", - "3 grgrrrrr grgrrrrr 3 \n", - "4 grgrrrrG grgrrGGr 0 \n", - ".. ... ... ... \n", - "153 grrrrrgrrgrrrrrgrG grrrrrgrrgrrrrrgGr 3 \n", - "154 gGGGGrgrrgrrrrrgrr grrrrrgrrgGGGGrgrr 0 \n", - "155 grrrrrgrrgrrrrGgrr grrrrGgrrgrrrrrgrr 1 \n", - "156 grrrrrgGrgrrrrrgrr grrrrrgrGgrrrrrgrr 2 \n", - "157 grrrrrgrrgrrrrrgrG grrrrrgrrgrrrrrgGr 3 \n", - "\n", - "[158 rows x 11 columns]" - ] - }, - "execution_count": 84, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "self.sigtable" ] diff --git a/analysis/0725_main_test/7_history_nonexist.ipynb b/analysis/0725_main_test/7_history_nonexist.ipynb new file mode 100644 index 000000000..4c68c9ca8 --- /dev/null +++ b/analysis/0725_main_test/7_history_nonexist.ipynb @@ -0,0 +1,560 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "hour=9,\n", + "minute=3 (더 정확하게는 minute <= 4)\n", + "\n", + "입력 시 make_rhists에서 에러가 나고 있음.\n", + "이때의 에러는, 특정 교차로에 대하여 history 데이터가 없기 때문으로 추정됨.\n", + "\n", + "특정 교차로에 대하여 history가 없더라도 에러가 나지 않도록 디버깅하려고 시도했으나, 일단 잘 되지 않았음. 나중으로 미룸 (2024. 8. 2. 09:27)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import os, sys, json, argparse, pickle\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('.')))\n", + "path_scr = os.path.join(path_root, 'scripts')\n", + "sys.path.append(path_scr)\n", + "from generate_signals import SignalGenerator" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1. 데이터를 준비합니다.\n", + "1-1. 네트워크가 로드되었습니다.\n", + "1-2. 테이블들이 로드되었습니다.\n", + "1-5. 필요한 보조 객체들이 모두 준비되었습니다.\n" + ] + } + ], + "source": [ + "self = SignalGenerator(config_name='test_0731',\n", + " month=7,\n", + " day=31,\n", + " hour=9,\n", + " minute=3)\n", + "self.prepare_data()\n", + "self.make_rhistory()\n", + "# display(self.rhistory.head())\n", + "# self.make_rhists()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[436, 437, 438, 442, 443, 455, 456, 457, 458]\n" + ] + } + ], + "source": [ + "print(self.inter_nos)\n", + "inter_no = 457" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1722384000\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
end_unixinter_nodura_A1dura_A2dura_A3dura_A4dura_A5dura_A6dura_A7dura_A8dura_B1dura_B2dura_B3dura_B4dura_B5dura_B6dura_B7dura_B8
5172238441145745204040350004520404035000
11172238477345745204040350004520404035000
26172238459145745204040350004520404035000
33172238405345745204035400004520403540000
36172238423245745204040350004520404035000
43172238495345745204040350004520404035000
\n", + "
" + ], + "text/plain": [ + " end_unix inter_no dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 \\\n", + "5 1722384411 457 45 20 40 40 35 \n", + "11 1722384773 457 45 20 40 40 35 \n", + "26 1722384591 457 45 20 40 40 35 \n", + "33 1722384053 457 45 20 40 35 40 \n", + "36 1722384232 457 45 20 40 40 35 \n", + "43 1722384953 457 45 20 40 40 35 \n", + "\n", + " dura_A6 dura_A7 dura_A8 dura_B1 dura_B2 dura_B3 dura_B4 dura_B5 \\\n", + "5 0 0 0 45 20 40 40 35 \n", + "11 0 0 0 45 20 40 40 35 \n", + "26 0 0 0 45 20 40 40 35 \n", + "33 0 0 0 45 20 40 35 40 \n", + "36 0 0 0 45 20 40 40 35 \n", + "43 0 0 0 45 20 40 40 35 \n", + "\n", + " dura_B6 dura_B7 dura_B8 \n", + "5 0 0 0 \n", + "11 0 0 0 \n", + "26 0 0 0 \n", + "33 0 0 0 \n", + "36 0 0 0 \n", + "43 0 0 0 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(self.present_time)\n", + "self.history[self.history.inter_no==457]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
inter_nostart_unixdura_A1dura_A2dura_A3dura_A4dura_A5dura_A6dura_A7dura_A8dura_B1dura_B2dura_B3dura_B4dura_B5dura_B6dura_B7dura_B8cycle
0457172238440045204035400004520403540000180.0
0457172238440045204035400004520403540000180.0
0457172238440045204040350004520404035000180.0
\n", + "
" + ], + "text/plain": [ + " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 dura_A6 \\\n", + "0 457 1722384400 45 20 40 35 40 0 \n", + "0 457 1722384400 45 20 40 35 40 0 \n", + "0 457 1722384400 45 20 40 40 35 0 \n", + "\n", + " dura_A7 dura_A8 dura_B1 dura_B2 dura_B3 dura_B4 dura_B5 dura_B6 \\\n", + "0 0 0 45 20 40 35 40 0 \n", + "0 0 0 45 20 40 35 40 0 \n", + "0 0 0 45 20 40 40 35 0 \n", + "\n", + " dura_B7 dura_B8 cycle \n", + "0 0 0 180.0 \n", + "0 0 0 180.0 \n", + "0 0 0 180.0 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "self.rhistory[self.rhistory.inter_no==457]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "self.make_rhists()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rhistory = self.history[self.history.inter_no==inter_no]\n", + "rhistory = rhistory[(rhistory.end_unix <= self.present_time) & (rhistory.end_unix > self.present_time - self.subtractor)]\n", + "rhistory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# rhistory에 모든 교차로번호가 존재하지 않으면 해당 교차로번호에 대한 신호이력을 추가함 (at 최근 프로그램 시작시각)\n", + "inter_no = inter_no\n", + "program_start, prow = self.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", + "display(row1)\n", + "display(row2)\n", + "rhistory = pd.concat([rhistory, row1, row2])#.reset_index(drop=True)\n", + "rhistory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# present_time + adder 의 시각에 한 주기의 신호 추가\n", + "program_start, prow = self.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", + "rhistory = pd.concat([rhistory, row3])#.reset_index(drop=True)\n", + "rhistory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(rhistory)\n", + "i = 0\n", + "row = rhistory.iloc[i]\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", + "print(inter_no in pre_rows.inter_no.unique())\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", + "rhistory.loc[i, 'start_unix'] = start_unix\n", + "rhistory\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "self.inter_nos" + ] + } + ], + "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 +} diff --git a/analysis/0801_check_tll/1_all_red.ipynb b/analysis/0801_check_tll/1_all_red.ipynb new file mode 100644 index 000000000..4e7c2d448 --- /dev/null +++ b/analysis/0801_check_tll/1_all_red.ipynb @@ -0,0 +1,142 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import os, sys, copy, argparse, json, pickle\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('.')))\n", + "path_scr = os.path.join(path_root, 'scripts')\n", + "sys.path.append(path_scr)\n", + "from preprocess_daily import DailyPreprocessor\n", + "# from generate_signals import SignalGenerator" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "self = DailyPreprocessor(config_name = 'test_0731')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1. 데이터를 로드합니다.\n", + "1-1. 네트워크가 로드되었습니다.\n", + "1-2. 테이블들이 로드되었습니다.\n", + "1-5. 테이블을 표준화했습니다.\n", + "1-6. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n" + ] + } + ], + "source": [ + "# 1. 데이터 불러오기\n", + "self.load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2. 중간산출물을 생성합니다.\n", + "2-1. 매칭 테이블들을 생성했습니다.\n", + "2-2. 초기화 신호가 지정되었습니다. (우회전 : g)\n", + "2-3. 유턴 인덱스 / 비보호좌회전 인덱스를 지정했습니다.\n", + "2-4. 직진 및 좌회전(G)을 배정했습니다.\n", + "2-5. 모든 현시에서 적색신호인 경우에 대한 처리 완료\n", + "2-6. node2num_cycles.json를 저장했습니다.\n" + ] + } + ], + "source": [ + "self.get_intermediates()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "106231 set()\n", + "106234 set()\n", + "106238 set()\n", + "106332 set()\n", + "106350 set()\n", + "107587 set()\n", + "108769 set()\n", + "109295 set()\n", + "109296 set()\n", + "109297 set()\n", + "109313 set()\n", + "109333 set()\n", + "109836 set()\n", + "109901 set()\n", + "109986 set()\n" + ] + } + ], + "source": [ + "# match6에 적용\n", + "for node_id, group in self.match6.groupby('node_id'):\n", + " state_length = len(group.iloc[0].state)\n", + " consistent_length = all([len(state)==state_length for state in group.state])\n", + " # state 길이 일정 여부\n", + " if not consistent_length:\n", + " print(f\"node_id : {node_id}에 대하여 state 길이가 일정하지 않습니다.\")\n", + " any_non_red_indices = set()\n", + " for state in group.state:\n", + " state = list(state)\n", + " any_non_red_indices.update({index for index, char in enumerate(state) if not char == 'r'})\n", + " # 모든 현시에서 적색신호인 인덱스 목록\n", + " all_red_indices = set(range(state_length)) - any_non_red_indices\n", + " print(node_id, all_red_indices)" + ] + } + ], + "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 +} diff --git a/analysis/0801_check_tll/2_improper_pairs.ipynb b/analysis/0801_check_tll/2_improper_pairs.ipynb new file mode 100644 index 000000000..058c15c36 --- /dev/null +++ b/analysis/0801_check_tll/2_improper_pairs.ipynb @@ -0,0 +1,297 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import os, sys, json, argparse, pickle\n", + "import sumolib, traci\n", + "from tqdm import tqdm\n", + "from datetime import datetime, timedelta\n", + "path_root = os.path.dirname(os.path.dirname(os.path.abspath('.')))\n", + "path_scr = os.path.join(path_root, 'scripts')\n", + "sys.path.append(path_scr)\n", + "# from preprocess_daily import DailyPreprocessor\n", + "from generate_signals import SignalGenerator" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "self = SignalGenerator()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1. 데이터를 준비합니다.\n", + "1-1. 네트워크가 로드되었습니다.\n", + "1-2. 테이블들이 로드되었습니다.\n", + "1-5. 필요한 보조 객체들이 모두 준비되었습니다.\n", + "2. 신호이력 테이블을 변환합니다.\n", + "3. 이동류정보 테이블을 변환합니다.\n", + "4. 통합 테이블을 생성합니다.\n" + ] + } + ], + "source": [ + "self.prepare_data()\n", + "self.process_history()\n", + "self.process_movement()\n", + "self.make_histids()\n", + "self.set_timepoints()\n", + "self.assign_red_yellow()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
node_idstart_unixphasedurationstate
010623117223839681g_1g11grgrrGGG
110623117223839681y_1y4grgrrGGy
210623117223839682g_2g24grgGGGGr
310623117223839682y_2y4grgyyyyr
410623117223839683g_3g8gGgrrrrr
..................
25010998617223847001g_1g67gGGGGrgrrgGGGGrgrr
25110998617223847001y_1y4gyyyyrgrrgyyyyrgrr
25210998617223847002g_2g24grrrrGgrrgrrrrGgrr
25310998617223847002y_2y4grrrrygrrgrrrrygrr
25410998617223847003g_3g54grrrrrgGGgrrrrrgrr
\n", + "

255 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " node_id start_unix phase duration state\n", + "0 106231 1722383968 1g_1g 11 grgrrGGG\n", + "1 106231 1722383968 1y_1y 4 grgrrGGy\n", + "2 106231 1722383968 2g_2g 24 grgGGGGr\n", + "3 106231 1722383968 2y_2y 4 grgyyyyr\n", + "4 106231 1722383968 3g_3g 8 gGgrrrrr\n", + ".. ... ... ... ... ...\n", + "250 109986 1722384700 1g_1g 67 gGGGGrgrrgGGGGrgrr\n", + "251 109986 1722384700 1y_1y 4 gyyyyrgrrgyyyyrgrr\n", + "252 109986 1722384700 2g_2g 24 grrrrGgrrgrrrrGgrr\n", + "253 109986 1722384700 2y_2y 4 grrrrygrrgrrrrygrr\n", + "254 109986 1722384700 3g_3g 54 grrrrrgGGgrrrrrgrr\n", + "\n", + "[255 rows x 5 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "self.SIGTABLE = self.SIGTABLE.reset_index(drop=True)\n", + "self.SIGTABLE" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(0, 1): 1,\n", + " (1, 2): 3,\n", + " (2, 3): 5,\n", + " (3, 4): 7,\n", + " (4, 5): 9,\n", + " (5, 6): 11,\n", + " (6, 7): 13,\n", + " (7, 8): 15,\n", + " (8, 9): 17}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = range(10)\n", + "B = dict()\n", + "for a, b in zip(A[:-1], A[1:]):\n", + " B[a, b] = a + b\n", + "B" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "improper_pairs = dict()\n", + "improper_pairs['ry'] = []\n", + "improper_pairs['Gr'] = []\n", + "improper_pairs['yG'] = []\n", + "for node_id, group in self.SIGTABLE.groupby('node_id'):\n", + " state_length = len(group.iloc[0].state)\n", + " # 상태를 리스트로 변환\n", + " state_lists = group['state'].apply(list)\n", + " # 새로운 열들을 한 번에 추가\n", + " cnxnwises = {str(j): [state[j] for state in state_lists] for j in range(state_length)}\n", + " for state_order in cnxnwises:\n", + " cnxnwise = cnxnwises[state_order]\n", + " for phase_order, (p, q) in enumerate(zip(cnxnwise[:-1], cnxnwise[1:])):\n", + " if (p, q) == ('r', 'y'):\n", + " improper_pairs['ry'].append({'node_id':node_id, 'state_order':state_order, 'phase_order':phase_order})\n", + " if (p, q) == ('G', 'r'):\n", + " improper_pairs['Gr'].append({'node_id':node_id, 'state_order':state_order, 'phase_order':phase_order})\n", + " if (p, q) == ('y', 'G'):\n", + " improper_pairs['ry'].append({'node_id':node_id, 'state_order':state_order, 'phase_order':phase_order})\n", + "if any(value for value in improper_pairs.values()):\n", + " print('부적절하게 연속된 신호조합(r->y, G->r, y->G)이 존재합니다 :')\n", + " print(improper_pairs)" + ] + } + ], + "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 +} diff --git a/test_0731/results/sn_1722384300_test.add.xml b/test_0731/results/sn_1722384300_test.add.xml new file mode 100644 index 000000000..d58625345 --- /dev/null +++ b/test_0731/results/sn_1722384300_test.add.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file