Dielectric properties
The dielectric model determines how tissue conductivity and permittivity are assigned during the simulation. In OSS-DBSv2, tissue labels from the MRI are mapped to material names such as gray matter, white matter, CSF, or blood, and the selected dielectric model converts those materials into frequency-dependent electrical properties.
Why this matters
The electric field depends strongly on tissue properties. This page covers the models used to translate anatomy into conductivity values for the volume conductor solve.
Available model families
OSS-DBSv2 currently provides:
ColeCole4for frequency-dependent tissue behavior using a multi-pole Cole-Cole formulationColeCole3as a related reduced modelConstantfor fixed conductivity and permittivity values
For many subject-specific workflows, a Cole-Cole model is the natural starting point. The constant model is often useful for controlled comparisons, simplified test cases, or custom homogeneous setups.
How material assignment works
The workflow is typically:
provide a segmented MRI volume
map voxel labels to tissue names in
MRIMappingselect a dielectric model in
DielectricModeloptionally provide custom parameter overrides
If DTI is active, anisotropy can be incorporated on top of the scalar material assignment (see Anisotropic conductivity from DTI below).
Anisotropic conductivity from DTI
Diffusion tensor imaging (DTI) data can be used to model the directional dependence of tissue conductivity, which is particularly important in white matter where myelinated fibre bundles cause strongly anisotropic conduction.
File format
The DTI input must be a 4-D NIfTI file (.nii or .nii.gz) with shape (x, y, z, 6). The last dimension stores the six unique components of the symmetric 3×3 diffusion tensor in the order:
index 0: xx
index 1: xy (= yx)
index 2: xz (= zx)
index 3: yy
index 4: yz (= zy)
index 5: zz
The file must use the same spatial reference frame as the segmented MRI. Spatial units in the NIfTI header are respected (meter, mm, or micron are converted to mm automatically).
The DTI data needs to be preprocessed before importing.
Currently, this is supported in Lead-DBS where common preprocessing steps are implemented.
The Lead-DBS template data provides an example
(IITmean_tensor_Norm_mapping.nii.gz).
JSON configuration
DTI is enabled in the MaterialDistribution block:
"MaterialDistribution": {
"MRIPath": "segmask.nii.gz",
"MRIMapping": {
"Unknown": 0,
"CSF": 1,
"White matter": 2,
"Gray matter": 3,
"Blood": 4
},
"DiffusionTensorActive": true,
"DTIPath": "dti_norm_mapping.nii.gz",
"WMMasking": true
}
DiffusionTensorActive(default:false) — set totrueto load and use DTI data.DTIPath— path to the DTI NIfTI file.WMMasking(default:true) — whentrue, the DTI tensor is applied only in white-matter voxels; all other tissues receive an isotropic identity tensor. Whenfalse, the DTI tensor is applied everywhere.
How conductivity is constructed
At each voxel and each frequency, the final conductivity is computed as:
where \(\mathbf{D}(\mathbf{x})\) is the normalised DTI tensor, \(\sigma_{\text{scalar}}\) is the scalar conductivity from the dielectric model (already converted to S/mm), and \(\mathbf{I}\) is the 3×3 identity tensor.
This means the DTI tensor acts as a directional scaling of the scalar tissue conductivity. Encapsulation layers are always treated as isotropic, even when DTI is active.
When DTI is enabled, the conductivity is returned as a tensor-valued (3×3 matrix) coefficient function. All downstream FEM operations (assembly, export) handle this automatically.
Practical guidance
White-matter masking (
WMMasking: true) is recommended. Without it, the DTI tensor is applied in all tissues, which can produce unphysical anisotropy in CSF or gray matter.Verify the DTI and MRI images share the same spatial reference. Mis- aligned images will map the wrong tensor to each voxel.
The
examples/ImageAPI/example_dti_mask.pyscript demonstrates how to inspect masked vs. unmasked conductivity fields and export them for visualisation in ParaView.
Practical guidance
Keep the MRI label mapping consistent with your segmentation pipeline.
Use built-in defaults first before introducing custom parameter sets.
When comparing studies, document both the dielectric model family and any custom parameters, since they can materially influence the results.
API reference
- class ossdbs.dielectric_model.dielectric_model.DielectricModel[source]
Bases:
ABCModel for the dielectric spectrum of tissues.
Notes
To add another model, define its complex permittivity and add the static conductivity.
- complex_conductivity(omega: float) complex[source]
Calculate the conductivity by the angular frequency omega.
- Parameters:
omega (float) – Angular frequency [1/s].
- Returns:
Complex conductivity.
- Return type:
complex
- abstract complex_permittivity(omega: float) complex[source]
Calculate the permittivity by the angular frequency omega.
- Parameters:
material (str) – Corresponding material.
omega (float) – Angular frequency [1/s].
- Returns:
Complex permittivity.
- Return type:
complex
- conductivity(omega: float) float[source]
Calculate the conductivity by the angular frequency omega.
- Parameters:
material (str) – Corresponding material.
omega (float) – Angular frequency [1/s].
- Returns:
Conductivity.
- Return type:
float
- permittivity(omega: float) float[source]
Calculate the permittivity by the angular frequency omega.
- Parameters:
material (str) – Corresponding material.
omega (float) – Angular frequency [1/s].
- Returns:
Permittivity.
- Return type:
float
- abstract property static_conductivity: float
Return conductivity at zero Hz (static limit).
- class ossdbs.dielectric_model.colecole4.ColeCole4Model(parameters: ColeColeParameters)[source]
Bases:
DielectricModelDielectric model with 4 Cole-Cole dispersions.
- complex_permittivity(omega: float) complex[source]
Calculate the permittivity by the angular frequency omega.
- Parameters:
omega (float) – Angular frequency [1/s].
- Returns:
Complex permittivity.
- Return type:
complex
- property static_conductivity: float
Return conductivity at DC / 0 Hz.
- class ossdbs.dielectric_model.colecole4.ColeColeParameters(eps_inf: float, sigma: float, alpha: ndarray, eps_delta: ndarray, tau: ndarray)[source]
Bases:
objectParameters for the 4-Cole-Cole model suggested by Gabriel et al.
- alpha: ndarray
- eps_delta: ndarray
- eps_inf: float
- sigma: float
- tau: ndarray
- class ossdbs.dielectric_model.colecole3.ColeCole3Model(parameters: ColeColeParameters)[source]
Bases:
ColeCole4ModelCole-Cole model with three dispersions.
Notes
The model values are chosen as described in [Zimmermann2021].
References
[Zimmermann2021]Zimmermann, J. and van Rienen, U. (2021) Ambiguity in the interpretation of the low-frequency dielectric properties of biological tissues. Bioelectrochemistry, 140, 107773. dx.doi.org/10.1016/j.bioelechem.2021.107773
- class ossdbs.dielectric_model.constant.ConstantModel(parameters: ConstantParameters)[source]
Bases:
DielectricModelModel for frequency-independent properties.
- complex_permittivity(omega: float) complex[source]
Calculate the permittivity by the angular frequency omega.
- Parameters:
omega (float) – Angular frequency [1/s].
- Returns:
Complex permittivity.
- Return type:
complex
- property static_conductivity: float
Returns the static conductivity.