##################################################################################
# params.py -- Set of parameters for UP-state-mediated_plast_fig1CD_wake.py
#
#
# Author: Victor Pedrosa
# Imperial College London, London, UK - Dec 2017
##################################################################################

import numpy as np

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Define the parameters -----------------------------------------------------------------------------

# Neuron model parameters  (integrate and fire) -----------------------------------------------------
tau_m = 10. 				# [ms] Time constant for the leaky integrator
R = 1. 						# [Ohm] Resistance of the leaky I-F model for excitatory neurons
El = 0.						# [mV] Resting potential (leaky)
Vth = 10. 					# [mV] Threshold potential
Vres = 0. 					# [mV] Reset potential
Vspike = 10.				# [mV] Extra potential to indicate a spike - Just to make it prettier
Tref = 3. 					# [ms] Refractory time

# Network parameters --------------------------------------------------------------------------------
NE = 100					# Number of excitatory neurons in the input layer
			
# Simulation parameters -----------------------------------------------------------------------------
t_max = 6e5 		   	    # [ms] Total time of simulation
dt = 1. 		          	# [ms] Simulation time step
nSteps = np.int(t_max/dt)	# Number of steps in simulation

# Excitatory plasticity -----------------------------------------------------------------------------
tp_plast = 20.         	# [ms] Decay time for pre->post activity
tm_plast = 20. 		   	# [ms] Decay time for post->pre activity

a_pre = {}		      		# Pre-synaptic activity term (non-Hebbian)
a_post = {}	     			# Post-synaptic activity term
a_plus = {}					# Coefficient related to pre->post activity
a_minus = {}		       	# Coefficient related to post->pre activity

# Down states -> standard STDP.
# Up states -> Pre alone leads to depression + standard STDP

a_pre["up"] = -0.0000 * np.exp(-1) 
a_post["up"] = -0.0 
a_plus["up"] = 0.001 
a_minus["up"] = -0.001 

a_pre["wake"] = 0.0 
a_post["wake"] = -0.0 
a_plus["wake"] = 0.001 
a_minus["wake"] = -0.001  


# Connections (synapses) -----------------------------------------------------------------------------
EsynE = 30.					# [mV] Reversal potential for exc. syn.
EsynI = -40. 				# [mV] Reversal potential for inh. syn.
w_min = 0. 					# lower bound on all weights
w_max = 1. 					# upper bound on exc weights

# Synaptic conductance
tauSynEx = 10.				# [ms] Time constant for excitatory postsynaptic potential
tauSynIn = 10.				# [ms] Time constant for inhibitory postsynaptic potential
gBarEx = .5 				# Peak synaptic conductance for excitatory synapses

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Parameters for speeding up the simulation +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

step_tauSynEx = dt/tauSynEx
step_tau_m = dt/tau_m
step_tp_plast = dt/tp_plast
step_tm_plast = dt/tm_plast