bmtk.simulator.bionet package#

Subpackages#

Submodules#

bmtk.simulator.bionet.biocell module#

class bmtk.simulator.bionet.biocell.BioCell(node, population_name, bionetwork)[source]#

Bases: Cell

Implemntation of a morphologically and biophysically detailed type cell.

build_morphology()[source]#
connections()[source]#
get_connection_info()[source]#
get_im()[source]#

Gather membrane currents from PtrVector into imVec (does not need a loop!)

get_section(sec_id)[source]#
get_sections()[source]#
get_sections_id()[source]#
init_connections()[source]#
property morphology#

The actual Morphology object instanstiation

property morphology_file#

Value that’s stored in SONATA morphology column

print_synapses()[source]#
property seg_coords#

Coordinates for segments/sections of the morphology, need to make public for ecp, xstim, and other functionality that needs to compute the soma/dendritic coordinates of each cell

set_e_extracellular(vext)[source]#
set_im_ptr()[source]#

Set PtrVector to point to the _ref_i_membrane_ parameter

set_ptr2e_extracellular()[source]#
set_sec_array()[source]#

Arrange sections in an array to be access by index

set_spike_detector(spike_threshold)[source]#
set_syn_connection(edge_prop, src_node, stim=None, gj_ids=None)[source]#
setup_ecp()[source]#
setup_xstim(set_nrn_mechanism=True)[source]#
property soma#
class bmtk.simulator.bionet.biocell.BioCellSpontSyn(node, population_name, bionetwork)[source]#

Bases: BioCell

Special class that allows certain synapses to spontaneously fire (without spiking) at a specific time.

class bmtk.simulator.bionet.biocell.ConnectionStruct(edge_prop, src_node, syn, connector, is_virtual=False, is_gap_junc=False)[source]#

Bases: object

property is_gap_junc#
property is_virtual#
property source_node#
property syn_weight#

bmtk.simulator.bionet.bionetwork module#

class bmtk.simulator.bionet.bionetwork.BioNetwork[source]#

Bases: SimNetwork

add_nodes(node_population)[source]#
add_spike_trains(spike_trains, node_set, spikes_generator=None, sim=None)[source]#
build_nodes()[source]#
build_recurrent_edges()[source]#
build_replay_inputs(spike_trains, edges_path, edge_types_path, source_node_set, target_node_set)[source]#
cell_type_maps(model_type)[source]#
find_edges(source_nodes=None, target_nodes=None)[source]#
get_cell_gid(gid)[source]#
get_cell_node_id(population, node_id)[source]#
get_disconnected_cell(population, node_id, spike_trains)[source]#
get_gj_id(network, src_nid, trg_nid, source_gap)[source]#

Returns the gap junction id for the given nodes on a given network.

Parameters:

source_gap – whether to return the id of the gap junction on the source node or the target node.

get_local_cells()[source]#
get_node_id(population, node_id)[source]#
get_virtual_cells(population, node_id, spike_trains, spikes_generator=None, sim=None)[source]#
property gid_pool#
property local_gids#
model_type_col = 'model_type'#
property py_function_caches#
set_spont_syn_activity(precell_filter, postcell_filter, timestamps)[source]#

bmtk.simulator.bionet.biosimulator module#

class bmtk.simulator.bionet.biosimulator.BioSimulator(network, dt, tstop, v_init, celsius, nsteps_block, start_from_state=False)[source]#

Bases: Simulator

Includes methods to run and control the simulation

add_mod(module)[source]#
attach_se_voltage_clamp(amplitudes, durations, gids, rs)[source]#
property biophysical_gids#
property cell_var_output#
property cell_variables#
property celsius#
property dt#
classmethod from_config(config, network, set_recordings=True)[source]#
property h#
property local_gids#
property n_steps#
property nsteps_block#
post_fadvance()[source]#

Runs after every execution of fadvance (see advance.hoc) Called after every time step to perform computation and save data to memory block or to disk. The initial condition tstep=0 is not being saved

report_load_balance()[source]#
run()[source]#

