arborize package#

Subpackages#

Submodules#

arborize.definitions module#

class arborize.definitions.CableProperties(Ra: float = None, cm: float = None)[source]#

Bases: Copy, Merge, Assert, Iterable

Ra: float = None#
cm: float = None#

Axial resistivity in ohm/cm

class arborize.definitions.CablePropertiesDict#

Bases: dict

Ra: float#
cm: float#
class arborize.definitions.CableType(cable_property_class=<class 'arborize.definitions.CableProperties'>)[source]#

Bases: object

add_ion(key: str, ion: Ion)[source]#
add_mech(mech_id: str | tuple[str] | tuple[str, str] | tuple[str, str, str], mech: Mechanism)[source]#
add_synapse(label: str | tuple[str] | tuple[str, str] | tuple[str, str, str], synapse: Synapse)[source]#
classmethod anchor(defs: ~typing.Iterable[~arborize.definitions.CableType], synapses: dict[typing.Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], arborize.definitions.Synapse] | None = None, use_defaults: bool = False, ion_class=<class 'arborize.definitions.Ion'>) CableType[source]#
assert_()[source]#
cable: CableProperties#
copy()[source]#
classmethod default(ion_class=<class 'arborize.definitions.Ion'>)[source]#
ions: dict[str, arborize.definitions.Ion]#
mechs: dict[Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], arborize.definitions.Mechanism]#
merge(def_right: CableType)[source]#
set(param: Parameter)[source]#
synapses: dict[Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], arborize.definitions.Synapse]#
class arborize.definitions.CableTypeDict#

Bases: dict

cable: CablePropertiesDict#
ions: dict[str, arborize.definitions.IonDict]#
mechanisms: dict[Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], dict[str, float]]#
synapses: dict[Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], Union[dict[str, float], arborize.definitions.ExpandedSynapseDict]]#
class arborize.definitions.Definition(use_defaults=False)[source]#

Bases: Generic[CT, CP, I, M, S], ABC

add_cable_type(label: str, def_: CT)[source]#
add_synapse_type(label: str | tuple[str] | tuple[str, str] | tuple[str, str, str], synapse: S)[source]#
abstract class property cable_properties_class: Type[CP]#
abstract class property cable_type_class: Type[CT]#
copy()[source]#
get_cable_types() dict[str, CT][source]#
get_synapse_types() dict[str, S][source]#
abstract class property ion_class: Type[I]#
abstract class property mechanism_class: Type[M]#
abstract class property synapse_class: Type[S]#
class arborize.definitions.ExpandedSynapseDict#

Bases: dict

mechanism: str | tuple[str] | tuple[str, str] | tuple[str, str, str]#
parameters: dict[str, float]#
class arborize.definitions.Ion(rev_pot: float = None, int_con: float = None, ext_con: float = None)[source]#

Bases: Copy, Merge, Assert, Iterable

ext_con: float = None#
int_con: float = None#
rev_pot: float = None#
class arborize.definitions.IonDict#

Bases: dict

ext_con: float#
int_con: float#
rev_pot: float#
class arborize.definitions.Mechanism(parameters: dict[str, float])[source]#

Bases: object

copy()[source]#
merge(other)[source]#
class arborize.definitions.ModelDefinition(use_defaults=False)[source]#

Bases: Definition[CableType, CableProperties, Ion, Mechanism, Synapse]

cable_properties_class[source]#

alias of CableProperties

cable_type_class[source]#

alias of CableType

ion_class[source]#

alias of Ion

mechanism_class[source]#

alias of Mechanism

synapse_class[source]#

alias of Synapse

class arborize.definitions.ModelDefinitionDict#

Bases: dict

cable_types: dict[str, arborize.definitions.CableTypeDict]#
synapse_types: dict[Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], Union[dict[str, float], arborize.definitions.ExpandedSynapseDict]]#
class arborize.definitions.Synapse(parameters, mech_id: str | tuple[str] | tuple[str, str] | tuple[str, str, str])[source]#

Bases: Mechanism

copy()[source]#
mech_id: tuple[str] | tuple[str, str] | tuple[str, str, str]#
class arborize.definitions.default_ions_dict(ion_class, *args, **kwargs)[source]#

Bases: dict

arborize.definitions.define_model(template: ModelDefinition, definition: ModelDefinitionDict, /, use_defaults: bool = False) ModelDefinition[source]#
arborize.definitions.define_model(definition: ModelDefinitionDict, /, use_defaults: bool = False) ModelDefinition
arborize.definitions.is_mech_id(mech_id)[source]#
class arborize.definitions.mechdict[source]#

