def add_LPU(self, data_file, gexf_file=None, LPU=None, win=None, is_input=False): ''' Add data associated with a specific LPU to a visualization. To add a plot containing neurons from a particular LPU, the LPU needs to be added to the visualization using this function. Note that outputs from multiple neurons can be visualized using the same visualizer object. Parameters ---------- data_file: str Location of the h5 file generated by neurokernel containing the output of the LPU gexf_file: str Location of the gexf file describing the LPU. If not specified, it will be assumed that the h5 file contains input. LPU: str Name of the LPU. Will be used as identifier to add plots. For input signals, the name of the LPU will be prepended with 'input_'. For example:: V.add_LPU('vision_in.h5', LPU='vision') will create the LPU identifier 'input_vision'. Therefore, adding a plot depicting this input can be done by:: V.add_plot({''type':'image',imlim':[-0.5,0.5]},LPU='input_vision) win: slice/list Can be used to limit the visualization to a specific time window. ''' if gexf_file and not is_input: self._graph[LPU] = nx.read_gexf(gexf_file) # Map neuron ids to index into output data array: self._id_to_data_idx[LPU] = {m:i for i, m in \ enumerate(sorted([int(n) for n, k in \ self._graph[LPU].nodes_iter(True) if k['spiking']]))} else: if LPU: LPU = 'input_' + str(LPU) else: LPU = 'input_' + str(len(self._data)) if gexf_file: self._graph[LPU] = nx.read_gexf(gexf_file) if not LPU: LPU = len(self._data) self._data[LPU] = np.transpose(sio.read_array(data_file)) if win is not None: self._data[LPU] = self._data[LPU][:, win] if self._maxt: self._maxt = min(self._maxt, self._data[LPU].shape[1]) else: self._maxt = self._data[LPU].shape[1]
def add_LPU(self, data_file, gexf_file=None, LPU=None, win=None, is_input=False): ''' Add data associated with a specific LPU to a visualization. To add a plot containing neurons from a particular LPU, the LPU needs to be added to the visualization using this function. Note that outputs from multiple neurons can be visualized using the same visualizer object. Parameters ---------- data_file: str Location of the h5 file generated by neurokernel containing the output of the LPU gexf_file: str Location of the gexf file describing the LPU. If not specified, it will be assumed that the h5 file contains input. LPU: str Name of the LPU. Will be used as identifier to add plots. For input signals, the name of the LPU will be prepended with 'input_'. For example:: V.add_LPU('vision_in.h5', LPU='vision') will create the LPU identifier 'input_vision'. Therefore, adding a plot depicting this input can be done by:: V.add_plot({''type':'image',imlim':[-0.5,0.5]},LPU='input_vision) win: slice/list Can be used to limit the visualization to a specific time window. ''' if gexf_file and not is_input: self._graph[LPU] = nx.read_gexf(gexf_file) # Map neuron ids to index into output data array: self._id_to_data_idx[LPU] = {m:i for i, m in \ enumerate(sorted([int(n) for n, k in \ self._graph[LPU].nodes_iter(True) if k['spiking']]))} else: if LPU: LPU = 'input_' + str(LPU) else: LPU = 'input_' + str(len(self._data)) if gexf_file: self._graph[LPU] = nx.read_gexf(gexf_file) if not LPU: LPU = len(self._data) self._data[LPU] = np.transpose(sio.read_array(data_file)) if win is not None: self._data[LPU] = self._data[LPU][:,win] if self._maxt: self._maxt = min(self._maxt, self._data[LPU].shape[1]) else: self._maxt = self._data[LPU].shape[1]
def add_LPU(self, data_file, gexf_file=None, LPU=None, win=None): ''' Add data associated with a specific LPU to a visualization. To add a plot containing neurons from a particular LPU, the LPU needs to be added to the visualization using this function. Not that outputs from multiple neurons can be visualized using the same visualizer object. Parameters ---------- data_file: str Location of the h5 file generated by neurokernel containing the output of the LPU gexf_file: str Location of the gexf file describing the LPU. If not specified, it will be assumed that the h5 file contains input. LPU: str Name of the LPU. Will be used as identifier to add plots. ''' if gexf_file: self._graph[LPU] = nx.read_gexf(gexf_file) else: if LPU: LPU = 'input_' + str(LPU) else: LPU = 'input_' + str(len(self._data)) if not LPU: LPU = len(self._data) self._data[LPU] = np.transpose(sio.read_array(data_file)) if win is not None: self._data[LPU] = self._data[LPU][:,win] if self._maxt: self._maxt = min(self._maxt, self._data[LPU].shape[1]) else: self._maxt = self._data[LPU].shape[1]
def add_LPU(self, data_file, gexf_file=None, LPU=None, win=None, is_input=False, graph=None): """ Add data associated with a specific LPU to a visualization. To add a plot containing neurons from a particular LPU, the LPU needs to be added to the visualization using this function. Note that outputs from multiple neurons can be visualized using the same visualizer object. The IDs specified in the arguments passed to `add_plot()` are assumed to be indices into array stored in the HDF5 file. Parameters ---------- data_file : str Location of the HDF5 file generated by neurokernel containing the output of the LPU gexf_file : str Location of the gexf file describing the LPU. If not specified, it will be assumed that the HDF5 file contains input. LPU : str Name of the LPU. Will be used as identifier to add plots. For input signals, the name of the LPU will be prepended with 'input_'. For example:: V.add_LPU('vision_in.h5', LPU='vision') will create the LPU identifier 'input_vision'. Therefore, adding a plot depicting this input can be done by:: V.add_plot({''type':'image',imlim':[-0.5,0.5]},LPU='input_vision) win : slice/list Can be used to limit the visualization to a specific time window. graph : networkx.MultiDiGraph Graph describing LPU. If neither `graph` nor `gexf_file` are specified, the HDF5 file is assumed to contain input. Only one of `graph` or `gexf_file` may be set. """ if (gexf_file or graph) and not is_input: if gexf_file and not graph: self._graph[LPU] = nx.read_gexf(gexf_file) elif graph and not gexf_file: self._graph[LPU] = graph elif graph and gexf_file: raise ValueError('gexf_file and graph cannot be set simultaneously') else: if LPU: LPU = 'input_' + str(LPU) else: LPU = 'input_' + str(len(self._data)) if gexf_file and not graph: self._graph[LPU] = nx.read_gexf(gexf_file) elif graph and not gexf_file: self._graph[LPU] = graph elif graph and gexf_file: raise ValueError('gexf_file and graph cannot be set simultaneously') if not LPU: LPU = len(self._data) self._data[LPU] = np.transpose(sio.read_array(data_file)) if win is not None: self._data[LPU] = self._data[LPU][:,win] if self._maxt: self._maxt = min(self._maxt, self._data[LPU].shape[1]) else: self._maxt = self._data[LPU].shape[1]