Run the simulation: if beginning from a blank state, then will use h.run(), if continuing from the saved state, then will use h.continuerun()

set_spikes_recording()[source]#
simulation_time(units='ms')[source]#
property spikes_table#
property tstop#
property v_init#

bmtk.simulator.bionet.cell module#

class bmtk.simulator.bionet.cell.Cell(node, population_name, network=None)[source]#

Bases: object

A abstract base class for any cell object.

A base class for implementation of a cell-type objects like biophysical cells, LIF cells, etc. Do not instantiate a Cell object directly. Cell classes act as wrapper around HOC cell object with extra functionality for setting positions, synapses, and other parameters depending on the desired cell class.

get_connection_info()[source]#
get_section(sec_name, sec_index)[source]#
property gid#
property group_id#
property hobj#
init_connections()[source]#
property netcons#
property network_name#
property node#
property node_id#
scale_weights(factor)[source]#
set_soma_position()[source]#
set_syn_connections(edge_prop, src_node, stim=None)[source]#
property soma_position#

bmtk.simulator.bionet.config module#

class bmtk.simulator.bionet.config.Config(*args, **kwargs)[source]#

Bases: SimulationConfig

build_env()[source]#

Creates the folder(s) set in ‘output’ section, sets up logging and copies over the configuration

create_output_dir()[source]#
load_nrn_modules()[source]#

bmtk.simulator.bionet.gids module#

class bmtk.simulator.bionet.gids.GidPool[source]#

Bases: object

add_pool(name, n_nodes)[source]#
get_gid(name, node_id)[source]#
get_pool_id(gid)[source]#
class bmtk.simulator.bionet.gids.PopulationID(node_id, population)#

Bases: tuple

node_id#

Alias for field number 0

population#

Alias for field number 1

bmtk.simulator.bionet.iclamp module#

class bmtk.simulator.bionet.iclamp.FileIClamp(amplitudes, dt, section_name='soma', section_index=0, section_dist=0.5)[source]#

Bases: object

attach_current(cell)[source]#
class bmtk.simulator.bionet.iclamp.IClamp(amplitude, delay, duration, section_name='soma', section_index=0, section_dist=0.5)[source]#

Bases: object

attach_current(cell)[source]#

bmtk.simulator.bionet.io_tools module#

class bmtk.simulator.bionet.io_tools.NEURONIOUtils[source]#

Bases: IOUtils

barrier()[source]#

MPI Barrier call

bmtk.simulator.bionet.morphology module#

class bmtk.simulator.bionet.morphology.Morphology(hobj, rng_seed=None, swc_path=None)[source]#

Bases: object

choose_sections(section_names, distance_range, n_sections=1, cache=True)[source]#

