diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_01/scenario_description.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_1/scenario_description.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_01/scenario_description.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_1/scenario_description.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_01/ue1/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_1/ue1/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_01/ue1/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_1/ue1/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_01/ue2/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_1/ue2/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_01/ue2/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_1/ue2/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_02/scenario_description.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_2/scenario_description.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_02/scenario_description.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_2/scenario_description.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_02/ue1/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_2/ue1/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_02/ue1/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_2/ue1/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_02/ue2/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_2/ue2/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_02/ue2/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_2/ue2/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_03/scenario_description.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_3/scenario_description.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_03/scenario_description.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_3/scenario_description.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_03/ue1/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_3/ue1/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_03/ue1/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_3/ue1/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_03/ue2/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_3/ue2/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_03/ue2/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_3/ue2/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_04/scenario_description.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_4/scenario_description.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_04/scenario_description.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_4/scenario_description.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_04/ue1/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_4/ue1/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_04/ue1/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_4/ue1/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/scen_04/ue2/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_4/ue2/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/scen_04/ue2/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/cap_conf_4/ue2/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/no_slicing/ue1/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/no_slicing/ue1/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/no_slicing/ue1/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/no_slicing/ue1/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/no_slicing/ue2/job_1.txt b/openairinterface5g/carlos_mestrado/medicoes/scen_01/no_slicing/ue2/job_1.txt similarity index 100% rename from openairinterface5g/carlos_mestrado/medicoes/no_slicing/ue2/job_1.txt rename to openairinterface5g/carlos_mestrado/medicoes/scen_01/no_slicing/ue2/job_1.txt diff --git a/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py b/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py index b5c3ada2271caf5711664dcdfc38f19d34ff66df..326e62a6414698f682b19755cf9545f265f0e7ff 100644 --- a/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py +++ b/openairinterface5g/carlos_mestrado/medicoes/script_plot_mestrado.py @@ -8,72 +8,103 @@ main_folder = "./" scenarios = [name for name in os.listdir(main_folder) if os.path.isdir(os.path.join(main_folder, name))] -print(scenarios) +scenarios = sorted( + scenarios, + key=lambda x: ( + x != "no_slicing", # Garante que "no_slicing" venha no final + int(x.split('_')[-1]) if x.startswith('scen_') and x.split('_')[-1].isdigit() else float('inf') + ) +) ue_dataframes = {} for scenario in scenarios: ue_dataframes[scenario] = {} scenario_path = main_folder + scenario - ues = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))] - for ue in ues: - data = [] + cap_confs = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))] ## Configuração da capacidade dos slices + for cap_conf in cap_confs: + ue_dataframes[scenario][cap_conf] = {} + cap_path = scenario_path + '/' + cap_conf + ues = [name for name in os.listdir(cap_path) if os.path.isdir(os.path.join(cap_path, name))] + for ue in ues: + data = [] + ue_path = cap_path + '/' + ue + '/' + 'job_1.txt' + ##Organização do dataframe - # Caminho de cada usuário + with open(ue_path, 'r') as file: + count = 0 + data.append({ + "Interval": 0, + "Transfer": 0, + "Bandwidth": 0, + "Jitter": 0, + "Packet loss (%)": 0 + }) + for line in file: + if "[ 3]" in line and "sec" in line and "MBytes" in line: + parts = line.split() + count += 1 + if count < 10: + data.append({ + "Interval": count, + "Transfer": parts[5], + "Bandwidth": float(parts[7]), + "Jitter": parts[9] if len(parts) > 6 else None, + "Packet loss (%)": float(parts[-1].strip("()%")) + }) + elif count <= 60: + data.append({ + "Interval": count, + "Transfer": parts[4], + "Bandwidth": float(parts[6]), + "Jitter": parts[8] if len(parts) > 6 else None, + "Packet loss (%)": float(parts[-1].strip("()%")) + }) + else: + break + print(ue) + ue_dataframes[scenario][cap_conf][ue] = pd.DataFrame(data) +pl_ue1 = [] +pl_ue2 = [] - ue_path = scenario_path + '/' + ue + '/' + 'job_1.txt' + +for scenario in scenarios: + scenario_path = main_folder + scenario + cap_confs = [name for name in os.listdir(scenario_path) if os.path.isdir(os.path.join(scenario_path, name))] ## Configuração da capacidade dos slices + cap_confs = sorted(cap_confs, key=lambda x: (x == 'no_slicing', x)) + for cap_conf in cap_confs: + plt.plot(ue_dataframes[scenario][cap_conf]['ue2']["Interval"], ue_dataframes[scenario][cap_conf]['ue2']["Bandwidth"], marker="o", label="UE2", color = "blue") + plt.plot(ue_dataframes[scenario][cap_conf]['ue1']["Interval"], ue_dataframes[scenario][cap_conf]['ue1']["Bandwidth"], marker="o", label="UE2", color = "red") + y_ticks = np.arange(0, max(ue_dataframes[scenario][cap_conf]['ue2']["Bandwidth"].max(), + ue_dataframes[scenario][cap_conf]['ue1']["Bandwidth"].max()) + 10, 2) # Intervalo de 2 Mbps + plt.yticks(y_ticks) # Define os valores do eixo Y com intervalos mais detalhados + plt.title(scenario) + plt.xlabel("Time (s)") + plt.ylabel("Bandwidth (Mbps)") + plt.grid(True) + plt.legend() + plt.tight_layout() + pl_ue1.append(ue_dataframes[scenario][cap_conf]['ue1']["Packet loss (%)"].mean()) + pl_ue2.append(ue_dataframes[scenario][cap_conf]['ue2']["Packet loss (%)"].mean()) - print(ue_path) - # Organização do dataframe + plt.show() - with open(ue_path, 'r') as file: - count = 0 - data.append({ - "Interval": 0, - "Transfer": 0, - "Bandwidth": 0, - "Jitter": 0, - "Lost/Total Datagrams": 0 - }) - for line in file: - if "[ 3]" in line and "sec" in line and "MBytes" in line: - parts = line.split() - count += 1 - if count < 10: - data.append({ - "Interval": count, - "Transfer": parts[5], - "Bandwidth": float(parts[7]), - "Jitter": parts[9] if len(parts) > 6 else None, - "Lost/Total Datagrams": parts[-2] if '/' in parts [-2] else parts[-3] + parts[-2] - }) - elif count <= 60: - data.append({ - "Interval": count, - "Transfer": parts[4], - "Bandwidth": float(parts[6]), - "Jitter": parts[8] if len(parts) > 6 else None, - "Lost/Total Datagrams": parts[-2] if '/' in parts [-2] else parts[-3] + parts[-2] - }) - else: - break - # Criação do DataFrame - ue_dataframes[scenario][ue] = pd.DataFrame(data) + # Configurar a posição das barras no eixo x + x = np.arange(len(cap_confs)) # Posições das scenarios + print(x) + largura = 0.4 # Largura das barras -print(ue_dataframes['no_slicing']['ue2']["Bandwidth"]) -for scenario in scenarios: - plt.plot(ue_dataframes[scenario]['ue2']["Interval"], ue_dataframes[scenario]['ue2']["Bandwidth"], marker="o", label="Bandwidth", color = "blue") - plt.plot(ue_dataframes[scenario]['ue1']["Interval"], ue_dataframes[scenario]['ue1']["Bandwidth"], marker="o", label="Bandwidth", color = "red") - y_ticks = np.arange(0, max(ue_dataframes[scenario]['ue2']["Bandwidth"].max(), - ue_dataframes[scenario]['ue1']["Bandwidth"].max()) + 10, 2) # Intervalo de 2 Mbps - plt.yticks(y_ticks) # Define os valores do eixo Y com intervalos mais detalhados - plt.title(scenario) - plt.xlabel("Time (s)") - plt.ylabel("Bandwidth (Mbps)") - plt.grid(True) - plt.legend() - plt.tight_layout() + # Criar as barras + plt.bar(x - largura / 2, pl_ue1, width=largura, label='UE1', color='red') # Barras para UE1 + plt.bar(x + largura / 2, pl_ue2, width=largura, label='UE2', color='blue') # Barras para UE2 - #Exibe o gráfico + # Adicionar rótulos e tÃtulo + plt.xlabel('Scenarios') + plt.ylabel('Packet Loss (%)') + plt.title('Packet Loss for each capacity configuration') + plt.xticks(x, cap_confs) # Ajustar rótulos do eixo x + plt.legend() # Adicionar legenda + # Exibir o gráfico + plt.tight_layout() plt.show() \ No newline at end of file