# core package

Essential Brian modules, in particular base classes for all kinds of brian objects.

## Built-in preferences

Core Brian preferences

`core.default_float_dtype` = `float64`

> Default dtype for all arrays of scalars (state variables, weights, etc.).

`core.default_integer_dtype` = `int32`

> Default dtype for all arrays of integer scalars.

`core.outdated_dependency_error` = `None`

> DEPRECATED: This preference is no longer used. Brian2 now relies on package managers (pip, conda) for dependency management instead of runtime version checking. Setting this preference has no effect and it will be removed in a future version.

> Previously controlled whether to raise an error for outdated dependencies (`True`) or just a warning (`False`).

`core.stop_on_keyboard_interrupt` = `True`

> Whether to “gracefully” stop a simulation after pressing Ctrl+C (defaults to `True`). Note that pressing Ctrl+C a second time will force the usual interruption mechanism.

## `base` module

All Brian objects should derive from `BrianObject`.

Exported members: `BrianObject`, `BrianObjectException`

Classes

`BrianObject`(*args, **kw) | All Brian objects derive from this class, defines magic tracking and update.

`BrianObjectException`(message, brianobj) | High level exception that adds extra Brian-specific information to exceptions

Functions

`brian_object_exception`(message, brianobj, ...) | Returns a `BrianObjectException` derived from the original exception.

`device_override`(name) | Decorates a function/method to allow it to be overridden by the current `Device`.

`weakproxy_with_fallback`(obj) | Attempts to create a `weakproxy` to the object, but falls back to the object if not possible.

## `clocks` module

Clocks for the simulator.

Exported members: `BaseClock`, `Clock`, `EventClock`, `defaultclock`

Classes

`BaseClock`(*args, **kw) | Abstract base class for all clocks in the simulator.

`Clock`(*args, **kw) | An object that holds the simulation time and the time step.

`DefaultClockProxy`() | Method proxy to access the defaultclock of the currently active device

`EventClock`(*args, **kw) | A clock that advances through a predefined sequence of times.

Functions

`check_dt`(new_dt, old_dt, target_t) | Check that the target time can be represented equally well with the new dt.

Objects

`defaultclock` | The standard clock, used for objects that do not specify any clock or dt

## `core_preferences` module

Definitions, documentation, default values and validation functions for core Brian preferences.

Functions

`default_float_dtype_validator`(dtype) |

`dtype_repr`(dtype) |

`outdated_dependency_error_validator`(value) |

## `functions` module

Exported members: `DEFAULT_FUNCTIONS`, `Function`, `declare_types()`, `implementation()`

Classes

`Function`(pyfunc[, sympy_func, arg_units, ...]) | An abstract specification of a function that can be used as part of model equations, etc.

`FunctionImplementation`([name, code, ...]) | A simple container object for function implementations.

`FunctionImplementationContainer`(function) | Helper object to store implementations and give access in a dictionary-like fashion, using `CodeGenerator` implementations as a fallback for `CodeObject` implementations.

`SymbolicConstant`(name, sympy_obj, value) | Class for representing constants (e.g. pi) that are understood by sympy.

`exprel`(arg) | Represents `(exp(x) - 1)/x`.

Functions

`declare_types`(**types) | Decorator to declare argument and result types for a function

`implementation`(target[, code, namespace, ...]) | A simple decorator to extend user-written Python functions to work with code generation in other languages.

`timestep`(t, dt) | Converts a given time to an integer time step.

## `magic` module

Exported members: `MagicError`, `MagicNetwork`, `collect()`, `magic_network`, `restore()`, `run()`, `start_scope()`, `stop()`, `store()`

Classes

`MagicError` | Error that is raised when something goes wrong in `MagicNetwork`

`MagicNetwork`(*args, **kw) | `Network` that automatically adds all Brian objects

Functions

`collect`([level]) | Return the list of `BrianObject`s that will be simulated if `run()` is called.

`get_objects_in_namespace`(level) | Get all the objects in the current namespace that derive from `BrianObject`.

`restore`([name, filename, restore_random_state]) | Restore the state of the network and all included objects.

`run`(duration[, report, report_period, ...]) | Runs a simulation with all "visible" Brian objects for the given duration.

`start_scope`() | Starts a new scope for magic functions

`stop`() | Stops all running simulations.

`store`([name, filename]) | Store the state of the network and all included objects.

Objects

`magic_network` | Automatically constructed `MagicNetwork` of all Brian objects

## `names` module

Exported members: `Nameable`

Classes

`Nameable`(*args, **kw) | Base class to find a unique name for an object

Functions

`find_name`(name[, names]) | Determine a unique name.

## `namespace` module

Implementation of the namespace system, used to resolve the identifiers in model equations of `NeuronGroup` and `Synapses`