Bases: dict

arborize.definitions.to_mech_id(mech_id: str | tuple[str] | tuple[str, str] | tuple[str, str, str]) tuple[str] | tuple[str, str] | tuple[str, str, str][source]#

arborize.exceptions module#

exception arborize.exceptions.ArborizeError(*args, **kwargs)#

Bases: DetailedException

ArborizeError exception

exception arborize.exceptions.ConstructionError(*args, **kwargs)#

Bases: SchematicError

ConstructionError exception

exception arborize.exceptions.FrozenError(*args, **kwargs)#

Bases: SchematicError

FrozenError exception

exception arborize.exceptions.ModelDefinitionError(*args, **kwargs)#

Bases: ArborizeError

ModelDefinitionError exception

exception arborize.exceptions.ModelError(*args, **kwargs)#

Bases: ArborizeError

ModelError exception

exception arborize.exceptions.SchematicError(*args, **kwargs)#

Bases: ArborizeError

SchematicError exception

exception arborize.exceptions.TransmitterError(*args, **kwargs)#

Bases: ModelError

TransmitterError exception

exception arborize.exceptions.UnknownLocationError(*args, **kwargs)#

Bases: ModelError

UnknownLocationError exception

exception arborize.exceptions.UnknownSynapseError(*args, **kwargs)#

Bases: ModelError

UnknownSynapseError exception

arborize.parameter module#

class arborize.parameter.CableParameter(prop: str, value: float)[source]#

Bases: Parameter

set_cable_params(cable)[source]#
class arborize.parameter.IonParameter(ion: str, prop: str, value: float)[source]#

Bases: Parameter

class arborize.parameter.MechParameter[source]#

Bases: Parameter

class arborize.parameter.Parameter[source]#

Bases: object

arborize.schematic module#

class arborize.schematic.Branch[source]#

Bases: object

children: list['Branch']#
parent: Branch | None#
points: list[arborize.schematic.Point]#
class arborize.schematic.CableBranch[source]#

Bases: Branch

append(loc, coords, radius, labels)[source]#
children: list['CableBranch']#
parent: CableBranch | None#
class arborize.schematic.Point(loc, branch: UnitBranch, coords, radius)[source]#

Bases: object

class arborize.schematic.Schematic(name=None)[source]#

Bases: object

A schematic is an intermediate object that associates parameter definitions to points in space. You can define locations (3d coords + radius) and tag them with labels, or set parameters directly on the locations. You can pass a schematic to a Builder, which will freeze the schematic (no changes can be made anymore) and create a simulator specific instance of the model.

Schematics create a user-facing layer of “virtual branches”, which is the network graph of the created locations. However, NEURON does not support the resolution that arbor does, so an underlying layer of “true branches” is created. In NEURON, a map is kept on the model between the locations on the virtual branches and the locations on the true branches, so that we can arbitrarily split up true branches into smaller pieces to achieve the resolution we need.

arbor: CableCellTemplate | None#
create_empty()[source]#

Create an empty branch

create_location(location: tuple[int, int], coords, radii, labels, endpoint=None)[source]#

Add a new location to the schematic. A location is a tuple of the branch id and point-on-branch id. Locations must be appended in ascending order.

Parameters:
  • location

  • coords

  • radii

  • labels

  • endpoint

Returns:

create_name()[source]#

Generate the next unique name for an instance of this model.

property definition#

Definition of the model, contains the definition of the parameters for the cables, mechanisms, and synapses of this model.

freeze()[source]#

Freeze the schematic. Most mutating operations will no longer be permitted.

get_cable_types()[source]#
get_compound_cable_types()[source]#
get_synapse_types()[source]#
property name#

Base name for all the instances of this model. Suffixed unique names for each instance can be obtained by calling create_name.

set_param(location: tuple[int, int] | tuple[tuple[int, int], tuple[int, int]] | str, param: Parameter)[source]#
class arborize.schematic.UnitBranch[source]#

Bases: Branch

append(point)[source]#
children: list['UnitBranch']#
definition: CableType#
labels: list[str]#
parent: UnitBranch | None#
arborize.schematic.throw_frozen()[source]#

arborize.synapse module#

class arborize.synapse.Synapse(cell, section, point_process_name, attributes={}, variant=None, type=None, source=None)[source]#

Bases: object

presynaptic(section, x=0.5, **kwargs)[source]#
record()[source]#
stimulate(*args, **kwargs)[source]#

Module contents#

Write descriptions for NEURON cell models in an Arbor-like manner for both the Arbor and NEURON brain simulation engines.

