Transforms & Segmentation

power_spectrum()

Compute the power spectral density of an ECG lead

fft()

Compute the single-sided FFT magnitude spectrum

segment_beats()

Segment individual heartbeats around R-peaks

average_beat()

Compute the ensemble-averaged heartbeat (template)

  • fft returns a single-sided amplitude spectrum: a sinusoid of amplitude A reads A, and the DC (and even-length Nyquist) bins are not doubled.

  • power_spectrum supports method="welch" (default) and method="periodogram". Any other value raises ValueError.

  • fft and power_spectrum refuse empty input and NaN or Inf samples.

  • segment_beats and average_beat detect R-peaks with the default method of detect_r_peaks() when peaks is not given. Peaks must be integer indices (whole-number floats are accepted).

  • average_beat raises ValueError when no complete beat is available, instead of returning a flat template.

ecgdatakit.processing.power_spectrum(lead, method='welch', nperseg=None, *, fs=None)[source]

Compute the power spectral density of an ECG lead.

Parameters:
  • lead (Lead | NDArray[double]) – Input ECG lead or raw signal array.

  • method (str) – "welch" (default) for Welch’s averaged periodogram, or "periodogram" for a single periodogram of the whole signal.

  • nperseg (int | None) – Segment length for Welch’s method. Defaults to min(256, len(samples)). Not used by "periodogram".

  • fs (int | None) – Sample rate in Hz. Required when lead is a numpy array.

Returns:

(frequencies, power) arrays.

Return type:

tuple[NDArray[double], NDArray[double]]

ecgdatakit.processing.fft(lead, *, fs=None)[source]

Compute the single-sided FFT amplitude spectrum.

Bins are scaled so a sinusoid of amplitude A reads A: interior bins are doubled, the DC bin (and the Nyquist bin for an even length) are not.

Parameters:
  • lead (Lead | NDArray[double]) – Input ECG lead or raw signal array.

  • fs (int | None) – Sample rate in Hz. Required when lead is a numpy array.

Returns:

(frequencies, magnitudes) arrays (positive frequencies only).

Return type:

tuple[NDArray[double], NDArray[double]]

ecgdatakit.processing.segment_beats(lead, peaks=None, before=0.2, after=0.4, *, fs=None)[source]

Segment individual heartbeats around R-peaks.

Parameters:
  • lead (Lead | NDArray[double]) – Input ECG lead or raw signal array.

  • peaks (NDArray[int_] | None) – R-peak sample indices (integers, or whole-number floats). Detected with detect_r_peaks() and its default method if None.

  • before (float) – Seconds before R-peak to include (default 0.2).

  • after (float) – Seconds after R-peak to include (default 0.4).

  • fs (int | None) – Sample rate in Hz. Required when lead is a numpy array.

Returns:

One Lead per beat, labelled "{label}_beat_{i}". Beats whose window runs past either end of the signal are skipped.

Return type:

list[Lead]

ecgdatakit.processing.average_beat(lead, peaks=None, before=0.2, after=0.4, *, fs=None)[source]

Compute the ensemble-averaged heartbeat (template).

Parameters:
  • lead (Lead | NDArray[double]) – Input ECG lead or raw signal array.

  • peaks (NDArray[int_] | None) – R-peak sample indices. Detected with detect_r_peaks() and its default method if None.

  • before (float) – Seconds before R-peak (default 0.2).

  • after (float) – Seconds after R-peak (default 0.4).

  • fs (int | None) – Sample rate in Hz. Required when lead is a numpy array.

Returns:

Averaged beat labelled "{label}_avg".

Return type:

Lead

Raises:

ValueError – If no complete beat is available to average.