Пример #1
0
void IF2Group::init()
{
	e_rest = -70e-3;
	e_rev = -80e-3;
	e_nmda_onset = -65e-3;
	nmda_slope = 1.0/60e-3;
	thr_rest = -50e-3;
	dthr = 100e-3;
	tau_thr = 5e-3;
	tau_mem = 20e-3;
	tau_ampa = 5e-3;
	tau_gaba = 10e-3;
	tau_nmda = 100e-3;

	set_ampa_nmda_ratio(1.0);

	calculate_scale_constants();
	
	// thr = auryn_vector_float_alloc (size); 
	
	t_leak = get_state_vector("t_leak");
	t_exc =  get_state_vector("t_exc");
	t_inh = get_state_vector("t_inh");
	nmda_opening = get_state_vector("nmda_opening");

	clear();
}
Пример #2
0
void AIFGroup::init()
{
	e_rest = -70e-3;
	e_rev = -80e-3;
	thr_rest = -50e-3;
	dthr = 100e-3;
	tau_thr = 2e-3;
	tau_mem = 20e-3;
	tau_ampa = 5e-3;
	tau_gaba = 10e-3;
	tau_nmda = 100e-3;

	set_ampa_nmda_ratio(1.0);

	tau_adapt1 = 0.1;
	dg_adapt1  = 0.1;
 
	calculate_scale_constants();

	t_leak = get_state_vector("t_leak");
	t_exc  =  get_state_vector("t_exc");
	t_inh  = get_state_vector("t_inh");
	g_adapt1 = get_state_vector("g_adapt1");

	clear();
}
Пример #3
0
void SpikingGroup::randomize_state_vector_gauss(string state_vector_name, AurynState mean, AurynState sigma, int seed)
{
	boost::mt19937 ng_gen(seed+communicator->rank()); // produces same series every time 
	boost::normal_distribution<> dist((double)mean, (double)sigma);
	boost::variate_generator<boost::mt19937&, boost::normal_distribution<> > die(ng_gen, dist);
	AurynState rv;

	auryn_vector_float * vec = get_state_vector(state_vector_name); 


	for ( AurynLong i = 0 ; i<get_rank_size() ; ++i ) {
		rv = die();
		auryn_vector_float_set( vec, i, rv );
	}

}
Пример #4
0
void SpikingGroup::virtual_serialize(boost::archive::binary_iarchive & ar, const unsigned int version ) 
{
	ar & size & axonaldelay ; 
	ar & *delay;
	for ( map<string,auryn_vector_float *>::const_iterator iter = state_vectors.begin() ; 
			iter != state_vectors.end() ;
			++iter ) {
		string key;
		ar & key;
		auryn_vector_float * vect = get_state_vector(key);
		ar & *vect;
	}

	for ( NeuronID i = 0 ; i < pretraces.size() ; ++i )
		ar & *(pretraces[i]);

	for ( NeuronID i = 0 ; i < posttraces.size() ; ++i )
		ar & *(posttraces[i]);
}
Пример #5
0
void TIFGroup::init()
{
	e_rest = -60e-3;
	e_rev = -80e-3;
	thr = -50e-3;
	tau_ampa = 5e-3;
	tau_gaba = 10e-3;
	tau_mem = 20e-3;
	refractory_time = (unsigned short) (5.e-3/dt);

	calculate_scale_constants();
	
	ref = gsl_vector_ushort_alloc (get_vector_size()); 
	bg_current = get_state_vector("bg_current");

	t_g_ampa = gsl_vector_float_ptr ( g_ampa , 0 ); 
	t_g_gaba = gsl_vector_float_ptr ( g_gaba , 0 ); 
	t_bg_cur = gsl_vector_float_ptr ( bg_current , 0 ); 
	t_mem = gsl_vector_float_ptr ( mem , 0 ); 
	t_ref = gsl_vector_ushort_ptr ( ref , 0 ); 

	clear();

}
Пример #6
0
void ioi_handler(QueuePacket fifo_packet){
	set_debug(DEBUG1, true);

	unsigned int returnData[4]; // Data to send back to controller on FIFO

	switch (fifo_packet.command){
		case (PLANT): // SPI
			// SPI Filter
			if(!plant_filter(&fifo_packet)) return; // ERROR HANDLING HERE FOR FILTERING SPI
			if(!fifo_packet.bytes)	return;	// ERROR HANDLING IF TRANSFER BYTES IS 0

			// only accept voltage writes or sensor reads
			if( (fifo_packet.slave == SS_DAC) && (fifo_packet.operation == WRITE) && (fifo_packet.bytes == BITS_16)
					&& ((fifo_packet.data[0] & DAC_CONFIG_BITS) == DAC_CONFIG_BITS) ) // write voltage
				write_voltage(fifo_packet.data[0]);
			else if( (fifo_packet.slave == SS_ENCODER_S || fifo_packet.slave == SS_ENCODER_P) && (fifo_packet.operation == READ)
					&& (fifo_packet.bytes ==  BITS_32) && (fifo_packet.data[0]  == (READ_CNTR << 24))) // read encoder
				returnData[0] = read_sensor(fifo_packet.slave, fifo_packet.data[0]);
			break;
		case (SET_POINT): // SET_POINT
			returnData[0] = (unsigned int)get_set_point();
			break;
		case (STATE_VECTOR): // STATE_INFORMATION
			get_state_vector(returnData);
			break;
		default:
			break;
	}

	// Send the return data back to controller; maximum of 4 bytes returned
	enqueue(returnData, fifo_packet.operation > 4 ? 4 : fifo_packet.operation);

	//assert_trigger(check_wdt()); // backup was not working with this; initially had it to detect livelock attack

	set_debug(DEBUG1, false);
}
Пример #7
0
void TIFGroup::init()
{
	e_rest = -60e-3;
	e_rev = -80e-3;
	thr = -50e-3;
	tau_ampa = 5e-3;
	tau_gaba = 10e-3;
	tau_mem = 20e-3;
	set_refractory_period(5e-3);

	calculate_scale_constants();
	
	ref = auryn_vector_ushort_alloc (get_vector_size()); 
	bg_current = get_state_vector("bg_current");

	t_g_ampa = auryn_vector_float_ptr ( g_ampa , 0 ); 
	t_g_gaba = auryn_vector_float_ptr ( g_gaba , 0 ); 
	t_bg_cur = auryn_vector_float_ptr ( bg_current , 0 ); 
	t_mem = auryn_vector_float_ptr ( mem , 0 ); 
	t_ref = auryn_vector_ushort_ptr ( ref , 0 ); 

	clear();

}