neurodynex.tools package

Submodules

neurodynex.tools.input_factory module

neurodynex.tools.input_factory.get_ramp_current(t_start, t_end, unit_time, amplitude_start, amplitude_end, append_zero=True)[source]

Creates a ramp current. If t_start == t_end, then ALL entries are 0.

Parameters:
  • t_start (int) – start of the ramp
  • t_end (int) – end of the ramp
  • unit_time (Brian2 unit) – unit of t_start and t_end. e.g. 0.1*brian2.ms
  • amplitude_start (Quantity) – amplitude of the ramp at t_start. e.g. 3.5*brian2.uamp
  • amplitude_end (Quantity) – amplitude of the ramp at t_end. e.g. 4.5*brian2.uamp
  • append_zero (bool, optional) – if true, 0Amp is appended at t_end+1. Without that trailing 0, Brian reads out the last value in the array (=amplitude_end) for all indices > t_end.
Returns:

Brian2.TimedArray

Return type:

TimedArray

neurodynex.tools.input_factory.get_sinusoidal_current(t_start, t_end, unit_time, amplitude, frequency, direct_current, phase_offset=0.0, append_zero=True)[source]

Creates a sinusoidal current. If t_start == t_end, then ALL entries are 0.

Parameters:
  • t_start (int) – start of the sine wave
  • t_end (int) – end of the sine wave
  • unit_time (Quantity, Time) – unit of t_start and t_end. e.g. 0.1*brian2.ms
  • amplitude (Quantity, Current) – maximum amplitude of the sinus e.g. 3.5*brian2.uamp
  • frequency (Quantity, Hz) – Frequency of the sine. e.g. 0.5*brian2.kHz
  • direct_current (Quantity, Current) – DC-component (=offset) of the current
  • phase_offset (float, Optional) – phase at t_start. Default = 0.
  • append_zero (bool, optional) – if true, 0Amp is appended at t_end+1. Without that trailing 0, Brian reads out the last value in the array for all indices > t_end.
Returns:

Brian2.TimedArray

Return type:

TimedArray

neurodynex.tools.input_factory.get_spikes_current(t_spikes, unit_time, amplitude, append_zero=True)[source]

Creates a two dimensional TimedArray wich has one column for each value in t_spikes. All values in each column are 0 except one, the spike time as specified in t_spikes is set to amplitude. Note: This function is provided to easily insert pulse currents into a cable. For other use of spike input, search the Brian2 documentation for SpikeGeneration.

Parameters:
  • t_spikes (int) – list of spike times
  • unit_time (Quantity, Time) – unit of t_spikes . e.g. 1*brian2.ms
  • amplitude (Quantity, Current) – amplitude of the spike. All spikes have the sampe amplitude
  • append_zero (bool, optional) – if true, 0Amp is appended at t_end+1. Without that trailing 0, Brian reads out the last value in the array for all indices > t_end.
Returns:

Brian2.TimedArray

Return type:

TimedArray

neurodynex.tools.input_factory.get_step_current(t_start, t_end, unit_time, amplitude, append_zero=True)[source]

Creates a step current. If t_start == t_end, then a single entry in the values array is set to amplitude.

Parameters:
  • t_start (int) – start of the step
  • t_end (int) – end of the step
  • unit_time (Brian2 unit) – unit of t_start and t_end. e.g. 0.1*brian2.ms
  • amplitude (Quantity) – amplitude of the step. e.g. 3.5*brian2.uamp
  • append_zero (bool, optional) – if true, 0Amp is appended at t_end+1.
  • that trailing 0, Brian reads out the last value in the array (Without) –
Returns:

Brian2.TimedArray

Return type:

TimedArray

neurodynex.tools.input_factory.get_zero_current()[source]

Returns a TimedArray with one entry: 0 Amp

Returns:TimedArray
neurodynex.tools.input_factory.getting_started()[source]
neurodynex.tools.input_factory.plot_ramp_current_example()[source]

Example for get_ramp_current

neurodynex.tools.input_factory.plot_sinusoidal_current_example()[source]

Example for get_sinusoidal_current

neurodynex.tools.input_factory.plot_step_current_example()[source]

Example for get_step_current.

neurodynex.tools.plot_tools module

neurodynex.tools.plot_tools.plot_ISI_distribution(spike_stats, hist_nr_bins=50, xlim_max_ISI=None)[source]

Computes the ISI distribution of the given spike_monitor and displays the distribution in a histogram

Parameters:
  • spike_stats (neurodynex.tools.spike_tools.PopulationSpikeStats) – statistics of a population activity
  • hist_nr_bins (int) – Number of histrogram bins. Default:50
  • xlim_max_ISI (Quantity) – Default: None. In not None, the upper xlim of the plot is set to xlim_max_ISI. The CV does not change if this bound is set.
Returns:

the figure

neurodynex.tools.plot_tools.plot_network_activity(rate_monitor, spike_monitor, voltage_monitor=None, spike_train_idx_list=None, t_min=None, t_max=None, N_highlighted_spiketrains=3, avg_window_width=1. * msecond, sup_title=None, figure_size=(10, 4))[source]

