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:

  • ColeCole4 for frequency-dependent tissue behavior using a multi-pole Cole-Cole formulation

  • ColeCole3 as a related reduced model

  • Constant for 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:

  1. provide a segmented MRI volume

  2. map voxel labels to tissue names in MRIMapping

  3. select a dielectric model in DielectricModel

  4. optionally 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 to true to load and use DTI data.

  • DTIPath — path to the DTI NIfTI file.

  • WMMasking (default: true) — when true, the DTI tensor is applied only in white-matter voxels; all other tissues receive an isotropic identity tensor. When false, the DTI tensor is applied everywhere.

How conductivity is constructed

At each voxel and each frequency, the final conductivity is computed as:

\[\begin{split}\boldsymbol{\sigma}(\mathbf{x}, \omega) = \begin{cases} \mathbf{D}(\mathbf{x}) \cdot \sigma_{\text{scalar}}(\mathbf{x}, \omega) & \text{if white matter (or WMMasking is off)} \\ \mathbf{I} \cdot \sigma_{\text{scalar}}(\mathbf{x}, \omega) & \text{otherwise} \end{cases}\end{split}\]

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.py script 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: ABC

Model 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: DielectricModel

Dielectric 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: object

Parameters for the 4-Cole-Cole model suggested by Gabriel et al.

alpha: ndarray
assert_order(order: int) bool[source]

Assert correct length of input.

eps_delta: ndarray
eps_inf: float
sigma: float
tau: ndarray
class ossdbs.dielectric_model.colecole3.ColeCole3Model(parameters: ColeColeParameters)[source]

Bases: ColeCole4Model

Cole-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: DielectricModel

Model 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.

class ossdbs.dielectric_model.constant.ConstantParameters(permittivity: float, conductivity: float)[source]

Bases: object

Parameters for the constant model. The default values are taken from the model by Gabriel et al. at a frequency of 10 kHz.

conductivity: float
permittivity: float