From 55af464bbd1231d858b6fce3634eefd7746503cd Mon Sep 17 00:00:00 2001 From: Michael Reuscher <michael.reuscher@desy.de> Date: Mon, 24 Jul 2023 15:28:17 +0200 Subject: [PATCH] new plot for long --- simrunner/data_config.json | 4 +- visualizer/visualizer/DataFrameCreator.py | 74 +++++++++++++++-------- visualizer/visualizer/SeabornPlotter.py | 36 +++++++---- visualizer/visualizer/main.py | 18 ++++-- 4 files changed, 88 insertions(+), 44 deletions(-) diff --git a/simrunner/data_config.json b/simrunner/data_config.json index e8bedd8..2ceb794 100644 --- a/simrunner/data_config.json +++ b/simrunner/data_config.json @@ -4,8 +4,8 @@ "-i": "0.1s", "-N": "4"}, "data_config_long":{ - "-s": "4096", - "-n": "200", + "-s": "32", + "-n": "5000", "-i": "0.1s", "-N": "4"}, "data_config_help":{ diff --git a/visualizer/visualizer/DataFrameCreator.py b/visualizer/visualizer/DataFrameCreator.py index 38d09a1..ce372d2 100644 --- a/visualizer/visualizer/DataFrameCreator.py +++ b/visualizer/visualizer/DataFrameCreator.py @@ -5,6 +5,8 @@ import pandas as pd class DataFrameCreator: def __init__(self, f_path): self.folder_path = f_path + self.v_dfs = {} + self.l_dfs = {} @staticmethod def _merge_dataframes(dfs): @@ -15,6 +17,48 @@ class DataFrameCreator: merged_dfs[outer_key] = merged_dataframe_sorted return merged_dfs + def read_various_data(self, root, folder): + for filename in folder: + if filename.endswith('.dat'): + file_path = os.path.join(root, filename) + dataframe_name = os.path.splitext(filename)[0] + dataframe_type = dataframe_name.split('-')[1] + dataframe = pd.read_csv(file_path, delimiter=" ", header=0) + + if dataframe_type in self.v_dfs: + inner_dict = self.v_dfs[dataframe_type] + if dataframe_name in inner_dict: + # DataFrame hinzufügen + inner_dict[dataframe_name] = pd.concat([inner_dict[dataframe_name], dataframe], + ignore_index=True) + else: + inner_dict[dataframe_name] = dataframe + else: + self.v_dfs[dataframe_type] = { + dataframe_name: dataframe + } + + def read_long_data(self, root, folder): + for filename in folder: + if filename.endswith('.dat'): + file_path = os.path.join(root, filename) + dataframe_name = os.path.splitext(filename)[0] + dataframe_type = dataframe_name.split('-')[1] + dataframe = pd.read_csv(file_path, delimiter=" ", header=0) + + if dataframe_type in self.l_dfs: + inner_dict = self.l_dfs[dataframe_type] + if dataframe_name in inner_dict: + # DataFrame hinzufügen + inner_dict[dataframe_name] = pd.concat([inner_dict[dataframe_name], dataframe], + ignore_index=True) + else: + inner_dict[dataframe_name] = dataframe + else: + self.l_dfs[dataframe_type] = { + dataframe_name: dataframe + } + def create(self): dfs = {} for root, _, folder in os.walk(self.folder_path): @@ -22,31 +66,13 @@ class DataFrameCreator: print("this was statistic") continue elif os.path.basename(root) == "Data_Set_Long": - print("this was long") - continue - for filename in folder: - if filename.endswith('.dat'): - file_path = os.path.join(root, filename) - dataframe_name = os.path.splitext(filename)[0] - dataframe_type = dataframe_name.split('-')[1] - dataframe = pd.read_csv(file_path, delimiter=" ", header=0) - - if dataframe_type in dfs: - inner_dict = dfs[dataframe_type] - if dataframe_name in inner_dict: - # DataFrame hinzufügen - inner_dict[dataframe_name] = pd.concat([inner_dict[dataframe_name], dataframe], - ignore_index=True) - else: - inner_dict[dataframe_name] = dataframe - else: - dfs[dataframe_type] = { - dataframe_name: dataframe - } + self.read_long_data(root, folder) + else: + self.read_various_data(root, folder) - merged_dfs = self._merge_dataframes(dfs) - - return merged_dfs + various_dfs = self._merge_dataframes(self.v_dfs) + long_dfs = self._merge_dataframes(self.l_dfs) + return various_dfs, long_dfs diff --git a/visualizer/visualizer/SeabornPlotter.py b/visualizer/visualizer/SeabornPlotter.py index cb9e077..3c370ee 100644 --- a/visualizer/visualizer/SeabornPlotter.py +++ b/visualizer/visualizer/SeabornPlotter.py @@ -12,7 +12,6 @@ class SeabornPlotter: def __init__(self, dataframe, name): self.dataframe = dataframe self.name = name - self.current_plot = None @staticmethod def _add_logo(logo_path, logo_size, logo_x, logo_y): @@ -33,10 +32,15 @@ class SeabornPlotter: bins_y = np.logspace(-6, 0, num=101) return bins_x, bins_y - @staticmethod - def plot_histogram_various(x, y, title, bins_x, bins_y): + def plot_histogram_various(self): + df = self.dataframe + x = df['size'] + y = df['duration'] + title = "Procedure: {}".format(self.name) + bins_x, bins_y = self._prepare_bins(df) f, ax = plt.subplots(figsize=(16, 9)) sns.histplot(x=x, y=y, color="blue", bins=[bins_x, bins_y]) + self._add_logo("desy_logo.png", logo_size=0.15, logo_x=1.065, logo_y=1.04) ax.set_xscale('log') ax.set_yscale('log') ax.set_xlabel("Data size [Bytes]") @@ -44,21 +48,24 @@ class SeabornPlotter: plt.title(title) plt.grid(True) plt.xticks(rotation=45) + plt.savefig(title + ".svg", format='svg') + plt.show() - def plot(self): + def plot_histogram_long(self): df = self.dataframe - - # if self.name - x = df['size'] + x = df['start'] y = df['duration'] title = "Procedure: {}".format(self.name) - - bins_x, bins_y = self._prepare_bins(df) - self.plot_histogram_various(x, y, title, bins_x, bins_y) - + f, ax = plt.subplots(figsize=(16, 9)) + sns.lineplot(x=x, y=y, hue=list(self.dataframe.index.get_level_values(0)), color="blue") self._add_logo("desy_logo.png", logo_size=0.15, logo_x=1.065, logo_y=1.04) - - # Save and View + ax.set_xscale('log') + ax.set_yscale('log') + ax.set_xlabel("Data size [Bytes]") + ax.set_ylabel("Time/Event [s]") + plt.title(title) + plt.grid(True) + plt.xticks(rotation=45) plt.savefig(title + ".svg", format='svg') plt.show() @@ -70,3 +77,6 @@ class SeabornPlotter: + + + diff --git a/visualizer/visualizer/main.py b/visualizer/visualizer/main.py index 56dde96..2647010 100644 --- a/visualizer/visualizer/main.py +++ b/visualizer/visualizer/main.py @@ -16,16 +16,24 @@ def main(): # Import Data creator = DataFrameCreator(data_path) - dataframes = creator.create() + v_dataframes, l_dataframes = creator.create() + for frame in v_dataframes.keys(): + if not v_dataframes[frame].empty: + # Setup Plotter + frame_name = frame + v_plotter = SeabornPlotter(v_dataframes[frame], frame_name) + + # Plotter run + v_plotter.plot_histogram_various() - for frame in dataframes.keys(): - if not dataframes[frame].empty: + for frame in l_dataframes.keys(): + if not v_dataframes[frame].empty: # Setup Plotter frame_name = frame - plotter = SeabornPlotter(dataframes[frame], frame_name) + l_plotter = SeabornPlotter(l_dataframes[frame], frame_name) # Plotter run - plotter.plot() + l_plotter.plot_histogram_long() if __name__ == "__main__": -- GitLab