# ====================================================================================================
# run_code.py -- Simulates a feedforward network of excitatory neurons as in
#
# Ref: González-Rueda, A., Pedrosa, V., Feord, R., Clopath, C., Paulsen, O. Activity-dependent 
# downscaling of subthreshold synaptic inputs during slow wave sleep-like activity in vivo. 
# Neuron (2018).
#
# This code executes the following:
#  1. UP-state-mediated_plast_fig1CD_wake.py, which generates Syn_weights_wake_plast.npy
#  2. UP-state-mediated_plast_fig1CD_sleep.py, which generates Syn_weights_sleep_plast.npy
#     and takes Syn_weights_wake_plast.npy as input
#  3. Make_fig1CD.py, which generates one figure file and takes both Syn_weights_wake_plast.npy
#     and Syn_weights_sleep_plast.npy as input
# -----------------------------------------------------------------------
#
# Author: Victor Pedrosa <v.pedrosa15@imperial.ac.uk>
# Imperial College London, London, UK - Dec 2017
# ====================================================================================================


# Import modules -------------------------------------------------------------------------------------
import subprocess
import os
from time import time as time_now

# Create new directories if they don't exist ---------------------------------------------------------
newpath = r'Data/' 
if not os.path.exists(newpath):
    os.makedirs(newpath)
    
newpath = r'Figures/' 
if not os.path.exists(newpath):
    os.makedirs(newpath)

# start to count the time spent with simulations -----------------------------------------------------
time_in = time_now() 


# ====================================================================================================
# Run the simulations
# ====================================================================================================

# Run the main code for wake plasticity --------------------------------------------------------------
subprocess.call('python Step1-wake_learning/UP-state-mediated_plast_fig4CD_wake.py',shell=True)

# Run the main code for sleep plasticity -------------------------------------------------------------
subprocess.call('python Step2-sleep_learning/UP-state-mediated_plast_fig4CD_sleep.py',shell=True)

# Run the code to generate the figures ---------------------------------------------------------------

subprocess.call('python Step3-figures/Make_fig4CD.py',shell=True)


# stop counting the time and show the total time spent -----------------------------------------------
time_end = time_now()
total_time = (time_end-time_in)/60. # [min]

print('\n')
print('Simulation finally finished!')
print('Total time = {0:.2f} minutes'.format(total_time))