// gcppstimulate 
// stimulate one GC by one oscillating PP neuron

// Hyperparameters 
N_RUNS =  1 // Number of runs per group
PP_freq_ = 1 // Ensures that PP.hoc loads oscillatory PP mechanism. TODO: Re-write this s.t. there's no dependancy on external variable

// Load cell templates and network 
err_ = load_file("objects/GC.hoc")
err_ = load_file("objects/PP.hoc")
err_ = load_file("objects/GCPP.hoc")

// Instantiate cell objects and labels
objref th, fth, al, bt, gm
strdef tlab, ftlab, alab, blab, glab 

// Do N_RUNS Runs for each network setting
for random_state = 1, N_RUNS {

    PP_freq_ = 3
    sprint(tlab, "%s-%d", "theta", random_state) 
    th = new GCPP(tlab, random_state, "theta")

    print "RUNNING GCPP ", tlab
    th.run()

    PP_freq_ = 8
    sprint(ftlab, "%s-%d", "ftheta", random_state) 
    fth = new GCPP(ftlab, random_state, "ftheta")

    print "RUNNING GCPP ", ftlab
    fth.run()
    
    PP_freq_ = 12
    sprint(alab, "%s-%d", "alpha", random_state)
    al = new GCPP(alab, random_state, "alpha")

    print "RUNNING GCPP ", alab
    al.run()
    
    PP_freq_ = 20
    sprint(blab, "%s-%d", "beta", random_state)
    bt = new GCPP(blab, random_state, "beta")

    print "RUNNING GCPP ", blab
    bt.run()

    PP_freq_ = 30
    sprint(glab, "%s-%d", "gamma", random_state)
    gm = new GCPP(glab, random_state, "gamma")

    print "RUNNING GCPP ", glab
    gm.run()
    
}