Similar to find_sections, but will only N=n_section number of sections_ids/x values randomly selected (may return less if there aren’t as many sections

Parameters:
  • section_names – ‘soma’, ‘dend’, ‘apic’, ‘axon’

  • distance_range – [float, float]: distance range of sections from the soma, in um.

  • n_sections – int: maximum number of sections to select

  • cache – caches the segments + probs so that next time the same section_names/distance_range values are called it will return the same values without recalculating. default True.

Returns:

[int], [float]: A list of all section_ids and a list of all segment_x values (as defined by NEURON) that meet the given critera.

find_sections(section_names, distance_range, cache=True)[source]#

Retrieves a list of sections ids and section x’s given a section name/type (eg axon, soma, apic, dend) and the distance from the soma.

Parameters:
  • section_names – A list of sections to target, ‘soma’, ‘dend’, ‘apic’, ‘axon’

  • distance_range – [float, float]: distance range of sections from the soma, in um.

  • cache – caches the segments + probs so that next time the same section_names/distance_range values are called it will return the same values without recalculating. default True.

Returns:

[float], [float]: A list of all section_ids and a list of all segment_x values (as defined by NEURON) that meet the given critera.

get_coords(sec_id, sec_x)[source]#
get_section(section_idx)[source]#
get_swc_id(sec_id, sec_x)[source]#
classmethod load(hobj=None, morphology_file=None, rng_seed=None, cache_seg_props=True)[source]#

Factory method, perfered way to create a Morphology object

Parameters:
  • hobj

  • morphology_file

  • rng_seed

  • cache_seg_props

Returns:

move_and_rotate(soma_coords=None, rotation_angles=None, inplace=False)[source]#
property n_sections#
property nseg#
sec_type_swc = {'apic': 4, 'apical': 4, 'axon': 2, 'axonal': 2, 'basal': 3, 'dend': 3, 'soma': 1, 'somatic': 1}#
property sections#
property seg_coords#

Get the coordinates of all segments of the cells. Each segment is defined by three values, the beginning of the segment (seg_coords.p0), the middle of the segment(seg_coords.p05), and the end (seg_coords.p1).

property seg_props#
property segments#
set_segment_dl(dl)[source]#

Define number of segments in a cell

property soma#
property soma_position#
property swc_map#
bmtk.simulator.bionet.morphology.rotation_matrix(axis, theta)[source]#

Return the rotation matrix associated with counterclockwise rotation about the given axis by theta radians.

bmtk.simulator.bionet.nml_reader module#

class bmtk.simulator.bionet.nml_reader.ChannelDensity(nml_element)[source]#

Bases: NMLElement

static element_tag()[source]#
class bmtk.simulator.bionet.nml_reader.ChannelDensityNernst(nml_element)[source]#

Bases: ChannelDensity

static element_tag()[source]#
class bmtk.simulator.bionet.nml_reader.ConcentrationModel(nml_element)[source]#

Bases: NMLElement

static element_tag()[source]#
class bmtk.simulator.bionet.nml_reader.NMLElement(nml_element)[source]#

Bases: object

static element_tag()[source]#
class bmtk.simulator.bionet.nml_reader.NMLTree(nml_path)[source]#

Bases: object

static common_name(elem)[source]#
element_registry = {'{http://www.neuroml.org/schema/neuroml2}channelDensity': <class 'bmtk.simulator.bionet.nml_reader.ChannelDensity'>, '{http://www.neuroml.org/schema/neuroml2}channelDensityNernst': <class 'bmtk.simulator.bionet.nml_reader.ChannelDensityNernst'>, '{http://www.neuroml.org/schema/neuroml2}concentrationModel': <class 'bmtk.simulator.bionet.nml_reader.ConcentrationModel'>, '{http://www.neuroml.org/schema/neuroml2}resistivity': <class 'bmtk.simulator.bionet.nml_reader.Resistivity'>, '{http://www.neuroml.org/schema/neuroml2}specificCapacitance': <class 'bmtk.simulator.bionet.nml_reader.SpecificCapacitance'>}#
nml_ns = '{http://www.neuroml.org/schema/neuroml2}'#
classmethod ns_name(name)[source]#
static parse_value(value)[source]#
classmethod register_module(element_cls)[source]#
class bmtk.simulator.bionet.nml_reader.Resistivity(nml_element)[source]#

Bases: NMLElement

static element_tag()[source]#
class bmtk.simulator.bionet.nml_reader.SpecificCapacitance(nml_element)[source]#

Bases: NMLElement

static element_tag()[source]#

bmtk.simulator.bionet.nrn module#

bmtk.simulator.bionet.nrn.clear_gids()[source]#
bmtk.simulator.bionet.nrn.load_neuron_modules(mechanisms_dir, templates_dir, default_templates=True, use_old_import3d=False)[source]#
Parameters:
  • mechanisms_dir

  • templates_dir

  • default_templates

bmtk.simulator.bionet.nrn.load_templates(templates)[source]#

Load all templates to be available in the hoc namespace for instantiating cells

bmtk.simulator.bionet.nrn.quit_execution()[source]#
bmtk.simulator.bionet.nrn.reset()[source]#

bmtk.simulator.bionet.pointprocesscell module#

class bmtk.simulator.bionet.pointprocesscell.ConnectionStruct(edge_prop, src_node, nc, is_virtual=False)[source]#

Bases: object

property is_virtual#
property source_node#
property syn_weight#
class bmtk.simulator.bionet.pointprocesscell.PointProcessCell(node, population_name, bionetwork)[source]#

Bases: Cell

Implimentation of a Leaky Integrate-and-file neuron type cell.

connections()[source]#
get_connection_info()[source]#
print_synapses()[source]#
set_im_ptr()[source]#
set_spike_detector()[source]#
set_syn_connection(edge_prop, src_node, stim=None)[source]#
class bmtk.simulator.bionet.pointprocesscell.PointProcessCellSpontSyns(node, population_name, bionetwork)[source]#

Bases: PointProcessCell

Special class that allows certain synapses to spontaneously fire (without spiking) at a specific time.

set_syn_connection(edge_prop, src_node, stim=None)[source]#

bmtk.simulator.bionet.pointsomacell module#

class bmtk.simulator.bionet.pointsomacell.PointSomaCell[source]#

Bases: Cell

Used to represent single compartment cells with neural mechanisms

bmtk.simulator.bionet.pyfunction_cache module#

bmtk.simulator.bionet.seclamp module#

class bmtk.simulator.bionet.seclamp.SEClamp(amplitudes, durations, rs=None)[source]#

Bases: object

attach_current(cell)[source]#

bmtk.simulator.bionet.sonata_adaptors module#

class bmtk.simulator.bionet.sonata_adaptors.BioEdge(sonata_edge, edge_adaptor)[source]#

Bases: SonataBaseEdge

property afferent_section_id#
property afferent_section_pos#
load_synapses(section_x, section_id)[source]#
class bmtk.simulator.bionet.sonata_adaptors.BioEdgeAdaptor(network)[source]#

Bases: EdgeAdaptor

get_edge(sonata_edge)[source]#
classmethod patch_adaptor(adaptor, edge_group)[source]#
class bmtk.simulator.bionet.sonata_adaptors.BioNode(node, prop_adaptor)[source]#

Bases: SonataBaseNode

load_cell()[source]#
property morphology_file#
property position#
property rotation_angle_xaxis#
property rotation_angle_yaxis#
property rotation_angle_zaxis#
property rotations#
property rotations_quaternion#
class bmtk.simulator.bionet.sonata_adaptors.BioNodeAdaptor(network)[source]#

Bases: NodeAdaptor

get_node(sonata_node)[source]#
classmethod patch_adaptor(adaptor, node_group, network)[source]#
bmtk.simulator.bionet.sonata_adaptors.aff_sec_id(self, edge)[source]#
bmtk.simulator.bionet.sonata_adaptors.aff_sec_id_old(self, edge)[source]#
bmtk.simulator.bionet.sonata_adaptors.aff_sec_pos(self, edge)[source]#
bmtk.simulator.bionet.sonata_adaptors.aff_sec_pos_old(self, edge)[source]#
bmtk.simulator.bionet.sonata_adaptors.position(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.position_x(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.position_xy(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.position_xyz(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.positions(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.positions_default(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.ret_none_function(self, edge)[source]#
bmtk.simulator.bionet.sonata_adaptors.rotation_angle_default(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.rotation_angle_x(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.rotation_angle_y(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.rotation_angle_z(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.rotations(self, node)[source]#
bmtk.simulator.bionet.sonata_adaptors.value_none(self, node)[source]#

bmtk.simulator.bionet.utils module#

bmtk.simulator.bionet.utils.edge_converter_csv(output_dir, csv_file)[source]#

urrently being used by BioNetwork.write_connections(), need to refactor

Parameters:
  • output_dir

  • csv_file

Returns:

bmtk.simulator.bionet.utils.rotation_matrix(axis, theta)[source]#

Return the rotation matrix associated with counterclockwise rotation about the given axis by theta radians.

bmtk.simulator.bionet.virtualcell module#

class bmtk.simulator.bionet.virtualcell.VirtualCell(node, population, spike_train_dataset, spikes_generator=None, sim=None)[source]#

Bases: object

Representation of a Virtual/External node

property hobj#
property node_id#
set_stim(stim_prop, spike_train)[source]#

Gets the spike trains for each individual cell.

set_stim_from_generator(node, spikes_generator)[source]#

Module contents#