예제 #1
0
 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)
예제 #2
0
    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))
예제 #3
0
    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)
예제 #4
0
 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'])
예제 #5
0
 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)
예제 #6
0
    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'])