def testSymmetricFlag(self): conn_dict_symmetric = self.conn_dict.copy() conn_dict_symmetric['make_symmetric'] = True self.setUpNetwork(conn_dict_symmetric) M1 = hf.get_connectivity_matrix(self.pop1, self.pop2) M2 = hf.get_connectivity_matrix(self.pop2, self.pop1) # test that connections were created in both directions hf.mpi_assert(M1, np.transpose(hf.gather_data(M2)), self) # test that no other connections were created hf.mpi_assert(M1, np.zeros_like(M1) + np.identity(self.N), self)
def testMultapsesFalse(self): conn_params = self.conn_dict.copy() N = 3 conn_params['allow_autapses'] = True # test that no multapses exist conn_params['outdegree'] = N conn_params['allow_multapses'] = False pop = hf.nest.Create('iaf_psc_alpha', N) hf.nest.Connect(pop, pop, conn_params) M = hf.get_connectivity_matrix(pop, pop) M = hf.gather_data(M) if M is not None: self.assertTrue(M.flatten, np.ones(N * N))
def testAutapsesTrue(self): conn_params = self.conn_dict.copy() N = 3 # test that autapses exist conn_params['N'] = N * N * N conn_params['allow_autapses'] = True pop = hf.nest.Create('iaf_psc_alpha', N) hf.nest.Connect(pop, pop, conn_params) # make sure all connections do exist M = hf.get_connectivity_matrix(pop, pop) M = hf.gather_data(M) if M is not None: self.assertTrue(np.sum(np.diag(M)) > N)
def testStatistics(self): conn_params = self.conn_dict.copy() conn_params['allow_autapses'] = True conn_params['allow_multapses'] = True conn_params['outdegree'] = self.C expected = hf.get_expected_degrees_fixedDegrees( self.C, 'out', self.N_s, self.N_t) pvalues = [] for i in range(self.stat_dict['n_runs']): hf.reset_seed(i + 1, self.nr_threads) self.setUpNetwork(conn_dict=conn_params, N1=self.N_s, N2=self.N_t) degrees = hf.get_degrees('in', self.pop1, self.pop2) degrees = hf.gather_data(degrees) if degrees is not None: chi, p = hf.chi_squared_check(degrees, expected) pvalues.append(p) hf.mpi_barrier() if degrees is not None: ks, p = scipy.stats.kstest(pvalues, 'uniform') self.assertGreater(p, self.stat_dict['alpha2'])
def testRPortDistribution(self): n_rport = 10 nr_neurons = 100 hf.nest.ResetKernel() # To reset local_num_threads neuron_model = 'iaf_psc_exp_multisynapse' neuron_dict = {'tau_syn': [0.1 + i for i in range(n_rport)]} self.pop1 = hf.nest.Create(neuron_model, nr_neurons, neuron_dict) self.pop2 = hf.nest.Create(neuron_model, nr_neurons, neuron_dict) syn_params = {'synapse_model': 'static_synapse'} syn_params['receptor_type'] = 1 + hf.nest.random.uniform_int(n_rport) hf.nest.Connect(self.pop1, self.pop2, self.conn_dict, syn_params) M = hf.get_weighted_connectivity_matrix(self.pop1, self.pop2, 'receptor') M = hf.gather_data(M) if M is not None: M = M.flatten() frequencies = scipy.stats.itemfreq(M) self.assertTrue( np.array_equal(frequencies[:, 0], np.arange(1, n_rport + 1)), 'Missing or invalid rports') chi, p = scipy.stats.chisquare(frequencies[:, 1]) self.assertGreater(p, self.pval)
def testStatistics(self): for fan in ['in', 'out']: expected = hf.get_expected_degrees_bernoulli( self.p, fan, self.N_s, self.N_t) pvalues = [] for i in range(self.stat_dict['n_runs']): hf.reset_seed(i + 1, self.nr_threads) self.setUpNetwork(conn_dict=self.conn_dict, N1=self.N_s, N2=self.N_t) degrees = hf.get_degrees(fan, self.pop1, self.pop2) degrees = hf.gather_data(degrees) # degrees = self.comm.gather(degrees, root=0) # if self.rank == 0: if degrees is not None: chi, p = hf.chi_squared_check(degrees, expected, self.rule) pvalues.append(p) hf.mpi_barrier() if degrees is not None: ks, p = scipy.stats.kstest(pvalues, 'uniform') self.assertTrue(p > self.stat_dict['alpha2'])