What’s new?

Current

Changelog

Bug

  • Fix GUI over-plotting of loaded data where the app stalled and did not plot RMSE, by George Dang in #869

  • Fix scaling and smoothing of loaded data dipoles to the GUI, by George Dang in #892

API

0.4

Changelog

  • Fix bug in add_poisson_drive() where an error is thrown when passing an int for rate_constant when cell_specific=True, by Dylan Daniels in #818

  • Fix bug in add_poisson_drive() where an error is thrown when passing a float for rate_constant when cell_specific=False, by Dylan Daniels in #814

  • Add ability to customize plot colors for each cell section in plot_morphology(), by Nick Tolley in #646

  • Add ability to manually define colors in spike histogram plots, by Nick Tolley in #640

  • Update minimum supported version of Python to 3.8, by Ryan Thorpe in #678.

  • Update GUI to use ipywidgets v8.0.0+ API, by George Dang in #696.

  • Add dependency groups to setup.py and update CI workflows to reference dependency groups, by George Dang in #703.

  • Add ability to specify number of cells in Network, by Nick Tolley in #705

  • Fixed figure annotation overlap in multiple sub-plots, by Camilo Diaz in #741

  • Fix bug in pick_connection() where connections are returned for cases when there should be no valid matches, by George Dang in #739

  • Added check for invalid Axes object in plot_cells() function, by Abdul Samad Siddiqui in #744.

  • Added kwargs options to plot_spikes_hist for adjusting the histogram plots of spiking activity, by Abdul Samad Siddiqui in #732.

  • Added pre defined plot sets for simulated data, by Camilo Diaz in #746

  • Added gui widget to enable/disable synchronous input in simulations, by Camilo Diaz in #750

  • Added gui widgets to save simulation as csv and updated the file upload to support csv data, by Camilo Diaz in #753

  • Added feature to read/write Network configurations to json, by George Dang and Rajat Partani in #757

  • Added NetworkPlotter to visualize and animate network simulations, by Nick Tolley in #649.

  • Added GUI feature to include Tonic input drives in simulations, by Camilo Diaz #773

  • plot_lfp(), plot_dipole(), plot_spikes_hist(), and plot_spikes_raster() now plotted from 0 to tstop. Inputs tmin and tmax are deprecated, by Katharina Duecker in #769

  • Add function convert_to_json() to convert legacy param and json files to new json format, by George Dang in #772

  • Add BatchSimulate for batch simulation capability, by Abdul Samad Siddiqui in #782.

  • Updated plot_spikes_raster logic to include all neurons in network model. Removed GUI exclusion from build, by Abdul Samad Siddiqui in #754.

  • Added GUI feature to read and modify cell parameters, by Camilo Diaz in #806.

  • Add ability to optimize parameters associated with rhythmic drives, by `Carolina Fernandez Pujol`_ in #673.

  • Added features to plot_csd(): to set color of sinks and sources, range of the colormap, and interpolation method to smoothen CSD plot, by Katharina Duecker in #815

  • Cleaned up internal logic in CellResponse, by Nick Tolley in #647.

  • Changed the configuration/parameter file format support of the GUI. Loading of connectivity and drives use a new multi-level json structure that mirrors the structure of the Network object. Flat parameter and json configuration files are no longer supported by the GUI, by George Dang in #837

  • Updated the GUI load drive widget to be able to load tonic biases from a network configuration file. George Dang in #852

  • Added “No. Drive Cells” input widget to the GUI and changed the “Synchronous Input” checkbox to “Cell-Specific” to align with the API George Dang in #861

