def test__issue_285(self): train = SpikeTrain([3, 4, 5] * pq.s, t_stop=10.0) unit = Unit() train.unit = unit unit.spiketrains.append(train) epoch = Epoch([0, 10, 20], [2, 2, 2], ["a", "b", "c"], units="ms") blk = Block() seg = Segment() seg.spiketrains.append(train) seg.epochs.append(epoch) epoch.segment = seg blk.segments.append(seg) reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.spiketrains[0].unit, Unit) self.assertIsInstance(r_seg.epochs[0], Epoch)
def test__issue_285(self): # Spiketrain train = SpikeTrain([3, 4, 5] * pq.s, t_stop=10.0) unit = Unit() train.unit = unit unit.spiketrains.append(train) epoch = Epoch(np.array([0, 10, 20]), np.array([2, 2, 2]), np.array(["a", "b", "c"]), units="ms") blk = Block() seg = Segment() seg.spiketrains.append(train) seg.epochs.append(epoch) epoch.segment = seg blk.segments.append(seg) reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.spiketrains[0].unit, Unit) self.assertIsInstance(r_seg.epochs[0], Epoch) os.remove('blk.pkl') # Epoch epoch = Epoch(times=np.arange(0, 30, 10) * pq.s, durations=[10, 5, 7] * pq.ms, labels=np.array(['btn0', 'btn1', 'btn2'], dtype='U')) epoch.segment = Segment() blk = Block() seg = Segment() seg.epochs.append(epoch) blk.segments.append(seg) reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.epochs[0].segment, Segment) os.remove('blk.pkl') # Event event = Event(np.arange(0, 30, 10) * pq.s, labels=np.array(['trig0', 'trig1', 'trig2'], dtype='U')) event.segment = Segment() blk = Block() seg = Segment() seg.events.append(event) blk.segments.append(seg) reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.events[0].segment, Segment) os.remove('blk.pkl') # IrregularlySampledSignal signal = IrregularlySampledSignal([0.0, 1.23, 6.78], [1, 2, 3], units='mV', time_units='ms') signal.segment = Segment() blk = Block() seg = Segment() seg.irregularlysampledsignals.append(signal) blk.segments.append(seg) blk.segments[0].block = blk reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.irregularlysampledsignals[0].segment, Segment) os.remove('blk.pkl')
def test__issue_285(self): ##Spiketrain train = SpikeTrain([3, 4, 5] * pq.s, t_stop=10.0) unit = Unit() train.unit = unit unit.spiketrains.append(train) epoch = Epoch([0, 10, 20], [2, 2, 2], ["a", "b", "c"], units="ms") blk = Block() seg = Segment() seg.spiketrains.append(train) seg.epochs.append(epoch) epoch.segment = seg blk.segments.append(seg) reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.spiketrains[0].unit, Unit) self.assertIsInstance(r_seg.epochs[0], Epoch) os.remove('blk.pkl') ##Epoch train = Epoch(times=np.arange(0, 30, 10)*pq.s,durations=[10, 5, 7]*pq.ms,labels=np.array(['btn0', 'btn1', 'btn2'], dtype='S')) train.segment = Segment() unit = Unit() unit.spiketrains.append(train) blk = Block() seg = Segment() seg.spiketrains.append(train) blk.segments.append(seg) reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.spiketrains[0].segment, Segment) os.remove('blk.pkl') ##Event train = Event(np.arange(0, 30, 10)*pq.s,labels=np.array(['trig0', 'trig1', 'trig2'],dtype='S')) train.segment = Segment() unit = Unit() unit.spiketrains.append(train) blk = Block() seg = Segment() seg.spiketrains.append(train) blk.segments.append(seg) reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.spiketrains[0].segment, Segment) os.remove('blk.pkl') ##IrregularlySampledSignal train = IrregularlySampledSignal([0.0, 1.23, 6.78], [1, 2, 3],units='mV', time_units='ms') train.segment = Segment() unit = Unit() train.channel_index = ChannelIndex(1) unit.spiketrains.append(train) blk = Block() seg = Segment() seg.spiketrains.append(train) blk.segments.append(seg) blk.segments[0].block = blk reader = PickleIO(filename="blk.pkl") reader.write(blk) reader = PickleIO(filename="blk.pkl") r_blk = reader.read_block() r_seg = r_blk.segments[0] self.assertIsInstance(r_seg.spiketrains[0].segment, Segment) self.assertIsInstance(r_seg.spiketrains[0].channel_index, ChannelIndex) os.remove('blk.pkl')
from spikeAnalysis import * from bayes_analyses import * from neo_utils import * from mechanics import * from neo.io import PickleIO as PIO import os import glob p = r'C:\Users\guru\Box Sync\__VG3D\deflection_trials\data' p_save = r'C:\Users\guru\Box Sync\__VG3D\deflection_trials\figs' files = glob.glob(os.path.join(p, '*.pkl')) for f in files: print os.path.basename(f) fid = PIO(f) blk = fid.read_block() for unit in blk.channel_indexes[-1].units: cell_num = int(unit.name[-1]) root = get_root(blk, cell_num) M = get_var(blk)[0] M = replace_NaNs(M) sp = concatenate_sp(blk) st = sp[unit.name] kernel = elephant.kernels.GaussianKernel(5 * pq.ms) r = np.array( instantaneous_rate(st, sampling_period=pq.ms, kernel=kernel)).ravel() Mdot = get_deriv(M) fig = plt.figure() axy = fig.add_subplot(121) axz = fig.add_subplot(122)
def main(p,file,save_path): pre = 10*pq.ms post = 10*pq.ms fid = PIO(file) blk = fid.read_block() FR,ISI,contact_trains = get_contact_sliced_trains(blk,pre=pre,post=post) binsize = 2*pq.ms for unit in blk.channel_indexes[-1].units: root = blk.annotations['ratnum'] + blk.annotations['whisker'] + 'c{}'.format(unit.name[-1]) trains = contact_trains[unit.name] all_isi = np.array([]) CV_array = np.array([]) LV_array = np.array([]) for interval in ISI[unit.name]: all_isi = np.concatenate([all_isi,interval]) if np.all(np.isfinite(interval)): CV_array = np.concatenate([CV_array,[cv(interval)]]) LV_array = np.concatenate([LV_array,[lv(interval)]]) all_isi = all_isi * interval.units CV_array = CV_array CV = np.mean(CV_array) LV = np.mean(LV_array) ## calculate data for PSTH b,durations = get_binary_trains(contact_trains[unit.name]) b_times = np.where(b)[1] * pq.ms#interval.units b_times-=pre PSTH,t_edges = np.histogram(b_times,bins=np.arange(-np.array(pre),np.max(durations)+np.array(post),float(binsize))) plt.bar(t_edges[:-1], PSTH.astype('f8')/len(durations)/binsize*1000, width=float(binsize), align='edge', alpha=0.8 ) ax = plt.gca() thresh = 500 * pq.ms ax.set_xlim(-15, thresh.__int__()) ax.set_xlabel('Time after contact (ms)') ax.set_ylabel('Spikes per second') ax.set_title('PSTH for: {}'.format(root)) plt.savefig(os.path.join(save_path,root+'_PSTH.svg')) plt.close('all') # ============================================ # PLOT ISIs plt.figure() thresh = 100 * pq.ms if len(all_isi[np.logical_and(np.isfinite(all_isi), all_isi < thresh)])==0: return ax = sns.distplot(all_isi[np.logical_and(np.isfinite(all_isi), all_isi < thresh)], bins=np.arange(0,100,1), kde_kws={'color':'k','lw':3,'alpha':0.5,'label':'KDE'}) ax.set_xlabel('ISI '+all_isi.dimensionality.latex) ax.set_ylabel('Percentage of all ISIs') a_inset = plt.axes([.55, .5, .2, .2], facecolor='w') a_inset.grid(color='k',linestyle=':',alpha=0.4) a_inset.axvline(CV,color='k',lw=0.5) a_inset.set_title('CV = {:0.2f}\nLV = {:0.2f}'.format(CV,LV)) a_inset.set_xlabel('CV') a_inset.set_ylabel('# of Contacts') sns.distplot(CV_array,color='g',kde=False) ax.set_title('ISI distribution for {}'.format(root)) plt.savefig(os.path.join(save_path, root + '_ISI.svg')) plt.close('all')