Пример #1
0
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'])
Пример #2
0
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)
Пример #3
0
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'])
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)