From a4e1902ddcc50a64e94abd60f58d1e93cc3bbfb6 Mon Sep 17 00:00:00 2001
From: Bebbo <bartolomeo.mueller@stud.h-da.de>
Date: Thu, 24 Oct 2024 10:31:00 +0200
Subject: [PATCH] Added sequence diagram

---
 .../emulation-exp/code/kex/docs/Makefile      |   3 +
 .../code/kex/docs/sequence_diagram.pdf        | Bin 0 -> 175167 bytes
 .../code/kex/docs/sequence_diagram.puml       |  43 ++
 .../code/kex/scripts/generate_graphs.py       | 625 ++++++++++++++++--
 4 files changed, 607 insertions(+), 64 deletions(-)
 create mode 100644 pq-tls-benchmark-framework/emulation-exp/code/kex/docs/Makefile
 create mode 100644 pq-tls-benchmark-framework/emulation-exp/code/kex/docs/sequence_diagram.pdf
 create mode 100644 pq-tls-benchmark-framework/emulation-exp/code/kex/docs/sequence_diagram.puml

diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/Makefile b/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/Makefile
new file mode 100644
index 000000000..fefa43230
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/Makefile
@@ -0,0 +1,3 @@
+
+sequence_diagram.pdf: sequence_diagram.puml
+	plantuml -tpdf $<
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/sequence_diagram.pdf b/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/sequence_diagram.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..50f677da2ba13b84ddbd7111e8f27ea4a396b5f2
GIT binary patch
literal 175167
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

literal 0
HcmV?d00001

diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/sequence_diagram.puml b/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/sequence_diagram.puml
new file mode 100644
index 000000000..c30ee26c6
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/docs/sequence_diagram.puml
@@ -0,0 +1,43 @@
+@startuml sequence_diagram
+activate Client
+Client -> Client: do_tls_handshake()
+activate Client
+
+' activate NetEm
+' ' ||1||
+' deactivate NetEm
+
+Client -> Client: KeyGen()
+activate Client
+deactivate Client
+Client -> NetEm: { Client Hello }
+
+' Client -> Client: waiting for response
+' deactivate Client
+' ... Client waiting ...
+' deactivate Client
+
+activate NetEm
+NetEm -> Server: { Client Hello }
+' ... Server waiting ... 
+deactivate NetEm
+activate Server
+Server -> Server: generate_response()
+activate Server
+Server -> Server: Encaps()
+activate Server
+deactivate Server
+deactivate Server
+' Server -> NetEm: Server Hello, Encrypted Extensions, Certificate, Certificate Verify,Finished
+Server -> NetEm: { Server Hello, Certificate, Finished }
+deactivate Server
+
+activate NetEm
+NetEm -> Client: { Server Hello, Certificate, Finished }
+deactivate NetEm
+
+Client -> Client: Decaps()
+activate Client
+deactivate Client
+deactivate Client
+@enduml
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py
index 086e5f193..6adcbba69 100755
--- a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py
+++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 
 from functools import cmp_to_key
+import colorsys
 import os
 import sys
 
@@ -18,17 +19,17 @@ PLOTS_DIR = "plots"
 FEATHERS_DIR = "feathers"
 
 cmap = plt.cm.hsv
-
-# TODO use the riqr to make some graphs
+# cmap = plt.colormaps.get_cmap("nipy_spectral")
 
 
 def main():
     data = load_data()
 
     # generally they both only seconds for graphs when not generating for single algorithms
+    # plot_general_plots()  # takes about 4 seconds
     plot_lines(data)  # takes about 1:50 min
     # plot_static_data(data)  # takes about 4 min
-    # plot_general_plots()  # takes about 4 seconds
+    # plot_distributions(data)
 
 
 def load_data():
@@ -215,6 +216,7 @@ def filter_data(
     protocol: str | None = None,
     sec_level: str | list[str] | None = None,
     kem_alg: str | None = None,
+    drop_zero_columns: bool = True,
 ):
     filtered_data = data
     # print(filtered_data["kem_alg"] == "x25519") # is a boolean series
@@ -241,7 +243,11 @@ def filter_data(
         ]
         return data.drop(columns=zero_columns_to_drop)
 
-    filtered_data = drop_columns_with_only_zero_values(filtered_data)
+    if drop_zero_columns and "measurements" in data.columns:
+        filtered_data = drop_columns_with_only_zero_values(filtered_data)
+
+        #     if drop_zero_columns:
+        # filtered_data = drop_columns_with_only_zero_values(filtered_data)
 
     # print(filtered_data["measurements"].head())
     # print(filtered_data)