Exported members: `DEFAULT_CONSTANTS`, `DEFAULT_FUNCTIONS`, `DEFAULT_UNITS`, `get_local_namespace()`

Functions

`get_local_namespace`(level) | Get the surrounding namespace.

## `network` module

Module defining the `Network` object, the basis of all simulation runs.

### Preferences

Network preferences

`core.network.default_schedule` = `['start', 'groups', 'thresholds', 'synapses', 'resets', 'end']`

> Default schedule used for networks that don’t specify a schedule.

Exported members: `Network`, `profiling_summary()`, `scheduling_summary()`

Classes

`Network`(*objs[, name]) | The main simulation controller in Brian

`ProfilingSummary`(net[, show]) | Class to nicely display the results of profiling.

`SchedulingSummary`(objects) | Object representing the schedule that is used to simulate the objects in a network.

`TextReport`(stream) | Helper object to report simulation progress in `Network.run`.

Functions

`profiling_summary`([net, show]) | Returns a `ProfilingSummary` of the profiling info for a run.

`schedule_propagation_offset`([net]) | Returns the minimal time difference for a post-synaptic effect after a spike.

`scheduling_summary`([net]) | Returns a `SchedulingSummary` object, representing the scheduling information for all objects included in the given `Network` (or the "magic" network, if none is specified).

## `operations` module

Exported members: `NetworkOperation`, `network_operation()`

Classes

`NetworkOperation`(*args, **kw) | Object with function that is called every time step.

Functions

`network_operation`([when]) | Decorator to make a function get called every time step of a simulation.

## `preferences` module

Brian global preferences are stored as attributes of a `BrianGlobalPreferences` object `prefs`.

Exported members: `BrianPreference`, `PreferenceError`, `brian_prefs`, `prefs`

Classes

`BrianGlobalPreferences`() | Class of the `prefs` object.

`BrianGlobalPreferencesView`(basename, all_prefs) | A class allowing for accessing preferences in a subcategory.

`BrianPreference`(default, docs[, validator, ...]) | Used for defining a Brian preference.

`DefaultValidator`(value) | Default preference validator

`ErrorRaiser`() |

`PreferenceError` | Exception relating to the Brian preferences system.

Functions

`check_preference_name`(name) | Make sure that a preference name is valid.

`parse_preference_name`(name) | Split a preference name into a base and end name.

Objects

`brian_prefs` |

`prefs` | Preference categories:

## `spikesource` module

Exported members: `SpikeSource`

Classes

`SpikeSource`() | A source of spikes.

## `tracking` module

Exported members: `Trackable`

Classes

`InstanceFollower`() | Keep track of all instances of classes derived from `Trackable`

`InstanceTrackerSet`([iterable]) | A `set` of `weakref.ref` to all existing objects of a certain class.

`Trackable`(*args, **kw) | Classes derived from this will have their instances tracked.

## `variables` module

Classes used to specify the type of a function, variable or common sub-expression.

Exported members: `ArrayVariable`, `AuxiliaryVariable`, `Constant`, `DynamicArrayVariable`, `LinkedVariable`, `Subexpression`, `Variable`, `VariableView`, `Variables`, `linked_var()`

Classes

`ArrayVariable`(name, owner, size, device[, ...]) | An object providing information about a model variable stored in an array (for example, all state variables).

`AuxiliaryVariable`(name[, dimensions, dtype, ...]) | Variable description for an auxiliary variable (most likely one that is added automatically to abstract code, e.g. `_cond` for a threshold condition), specifying its type and unit for code generation.

`Constant`(name, value[, dimensions, owner]) | A scalar constant (e.g. the number of neurons `N`).

`DynamicArrayVariable`(name, owner, size, device) | An object providing information about a model variable stored in a dynamic array (used in `Synapses`).

`LinkedVariable`(group, name, variable[, index]) | A simple helper class to make linking variables explicit.

`Subexpression`(name, owner, expr, device[, ...]) | An object providing information about a named subexpression in a model.

`Variable`(name[, dimensions, owner, dtype, ...]) | An object providing information about model variables (including implicit variables such as `t` or `xi`).

`VariableView`(name, variable, group[, dimensions]) | A view on a variable that allows to treat it as an numpy array while allowing special indexing (e.g. with strings) in the context of a `Group`.

`Variables`(owner[, default_index]) | A container class for storing `Variable` objects.

Functions

`get_dtype`(obj) | Helper function to return the `numpy.dtype` of an arbitrary object.

`get_dtype_str`(val) | Returns canonical string representation of the dtype of a value or dtype

`linked_var`(group_or_variable[, name, index]) | Represents a link target for setting a linked variable.

`variables_by_owner`(variables, owner) |