# ELECTRODE¶

Describes electrode position, direction and geometry

## Initialization¶

• Python

from simnibs import sim_struct
s = sim_struct.SESSION()


• MATLAB

s = sim_struct('SESSION');
s.poslist{1} = sim_struct('TDCSLIST');
electrode = s.poslist{1}.electrode(1);


## Attributes¶

• centre: list/array of floats or string/character array (Python/MATLAB)

• Description: Center of the electrode. Can either be a set of coordinates in the head model or the name of an EEG 10-10 electrode position

• Example Python/MATLAB

Center the electrode in Cz

electrode.centre = 'Cz'


Center the electrode using the coordinates

electrode.centre = [-1.2, -15.8, 116.0]


• Note: More about coordinates in SimNIBS. Coordinates do not need to be exactly in the skin surface, as SimNIBS automatically finds the closest point in the skin surface.

• pos_ydir: list/array of floats or string/character array (Python/MATLAB)

• Description: Position along the electrode’s y axis. Can either be a set of coordinates in the head model or the name of an EEG 10-10 electrode position

• Example: Python/MATLAB

To set-up an electrode centered at AF4 and with a y axis pointing laterally, you can use

electrode.centre = 'AF4'
electrode.pos_ydir = 'F6'


The resulting electrode is oriented such as the following:

• Note: Not required for circular electrodes. More about coordinates in SimNIBS. Coordinates do not need to be exactly in the skin surface, as SimNIBS automatically finds the closest point in the skin surface.

• shape: ‘rect’ or ‘ellipse’ or ‘custom’

• Description: Shape of the electrode

• ‘rect’: Rectangle

• ‘ellipse’: Elliptical electrode

• ‘custom’: Custom shape (see vertices attribute)

• Note: To create a circular electrode, set shape to ‘ellipse’ and the two dimensions to the desired diameter.

• dimensions: list/array of floats (Python/Matlab)

• Description: Size of the electrode along the x and y directions of the electrode axes, in mm.

• Example: Python/MATLAB

To reproduce the electrode in the image shown above, you can use

electrode.centre = 'AF4'
electrode.pos_ydir = 'F6'
electrode.shape = 'rect'
electrode.dimensions = [50, 70]


To create a small 2cm (20mm) diameter electrode in Cz, use

electrode.centre = 'Cz'
electrode.shape = 'ellipse'
electrode.dimensions = [20,20]


• Note: only needed if shape is set to ‘rect’ or ‘ellipse’

• thickness: list/array of floath (Python/Matlab)

• Description: Array with electrode thickness, in mm. Can have 1, 2 or 3 elements

• 1 element: Will be a simple electrode, composed of only saline.

• 2 elements: Electrode with two layers, corresponding to a silicone rubber on top of a saline gel

• 3 elements: Electrode with three layers, corresponding silicone rubber electrode inside a sponge with saline solution. Only valid for rectangular and elliptical electrodes

• Example: Python/MATLAB

Electrode composed of a 5mm thick saline gel in the bottom and a 2mm thick rubber electrode on top

electrode.thickness = [5, 2]


Electrode 2mm thick rubber electrode in the middle of a 8mm thick sponge

electrode.thickness = [4, 2, 4]


• Reference: Saturnino et al., 2016

• channelnr: int

• Description: number of the channel this electrode is connected to. Corresponds to an entry in the currents attribute of the TDCSLIST structure

• Example: MATLAB

Set the first electrode as an anode and the second as a cathode, 1mA current.

tdcslist.currents = [1e-3, -1e-3];
tdcslist.electrode(1).channelnr = 1;
tdcslist.electrode(2).channelnr = 2;


Set the one electrode as an anode and the 4 other as cathodes. Connect each cathode to a different channel with a current of 0.25mA

tdcslist.currents = [1e-3, -0.25e-3, -0.25e-3, -0.25e-3, -0.25e-3];
tdcslist.electrode(1).channelnr = 1;
tdcslist.electrode(2).channelnr = 2;
tdcslist.electrode(3).channelnr = 3;
tdcslist.electrode(4).channelnr = 4;
tdcslist.electrode(5).channelnr = 5;


Instead, connect all cathodes to a single channel. This way, a total current of 1mA will flow through the cathodes, but it will not be equally distributed.

tdcslist.currents = [1e-3, -1e-3]
tdcslist.electrode(1).channelnr = 1;
tdcslist.electrode(2).channelnr = 2;
tdcslist.electrode(3).channelnr = 2;
tdcslist.electrode(4).channelnr = 2;
tdcslist.electrode(5).channelnr = 2;


• dimensions_sponge: list/array of floats (Python/MATLAB), optional

