Skip to content

Galvanostatic Impedance Spectroscopy

This page documents the Galvanostatic Impedance Spectroscopy (GIS or GEIS) method.

pypalmsens.GalvanostaticImpedanceSpectroscopy

Create galvanostatic impedance spectroscopy method parameters.

For Galvanostatic EIS (GEIS) the modes are:

  • a frequency scan at a fixed dc-current
  • frequency scans at each current in a current scan
  • frequency scans at specified time intervals (time scan)
  • a single frequency applied at each current in a current scan
  • a single frequency at specified time intervals

Methods:

  • to_dict

    Return the technique instance as a new key/value dictionary mapping.

  • from_dict

    Structure technique instance from dict.

  • from_method_id

    Create new instance of appropriate technique from method ID.

Attributes:

general class-attribute instance-attribute

general: General = Field(default_factory=General)

Sets general/other settings.

multiplexer class-attribute instance-attribute

multiplexer: Multiplexer = Field(default_factory=Multiplexer)

Set the multiplexer settings.

measurement_triggers class-attribute instance-attribute

measurement_triggers: MeasurementTriggers = Field(default_factory=MeasurementTriggers)

Set the trigger at measurement settings.

equilibrion_triggers class-attribute instance-attribute

equilibrion_triggers: EquilibrationTriggers = Field(default_factory=EquilibrationTriggers)

Set the trigger at equilibration settings.

post_measurement class-attribute instance-attribute

post_measurement: PostMeasurement = Field(default_factory=PostMeasurement)

Set the post measurement settings.

pretreatment class-attribute instance-attribute

pretreatment: Pretreatment = Field(default_factory=Pretreatment)

Set the pretreatment settings.

potential_range class-attribute instance-attribute

potential_range: PotentialRange = Field(default_factory=PotentialRange)

Set the autoranging potential.

current_range class-attribute instance-attribute

current_range: CurrentRange = Field(default_factory=CurrentRange)

Set the autoranging current.

id class-attribute instance-attribute

id: Literal['gis'] = 'gis'

Unique method identifier.

applied_current_range class-attribute instance-attribute

applied_current_range: AllowedCurrentRanges = '100uA'

Applied current range.

This is the range in which the specified current values (such as ac_current, begin_current, or `step_current) will be applied.

See pypalmsens.settings.AllowedCurrentRanges for options.

equilibration_time class-attribute instance-attribute

equilibration_time: float = 0.0

Equilibration time in s.

ac_current class-attribute instance-attribute

ac_current: float = 0.01

AC current expressed in the applied current range RMS.

dc_current class-attribute instance-attribute

dc_current: float = 0.0

DC current expressed in the applied current range.

frequency_type class-attribute instance-attribute

frequency_type: AllowedFrequencyTypes = 'scan'

Whether to measure a single frequency or scan over a range of frequencies.

Possible values: 'scan', 'fixed'.

  • Scan: a frequency scan is performed starting at the given max_frequency to the min_frequency.
  • Fixed: a single frequency given by fixed_frequency is applied for the given duration or at each potential step or time interval.

fixed_frequency class-attribute instance-attribute

fixed_frequency: float = 1000

Fixed frequency in Hz (fixed frequency only).

min_frequency class-attribute instance-attribute

min_frequency: float = 5.0

Minimum frequency in Hz (frequency scan only).

max_frequency class-attribute instance-attribute

max_frequency: float = 10000

Maximum frequency in Hz (frequency scan only).

n_frequencies class-attribute instance-attribute

n_frequencies: int = 11

Number of frequencies (frequency scan only).

Defines the range of frequencies to apply between the max_frequency and min_frequency. For example, a value of 11 will measure at 11 frequencies, including both end points.

scan_type class-attribute instance-attribute

scan_type: AllowedScanTypes = 'fixed'

Whether a single or multiple frequency scans are performed.

Possible values: 'current', 'time', 'fixed'.

  • Fixed scan: perform a single scan (default).
  • Time scan: scans are repeated for a specific amount of time at a specific interval.
  • Current scan: scans are repeated over a range of current values, starting at begin_current and ending at end_current with step size step_current. At each DC current level, a single fixed frequency or frequency scan is applied.

run_time class-attribute instance-attribute

run_time: float = 10.0

Minimal run time in seconds in s (time scan only).

For example, if a frequency scan takes 18 seconds and is measured at an interval of 19 seconds for a run_time of 40 seconds, then three iterations will be performed.

interval_time class-attribute instance-attribute

interval_time: float = 0.1

The interval at which a measurement iteration should be performed in s (time scan only).

The minimum interval time between each data point (frequency_type='fixed') or between each frequency scan (frequency_type='scan'). We recommend a time higher than the required time to measure the data point or perform the frequency scan + overhead time. While it's possible to use a shorter time, doing so may lead to incorrect impedance calculations.

If a measurement iteration takes longer than the interval time the next measurement will not be triggered until after it has been completed.

begin_current class-attribute instance-attribute

begin_current: float = 0.0

Current at which the scan starts expressed in the applied current range (current scan only).

end_current class-attribute instance-attribute

end_current: float = 0.0

Current at which the scan ends expressed in the applied current range (current scan only).

step_current class-attribute instance-attribute

step_current: float = 0.01

Current step size expressed in the applied current range (current scan only).

This sets the increment to be used between begin_current and end_current.

min_sampling_time class-attribute instance-attribute

min_sampling_time: float = Field(0.5, gt=0)

Minimum sampling time in s.

Each measurement point of the impedance spectrum is performed during the period specified by min_sampling_time.

This means that the number of measured sine waves is equal to min_sampling_time * frequency. If this value is less than 1 sine wave, the sampling is extended to 1 / frequency.

So for a measurement at a frequency, at least one complete sine wave is measured. Reasonable values for the sampling are in the range of 0.1 to 1 s.

max_equilibration_time class-attribute instance-attribute

max_equilibration_time: float = 5.0

Max equilibration time in s.

The EIS measurement requires a stationary state. This means that before the actual measurement starts, the sine wave is applied during max_equilibration_time only to reach the stationary state.

The maximum number of equilibration sine waves is however 5.

The minimum number of equilibration sines is set to 1, but for very low frequencies, this time is limited by max_equilibration_time.

The maximum time to wait for stationary state is determined by the value of this parameter. A reasonable value might be 5 seconds. In this case this parameter is only relevant when the lowest frequency is less than 1/5 s so 0.2 Hz.

to_dict

to_dict() -> dict[str, Any]

Return the technique instance as a new key/value dictionary mapping.

Source code in src/pypalmsens/_methods/base.py
45
46
47
def to_dict(self) -> dict[str, Any]:
    """Return the technique instance as a new key/value dictionary mapping."""
    return self.model_dump()

from_dict classmethod

from_dict(obj: dict[str, Any]) -> MethodType

Structure technique instance from dict.

Opposite of .to_dict()

Source code in src/pypalmsens/_methods/base.py
49
50
51
52
53
54
@classmethod
def from_dict(cls, obj: dict[str, Any]) -> MethodType:
    """Structure technique instance from dict.

    Opposite of `.to_dict()`"""
    return cls.model_validate(obj)  # type:ignore

from_method_id classmethod

from_method_id(id: str) -> MethodType

Create new instance of appropriate technique from method ID.

Source code in src/pypalmsens/_methods/base.py
56
57
58
59
60
@classmethod
def from_method_id(cls, id: str) -> MethodType:
    """Create new instance of appropriate technique from method ID."""
    new = cls._registry[id]
    return new()