class arborize.CableProperties(Ra: float = None, cm: float = None)[source]#

Bases: Copy, Merge, Assert, Iterable

Ra: float = None#
cm: float = None#

Axial resistivity in ohm/cm

class arborize.CableType(cable_property_class=<class 'arborize.definitions.CableProperties'>)[source]#

Bases: object

add_ion(key: str, ion: Ion)[source]#
add_mech(mech_id: str | tuple[str] | tuple[str, str] | tuple[str, str, str], mech: Mechanism)[source]#
add_synapse(label: str | tuple[str] | tuple[str, str] | tuple[str, str, str], synapse: Synapse)[source]#
classmethod anchor(defs: ~typing.Iterable[~arborize.definitions.CableType], synapses: dict[typing.Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], arborize.definitions.Synapse] | None = None, use_defaults: bool = False, ion_class=<class 'arborize.definitions.Ion'>) CableType[source]#
assert_()[source]#
cable: CableProperties#
copy()[source]#
classmethod default(ion_class=<class 'arborize.definitions.Ion'>)[source]#
ions: dict[str, arborize.definitions.Ion]#
mechs: dict[Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], arborize.definitions.Mechanism]#
merge(def_right: CableType)[source]#
set(param: Parameter)[source]#
synapses: dict[Union[str, tuple[str], tuple[str, str], tuple[str, str, str]], arborize.definitions.Synapse]#
class arborize.Ion(rev_pot: float = None, int_con: float = None, ext_con: float = None)[source]#

Bases: Copy, Merge, Assert, Iterable

ext_con: float = None#
int_con: float = None#
rev_pot: float = None#
class arborize.Mechanism(parameters: dict[str, float])[source]#

Bases: object

copy()[source]#
merge(other)[source]#
class arborize.ModelDefinition(use_defaults=False)[source]#

Bases: Definition[CableType, CableProperties, Ion, Mechanism, Synapse]

cable_properties_class[source]#

alias of CableProperties

cable_type_class[source]#

alias of CableType

ion_class[source]#

alias of Ion

mechanism_class[source]#

alias of Mechanism

synapse_class[source]#

alias of Synapse

class arborize.Schematic(name=None)[source]#

Bases: object

A schematic is an intermediate object that associates parameter definitions to points in space. You can define locations (3d coords + radius) and tag them with labels, or set parameters directly on the locations. You can pass a schematic to a Builder, which will freeze the schematic (no changes can be made anymore) and create a simulator specific instance of the model.

Schematics create a user-facing layer of “virtual branches”, which is the network graph of the created locations. However, NEURON does not support the resolution that arbor does, so an underlying layer of “true branches” is created. In NEURON, a map is kept on the model between the locations on the virtual branches and the locations on the true branches, so that we can arbitrarily split up true branches into smaller pieces to achieve the resolution we need.

arbor: CableCellTemplate | None#
cables: list['CableBranch']#
create_empty()[source]#

Create an empty branch

create_location(location: tuple[int, int], coords, radii, labels, endpoint=None)[source]#

Add a new location to the schematic. A location is a tuple of the branch id and point-on-branch id. Locations must be appended in ascending order.

Parameters:
  • location

  • coords

  • radii

  • labels

  • endpoint

Returns:

create_name()[source]#

Generate the next unique name for an instance of this model.

property definition#

Definition of the model, contains the definition of the parameters for the cables, mechanisms, and synapses of this model.

freeze()[source]#

Freeze the schematic. Most mutating operations will no longer be permitted.

get_cable_types()[source]#
get_compound_cable_types()[source]#
get_synapse_types()[source]#
property name#

Base name for all the instances of this model. Suffixed unique names for each instance can be obtained by calling create_name.

roots: list['UnitBranch']#
set_param(location: tuple[int, int] | tuple[tuple[int, int], tuple[int, int]] | str, param: Parameter)[source]#
arborize.arbor_build(schematic: Schematic)[source]#
arborize.bluepyopt_build(schematic: Schematic)[source]#
arborize.bsb_schematic(morphology: Morphology, definitions: Definition | None = None) Schematic[source]#
arborize.define_constraints(constraints: ConstraintsDefinitionDict, tolerance=None, use_defaults=False) ConstraintsDefinition[source]#
arborize.define_model(templ_or_def, def_dict=None, /, use_defaults=False) ModelDefinition[source]#
arborize.file_schematic(file_like: str | os.PathLike | TextIO, definitions: Definition | None = None, fname: str = None, *, name=None) Schematic[source]#
arborize.is_mech_id(mech_id)[source]#
arborize.neuron_build(schematic: Schematic)[source]#