@@ -269,7 +275,7 @@ def get_x_axis(scenario, data, length):
         case "rate_server":
             return data["srv_rate"]
         case "static":
-            return list(range(length))
+            return pd.Series(range(length))
         case _:
             print(f"NO MATCH FOUND FOR {scenario}", file=sys.stderr)
             sys.exit(1)
@@ -289,6 +295,327 @@ def map_security_level_hybrid_together(sec_level: str):
             return None
 
 
+def get_color_and_mode(kem_alg: str, combined_with_hybrids: bool = False):
+    # NOTE maybe just use hle colors directly from the start
+    primary_mode = "-"
+    secondary_mode = "--" if combined_with_hybrids else "-"
+    tertiary_mode = ":" if combined_with_hybrids else "--"
+
+    secondary_lightness_factor = 0.9 if combined_with_hybrids else 1
+    tertiary_lightness_factor = 0.8 if combined_with_hybrids else 0.9
+
+    a = 0.8 if combined_with_hybrids else 1
+
+    no_algos = 8
+    match kem_alg:
+        case "secp256r1":
+            return cmap(0 / no_algos), primary_mode
+        case "secp384r1":
+            return cmap(0.3 / no_algos), primary_mode
+        case "secp521r1":
+            return cmap(0.6 / no_algos), primary_mode
+        case "x25519":
+            return cmap(0 / no_algos), secondary_mode
+        case "x448":
+            return cmap(0.3 / no_algos), secondary_mode
+        case "mlkem512":
+            return cmap(1 / no_algos), primary_mode
+        case "p256_mlkem512":
+            return (
+                transform_cmap_color(
+                    cmap(1 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x25519_mlkem512":
+            return (
+                transform_cmap_color(
+                    cmap(1 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "mlkem768":
+            return cmap(1.3 / no_algos), primary_mode
+        case "p384_mlkem768":
+            return (
+                transform_cmap_color(
+                    cmap(1.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x448_mlkem768":
+            return (
+                transform_cmap_color(
+                    cmap(1.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "mlkem1024":
+            return cmap(1.6 / no_algos), primary_mode
+        case "p521_mlkem1024":
+            return (
+                transform_cmap_color(
+                    cmap(1.6 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "bikel1":
+            return cmap(2 / no_algos), primary_mode
+        case "p256_bikel1":
+            return (
+                transform_cmap_color(
+                    cmap(2 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x25519_bikel1":
+            return (
+                transform_cmap_color(
+                    cmap(2 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "bikel3":
+            return cmap(2.3 / no_algos), primary_mode
+        case "p384_bikel3":
+            return (
+                transform_cmap_color(
+                    cmap(2.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x448_bikel3":
+            return (
+                transform_cmap_color(
+                    cmap(2.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "bikel5":
+            return cmap(2.6 / no_algos), primary_mode
+        case "p521_bikel5":
+            return (
+                transform_cmap_color(
+                    cmap(2.6 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "hqc128":
+            return cmap(4 / no_algos), primary_mode
+        case "p256_hqc128":
+            return (
+                transform_cmap_color(
+                    cmap(4 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x25519_hqc128":
+            return (
+                transform_cmap_color(
+                    cmap(4 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "hqc192":
+            return cmap(4.3 / no_algos), primary_mode
+        case "p384_hqc192":
+            return (
+                transform_cmap_color(
+                    cmap(4.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x448_hqc192":
+            return (
+                transform_cmap_color(
+                    cmap(4.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "hqc256":
+            return cmap(4.6 / no_algos), primary_mode
+        case "p521_hqc256":
+            return (
+                transform_cmap_color(
+                    cmap(4.6 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "frodo640aes":
+            return cmap(5 / no_algos), primary_mode
+        case "p256_frodo640aes":
+            return (
+                transform_cmap_color(
+                    cmap(5 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x25519_frodo640aes":
+            return (
+                transform_cmap_color(
+                    cmap(5 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "frodo640shake":
+            return cmap(6 / no_algos), primary_mode
+        case "p256_frodo640shake":
+            return (
+                transform_cmap_color(
+                    cmap(6 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x25519_frodo640shake":
+            return (
+                transform_cmap_color(
+                    cmap(6 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "frodo976aes":
+            return cmap(5.3 / no_algos), primary_mode
+        case "p384_frodo976aes":
+            return (
+                transform_cmap_color(
+                    cmap(5.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x448_frodo976aes":
+            return (
+                transform_cmap_color(
+                    cmap(5.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "frodo976shake":
+            return cmap(6.3 / no_algos), primary_mode
+        case "p384_frodo976shake":
+            return (
+                transform_cmap_color(
+                    cmap(6.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x448_frodo976shake":
+            return (
+                transform_cmap_color(
+                    cmap(6.3 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=tertiary_lightness_factor,
+                ),
+                tertiary_mode,
+            )
+        case "frodo1344aes":
+            return cmap(5.6 / no_algos), primary_mode
+        case "p521_frodo1344aes":
+            return (
+                transform_cmap_color(
+                    cmap(5.6 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "frodo1344shake":
+            return cmap(6.6 / no_algos), primary_mode
+        case "p521_frodo1344shake":
+            return (
+                transform_cmap_color(
+                    cmap(6.6 / no_algos),
+                    alpha_factor=a,
+                    lightness_factor=secondary_lightness_factor,
+                ),
+                secondary_mode,
+            )
+        case "x25519_mlkem768":
+            return (
+                transform_cmap_color(cmap(7 / no_algos), alpha_factor=a),
+                primary_mode,
+            )
+        case "p256_mlkem768":
+            return (
+                transform_cmap_color(
+                    cmap(7.5 / no_algos), lightness_factor=secondary_lightness_factor
+                ),
+                primary_mode,
+            )
+        case "p384_mlkem1024":
+            return (
+                transform_cmap_color(
+                    cmap(7.99 / no_algos), lightness_factor=tertiary_lightness_factor
+                ),
+                primary_mode,
+            )
+        case _:
+            print(f"NO COLOR MATCH FOUND FOR {kem_alg}", file=sys.stderr)
+            sys.exit(1)
+
+
+def transform_cmap_color(
+    color, hue_shift=0, saturation_factor=1, lightness_factor=1, alpha_factor=1
+):
+    def value_between(minimum, value, maximum):
+        return max(minimum, min(value, maximum))
+
+    r, g, b, a = color
+    h, l, s = colorsys.rgb_to_hls(r, g, b)
+    h += hue_shift
+    l *= lightness_factor
+    l = value_between(0, l, 1)
+    s *= saturation_factor
+    s = value_between(0, s, 1)
+    r, g, b = colorsys.hls_to_rgb(h, l, s)
+    a *= alpha_factor
+    return r, g, b, a
+
+
+# plots lines of different statistical values
 def plot_lines(data):
     def plot_lines_for_sec_level(
         data, line_type="median", combined_with_hybrids: bool = False
@@ -323,7 +650,11 @@ def plot_lines(data):
             for idx, kem_alg in enumerate(
                 filtered_data["kem_alg"].unique().sort_values()
             ):
-                color = cmap(idx / len(filtered_data["kem_alg"].unique()))
+                # color = cmap(idx / len(filtered_data["kem_alg"].unique()))
+                color, mode = get_color_and_mode(
+                    kem_alg, combined_with_hybrids=combined_with_hybrids
+                )
+
                 filtered_data_single_kem_alg = filter_data(
                     filtered_data, kem_alg=kem_alg
                 )
@@ -338,7 +669,7 @@ def plot_lines(data):
                 # print(f"y: {y}")
 
                 # plt.fill_between(x, filtered_data_single_kem_alg["qtl_25"], filtered_data_single_kem_alg["qtl_75"], alpha=0.2, color=color)
-                plt.plot(x, y, linestyle="-", marker=".", color=color, label=kem_alg)
+                plt.plot(x, y, linestyle=mode, marker=".", color=color, label=kem_alg)
 
             plt.ylim(bottom=0)
             plt.xlim(left=0)
@@ -358,7 +689,7 @@ def plot_lines(data):
                 subdir = "combined-with-hybrids/"
                 appendix = "-combined-with-hybrids"
             plt.savefig(
-                f"{PLOTS_DIR}/{line_type}s-of-sec-level/{subdir}{line_type}-{row['scenario']}-{row['protocol']}-{row['sec_level']}{appendix}.png"
+                f"{PLOTS_DIR}/{line_type}s-of-sec-level/{subdir}{line_type}-{row['scenario']}-{row['protocol']}-{row['sec_level']}{appendix}.pdf"
             )
             plt.close()
 
@@ -397,25 +728,10 @@ def plot_lines(data):
             )
 
             plt.savefig(
-                f"{PLOTS_DIR}/median-of-single-algorithm/median-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.png"
+                f"{PLOTS_DIR}/median-of-single-algorithm/median-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.pdf"
             )
             plt.close()
 
-    # This does not yet seem like a good idea
-    def plot_median_against_iqr(data):
-        plt.figure()
-        plt.hexbin(data["median"], data["iqr"], gridsize=50)
-        print(data["iqr"].describe())
-        print(data["median"].describe())
-        # get the line with the maximum median
-        max_median = data["median"].idxmax()
-        print(data.iloc[max_median])
-        plt.savefig(f"{PLOTS_DIR}/median_against_iqr_hexbin.png")
-
-        plt.figure()
-        plt.hist2d(data["median"], data["iqr"], bins=50)
-        plt.savefig(f"{PLOTS_DIR}/median_against_iqr_hist2d.png")
-
     do_graphs_for = [
         "median",
         "qtl_25",
@@ -428,6 +744,7 @@ def plot_lines(data):
         "kurtosis",
     ]
     for thing in do_graphs_for:
+        print(f"Generating graphs for {thing}")
         plot_lines_for_sec_level(data, line_type=thing, combined_with_hybrids=False)
         plot_lines_for_sec_level(data, line_type=thing, combined_with_hybrids=True)
 
@@ -435,6 +752,113 @@ def plot_lines(data):
     # plot_median_against_iqr(data)
 
 
+# plots distributions of the individual data points
+def plot_distributions(data):
+    os.makedirs(
+        f"{PLOTS_DIR}/distributions/single",
+        mode=0o777,
+        exist_ok=True,
+    )
+
+    def plot_multiple_violin_plots(data, filtered: bool = False):
+        os.makedirs(
+            f"{PLOTS_DIR}/distributions/filtered",
+            mode=0o777,
+            exist_ok=True,
+        )
+
+        unique_combinations = data[
+            ["scenario", "protocol", "sec_level", "kem_alg"]
+        ].drop_duplicates()
+        # print(unique_combinations)
+        for _, row in unique_combinations.iterrows():
+            filtered_data = filter_data(
+                data,
+                scenario=row["scenario"],
+                protocol=row["protocol"],
+                sec_level=row["sec_level"],
+                kem_alg=row["kem_alg"],
+            )
+            print(
+                f"scenario: {row['scenario']}, protocol: {row['protocol']}, sec_level: {row['sec_level']}, kem_alg: {row['kem_alg']}, len: {len(filtered_data)}"
+            )
+
+            if filtered:
+                filtered_data = pd.concat(
+                    [
+                        filtered_data.iloc[[0]],
+                        filtered_data.iloc[3:-4:4],
+                        filtered_data.iloc[[-1]],
+                    ]
+                )
+                print(filtered_data)
+
+            plt.figure()
+            x = get_x_axis(row["scenario"], filtered_data, len(filtered_data))
+            x = x.to_list()
+            # print(x)
+            width = 0.5 if not filtered else 2
+            plt.violinplot(
+                filtered_data["measurements"],
+                positions=x,
+                showmedians=True,
+                widths=width,
+            )
+            # make the median line transparent
+            # for pc in plt.gca().collections:
+            #     pc.set_alpha(0.5)
+
+            plt.ylim(bottom=0)
+            plt.xlim(left=0)
+            plt.xlabel(row["scenario"])
+            plt.ylabel(f"Time-to-first-byte (ms)")
+
+            subdir = "filtered/" if filtered else ""
+            appendix = "-filtered" if filtered else ""
+            plt.savefig(
+                f"{PLOTS_DIR}/distributions/{subdir}multiple-violin-plots-for-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}{appendix}.pdf"
+            )
+            plt.close()
+
+    def plot_single_violin_plot(data):
+        unique_combinations = data[
+            ["scenario", "protocol", "sec_level", "kem_alg"]
+        ].drop_duplicates()
+        for _, row in unique_combinations.iterrows():
+            filtered_data = filter_data(
+                data,
+                scenario=row["scenario"],
+                protocol=row["protocol"],
+                sec_level=row["sec_level"],
+                kem_alg=row["kem_alg"],
+            )
+            print(
+                f"scenario: {row['scenario']}, protocol: {row['protocol']}, sec_level: {row['sec_level']}, kem_alg: {row['kem_alg']}"
+            )
+            for _, row in filtered_data.iterrows():
+                if row["scenario"] == "static":
+                    continue
+                value = get_x_axis(row["scenario"], row, 1)
+                print(value)
+
+                plt.figure()
+                plt.violinplot(row["measurements"], showmedians=True)
+                # plt.ylim(bottom=0)
+                # plt.xlim(left=0)
+                plt.xlabel("Dichte")
+                plt.ylabel(f"Time-to-first-byte (ms)")
+
+                plt.savefig(
+                    f"{PLOTS_DIR}/distributions/single/single-violin-plot-for-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}-{value}.pdf"
+                )
+                plt.close()
+                # return
+
+    plot_multiple_violin_plots(data, filtered=False)
+    plot_multiple_violin_plots(data, filtered=True)
+    # plot_single_violin_plot(data)  # takes an age
+
+
 # TODO make a violinplot/eventplot for many algos in static scenario
 def plot_static_data(data):
     os.makedirs(f"{PLOTS_DIR}/static/single", mode=0o777, exist_ok=True)
@@ -492,9 +916,12 @@ def plot_static_data(data):
                 # )
 
             # Get the median irqs for all algorithms
+            # print(row["protocol"], row["sec_level"])
             # print(iqrs)
             # print(iqrs["iqr"].describe())
-            # print("Median: ", iqrs["iqr"].median())
+            # print("Median:", iqrs["iqr"].median())
+            # print("IQR:", scipy.stats.iqr(iqrs["iqr"]))
+            # print()
 
             plt.xticks(
                 range(len(filtered_data["kem_alg"].unique())),
@@ -513,7 +940,7 @@ def plot_static_data(data):
                 os.path.join(
                     PLOTS_DIR,
                     "static",
-                    f"boxplots-of-medians-for-static-{row['protocol']}-{sec_level_string}.png",
+                    f"boxplots-of-medians-for-static-{row['protocol']}-{sec_level_string}.pdf",
                 )
             )
             plt.close()
@@ -522,6 +949,7 @@ def plot_static_data(data):
         unique_combinations = data[
             ["scenario", "protocol", "sec_level", "kem_alg"]
         ].drop_duplicates()
+        unique_combinations = filter_data(unique_combinations, scenario="static")
         for idx, row in unique_combinations.iterrows():
             filtered_data = filter_data(
                 data,
@@ -531,45 +959,96 @@ def plot_static_data(data):
                 kem_alg=row["kem_alg"],
             )
 
-            plt.figure()
-            plt.boxplot(filtered_data["median"])
-            plt.savefig(
-                os.path.join(
-                    PLOTS_DIR,
-                    "static",
-                    "single",
-                    f"boxplot-of-medians-for-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.png",
+            def boxplot_of_medians_for_configuration(filtered_data, row):
+                plt.figure()
+                plt.boxplot(filtered_data["median"])
+                plt.savefig(
+                    os.path.join(
+                        PLOTS_DIR,
+                        "static",
+                        "single",
+                        f"boxplot-of-medians-for-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.pdf",
+                    )
                 )
-            )
-            plt.close()
-
-            plt.figure()
-            plt.violinplot(filtered_data["measurements"], showmedians=True)
-            plt.savefig(
-                os.path.join(
-                    PLOTS_DIR,
-                    "static",
-                    "single",
-                    f"multiple-violin-plots-for-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.png",
+                plt.close()
+
+            # why the density of violin plot and kde plot differ, while using the same scott kde just sideways:
+            # Dove deep into the implementation from matplotlib and scipy, and they seem to calculate scotts factor in the same way, so dunno
+            def condensed_violin_plot_for_configuration(filtered_data, row):
+                # for multiple runs of the same static scenario, data taken together
+                measurements_flattend = filtered_data["measurements"].explode().tolist()
+                # print(filtered_data["measurements"].explode())
+                # print(len(measurements_flattend))
+                plt.figure()
+                plt.violinplot(measurements_flattend, showmedians=True)
+                plt.ylabel("Time-to-first-byte (ms)")
+                plt.xlabel("Dichte")
+                plt.savefig(
+                    os.path.join(
+                        PLOTS_DIR,
+                        "static",
+                        "single",
+                        f"condensed-violin-plot-for-{len(measurements_flattend)}-measurements-of-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.pdf",
+                    )
                 )
-            )
-            plt.close()
+                plt.close()
+
+            def condensed_histogram_plot_for_configuration(filtered_data, row):
+                measurements_flattend = filtered_data["measurements"].explode().tolist()
+                plt.figure()
+                plt.hist(measurements_flattend, bins=100, density=True)
+                plt.xlabel("Time-to-first-byte (ms)")
+                plt.ylabel("Dichte")
+
+                plt.savefig(
+                    os.path.join(
+                        PLOTS_DIR,
+                        "static",
+                        "single",
+                        f"condensed-histogram-plot-for-{len(measurements_flattend)}-measurements-of-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.pdf",
+                    )
+                )
+                plt.close()
 
-            # for multiple runs of the same static scenario, data taken together
-            measurements_flattend = filtered_data["measurements"].explode().tolist()
-            # print(filtered_data["measurements"].explode())
-            # print(len(measurements_flattend))
-            plt.figure()
-            plt.violinplot(measurements_flattend, showmedians=True)
-            plt.savefig(
-                os.path.join(
-                    PLOTS_DIR,
-                    "static",
-                    "single",
-                    f"condensed-violin-plot-for-{len(measurements_flattend)}-measurements-of-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.png",
+            def condensed_kernel_density_estimate_plot_for_configuration(
+                filtered_data, row
+            ):
+                measurements_flattend = filtered_data["measurements"].explode().tolist()
+                plt.figure()
+
+                kde = scipy.stats.gaussian_kde(measurements_flattend)
+                xmin = min(measurements_flattend) - 0.2
+                xmax = max(measurements_flattend) + 0.1
+                x = np.linspace(
+                    xmin,
+                    xmax,
+                    1000,
                 )
-            )
-            plt.close()
+                kde_values = kde(x)
+
+                plt.plot(x, kde_values)
+                plt.fill_between(x, kde_values, alpha=0.5)
+
+                plt.xlabel("Time-to-first-byte (ms)")
+                plt.ylabel("Dichte")
+                plt.xlim([xmin, xmax])
+                plt.ylim([0, max(kde_values) + 0.1])
+
+                plt.savefig(
+                    os.path.join(
+                        PLOTS_DIR,
+                        "static",
+                        "single",
+                        f"condensed-kde-plot-for-{len(measurements_flattend)}-measurements-of-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{row['kem_alg']}.pdf",
+                    )
+                )
+                plt.close()
+
+            boxplot_of_medians_for_configuration(filtered_data, row)
+            condensed_violin_plot_for_configuration(filtered_data, row)
+            condensed_histogram_plot_for_configuration(filtered_data, row)
+            condensed_kernel_density_estimate_plot_for_configuration(filtered_data, row)
+            # return
 
     plot_static_data_for_multiple_algorithms(data)
     plot_static_data_for_single_algorithms(data)
@@ -643,9 +1122,9 @@ def plot_general_plots():
         plt.ylabel("Performance (µs)")
 
         name = (
-            "scatter-of-bytes-sent-against-kem-performance-with-hybrids.png"
+            "scatter-of-bytes-sent-against-kem-performance-with-hybrids.pdf"
             if with_hybrids
-            else "scatter-of-bytes-sent-against-kem-performance.png"
+            else "scatter-of-bytes-sent-against-kem-performance.pdf"
         )
         plt.savefig(
             os.path.join(PLOTS_DIR, "general", name),
@@ -718,13 +1197,31 @@ def plot_general_plots():
 
         with_hybrids_string = "-with-hybrids" if with_hybrids else ""
         with_lines_string = "-with-lines" if with_lines else ""
-        name = f"scatter-of-public-key-against-ciphertext-length{with_hybrids_string}{with_lines_string}.png"
+        name = f"scatter-of-public-key-against-ciphertext-length{with_hybrids_string}{with_lines_string}.pdf"
         plt.savefig(
             os.path.join(PLOTS_DIR, "general", name),
             dpi=300,
         )
         plt.close()
 
+    # This does not yet seem like a good idea
+    # TODO use the riqr to make some graphs
+    def plot_median_against_iqr(data):
+        plt.figure()
+        plt.hexbin(data["median"], data["iqr"], gridsize=50)
+        print(data["iqr"].describe())
+        print(data["median"].describe())
+        # get the line with the maximum median
+        max_median = data["median"].idxmax()
+        print(data.iloc[max_median])
+        plt.savefig(f"{PLOTS_DIR}/general/median_against_iqr_hexbin.pdf")
+        plt.close()
+
+        plt.figure()
+        plt.hist2d(data["median"], data["iqr"], bins=50)
+        plt.savefig(f"{PLOTS_DIR}/general/median_against_iqr_hist2d.pdf")
+        plt.close()
+
     plot_send_bytes_against_kem_performance(df, with_hybrids=False)
     plot_send_bytes_against_kem_performance(df, with_hybrids=True)
 
-- 
GitLab