diff --git a/Data/show_plots.py b/Data/show_plots.py index 7fa28f0..5aff54c 100644 --- a/Data/show_plots.py +++ b/Data/show_plots.py @@ -571,6 +571,61 @@ plt.show() # %% Time Plot +import numpy as np +import matplotlib.pyplot as plt +import pandas as pd +from scipy import stats +# Load the TSV file +file_path = '/home/shahin/Lab/Doktorarbeit/Barcelona/Data/Join_edssandsub.tsv' +df = pd.read_csv(file_path, sep='\t') + +# Extract the inference_time_sec column +inference_times = df['inference_time_sec'].dropna() # Remove NaN values + +# Calculate statistics +mean_time = inference_times.mean() +std_time = inference_times.std() +median_time = np.median(inference_times) + +# Create the histogram +fig, ax = plt.subplots(figsize=(10, 6)) + +# Create histogram with bins of 1 second width +min_time = int(inference_times.min()) +max_time = int(inference_times.max()) + 1 +bins = np.arange(min_time, max_time + 1, 1) # Bins of 1 second width + +# Create histogram with counts (not probability density) +n, bins, patches = ax.hist(inference_times, bins=bins, color='lightblue', alpha=0.7, edgecolor='black', linewidth=0.5) + +# Generate Gaussian curve for fit +x = np.linspace(inference_times.min(), inference_times.max(), 100) +# Scale Gaussian to match histogram counts +gaussian_counts = stats.norm.pdf(x, mean_time, std_time) * len(inference_times) * (bins[1] - bins[0]) + +# Plot Gaussian fit +ax.plot(x, gaussian_counts, color='red', linewidth=2, label=f'Gaussian Fit (μ={mean_time:.1f}s, σ={std_time:.1f}s)') + +# Add vertical lines for mean and median +ax.axvline(mean_time, color='blue', linestyle='--', linewidth=2, label=f'Mean = {mean_time:.1f}s') +ax.axvline(median_time, color='green', linestyle='--', linewidth=2, label=f'Median = {median_time:.1f}s') + +# Add standard deviation as vertical lines +ax.axvline(mean_time + std_time, color='saddlebrown', linestyle=':', linewidth=1, alpha=0.7, label=f'+1σ = {mean_time + std_time:.1f}s') +ax.axvline(mean_time - std_time, color='saddlebrown', linestyle=':', linewidth=1, alpha=0.7, label=f'-1σ = {mean_time - std_time:.1f}s') + +ax.set_xlabel('Inference Time (seconds)') +ax.set_ylabel('Frequency') +ax.set_title('Inference Time Distribution with Gaussian Fit') +ax.legend() +ax.grid(True, alpha=0.3) + +plt.tight_layout() +plt.show() ## + + + +