What’s new?¶
Current¶
Changelog¶
Add button to delete a single drive on GUI drive windows, by George Dang in #890
Add minimum spectral frequency widget to GUI for adjusting spectrogram frequency axis, by George Dang in #894
Add method to
Network
to modify synaptic gains, by Nick Tolley and George Dang in #897Update GUI to display “L2/3”, by `Austin Soplata`_ in #904
Add argument to change colors of plot_spikes_raster, shortened line lengths to prevent overlap, and added an argument for custom cell types, by George Dang in #895
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¶
Add
spike_times_by_type()
to get cell spiking times organized by cell type, by Mainak Jas in #916.
0.4¶
Changelog¶
Fix bug in
add_poisson_drive()
where an error is thrown when passing an int for rate_constant whencell_specific=True
, by Dylan Daniels in #818Fix bug in
add_poisson_drive()
where an error is thrown when passing a float for rate_constant whencell_specific=False
, by Dylan Daniels in #814Add ability to customize plot colors for each cell section in
plot_morphology()
, by Nick Tolley in #646Add 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 #705Fixed 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 #739Added 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 #757Added
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()
, andplot_spikes_raster()
now plotted from 0 to tstop. Inputs tmin and tmax are deprecated, by Katharina Duecker in #769Add function
convert_to_json()
to convert legacy param and json files to new json format, by George Dang in #772Add
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 #815Cleaned 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()
andread_spikes()
now support hdf5 format for read/write Cell response object, by Rajat Partani in #644Connection ‘src_gids’ and ‘target_gids’ are now stored as set objects instead of lists, by Ryan Thorpe in #642.
write()
andread_dipoles()
now support hdf5 format for read/write Dipole object, by Rajat Partani in #648Add 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¶
Add option to select drives using argument ‘which_drives’ in
optimize_evoked()
, by Mohamed A. Sherif in #478.Changed
conn_seed
default toNone
(from3
) inadd_connection()
, by Mattan Pelah in #492.Add interface to modify attributes of sections in
modify_section()
, by Nick Tolley in #481Add ability to target specific sections when adding drives or connections, by Nick Tolley in #419
Runtime output messages now specify the trial with which each simulation time checkpoint belongs too, by Ryan Thorpe in #546.
Add warning if network drives are not loaded, by Orsolya Beatrix Kolozsvari in #516
Add ability to record voltages and synaptic currents from all sections in
CellResponse
, by Nick Tolley in #502.Add ability to return unweighted RMSE for each optimization iteration in
optimize_evoked()
, by Kaisu Lankinen in #610.
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()
andplot_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 #481Fix bug where
pick_connection()
did not return an empty list when searching non existing connections, by Nick Tolley in #515Fix 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 #559Fix bug where
add_evoked_drive()
failed when adding a drive with just NMDA weights, by Nick Tolley in #611Fix bug where
read_params()
failed to create a network when legacy mode is False, by Nick Tolley in #614Fix 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 aNetwork
instance directly intooptimize_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 withplot_csd()
. The method for plotting local field potential (LFP) is now found atplot_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 throughvsec
andisec
, 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 throughca
, 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¶
Store all connectivity information under
connectivity
before building the network, by Nick Tolley in #276Add new function
plot_cell_morphology()
to visualize cell morphology, by Mainak Jas in #319Compute dipole component in z-direction automatically from cell morphology instead of hard coding, by Mainak Jas in #327
Store
Cell
instances inNetwork
’scells
attribute by Ryan Thorpe in #321Add probability argument to
add_connection()
. Connectivity patterns can also be visualized withplot_connectivity_matrix()
, by Nick Tolley in #318Add function to visualize connections originating from individual cells
plot_cell_connectivity()
, by Nick Tolley in #339Add method for calculating extracellular potentials using electrode arrays
add_electrode_array()
that are stored undernet.rec_array
as a dictionary ofExtracellularArray
containers, by Mainak Jas, Nick Tolley and Christopher Bailey in #329Add function to visualize extracellular potentials from laminar array simulations, by Christopher Bailey in #329
Previously published models can now be loaded via
law_2021_model()
andjones_2009_model()
, by Nick Tolley in #348Add ability to interactivity explore connections in
plot_cell_connectivity()
by Mainak Jas in #376Add
calcium_model()
with a distance dependent calcium channel conductivity, by Nick Tolley and Sarah Pugliese in #348Each drive spike train sampled through an independent process corresponds to a single artificial drive cell, the number of which users can set when adding drives with
n_drive_cells
andcell_specific
, by Ryan Thorpe in #383Add
pick_connection()
to query the indices of specific connections inconnectivity
, by Nick Tolley in #367Drives in
external_drives
no longer contain a ‘conn’ key and theconnectivity
list contains more items when adding drives from a param file or when in legacy mode, by Ryan Thorpe, Mainak Jas, and Nick Tolley in #369Add
optimize_evoked()
to optimize the timing and weights of driving inputs for simulating evoked responses, by Blake Caldwell and Mainak Jas in #77Add method for setting in-plane cell distances and layer separation in the network
set_cell_positions()
, by Christopher Bailey in #370External drives API now accepts probability argument for targeting subsets of cells, by Nick Tolley in #416
Bug¶
Remove rounding error caused by repositioning of NEURON cell sections, by Mainak Jas and Ryan Thorpe in #314
Fix issue where common drives use the same parameters for all cell types, by Nick Tolley in #350
Fix bug where depth of L5 and L2 cells were swapped, by Christopher Bailey in #352
Fix bug where
average_dipoles()
failed when there were less than two dipoles in the input dipole list, by Kenneth Loi in #368Fix bug where
read_spikes()
wasn’t returning aCellResponse
instance with updated spike types, by Ryan Thorpe in #382Dipole.times
andCell_response.times
now reflect the actual integration points instead of the intended times, by Mainak Jas in #397Fix overlapping non-cell-specific drive gid assignment over different ranks in
MPIBackend
, by Ryan Thorpe and Mainak Jas in #399Allow
read_dipoles()
to read dipole from a file with only two columns (times
anddata
), by Mainak Jas in #421
API¶
New API for defining cell-cell connections. Custom connections can be added with
add_connection()
, by Nick Tolley in #276Remove
L2Pyr
,L5Pyr
,L2Basket
, andL5Basket
classes in favor of instantiation through functions and a more consistentCell
class by Mainak Jas in #322Remove parameter
distribution
inadd_bursty_drive()
. The distribution is now Gaussian by default, by Mainak Jas in #330New API for accessing and modifying
Cell
attributes (e.g., synapse and biophysics parameters) as cells are now instantiated from template cells specified in aNetwork
instance’scell_types
attribute by Ryan Thorpe in #321New API for network creation. The default network is now created with
net = jones_2009_model(params)
, by Nick Tolley in #318Replace parameter
T
withtstop
inadd_tonic_bias()
andcreate_tonic_bias()
to be more consistent with other functions and improve readability, by Kenneth Loi in #354Deprecated
postproc
argument insimulate_dipole()
, whereby user should explicitly smooth and scale resulting dipoles, by Christopher Bailey in #372Number of drive cells and their connectivity can now be specified through the
n_drive_cells
andcell_specific
arguments inNetwork.add_xxx_drive()
methods, replacing use ofrepeats
andsync_within_trial
, by Ryan Thorpe in #383Simulation end time and integration time have to be specified now with
tstop
anddt
insimulate_dipole()
, by Mainak Jas in #397CellResponse.reset()
method is not supported any more, by Mainak Jas in #397Target 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 #369Cell objects can no longer be accessed from
Network
as thecells
attribute has been removed, by Ryan Thorpe in #436
People who contributed to this release (in alphabetical order):¶
0.1¶
Changelog¶
Add ability to simulate multiple trials in parallel using joblibs, by Mainak Jas in #44
Rhythmic inputs can now be turned off by setting their conductance weights to 0 instead of setting their start times to exceed the simulation stop time, by Ryan Thorpe in #105
Reader for parameter files, by Blake Caldwell in #80
Add plotting of voltage at soma to inspect firing pattern of cells, by Mainak Jas in #86
Add ability to simulate a single trial in parallel across cores using MPI, by Blake Caldwell in #79
Modify
plot_dipole()
to accept both lists and individual instances of Dipole object, by Nick Tolley in #145Update
plot_hist_input
toplot_spikes_hist()
which can plot histogram of spikes for any cell type, by Nick Tolley in #157Add function to compute mean spike rates with user specified calculation type, by Nick Tolley and Mainak Jas in #155
Add ability to record somatic voltages from all cells, by Nick Tolley in #190
Add ability to instantiate external feed event times of a network prior to building it, by Christopher Bailey in #191
Add ability to record somatic currents from all cells, by Nick Tolley in #199
Add option to turn off dipole postprocessing, by Carmen Kohl in #188
Add ability to add tonic inputs to cell types with
add_tonic_bias()
, by Mainak Jas in #209Modify
plot_spikes_raster()
to display individual cells, by Nick Tolley in #231Add
copy()
method for cloning aNetwork
instance, by Christopher Bailey in #221Add methods for creating input drives and biases to network:
add_evoked_drive()
,add_poisson_drive()
,add_bursty_drive()
andadd_tonic_bias()
, by Christopher Bailey in #221Add functions for plotting power spectral density (
plot_psd()
) and Morlet time-frequency representations (plot_tfr_morlet()
), by Christopher Bailey in #264Add y-label units (nAm) to all visualisation functions involving dipole moments, by Christopher Bailey in #264
Add Savitzky-Golay filtering method
savgol_filter()
toDipole
; copied frommne-python
savgol_filter()
, by Christopher Bailey in #264
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 #156New API for defining external drives and biases to network. By default, a
Network
is created without drives, which are added using class methods. The argumentadd_drives_from_params
controls this behaviour, by Christopher Bailey in #221Examples 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 ofpostproc
-argument, which now only controls parameter file-based smoothing and scaling, by Christopher Bailey in #264