Visualizes the results of a network simulation: spike-train, population activity and voltage-traces.

Parameters:
  • rate_monitor (PopulationRateMonitor) – rate of the population
  • spike_monitor (SpikeMonitor) – spike trains of individual neurons
  • voltage_monitor (StateMonitor) – optional. voltage traces of some (same as in spike_train_idx_list) neurons
  • spike_train_idx_list (list) – optional. A list of neuron indices whose spike-train is plotted. If no list is provided, all (up to 500) spike-trains in the spike_monitor are plotted. If None, the the list in voltage_monitor.record is used.
  • t_min (Quantity) – optional. lower bound of the plotted time interval. if t_min is None, it is set to the larger of [0ms, (t_max - 100ms)]
  • t_max (Quantity) – optional. upper bound of the plotted time interval. if t_max is None, it is set to the timestamp of the last spike in
  • N_highlighted_spiketrains (int) – optional. Number of spike trains visually highlighted, defaults to 3 If N_highlighted_spiketrains==0 and voltage_monitor is not None, then all voltage traces of the voltage_monitor are plotted. Otherwise N_highlighted_spiketrains voltage traces are plotted.
  • avg_window_width (Quantity) – optional. Before plotting the population rate (PopulationRateMonitor), the rate is smoothed using a window of width = avg_window_width. Defaults is 1.0ms
  • sup_title (String) – figure suptitle. Default is None.
  • figure_size (tuple) – (width,height) tuple passed to pyplot’s figsize parameter.
Returns:

The whole figure Axes: Top panel, Raster plot Axes: Middle panel, population activity Axes: Bottom panel, voltage traces. None if no voltage monitor is provided.

Return type:

Figure

neurodynex.tools.plot_tools.plot_population_activity_power_spectrum(freq, ps, max_freq, average_At=None, plot_f0=False)[source]

Plots the power spectrum of the population activity A(t)

Parameters:
  • freq – frequencies (= x axis)
  • ps – power spectrum of the population activity
  • max_freq (Quantity) – The data is plotted in the interval [-.05*max_freq, max_freq]
  • plot_f0 (bool) – if true, the power at frequency 0 is plotted. Default is False and the value is not plotted.
Returns:

the figure

neurodynex.tools.plot_tools.plot_spike_train_power_spectrum(freq, mean_ps, all_ps, max_freq, nr_highlighted_neurons=2, mean_firing_freqs_per_neuron=None, plot_f0=False)[source]

Visualizes the power spectrum of the spike trains.

Parameters:
  • freq – frequencies (= x axis)
  • mean_ps – average power taken over all neurons (typically all of a subsample).
  • all_ps (dict) – power spectra for each single neuron
  • max_freq (Quantity) – The x-lim of the plot is [-0.05*max_freq, max_freq]
  • mean_firing_freqs_per_neuron (float) – None or the mean firing rate averaged across the neurons. Default is None in which case the value is not shown in the legend
  • plot_f0 (bool) – if true, the power at frequency 0 is plotted. Default is False and the value is not plotted.
Returns:

all_ps[random_neuron_index]

Return type:

the figure and the index of the random neuron for which the PS is computed

neurodynex.tools.plot_tools.plot_voltage_and_current_traces(voltage_monitor, current, title=None, firing_threshold=None, legend_location=0)[source]

plots voltage and current .

Parameters:
  • voltage_monitor (StateMonitor) – recorded voltage
  • current (TimedArray) – injected current
  • title (string, optional) – title of the figure
  • firing_threshold (Quantity, optional) – if set to a value, the firing threshold is plotted.
  • legend_location (int) – legend location. default = 0 (=”best”)
Returns:

the figure

neurodynex.tools.spike_tools module

This the spike_tools submodule provides functions to analyse the Brian2 SpikeMonitors and Brian2 StateMonitors. The code provided here is not optimized for performance and there is no guarantee for correctness.

Relevant book chapters:
class neurodynex.tools.spike_tools.PopulationSpikeStats(nr_neurons, nr_spikes, all_ISI, filtered_spike_trains)[source]

Wraps a few spike-train related properties.

CV

Coefficient of Variation

all_ISI

all ISIs in no specific order

filtered_spike_trains

a time-window filtered copy of the original spike_monitor.all_spike_trains

mean_isi

Mean Inter Spike Interval

nr_neurons

Number of neurons in the original population

nr_spikes

Nr of spikes

std_isi

Standard deviation of the ISI

neurodynex.tools.spike_tools.filter_spike_trains(spike_trains, window_t_min=0. * second, window_t_max=None, idx_subset=None)[source]
creates a new dictionary neuron_idx=>spike_times where all spike_times are in the
half open interval [window_t_min,window_t_max)
Parameters:
  • spike_trains (dict) – a dictionary of spike trains. Typically obtained by calling spike_monitor.spike_trains()
  • window_t_min (Quantity) – Lower bound of the time window: t>=window_t_min. Default is 0ms.
  • window_t_max (Quantity) – Upper bound of the time window: t<window_t_max. Default is None, in which case no upper bound is set.
  • idx_subset (list, optional) – a list of neuron indexes (dict keys) specifying a subset of neurons. Neurons NOT in the key list are NOT added to the resulting dictionary. Default is None, in which case all neurons are added to the resulting list.
