finish all analysis and upload data and results
This commit is contained in:
@@ -7,19 +7,6 @@ from scipy.optimize import curve_fit
|
||||
import numpy as np
|
||||
|
||||
|
||||
# Initial Setup
|
||||
csv_file = "results/synthetic_data/raw/20260421_031740.csv"
|
||||
save_folder = f"results/synthetic_data/derived/{os.path.splitext(os.path.basename(csv_file))[0]}/call_number_analysis"
|
||||
os.makedirs(save_folder, exist_ok=True)
|
||||
|
||||
df = pd.read_csv(csv_file)
|
||||
df = df[df["algorithm"] == "binary"].copy()
|
||||
df["relax_success_ratio"] = df["relax_success"] / df["relax_attempts"]
|
||||
df["E"] = df["nodes"] * (df["nodes"] - 1) * df["density"]
|
||||
df["decrease_key"] = df["relax_success"]
|
||||
df["avg_degree"] = (df["nodes"] - 1) * df["density"]
|
||||
|
||||
|
||||
# 1. E vs relax_attempts
|
||||
def E_vs_relax_attempts(df):
|
||||
X = df[["E"]].to_numpy()
|
||||
@@ -292,7 +279,7 @@ def regime_distribution(df):
|
||||
|
||||
|
||||
# 6. Nonlinear regression: r = (a·ln(sigma) + b) · avg_deg^c
|
||||
def nonlinear_regression(df):
|
||||
def nonlinear_regression(compute_local=False):
|
||||
# Filter: giant component regime only
|
||||
sub = df[(df["avg_degree"] >= 1) & (df["relax_success_ratio"] < 0.99)].copy()
|
||||
sub = sub[sub["relax_success_ratio"] > 0].dropna(subset=["relax_success_ratio", "avg_degree", "sigma"])
|
||||
@@ -301,8 +288,6 @@ def nonlinear_regression(df):
|
||||
sigma = sub["sigma"].to_numpy()
|
||||
r = sub["relax_success_ratio"].to_numpy()
|
||||
|
||||
print(f"Fitting on {len(sub)} data points")
|
||||
|
||||
def model(X, a, b, c):
|
||||
avg_deg_, sigma_ = X
|
||||
return (a * np.log(sigma_) + b) * avg_deg_ ** c
|
||||
@@ -319,6 +304,9 @@ def nonlinear_regression(df):
|
||||
ss_tot = np.sum((r - r.mean()) ** 2)
|
||||
r2 = 1 - ss_res / ss_tot
|
||||
|
||||
if compute_local == False:
|
||||
return (a, b, c)
|
||||
|
||||
print("\n=== Nonlinear regression: r = (a·ln(σ) + b) · avg_deg^c ===")
|
||||
print(f" a = {a:.6f} ± {perr[0]:.6f}")
|
||||
print(f" b = {b:.6f} ± {perr[1]:.6f}")
|
||||
@@ -360,9 +348,22 @@ def nonlinear_regression(df):
|
||||
print(f"Saved nonlinear regression plots to {nlr_save_folder}")
|
||||
|
||||
|
||||
|
||||
# Initial Setup
|
||||
csv_file = "results/synthetic_data/raw/20260421_031740.csv"
|
||||
save_folder = f"results/synthetic_data/derived/{os.path.splitext(os.path.basename(csv_file))[0]}/call_number_analysis"
|
||||
os.makedirs(save_folder, exist_ok=True)
|
||||
|
||||
df = pd.read_csv(csv_file)
|
||||
df = df[df["algorithm"] == "binary"].copy()
|
||||
df["relax_success_ratio"] = df["relax_success"] / df["relax_attempts"]
|
||||
df["E"] = df["nodes"] * (df["nodes"] - 1) * df["density"]
|
||||
df["decrease_key"] = df["relax_success"]
|
||||
df["avg_degree"] = (df["nodes"] - 1) * df["density"]
|
||||
|
||||
E_vs_relax_attempts(df) # 1
|
||||
sigma_vs_relax_success_ratio(df) # 2
|
||||
avg_degree_vs_relax_success_ratio(df) # 3
|
||||
log_avg_degree_vs_log_ratio(df) # 4
|
||||
regime_distribution(df) # 5
|
||||
nonlinear_regression(df) # 6
|
||||
nonlinear_regression(compute_local=True) # 6
|
||||
Reference in New Issue
Block a user