Bug

  • Fix inconsistent connection mapping from drive gids to cell gids, by Ryan Thorpe in #642.

  • Objective function called by optimize_evoked() now returns a scalar instead of tuple, by Ryan Thorpe in #670.

  • Fix GUI plotting bug due to deprecation of matplotlib color cycling method, by George Dang in #695.

  • Fix loading of drives in the GUI: drives are now overwritten instead of updated, by Mainak Jas in #795.

  • Use np.isin() in place of np.in1d() to address numpy deprecation, by Nick Tolley in :gh:`799.

  • Fix drive seeding so that event times are unique across multiple trials, by Nick Tolley in #810.

  • Fix bug in clear_drives() where network object are not accurately updated, by Nick Tolley in #812.

API

  • write() and read_spikes() now support hdf5 format for read/write Cell response object, by Rajat Partani in #644

  • Connection ‘src_gids’ and ‘target_gids’ are now stored as set objects instead of lists, by Ryan Thorpe in #642.

  • write() and read_dipoles() now support hdf5 format for read/write Dipole object, by Rajat Partani in #648

  • Add ability to optimize parameters associated with evoked drives and plot convergence. User can constrain parameter ranges and specify solver, by `Carolina Fernandez Pujol`_ in #652

  • network.add_tonic_bias() cell-specific tonic bias can now be provided using the argument amplitude in network.add_tonic_bias`, by Camilo Diaz in #766

People who contributed to this release (in alphabetical order):

0.3

Changelog

Bug

  • Fix bugs in drives API to enable: rate constant argument as float; evoked drive with connection probability, by Nick Tolley in #458

  • Allow regular strings as filenames in write() by Mainak Jas in #456.

  • Fix to make network output independent of the order in which drives are added to the network by making the seed of the random process generating spike times in drives use the offset of the gid with respect to the first gid in the population by Mainak Jas in #462.

  • Negative event_seed is no longer allowed by Mainak Jas in #462.

  • Evoked drive optimization no longer assigns a default timing sigma value to a drive if it is not already specified, by Ryan Thorpe in #446.

  • Subsets of trials can be indexed when using plot_spikes_raster() and plot_spikes_hist(), by Nick Tolley in #472.

  • Add option to plot the averaged dipole in plot_dipole when dpl is a list of dipoles, by Huzi Cheng in #475.

  • Fix bug where plot_morphology() did not accurately reflect the shape of the cell being simulated, by Nick Tolley in #481

  • Fix bug where pick_connection() did not return an empty list when searching non existing connections, by Nick Tolley in #515

  • Fix bug in MPIBackend that caused an MPI runtime error (RuntimeError: MPI simulation failed. Return code: 143), when running a simulation with an oversubscribed MPI session on a reduced network, by Ryan Thorpe in #545.

  • Fix bug where pick_connection() failed when searching for connections with a list of cell types, by Nick Tolley in #559

  • Fix bug where add_evoked_drive() failed when adding a drive with just NMDA weights, by Nick Tolley in #611

  • Fix bug where read_params() failed to create a network when legacy mode is False, by Nick Tolley in #614

  • Fix bug where plot_dipole() failed to check the instance type of Dipole, by Rajat Partani in #606

API

  • Optimization of the evoked drives can be conducted on any Network template model by passing a Network instance directly into optimize_evoked(). Simulations run during optimization can now consist of multiple trials over which the simulated dipole is averaged, by Ryan Thorpe in #446.

  • plot_dipole now supports separate visualizations of different layers, by Huzi Cheng in #479.

  • Current source density (CSD) can now be calculated with calculate_csd2d() and plotted with plot_csd(). The method for plotting local field potential (LFP) is now found at plot_lfp(), by Steven Brandt and Ryan Thorpe in #517.

  • Recorded voltages/currents from the soma, as well as all sections, are enabled by setting either record_vsec or record_isec to ‘all’ or ‘soma’ in simulate_dipole(). Recordings are now accessed through vsec and isec, by Nick Tolley in #502.

  • legacy_mode is now set to False by default in all for all Network objects, by Nick Tolley and Ryan Thorpe in #619.

  • Recorded calcium conncetration from the soma, as well as all sections, are enabled by setting record_ca to soma or all in simulate_dipole(). Recordings are accessed through ca, by Katharina Duecker in #804

People who contributed to this release (in alphabetical order):

