-
Notifications
You must be signed in to change notification settings - Fork 1
/
check_TM_model.py
110 lines (80 loc) · 2.54 KB
/
check_TM_model.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Feb 9 21:42:52 2024
@author: celinesoeiro
"""
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()
from model_functions import tm_synapse_eq
from tcm_params import TCM_model_parameters
ms = 1000 # 1ms
rate = 10 * 1/ms # spike rate
bin_size = 1 # bin size
tmax = 1 * ms # the total lenght of the spike train
syn_params = TCM_model_parameters()['synapse_params_excitatory']
t_f_E = syn_params['t_f']
t_d_E = syn_params['t_d']
t_s_E = syn_params['t_s']
U_E = syn_params['U']
A_E = syn_params['distribution']
t_f_I = syn_params['t_f']
t_d_I = syn_params['t_d']
t_s_I = syn_params['t_s']
U_I = syn_params['U']
A_I = syn_params['distribution']
def homogeneous_poisson(rate, tmax, bin_size):
nbins = np.floor(tmax/bin_size).astype(int)
prob_of_spike = rate * bin_size
spikes = np.random.rand(nbins) < prob_of_spike
return spikes * 1
spikes_poisson = homogeneous_poisson(rate, tmax, bin_size)
time = np.arange(len(spikes_poisson)) * bin_size
u = np.zeros((1, 3))
R = np.ones((1, 3))
I = np.zeros((1, 3))
PSC_E = np.zeros((1, len(time)))
# Synapse - Within layer
for t in time:
AP = spikes_poisson[t]
syn = tm_synapse_eq(u = u,
R = R,
I = I,
AP = AP,
t_f = t_f_E,
t_d = t_d_E,
t_s = t_s_E,
U = U_E,
A = A_E,
dt = rate,
p = 3)
PSC_E[0][t] = 1*syn['Ipost']
del u, R, I, syn, t
u = np.zeros((1, 3))
R = np.ones((1, 3))
I = np.zeros((1, 3))
PSC_I = np.zeros((1, len(time)))
# Synapse - Within layer
for t in time:
AP = spikes_poisson[t]
syn = tm_synapse_eq(u = u,
R = R,
I = I,
AP = AP,
t_f = t_f_I,
t_d = t_d_I,
t_s = t_s_I,
U = U_I,
A = A_I,
dt = rate,
p = 3)
PSC_I[0][t] = 1*syn['Ipost']
fig, (ax1,ax2,ax3) = plt.subplots(3,1,figsize=(15, 10))
ax1.plot(time, spikes_poisson)
ax2.plot(time,PSC_E[0])
ax3.plot(time,PSC_I[0])
ax1.set_title('Trem de pulsos gerado por Poisson')
ax2.set_title('PSC - Excitatoria')
ax3.set_title('PSC - Inibitoria')