TDCS Network Optimization

As of SimNIBS 3.2, you can use SimNIBS to optimize electric fields based on distributed targets, such as t-maps from resting state networks. We use the problem set-up proposed in (Ruffini et al. 2014), and solve it using algorithms proposed in (Saturnino et al. 2019). The connection between the two algorithms is explained here

Leadfield Calculations

To run an optimization, please start by Creating a Leadfield.

Optimiztion

In the examples below, we use the T-map defined in ID03_MOTOR_ICA file as a target. This T-map is defined in MNI space

Python

''' Example of a SimNIBS tDCS optimization with a distributed target in Python
    Run with:

    simnibs_python tdcs_optimize_distributed.py

    Copyright (C) 2020 Guilherme B Saturnino
'''
import simnibs

# Initialize structure
opt = simnibs.opt_struct.TDCSDistributedOptimize()
# Select the leadfield file
opt.leadfield_hdf = 'leadfield/ernie_leadfield_EEG10-10_UI_Jurak_2007.hdf5'
# Subject path
opt.subpath = 'm2m_ernie/'
# Select a name for the optimization
opt.name = 'optimization/distributed'

# Select a maximum total current (in A)
opt.max_total_current = 4e-3
# Select a maximum current at each electrodes (in A)
opt.max_individual_current = 1e-3
# Select a maximum number of active electrodes (optional)
opt.max_active_electrodes = 10

# Image with the field we want
opt.target_image = 'ID03_MOTOR_ICA.nii.gz'
opt.mni_space = True # set to False if target_image is in subject space
# Target electric field intensity
opt.intensity = 0.1


# Run optimization
simnibs.run_simnibs(opt)

MATLAB

% Example of a SimNIBS tDCS optimization with a distributed target in Python

%    Copyright (C) 2020 Guilherme B Saturnino


% Initialize structure
opt = opt_struct('TDCSDistributedOptimize');
% Select the leadfield file
opt.leadfield_hdf = 'leadfield/ernie_leadfield_EEG10-10_UI_Jurak_2007.hdf5';
% Subject path
opt.subpath = 'm2m_ernie/';
% Select a name for the optimization
opt.name = 'optimization/distributed';

% Select a maximum total current (in A)
opt.max_total_current = 4e-3;
% Select a maximum current at each electrodes (in A)
opt.max_individual_current = 1e-3;
% Select a maximum number of active electrodes (optional)
opt.max_active_electrodes = 10;

% Image with the field we want
opt.target_image = 'ID03_MOTOR_ICA.nii.gz';
opt.mni_space = true; % set to false if target_image is in subject space
% Target electric field intensity
opt.intensity = 0.1;


% Run optimization
run_simnibs(opt)

Further Reading

Please see TDCSDistributedOptimize for a detailed description of all TDCS Network optimization options.