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
.
Note
When using this feature in a publication, please cite Saturnino, G. B., Siebner, H. R., Thielscher, A., & Madsen, K. H. (2019). Accessibility of cortical regions to focal TES: Dependence on spatial position, safety, and practical constraints. NeuroImage, 203, 116183.
Leadfield Calculations¶
To run an optimization, please start by Creating a Leadfield.
Optimization¶
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.