From b021342b8e27f4a32d0ef1c731255ec589eb2a52 Mon Sep 17 00:00:00 2001
From: Jannis <jannis.schuecker@iais.fraunhofer.de>
Date: Thu, 7 Jun 2018 15:01:33 +0200
Subject: [PATCH] work on 1D network class for Figure2

---
 .../SchueckerSchmidt2017/Fig2_EE_network.py   | 39 +++++++++++++------
 1 file changed, 28 insertions(+), 11 deletions(-)

diff --git a/figures/SchueckerSchmidt2017/Fig2_EE_network.py b/figures/SchueckerSchmidt2017/Fig2_EE_network.py
index de51237..994974a 100644
--- a/figures/SchueckerSchmidt2017/Fig2_EE_network.py
+++ b/figures/SchueckerSchmidt2017/Fig2_EE_network.py
@@ -8,13 +8,14 @@ from multiarea_model.theory import Theory
 from multiarea_model.theory_helpers import nu0_fb
 from multiarea_model.default_params import single_neuron_dict, nested_update
 from multiarea_model.multiarea_helpers import convert_syn_weight
+from copy import copy
 
 
 class network1D:
     def __init__(self, params):
         self.label = '1D'
         self.params = {'input_params': params['input_params'],
-                       'neuron_params': {'single_neuron_dict': single_neuron_dict},
+                       'neuron_params': {'single_neuron_dict': copy(single_neuron_dict)},
                        'connection_params': {'replace_cc': None,
                                              'replace_cc_input_source': None}
                        }
@@ -23,23 +24,38 @@ class network1D:
         self.structure = {'A': {'E'}}
         self.structure_vec = ['A-E']
         self.area_list = ['A']
-        self.K_matrix = np.array([[params['K'], params['K']]])
+        if 'K_stable' in params.keys():
+            self.K_matrix = np.array([[params['K_stable'], params['K']]])
+        else:
+            self.K_matrix = np.array([[params['K'], params['K']]])
+
         self.W_matrix = np.array([[params['W'], params['W']]])
         self.J_matrix = convert_syn_weight(self.W_matrix,
                                            self.params['neuron_params']['single_neuron_dict'])
         self.theory = Theory(self, {})
-        
+
     def Phi(self, rate):
         mu, sigma = self.theory.mu_sigma(rate)
         NP = self.params['neuron_params']['single_neuron_dict']
         return list(map(lambda mu, sigma: nu0_fb(mu, sigma,
-                                                 1.e-3*NP['tau_m'],
-                                                 1.e-3*NP['tau_syn_ex'],
-                                                 1.e-3*NP['t_ref'],
+                                                 1.e-3 * NP['tau_m'],
+                                                 1.e-3 * NP['tau_syn_ex'],
+                                                 1.e-3 * NP['t_ref'],
                                                  NP['V_th'] - NP['E_L'],
                                                  NP['V_reset'] - NP['E_L']),
                         mu, sigma))
 
+    def Phi_noisefree(self, rate):
+        mu, sigma = self.theory.mu_sigma(rate)
+        NP = self.params['neuron_params']['single_neuron_dict']
+        th_shift = NP['V_th'] - NP['E_L']
+        if mu > th_shift:
+            T = 1e-3 * NP['tau_m'] * \
+                np.log(mu[0] / (mu[0] - th_shift))
+            return (1 / T)
+        else:
+            return 0.
+
     def fsolve(self, rates_init):
         def f(rate):
             return self.Phi(rate) - rate
@@ -63,19 +79,20 @@ class network2D:
         self.structure = {'A': {'E1', 'E2'}}
         self.structure_vec = ['A-E1', 'A-E2']
         self.area_list = ['A']
-        self.K_matrix = np.array([[params['K'] / 2., params['K'] / 2., params['K']]])
+        self.K_matrix = np.array(
+            [[params['K'] / 2., params['K'] / 2., params['K']]])
         self.W_matrix = np.array([[params['W'], params['W'], params['W']]])
         self.J_matrix = convert_syn_weight(self.W_matrix,
                                            self.params['neuron_params']['single_neuron_dict'])
         self.theory = Theory(self, {})
-        
+
     def Phi(self, rate):
         mu, sigma = self.theory.mu_sigma(rate)
         NP = self.params['neuron_params']['single_neuron_dict']
         return list(map(lambda mu, sigma: nu0_fb(mu, sigma,
-                                                 1.e-3*NP['tau_m'],
-                                                 1.e-3*NP['tau_syn_ex'],
-                                                 1.e-3*NP['t_ref'],
+                                                 1.e-3 * NP['tau_m'],
+                                                 1.e-3 * NP['tau_syn_ex'],
+                                                 1.e-3 * NP['t_ref'],
                                                  NP['V_th'] - NP['E_L'],
                                                  NP['V_reset'] - NP['E_L']),
                         mu, sigma))
-- 
GitLab