import json, math, pathlib, sys
sys.path.insert(0, "/input/code")
from run import solve_wf
out={"file_matches":{},"grid":[],"parameterization":[]}
for f in pathlib.Path("results").glob("*.json"):
 out["file_matches"][f.name]=json.loads(f.read_text())==json.loads((pathlib.Path("/input/results")/f.name).read_text())
for n in [20,50,100]:
 for s in [-0.05,-0.02,-0.01,0,0.01,0.02,0.05,0.1]:
  u,k,t=solve_wf(n,s)
  out["grid"].append({"copies":n,"s":s,"u":u,"diffusion":k,"error_percent":100*(k-u)/u,"conditional_mean":t,"neutral_residual":abs(u-1/n) if s==0 else None})
 for s in [0.01,0.02,0.05]:
  a=solve_wf(n,s)[2];b=solve_wf(n,-s)[2];c=solve_wf(n,-s/(1+s))[2]
  out["parameterization"].append({"copies":n,"s":s,"equal_magnitude_relative_difference_percent":100*abs(a-b)/((a+b)/2),"reciprocal_fitness_relative_difference_percent":100*abs(a-c)/((a+c)/2)})
print(json.dumps(out,indent=2))
