Source code for simplecochlea.spikes.spikepacket

import matplotlib.pyplot as plt


[docs]class SpikePacket: def __init__(self, spike_list, packet_size, overlap=0): # if not type(spike_list) == SpikeList: # raise ValueError('Argument spike_list must be a SpikeList object') if not type(packet_size) == int: raise ValueError('Argument packet_size must be a scalar integer') self.spike_list = spike_list self.packet_size = packet_size self.overlap = 0 self.packets, self.spike_ind, self.packet_time = spike_list.convert_to_packet(packet_size, overlap) self.n_spikes = len(spike_list) self.n_packets = len(self.packet_time) self.n_channels = spike_list.n_channels self.name = 'Spike Packet List '.format(spike_list.name) def __str__(self): desc_str = self.name desc_str += '\n{} packets, {} spikes - packet size : {}, overlap : {}'.format(self.n_packets, self.n_spikes, self.packet_size, self.overlap) return desc_str
[docs] def plot(self): f = plt.figure() ax = f.add_subplot(111) ax.imshow(self.packets, origin='lower', aspect='auto') ax.set(xlabel='Packet number', ylabel='Channel', title=self.name) f.show()
# def overlay_same_packet_pattern(spike_packet_list, pattern_ids): # if not type(spike_packet_list) == list: # raise ValueError('Argument spike_packet_list should a be a list of SpikePacket objects') # if not type(spike_packet_list[0]) == SpikePacket: # raise ValueError('Argument spike_packet_list should a be a list of SpikePacket objects') # unique_pattern_ids = np.unique(pattern_ids) # n_max_trials = np.max([len(np.where(pattern_ids == pat_id)[0]) for pat_id in unique_pattern_ids]) # n_patterns = np.unique(pattern_ids).size # f = plt.figure() # trial_colors = sns.color_palette(n_colors=n_max_trials) # for i in range(0, n_patterns): # ax = f.add_subplot(1, n_patterns, i+1) # pattern_i_ind = np.where(pattern_ids == unique_pattern_ids[i])[0] # spkpacket_pattern_i = [spike_packet_list[k] for k in pattern_i_ind] # legend_str = [] # for j, spkpacket in enumerate(spkpacket_pattern_i): # # Shift time origin so that each trial start at the same time # ax.imshow(spkpacket.packets, origin='lower', aspect='auto', alpha=0.2) # ax.set_ylim(0, spkpacket.n_channels) # ax.set(xlabel='time', ylabel='channel', title=spkpacket.spike_list.pattern_names[unique_pattern_ids[i]]) # # ax.legend(legend_str, loc='upper right')