0.2

Notable Changes

  • Local field potentials can now be recorded during simulations [Example]

  • Ability to optimize parameters to reproduce event related potentials from real data [Example]

  • Published models using HNN were added and can be loaded via dedicated functions

  • Several improvements enabling easy modification of connectivity and cell properties [Example]

  • Improved visualization including spectral analysis, connectivity, and cell morphology

Changelog

Bug

API

  • New API for defining cell-cell connections. Custom connections can be added with add_connection(), by Nick Tolley in #276

  • Remove L2Pyr, L5Pyr, L2Basket, and L5Basket classes in favor of instantiation through functions and a more consistent Cell class by Mainak Jas in #322

  • Remove parameter distribution in add_bursty_drive(). The distribution is now Gaussian by default, by Mainak Jas in #330

  • New API for accessing and modifying Cell attributes (e.g., synapse and biophysics parameters) as cells are now instantiated from template cells specified in a Network instance’s cell_types attribute by Ryan Thorpe in #321

  • New API for network creation. The default network is now created with net = jones_2009_model(params), by Nick Tolley in #318

  • Replace parameter T with tstop in add_tonic_bias() and create_tonic_bias() to be more consistent with other functions and improve readability, by Kenneth Loi in #354

  • Deprecated postproc argument in simulate_dipole(), whereby user should explicitly smooth and scale resulting dipoles, by Christopher Bailey in #372

  • Number of drive cells and their connectivity can now be specified through the n_drive_cells and cell_specific arguments in Network.add_xxx_drive() methods, replacing use of repeats and sync_within_trial, by Ryan Thorpe in #383

  • Simulation end time and integration time have to be specified now with tstop and dt in simulate_dipole(), by Mainak Jas in #397

  • CellResponse.reset() method is not supported any more, by Mainak Jas in #397

  • Target cell types and their connections are created for each drive according to the synaptic weight and delay dictionaries assigned in Network.add_xxx_drive(), by Ryan Thorpe in #369

  • Cell objects can no longer be accessed from Network as the cells attribute has been removed, by Ryan Thorpe in #436

People who contributed to this release (in alphabetical order):

0.1

Changelog

Bug

  • Fix missing autapses in network construction, by Mainak Jas in #50

  • Fix rhythmic input feed, by Ryan Thorpe in #98

  • Fix bug introduced into rhythmic input feed and add test, by Christopher Bailey in #102

  • Fix bug in amplitude of delay (for connection between L2 Basket and Gaussian feed) being passed incorrectly, by Mainak Jas in #146

  • Connections now cannot be removed by setting the weights to 0., by Mainak Jas and Ryan Thorpe in #162

  • MPI and Joblib backends now apply jitter across multiple trials identically, by Ryan Thorpe in #171

  • Fix bug in Poisson input where the first spike was being missed after the start time, by Mainak Jas in #204

  • Fix bug in network to add empty spike when empty file is read in, by Samika Kanekar and Ryan Thorpe in #207

API

  • Make a context manager for Network class, by Mainak Jas and Blake Caldwell in #86

  • Create Spikes class, add write methods and read functions for Spikes and Dipole classes, by Ryan Thorpe in #96

  • Only specify n_jobs when instantiating the JoblibBackend, by Blake Caldwell in #79

  • Make a context manager for parallel backends (JoblibBackend, MPIBackend), by Blake Caldwell in #79

  • Add average_dipoles() function, by Blake Caldwell in #156

  • New API for defining external drives and biases to network. By default, a Network is created without drives, which are added using class methods. The argument add_drives_from_params controls this behaviour, by Christopher Bailey in #221

  • Examples apply random state seeds that reproduce the output of HNN GUI documentation, by Christopher Bailey in #221

  • Force conversion to nAm (from fAm) for output of simulate_dipole() regardless of postproc-argument, which now only controls parameter file-based smoothing and scaling, by Christopher Bailey in #264

People who contributed to this release (in alphabetical order):