fake_pupil_baseline#

pypillometry.signal.fake_pupil_baseline(duration, fs, mean=750, amplitude=100, freq=0.5, filter_order=4, seed=None)[source]#

Generate smooth baseline pupil size via filtered noise.

Creates pupil size time series by: 1. Generating white noise 2. Low-pass filtering at specified frequency with edge handling 3. Scaling to desired amplitude and mean

Parameters:
  • duration (float) – Duration in seconds

  • fs (float) – Sampling rate in Hz

  • mean (float, default 750) – Mean pupil size in arbitrary units (typical EyeLink range: 500-1000 AU). Corresponds to area-proportional measurements, not diameter.

  • amplitude (float, default 100) – Amplitude of slow fluctuations (standard deviation of baseline variations)

  • freq (float, default 0.5) – Cutoff frequency for low-pass filter (Hz), controls fluctuation speed. Typical values: 0.1-0.5 Hz for spontaneous fluctuations, 0.5-1 Hz for cognitive load changes, 1-3 Hz for fast responses.

  • filter_order (int, default 4) – Order of Butterworth filter. Higher order = sharper cutoff. Roll-off is (filter_order * 6) dB/octave.

  • seed (int, optional) – Random seed for reproducibility

Returns:

  • t (np.ndarray) – Time vector (ms)

  • true_pupil (np.ndarray) – True pupil size time series

  • params (dict) – Parameters used for generation

Examples

>>> t, pupil, params = fake_pupil_baseline(duration=10, fs=1000, seed=42)
>>> print(f"Mean: {pupil.mean():.2f}, Std: {pupil.std():.2f}")
Mean: 743.57, Std: 100.00