brainbox.task.closed_loop

Computes task related output

Functions

differentiate_units

Determine units which significantly differentiate between two task events (e.g.

generate_pseudo_blocks

Generate a pseudo block structure

generate_pseudo_session

Generate a complete pseudo session with biased blocks, all stimulus contrasts, choices and rewards and omissions.

generate_pseudo_stimuli

Generate a block structure with stimuli

responsive_units

Determine responsive neurons by doing a Wilcoxon Signed-Rank test between a baseline period before a certain task event (e.g.

roc_between_two_events

Calcluate area under the ROC curve that indicates how well the activity of the neuron distiguishes between two events (e.g.

roc_single_event

Determine how well neurons respond to a certain task event by calculating the area under the ROC curve between a baseline period before the event and a period after the event.

responsive_units(spike_times, spike_clusters, event_times, pre_time=[0.5, 0], post_time=[0, 0.5], alpha=0.05)[source]

Determine responsive neurons by doing a Wilcoxon Signed-Rank test between a baseline period before a certain task event (e.g. stimulus onset) and a period after the task event.

Parameters
  • spike_times (1D array) – spike times (in seconds)

  • spike_clusters (1D array) – cluster ids corresponding to each event in spikes

  • event_times (1D array) – times (in seconds) of the events from the two groups

  • pre_time (two-element array) – time (in seconds) preceding the event to get the baseline (e.g. [0.5, 0.2] would be a window starting 0.5 seconds before the event and ending at 0.2 seconds before the event)

  • post_time (two-element array) – time (in seconds) to follow the event times

  • alpha (float) – alpha to use for statistical significance

Returns

  • significant_units (ndarray) – an array with the indices of clusters that are significatly modulated

  • stats (1D array) – the statistic of the test that was performed

  • p_values (ndarray) – the p-values of all the clusters

  • cluster_ids (ndarray) – cluster ids of the p-values

differentiate_units(spike_times, spike_clusters, event_times, event_groups, pre_time=0, post_time=0.5, test='ranksums', alpha=0.05)[source]

Determine units which significantly differentiate between two task events (e.g. stimulus left/right) by performing a statistical test between the spike rates elicited by the two events. Default is a Wilcoxon Rank Sum test.

Parameters
  • spike_times (1D array) – spike times (in seconds)

  • spike_clusters (1D array) – cluster ids corresponding to each event in spikes

  • event_times (1D array) – times (in seconds) of the events from the two groups

  • event_groups (1D array) – group identities of the events as either 0 or 1

  • pre_time (float) – time (in seconds) to precede the event times to get the baseline

  • post_time (float) – time (in seconds) to follow the event times

  • test (string) –

    which statistical test to use, options are:

    ’ranksums’ Wilcoxon Rank Sums test ‘signrank’ Wilcoxon Signed Rank test (for paired observations) ‘ttest’ independent samples t-test ‘paired_ttest’ paired t-test

  • alpha (float) – alpha to use for statistical significance

Returns

  • significant_units (1D array) – an array with the indices of clusters that are significatly modulated

  • stats (1D array) – the statistic of the test that was performed

  • p_values (1D array) – the p-values of all the clusters

  • cluster_ids (ndarray) – cluster ids of the p-values

roc_single_event(spike_times, spike_clusters, event_times, pre_time=[0.5, 0], post_time=[0, 0.5])[source]

Determine how well neurons respond to a certain task event by calculating the area under the ROC curve between a baseline period before the event and a period after the event. Values of > 0.5 indicate the neuron respons positively to the event and < 0.5 indicate a negative response.

Parameters
  • spike_times (1D array) – spike times (in seconds)

  • spike_clusters (1D array) – cluster ids corresponding to each event in spikes

  • event_times (1D array) – times (in seconds) of the events from the two groups

  • pre_time (two-element array) – time (in seconds) preceding the event to get the baseline (e.g. [0.5, 0.2] would be a window starting 0.5 seconds before the event and ending at 0.2 seconds before the event)

  • post_time (two-element array) – time (in seconds) to follow the event times

Returns

  • auc_roc (1D array) – the area under the ROC curve

  • cluster_ids (1D array) – cluster ids of the p-values

roc_between_two_events(spike_times, spike_clusters, event_times, event_groups, pre_time=0, post_time=0.25)[source]

Calcluate area under the ROC curve that indicates how well the activity of the neuron distiguishes between two events (e.g. movement to the right vs left). A value of 0.5 indicates the neuron cannot distiguish between the two events. A value of 0 or 1 indicates maximum distinction. Significance is determined by bootstrapping the ROC curves. If 0.5 is not included in the 95th percentile of the bootstrapped distribution, the neuron is deemed to be significant.

Parameters
  • spike_times (1D array) – spike times (in seconds)

  • spike_clusters (1D array) – cluster ids corresponding to each event in spikes

  • event_times (1D array) – times (in seconds) of the events from the two groups

  • event_groups (1D array) – group identities of the events as either 0 or 1

  • pre_time (float) – time (in seconds) to precede the event times

  • post_time (float) – time (in seconds) to follow the event times

Returns

  • auc_roc (1D array) – an array of the area under the ROC curve for every neuron

  • cluster_ids (1D array) – cluster ids of the AUC values

generate_pseudo_blocks(n_trials, factor=60, min_=20, max_=100, first5050=90)[source]

Generate a pseudo block structure

Parameters
  • n_trials (int) – how many trials to generate

  • factor (int) – factor of the exponential

  • min (int) – minimum number of trials per block

  • max (int) – maximum number of trials per block

  • first5050 (int) – amount of trials with 50/50 left right probability at the beginning

Returns

probabilityLeft – array with probability left per trial

Return type

1D array

generate_pseudo_stimuli(n_trials, contrast_set=[0.06, 0.12, 0.25, 1], first5050=90)[source]

Generate a block structure with stimuli

Parameters
  • n_trials (int) – number of trials to generate

  • contrast_set (1D array) – the contrasts that are presented. The default is [0.06, 0.12, 0.25, 1].

  • first5050 (int) – Number of 50/50 trials at the beginning of the session. The default is 90.

Returns

  • p_left (1D array) – probability of left stimulus

  • contrast_left (1D array) – contrast on the left

  • contrast_right (1D array) – contrast on the right

generate_pseudo_session(trials, generate_choices=True)[source]

Generate a complete pseudo session with biased blocks, all stimulus contrasts, choices and rewards and omissions. Biased blocks and stimulus contrasts are generated using the same statistics as used in the actual task. The choices of the animal are generated using the actual psychometrics of the animal in the session. For each synthetic trial the choice is determined by drawing from a Bernoulli distribution that is biased according to the proportion of times the animal chose left for the stimulus contrast, side, and block probability. No-go trials are ignored in the generating of the synthetic choices.

Parameters
  • trials (DataFrame) – Pandas dataframe with columns as trial vectors loaded using ONE

  • generate_choices (bool) – whether to generate the choices (runs faster without)

Returns

pseudo_trials – a trials dataframe with synthetically generated trials

Return type

DataFrame