def plot_raster_stim_trial(spikes, trials, clusters, stim, trial, period, rec, fs, plot_params=None, ax=None): ''' Plots a spike raster for all cells for a single trial of a single stimulus ''' nclus = len(clusters) cluIDs = clusters['cluster'].values stim_trials = trials[trials['stimulus']==stim] this_trial = stim_trials.iloc[trial] stim_start = this_trial['time_samples'] stim_end = this_trial['stimulus_end'] stim_end_seconds = np.unique((stim_end - stim_start)/fs)[0] window = [period[0], stim_end_seconds+period[1]] raster_data = [] for clu_num, clu in enumerate(cluIDs): sptrain = get_spiketrain(rec, stim_start, clu, spikes, window, fs) raster_data.append(sptrain) if plot_params == None: do_raster(raster_data, window, [0, stim_end_seconds], ax) else: do_raster(raster_data, window, [0, stim_end_seconds], ax, spike_linewidth=plot_params['spike_linewidth'], spike_color=plot_params['spike_color'], tick_linewidth=plot_params['tick_linewidth'], tick_color=plot_params['tick_color'])
def plot_trial_raster_emily(spikes, trials, clusters, trialID, stim, period, rec, fs, ax=None, **kwargs): stim_trials = trials[trials['stimulus'] == stim] stim_recs = stim_trials['recording'].values ntrials = len(stim_trials) stim_starts = stim_trials['time_samples'].values stim_ends = stim_trials['stimulus_end'].values stim_start = stim_starts[trialID] stim_end = stim_ends[trialID] stim_end_seconds = (stim_end - stim_start) / fs srec = stim_recs[trialID] clusterIDs = clusters['cluster'].values window = [period[0], stim_end_seconds + period[1]] raster_data = [] for clu in clusterIDs: sptrain = get_spiketrain(srec, stim_start, clu, spikes, window, fs) raster_data.append(sptrain) rasters.do_raster(raster_data, window, [0, stim_end_seconds], ax, **kwargs)
def plot_raster_stim_trial(spikes, trials, clusters, stim, trial, period, rec, fs, plot_params=None, ax=None): ''' Plots a spike raster for all cells for a single trial of a single stimulus ''' nclus = len(clusters) cluIDs = clusters['cluster'].values stim_trials = trials[trials['stimulus'] == stim] this_trial = stim_trials.iloc[trial] stim_start = this_trial['time_samples'] stim_end = this_trial['stimulus_end'] stim_end_seconds = np.unique((stim_end - stim_start) / fs)[0] window = [period[0], stim_end_seconds + period[1]] raster_data = [] for clu_num, clu in enumerate(cluIDs): sptrain = get_spiketrain(rec, stim_start, clu, spikes, window, fs) raster_data.append(sptrain) if plot_params == None: do_raster(raster_data, window, [0, stim_end_seconds], ax) else: do_raster(raster_data, window, [0, stim_end_seconds], ax, spike_linewidth=plot_params['spike_linewidth'], spike_color=plot_params['spike_color'], tick_linewidth=plot_params['tick_linewidth'], tick_color=plot_params['tick_color'])
def plot_trial_raster_emily(spikes, trials, clusters, trialID, stim, period, rec, fs, ax=None, **kwargs): ''' Plots TODO Parameters ------ spikes : pandas dataframe spike dataframe from core trials : pandas dataframe trials dataframe from events clusters : TODO trialID : int ID number of the trial you wish to make the raster for stim : str Name of the stimulus to plot raster for period : list of floats Time window for the raster: [Seconds_pre_stimulus_onset, Seconds_post_stimulus_end] fs : float Sampling rate ax : Matplotlib axes handle, optional Axes on which to produce raster. Default gca. kwargs : keyword arguments are passed to the do_raster method ''' stim_trials = trials[trials['stimulus'] == stim] stim_recs = stim_trials['recording'].values ntrials = len(stim_trials) stim_starts = stim_trials['time_samples'].values stim_ends = stim_trials['stimulus_end'].values stim_start = stim_starts[trialID] stim_end = stim_ends[trialID] stim_end_seconds = (stim_end - stim_start) / fs srec = stim_recs[trialID] clusterIDs = clusters['cluster'].values window = [period[0], stim_end_seconds + period[1]] raster_data = [] for cluster in clusterIDs: sptrain = get_spiketrain(srec, stim_start, cluster, spikes, window, fs) raster_data.append(sptrain) do_raster(raster_data, window, [0, stim_end_seconds], ax, **kwargs)
def calc_avg_gaussian_psth(spikes, trials, clusterID, stim, period, rec, fs, sigma=0.05, alpha=0.95): ''' Calculates a gaussian smoothed average psth over all trials of stim for a given cluster. Parameters ------ spikes : dataframe spike data trials : dataframe trial data clusterID : int cluster ID to compute stim : str Name of stimulus to calculate psth for period : list of floats Time window for the raster: [Seconds_pre_stimulus_onset, Seconds_post_stimulus_end] rec : int recording id fs : float sampling rate sigma : float stand deviation for gaussian alpha : float confidence level Returns ------ avg_psth : numpy array the average gaussian psth std_psth : standard deviation of the psth conf_ints : confidence intervals times : times for the signals ''' stim_trials = trials[trials['stimulus'] == stim] ntrials = len(stim_trials) stim_starts = stim_trials['time_samples'].values stim_ends = stim_trials['stimulus_end'].values stim_end_seconds = np.unique((stim_ends - stim_starts) / fs)[0] window = [period[0], stim_end_seconds + period[1]] npts = np.floor(1.0 * (window[1] - window[0]) * fs) times = np.linspace(window[0], window[1], npts) psths = np.zeros((ntrials, npts)) for trial, start in enumerate(stim_starts): sptrain = get_spiketrain(rec, start, clusterID, spikes, window, fs) psths[trial, :] = gaussian_psth_func(times, sptrain, sigma) avg_psth = np.mean(psths, 0) std_psth = np.std(psths, 0) conf_ints = stats.t.interval(alpha, df=ntrials - 1, loc=avg_psth, scale=std_psth / np.sqrt(ntrials)) return (avg_psth, std_psth, conf_ints, times)
def plot_raster_cell_stim_emily(spikes, trials, clusterID, stim, period, rec, fs, ax=None, **kwargs): ''' Plots a spike raster for a single cell and stimulus Parameters ------ spikes : pandas dataframe spike dataframe from core trials : pandas dataframe trials dataframe from events clusterID : int ID number of the cluster you wish to make the raster for stim : str Name of the stimulus you wish to plot cluster's activity for period : list of floats Time window for the raster: [Seconds_pre_stimulus_onset, Seconds_post_stimulus_end] rec : int Recording ID fs : float Sampling rate plot_params : dict Drawing parameters: 'spike_linewidth' - linewidth of ticks for spikes 'tick_linewidth' - linewidth of ticks for event markers 'spike_color' - color of spike ticks 'tick_color' - color of event ticks ax : Matplotlib axes handle, optional Axes on which to produce the raster. Default is to use gca kwargs : keyword arguments are passed to the do_raster method ''' stim_trials = trials[trials['stimulus'] == stim] stim_recs = stim_trials['recording'].values ntrials = len(stim_trials) stim_starts = stim_trials['time_samples'].values stim_ends = stim_trials['stimulus_end'].values stim_end_seconds = np.unique((stim_ends - stim_starts) / fs)[0] window = [period[0], stim_end_seconds + period[1]] raster_data = [] for trial, stpl in enumerate(zip(stim_starts, stim_recs)): start = stpl[0] srec = stpl[1] sptrain = get_spiketrain(srec, start, clusterID, spikes, window, fs) raster_data.append(sptrain) do_raster(raster_data, window, [0, stim_end_seconds], ax, **kwargs)
def plot_raster_cell_stim(spikes, trials, clusterID, stim, period, rec, fs, ax=None, stim_ref='stim', **kwargs): ''' Plots a spike raster for a single cell and stimulus Parameters ------ spikes : pandas dataframe spike dataframe from core trials : pandas dataframe trials dataframe from events clusterID : int ID number of the cluster you wish to make the raster for stim : str Name of the stimulus you wish to plot cluster's activity for period : list of floats Time window for the raster: [Seconds_pre_stimulus_onset, Seconds_post_stimulus_end] rec : int Recording ID fs : float Sampling rate plot_params : dict Drawing parameters: 'spike_linewidth' - linewidth of ticks for spikes 'tick_linewidth' - linewidth of ticks for event markers 'spike_color' - color of spike ticks 'tick_color' - color of event ticks ax : Matplotlib axes handle, optional Axes on which to produce the raster. Default is to use gca kwargs : keyword arguments are passed to the do_raster method ''' stim_trials = trials[trials['stimulus'] == stim] ntrials = len(stim_trials) stim_starts = stim_trials['time_samples'].values stim_ends = stim_trials['stimulus_end'].values stim_end_seconds = np.unique((stim_ends - stim_starts) / fs)[0] if stim_ref == 'stim': window = [period[0], stim_end_seconds + period[1]] elif stim_ref == 'abs': window = [period[0], period[1]] raster_data = [] for trial, start in enumerate(stim_starts): sptrain = get_spiketrain(rec, start, clusterID, spikes, window, fs) raster_data.append(sptrain) ax = do_raster(raster_data, window, [0, stim_end_seconds], ntrials, ax, **kwargs) return ax
def plot_raster_stim_trial(spikes, trials, clusters, stim, trial, period, rec, fs, ax=None, **kwargs): ''' Plots a raster of all clusters for a given stimulus for a given trial ''' stim_trials = trials[trials['stimulus']==stim] ntrials = len(stim_trials) stim_starts = stim_trials['time_samples'].values stim_ends = stim_trials['stimulus_end'].values stim_end_seconds = np.unique((stim_ends - stim_starts)/fs)[0] window = [period[0], stim_end_seconds+period[1]] raster_data = [] assert (trial < ntrials) start = stim_starts[trial] for cell in clusters['cluster'].values: sptrain = get_spiketrain(rec, start, cell, spikes, window, fs) raster_data.append(sptrain) do_raster(raster_data, window, [0, stim_end_seconds], ax, **kwargs)
def plot_trial_raster_emily(spikes, trials, clusters, trialID, stim, period, rec, fs, ax=None, **kwargs): stim_trials = trials[trials['stimulus']==stim] stim_recs = stim_trials['recording'].values ntrials = len(stim_trials) stim_starts = stim_trials['time_samples'].values stim_ends = stim_trials['stimulus_end'].values stim_start = stim_starts[trialID] stim_end = stim_ends[trialID] stim_end_seconds = (stim_end - stim_start)/fs srec = stim_recs[trialID] clusterIDs = clusters['cluster'].values window = [period[0], stim_end_seconds+period[1]] raster_data = [] for clu in clusterIDs: sptrain = get_spiketrain(srec, stim_start, clu, spikes, window, fs) raster_data.append(sptrain) rasters.do_raster(raster_data, window, [0, stim_end_seconds], ax, **kwargs)