• Description: Dimensions of the sponge, in mm, must be larger than the electrode dimensions. Required for sponge electrodes (see the thickness attribute)

• Example: Python/MATLAB

Simulate a 50x70mm rubber electrode in a 100x100mm sponge

electrode.shape = 'rect'
electrode.dimensions = [50, 70]
electrode.thickness = [4, 2, 4]
electrode.dimensions_sponge = [100, 100]


• vertices: 2D list/arrat of floats (Python/MATLAB), optional

• Description: Gives the vertices of the electrodes in a 2D plane (if definition is ‘plane’ and shape is ‘custom’) or in the head surface (if definition is ‘conf’). The vertices should be ordered either in clockwise or counter-clockwise direction.

• Example:

• Python

Create a triangular electrode

electrode.shape = 'custom'
electrode.vertices = [
[-10, -10],
[10, -10],
[0, 10]]


• MATLAB

Create an electrode based on points sampled from the head surface

electrode.definition = 'conf'
electrode.vertices = [...
0.8, 72.4, 81.7;...
57.6, 45.0, 66.8;...
58.7, 64.5, 25.8;...
-0.8, 90.21, 38.4]


• definition: ‘plane’ or ‘conf’, optional

• Description: How the electrodes are defined.

• ‘plane’: Electrodes are set through a shape and dimensions, defined in a 2D plane

• ‘conf’: Electrodes are set by giving the coordinates of their vertices in the subject space.

• Default: ‘plane’

• Note: See the documentation for the vertices attribute for more information.

• holes: list/array of ELECTRODE structures

• Description: Defines holes in the electrodes. For that, we used a nested ELECTRODE structure.

• Example:

• Python

Make a ring electrode with outer diameter 100mm and inner diameter 80mm

electrode.shape = 'ellipse'
electrode.dimensions = [100, 100]
electrode.thickness = 4
hole.shape = 'ellipse'
hole.dimensions = [80, 80]
hole.centre = [0, 0]


• MATLAB

Same as the above

electrode.shape = 'ellipse';
electrode.dimensions = [100, 100];
electrode.thickness = 4;
electrode.holes = sim_struct('ELECTRODE');
electrode.holes.shape = 'ellipse';
electrode.holes.dimensions = [80, 80];
electrode.holes.centre = [0, 0];


• Note: Hole centers can be defined in the 2D plane defined by the electrode

• plug: list/array of ELECTRODE structures

• Description: Defines the region where the stimulator cable comes in.

• Example:

• Python

Define a 50x70mm rectangular electrode and place a small plug in the middle of the small edge, to the right of the electrode.

electrode.shape = 'rect'
electrode.dimensions = [50, 70]
electrode.thickness = 4
plug.shape = 'rect'
plug.dimensions = [5, 20]
plug.centre = [0, 25]


• MATLAB

Same as the above

electrode.shape = 'rect';
electrode.dimensions = [50, 70];
electrode.thickness = 4;
electrode.plug = sim_struct('ELECTRODE');
electrode.plug.shape = 'rect';
electrode.plug.dimensions = [5, 20];
electrode.plug.centre = [0, 25];


• Reference: Saturnino et al., 2016

## Examples¶

• Define a rectangular electrode of dimensions 50x70mm, placed at AF4 and pointing laterally, composed of a saline layer of 4mm and a rubber layer of 2mm.

Python/MATLAB

electrode.centre = 'AF4'
electrode.pos_ydir = 'F6'
electrode.shape = 'rect'
electrode.dimensions = [50, 70]
electrode.thickness = [4, 2]


• Define a ring electrode with an outer diameter of 80mm and an inner diameter of 60mm, placed on C3. The electrode is modelled as a single saline layer of 5mm

• Python

electrode.centre = 'C3'
electrode.shape = 'ellipse'
electrode.dimensions = [80, 80]
electrode.thickness = [5]
hole.centre = [0, 0]
hole.shape = 'ellipse'
hole.dimensions = [60, 60]


• MATLAB

electrode.centre = 'C3';
electrode.shape = 'ellipse';
electrode.dimensions = [80 80];
electrode.thickness = 5;
electrode.holes = sim_struct('ELECTRODE');
electrode.holes.centre = [0 0];
electrode.holes.shape = 'ellipse';
electrode.holes.dimensions = [60 60];


• Define a 50x50x2mm silicone rubber electrode placed in the middle of a 60x70x10mm sponge soaked in saline solution. Place the electrode over C6 pointing anteriorly

Python/MATLAB

electrode.shape = 'rect'
electrode.dimensions = [50, 50]
electrode.thickness = [5, 2, 5]
electrode.dimensions_sponge = [60, 70]
electrode.centre = 'C6'
electrode.pos_ydir = 'FC6'