# Script to produce data for figure 3
# Created by Matthew Asker 

import numpy as np
from next_reaction_method_paper import next_reaction
import pandas as pd

a = 0.25
s = 0.1
total_sims = 10
K_0 = 550
gamma = 9/11
deltas = [-0.5, 0, 0.5]
x_ths = [3/30, 11/30, 19/30, 27/30]
nus = [1e-4, 1e-1, 1e2]

params = np.array(np.meshgrid(x_ths, nus, deltas)).T.reshape(-1,3) # [xth, nu, delta]

for p in params:
    xth, nu, delta = p
    for i in range(total_sims):
        G = next_reaction(s, a, nu*(1-delta), nu*(1+delta), K_0*(1+gamma), K_0*(1-gamma), xth, 1)
        G.run()
    
        raw_data = {'N_R' : G.N_R_track,
                    'N_S' : G.N_S_track,
                    'K' : G.K_track,
                    't' : G.t_track}
        
        filename = f'trajectory [x_th, nu, delta]=[{xth}, {nu}, {delta}] {i}'
        
        data = pd.DataFrame(raw_data, columns=['N_R', 'N_S', 'K', 't'])
        data.to_csv(filename+'.csv', index=False)