Returns:

a filtered copy of spike_trains

neurodynex.tools.spike_tools.get_averaged_single_neuron_power_spectrum(spike_monitor, sampling_frequency, window_t_min, window_t_max, nr_neurons_average=100, subtract_mean=False)[source]
averaged power-spectrum of spike trains in the time window [window_t_min, window_t_max).
The power spectrum of every single neuron’s spike train is computed. Then the average across all single-neuron powers is computed. In order to limit the compuation time, the number of neurons taken to compute the average is limited to nr_neurons_average which defaults to 100
Parameters:
  • spike_monitor (SpikeMonitor) – Brian2 SpikeMonitor
  • sampling_frequency (Quantity) – sampling frequency used to discretize the spike trains.
  • window_t_min (Quantity) – Lower bound of the time window: t>=window_t_min. Spikes before window_t_min are not taken into account (set a lower bound if you want to exclude an initial transient in the population activity)
  • window_t_max (Quantity) – Upper bound of the time window: t<window_t_max.
  • nr_neurons_average (int) – Number of neurons over which the average is taken.
  • subtract_mean (bool) – If true, the mean value of the signal is subtracted before FFT. Default is False
Returns:

freq, mean_ps, all_ps_dict, mean_firing_rate, mean_firing_freqs_per_neuron

neurodynex.tools.spike_tools.get_population_activity_power_spectrum(rate_monitor, delta_f, k_repetitions, T_init=100. * msecond, subtract_mean_activity=False)[source]

Computes the power spectrum of the population activity A(t) (=rate_monitor.rate)

Parameters:
  • rate_monitor (RateMonitor) – Brian2 rate monitor. rate_monitor.rate is the signal being analysed here. The temporal resolution is read from rate_monitor.clock.dt
  • delta_f (Quantity) – The desired frequency resolution.
  • k_repetitions (int) – The data rate_monitor.rate is split into k_repetitions which are FFT’d independently and then averaged in frequency domain.
  • T_init (Quantity) – Rates in the time interval [0, T_init] are removed before doing the Fourier transform. Use this parameter to ignore the initial transient signals of the simulation.
  • subtract_mean_activity (bool) – If true, the mean value of the signal is subtracted. Default is False
Returns:

freqs, ps, average_population_rate

neurodynex.tools.spike_tools.get_spike_stats(voltage_monitor, spike_threshold)[source]

Detects spike times and computes ISI, mean ISI and firing frequency. Note: meanISI and firing frequency are set to numpy.nan if less than two spikes are detected Note: currently only the spike times of the first column in voltage_monitor are detected. Matrix-like monitors are not supported. :param voltage_monitor: A state monitor with at least the fields “v: and “t” :type voltage_monitor: StateMonitor :param spike_threshold: The spike threshold voltage. e.g. -50*b2.mV :type spike_threshold: Quantity

Returns:(nr_of_spikes, spike_times, isi, mean_isi, spike_rate)
Return type:tuple
neurodynex.tools.spike_tools.get_spike_time(voltage_monitor, spike_threshold)[source]

Detects the spike times in the voltage. The spike time is the value in voltage_monitor.t for which voltage_monitor.v[idx] is above threshold AND voltage_monitor.v[idx-1] is below threshold (crossing from below). Note: currently only the spike times of the first column in voltage_monitor are detected. Matrix-like monitors are not supported. :param voltage_monitor: A state monitor with at least the fields “v: and “t” :type voltage_monitor: StateMonitor :param spike_threshold: The spike threshold voltage. e.g. -50*b2.mV :type spike_threshold: Quantity

Returns:A list of spike times (Quantity)
neurodynex.tools.spike_tools.get_spike_train_stats(spike_monitor, window_t_min=0. * second, window_t_max=None)[source]

Analyses the spike monitor and returns a PopulationSpikeStats instance.

Parameters:
  • spike_monitor (SpikeMonitor) – Brian2 spike monitor
  • window_t_min (Quantity) – Lower bound of the time window: t>=window_t_min. The stats are computed for spikes within the time window. Default is 0ms
  • window_t_max (Quantity) – Upper bound of the time window: t<window_t_max. The stats are computed for spikes within the time window. Default is None, in which case no upper bound is set.
Returns:

PopulationSpikeStats

neurodynex.tools.spike_tools.pretty_print_spike_train_stats(voltage_monitor, spike_threshold)[source]

Computes and returns the same values as get_spike_stats. Additionally prints these values to the console. :param voltage_monitor: :param spike_threshold:

Returns:(nr_of_spikes, spike_times, isi, mean_isi, spike_rate)
Return type:tuple

Module contents