def run(self): logger.info("[port_listener] starting") self.queuer.start() last_update_time = datetime.datetime.now() t_tic = 0 last_time_packet_recieved = datetime.datetime.now() if self.DEBUG: max_neuronid = 200 while not self.done: try: t_tic, last_update_time = self.handle_timer_forces( last_update_time, last_time_packet_recieved, t_tic) # if done every 200 ms if not self.DEBUG: #print "trying to recive" data = self.queuer.get_packet() if data is None: break # print "received" (ip_time_out_byte, pad_byte, flags_byte, tag_byte, dest_port_byte, source_port_byte, dest_addr_short, source_addr_short, command_short, sequence_short, arg1_int, arg2_int, arg3_int) =\ struct.unpack_from("<BBBBBBHHHHiii", data, 0) header_length = 26 spikedatalen = len(data) - header_length t_tic = arg1_int last_time_packet_recieved = datetime.datetime.now() for spike in range(0, spikedatalen, 4): spikeWord = struct.unpack_from("<I", data, spike + header_length)[0] x = packet_conversions.get_x_from_key(spikeWord) y = packet_conversions.get_y_from_key(spikeWord) p = packet_conversions.get_p_from_key(spikeWord) nid = packet_conversions.get_nid_from_key(spikeWord) # logger.debug("received packet from {},{},{}".format(x,y,p)) self.visualiser.spike_recieved({ 'coords': [x, y, p], 'neuron_id': nid, 'tag': tag_byte, 'time_in_ticks': t_tic, 'spike_word': spikeWord }) else: #create fake spikes t_tic = self.generate_fake_spikes(packet_count, t_tic) except socket.timeout: pass except Exception as e: if not self.done: traceback.print_exc() logger.debug( "[visualiser_listener] Error receiving data: %s" % e)
def run(self): logger.info("[port_listener] starting") self.queuer.start() last_update_time = datetime.datetime.now() t_tic = 0 last_time_packet_recieved = datetime.datetime.now() if self.DEBUG: max_neuronid = 200 while not self.done: try: t_tic, last_update_time = self.handle_timer_forces( last_update_time, last_time_packet_recieved, t_tic) # if done every 200 ms if not self.DEBUG: #print "trying to recive" data = self.queuer.get_packet() if data is None: break # print "received" (ip_time_out_byte, pad_byte, flags_byte, tag_byte, dest_port_byte, source_port_byte, dest_addr_short, source_addr_short, command_short, sequence_short, arg1_int, arg2_int, arg3_int) =\ struct.unpack_from("<BBBBBBHHHHiii", data, 0) header_length = 26 spikedatalen = len(data) - header_length t_tic = arg1_int last_time_packet_recieved = datetime.datetime.now() for spike in range(0, spikedatalen, 4): spikeWord = struct.unpack_from("<I", data, spike + header_length)[0] x = packet_conversions.get_x_from_key(spikeWord) y = packet_conversions.get_y_from_key(spikeWord) p = packet_conversions.get_p_from_key(spikeWord) nid = packet_conversions.get_nid_from_key(spikeWord) # logger.debug("received packet from {},{},{}".format(x,y,p)) self.visualiser.spike_recieved({'coords':[x,y,p], 'neuron_id':nid, 'tag': tag_byte, 'time_in_ticks': t_tic, 'spike_word': spikeWord}) else:#create fake spikes t_tic = self.generate_fake_spikes(packet_count, t_tic) except socket.timeout: pass except Exception as e: if not self.done: traceback.print_exc() logger.debug("[visualiser_listener] Error receiving data: %s" % e)
def convert_normal_pop_spike_to_x_y(self, spike_word): ''' takes the spike_word (key) and converts it into a neuron id, for the vertex it then converts the neuron id into a x and y coord and adds one to the colour ''' neuron_id = packet_conversions.get_nid_from_key(spike_word) x = packet_conversions.get_x_from_key(spike_word) y = packet_conversions.get_y_from_key(spike_word) p = packet_conversions.get_p_from_key(spike_word) subvert = self.locate_subvert(x, y, p) real_neuron_id = subvert.lo_atom + neuron_id x_coord = math.floor(real_neuron_id/self.y_dim) y_coord = real_neuron_id - (x_coord * self.y_dim) return x_coord, y_coord, 1
def convert_normal_pop_spike_to_x_y(self, spike_word): ''' takes the spike_word (key) and converts it into a neuron id, for the vertex it then converts the neuron id into a x and y coord and adds one to the colour ''' neuron_id = packet_conversions.get_nid_from_key(spike_word) x = packet_conversions.get_x_from_key(spike_word) y = packet_conversions.get_y_from_key(spike_word) p = packet_conversions.get_p_from_key(spike_word) subvert = self.locate_subvert(x, y, p) real_neuron_id = subvert.lo_atom + neuron_id x_coord = math.floor(real_neuron_id / self.y_dim) y_coord = real_neuron_id - (x_coord * self.y_dim) return x_coord, y_coord, 1