arnaucube
arnaucube/sonobe-playgroundPublic Self-hosted repository
Plot M vs N
Piotr Mikołajczyk piomiko41@gmail.com
Tue, 15 Oct 2024 15:21:52 +0200
commit

bb0008715158a5671edaaf3f16141af80cd633d0

parent

f592c45a6fc90daafe3206cdb419eef0efc97b8b

1 files changed, 43 insertions(+), 0 deletions(-)

jump to
M analysis.py → analysis.py

@@ -1,4 +1,8 @@

import json +import re + +import matplotlib.pyplot as plt +import numpy as np # Function to convert time units to seconds

@@ -18,6 +22,7 @@

scenarios = {} free_logs = [] +hypernova = [[None] * 7 for _ in range(7)] def process_logline(log):

@@ -36,6 +41,10 @@ if not scenario_name:

folding_scheme = span.get("folding_scheme") if folding_scheme is not None: free_logs.append(report(f"{folding_scheme} total time", time_seconds)) + + hypernova_params = re.fullmatch(r"HyperNova<(\d),(\d)>", folding_scheme) + if hypernova_params: + hypernova[int(hypernova_params.groups()[0])][int(hypernova_params.groups()[1])] = time_seconds else: free_logs.append(report(span["name"], time_seconds)) return

@@ -90,5 +99,39 @@ print(report(" Min", min(proving_steps)))

print(report(" Max", max(proving_steps))) +def draw_hn_plot(): + data_np = np.array(hypernova, dtype=np.float64) + data_np = np.where(np.isnan(data_np), 0, data_np) # Replace None with 0 for better visualization + + cmap = plt.cm.viridis + cmap.set_under('white') # Set background color for None + + fig, ax = plt.subplots() + cax = ax.matshow(data_np, cmap=cmap, vmin=0.01) + + fig.colorbar(cax) + + for i in range(len(hypernova)): + for j in range(len(hypernova[i])): + if hypernova[i][j] is not None: + ax.text(j, i, f'{hypernova[i][j]:.2f}', va='center', ha='center', color='black') + + # Set axis labels and title + ax.set_xlabel('ν (number of incoming CCCS instances)') + ax.set_ylabel('μ (number of running LCCCS instances)') + + ax.set_xticks(np.arange(len(hypernova[0]))) + + ax.set_yticks(np.arange(len(hypernova))) + ax.set_xticklabels([f'{i}' for i in range(len(hypernova[0]))]) + ax.set_yticklabels([f'{i}' for i in range(len(hypernova))]) + + plt.title("HyperNova multifold times") + + # Show the plot + plt.show() + + process_logs('out.log') print_results() +draw_hn_plot()