Unit class

(Shortest import: from brian2 import Unit)

class brian2.units.fundamentalunits.Unit(arr, dim=None, scale=0, name=None, dispname=None, latexname=None, iscompound=False, dtype=None, copy=False)[source]

Bases: Quantity

A physical unit.

Normally, you do not need to worry about the implementation of units. They are derived from the Quantity object with some additional information (name and string representation).

Basically, a unit is just a number with given dimensions, e.g. mvolt = 0.001 with the dimensions of voltage. The units module defines a large number of standard units, and you can also define your own (see below).

The unit class also keeps track of various things that were used to define it so as to generate a nice string representation of it. See below.

When creating scaled units, you can use the following prefixes:

Factor

Name

Prefix

10^24

yotta

Y

10^21

zetta

Z

10^18

exa

E

10^15

peta

P

10^12

tera

T

10^9

giga

G

10^6

mega

M

10^3

kilo

k

10^2

hecto

h

10^1

deka

da

1

10^-1

deci

d

10^-2

centi

c

10^-3

milli

m

10^-6

micro

u (mu in SI)

10^-9

nano

n

10^-12

pico

p

10^-15

femto

f

10^-18

atto

a

10^-21

zepto

z

10^-24

yocto

y

Defining your own

It can be useful to define your own units for printing purposes. So for example, to define the newton metre, you write

>>> from brian2 import *
>>> from brian2.units.allunits import newton
>>> Nm = newton * metre

You can then do

>>> (1*Nm).in_unit(Nm)
'1. N m'

New “compound units”, i.e. units that are composed of other units will be automatically registered and from then on used for display. For example, imagine you define total conductance for a membrane, and the total area of that membrane:

>>> conductance = 10.*nS
>>> area = 20000*um**2

If you now ask for the conductance density, you will get an “ugly” display in basic SI dimensions, as Brian does not know of a corresponding unit:

>>> conductance/area
0.5 * metre ** -4 * kilogram ** -1 * second ** 3 * amp ** 2

By using an appropriate unit once, it will be registered and from then on used for display when appropriate:

>>> usiemens/cm**2
usiemens / (cmetre ** 2)
>>> conductance/area  # same as before, but now Brian knows about uS/cm^2
50. * usiemens / (cmetre ** 2)

Note that user-defined units cannot override the standard units (volt, second, etc.) that are predefined by Brian. For example, the unit Nm has the dimensions “length²·mass/time²”, and therefore the same dimensions as the standard unit joule. The latter will be used for display purposes:

>>> 3*joule
3. * joule
>>> 3*Nm
3. * joule

Attributes

_dispname

The display name of this unit.

_latexname

A LaTeX expression for the name of this unit.

_name

The full name of this unit.

dim

The Dimensions of this unit

dispname

The display name of the unit

iscompound

Whether this unit is a combination of other units.

latexname

The LaTeX name of the unit

name

The name of the unit

scale

The scale for this unit (as the integer exponent of 10), i.e. a scale of 3 means 10^3, e.g. for a "k" prefix.

Methods

create(dim, name, dispname[, latexname, scale])

Create a new named unit.

create_scaled_unit(baseunit, scalefactor)

Create a scaled unit from a base unit.

set_display_name(name)

Sets the display name for the unit.

set_latex_name(name)

Sets the LaTeX name for the unit.

set_name(name)

Sets the name for the unit.

Details

_dispname

The display name of this unit.

_latexname

A LaTeX expression for the name of this unit.

_name

The full name of this unit.

dim

The Dimensions of this unit

dispname

The display name of the unit

iscompound

Whether this unit is a combination of other units.

latexname

The LaTeX name of the unit

name

The name of the unit

scale

The scale for this unit (as the integer exponent of 10), i.e. a scale of 3 means 10^3, e.g. for a “k” prefix.

static create(dim, name, dispname, latexname=None, scale=0)[source]

Create a new named unit.

Parameters:

dim : Dimension

The dimensions of the unit.

name : str

The full name of the unit, e.g. 'volt'

dispname : str

The display name, e.g. 'V'

latexname : str, optional

The name as a LaTeX expression (math mode is assumed, do not add $ signs or similar), e.g. '\omega'. If no latexname is specified, dispname will be used.

scale : int, optional

The scale of this unit as an exponent of 10, e.g. -3 for a unit that is 1/1000 of the base scale. Defaults to 0 (i.e. a base unit).

Returns:

u : Unit

The new unit.

static create_scaled_unit(baseunit, scalefactor)[source]

Create a scaled unit from a base unit.

Parameters:

baseunit : Unit

The unit of which to create a scaled version, e.g. volt, amp.

scalefactor : str

The scaling factor, e.g. "m" for mvolt, mamp

Returns:

u : Unit

The new unit.

set_display_name(name)[source]

Sets the display name for the unit.

Deprecated since version 2.1: Create a new unit with Unit.create instead.

set_latex_name(name)[source]

Sets the LaTeX name for the unit.

Deprecated since version 2.1: Create a new unit with Unit.create instead.

set_name(name)[source]

Sets the name for the unit.

Deprecated since version 2.1: Create a new unit with Unit.create instead.