Skip to content

Scientific Python for multimodal physiology + eye tracking

Measure. Align. Validate. Report.

gpbiometricspy brings the complete 406-function gpbiometrics 2.0.0 surface into Python for EDA/GSR/SCR, PPG/IBI/HRV, pupil, gaze, AOIs, event alignment, quality control, reporting, and research-tool interoperability — with gpbiometricspy Studio as a Shiny for Python application layer over the same public scientific API.

0.1.5stable release
0.1.6.dev0development head
2026-09-08release date
406 / 406R exports implemented
100%statement coverage
99.6636%raw branch coverage
0unaudited branch debt
3.11–3.14Python CI matrix

Stable 0.1.5 release source

Stable gpbiometricspy 0.1.5 (2026-09-08) preserves 406/406 exports with 0 pending and freezes the current validation baseline at 567 passing tests, 10,456/10,456 statements = 100.00%, and 5,629/5,648 raw branches = 99.6636%. The same 19 reviewed structural arcs remain, with 0 unexpected, 0 stale, and 0 unaudited branch debt. Audited branch accounting is 5,648/5,648 = 100.0000% without relabelling the honest raw metric. The 0.1.5 Zenodo version DOI is 10.5281/zenodo.22672823; the previous 0.1.4 DOI remains 10.5281/zenodo.22515782, and the software concept DOI remains 10.5281/zenodo.22150872. The immutable 0.1.5 wheel and sdist are public on PyPI, while live repository development proceeds as 0.1.6.dev0.

0.1.5 measurement-accountability additions

Version 0.1.5 adds metric-specific ECG-HRV/PPG-PRV agreement through compare_hrv_prv_devices(), retention-first SCR responsivity through scr_responsivity_sensitivity(), a five-stage validation_ladder(), and experimental topology-aware PPG morphology through ppg_topology_features(). Agreement is assessed per derived metric and acquisition configuration, low-reactive SCR participants are retained for sensitivity analysis rather than automatically deleted, generalization requires held-out-person evidence, and topology outputs remain structural descriptors rather than direct physiological surrogates. See Measurement accountability.

Installed Studio replay evidence

Stable 0.1.5 expands production browser validation into installed wheel and sdist replay paths on Python 3.11 and 3.14. High-value physiology, gaze/pupil, external event/alignment, multimodal/modelling, and cluster-permutation paths are exercised with deterministic replay completion checks and fail-closed dataset/secondary-resource fingerprint validation. The public synthetic deployment boundary remains upload-restricted and separate from full local/authenticated research-data use.

Code or Studio

Use the Python API when you want scripts, notebooks, pipelines, or direct integration into a larger analysis stack. Use Studio when you want one stateful research interface over the same package functions.

The Studio public-deployment boundary is synthetic-only and fail-closed for external file uploads. Research data belong in the full local Studio or an appropriately authenticated/private deployment.

Install and move

python -m pip install gpbiometricspy
python -m pip install \
  "gpbiometricspy @ git+https://github.com/stefanosbalaskas/gpbiometricspy.git@main"
git clone https://github.com/stefanosbalaskas/gpbiometricspy.git
cd gpbiometricspy
python -m pip install -e ".[studio]"
gpbiometricspy-studio
import gpbiometricspy as gp

data = gp.load_kiosk_demo()
validity = gp.summarise_gazepoint_biometric_validity(data)
events = gp.extract_gazepoint_ttl_events(data)
Bundled demo: 36 synthetic participants · 4 tasks each · 69,120 Gazepoint-like rows at 60 Hz.

Choose your workflow

Built for research you can audit

Parity with provenance

The frozen R reference is retained alongside the Python implementation, with 406/406 exports registered and 26 article companions preserved.

Inspect parity →

Validation as a first-class output

Stable 0.1.5 CI enforces 100% statement coverage across Ubuntu, Windows, and macOS on Python 3.11–3.14; the branch audit reports 5,629/5,648 raw branches = 99.6636%, enforces a 99.6% raw floor, and requires exact equality to the reviewed 19-entry structural-debt ledger with zero unexpected, stale, or unaudited missing paths. Deep parity, interoperability, Studio smoke, Chromium E2E and installed production-deployment checks remain independent gates.

See validation →

Conservative interpretation

Signal processing and descriptive summaries are kept distinct from unsupported claims about emotion, stress, preference, cognition, or diagnosis.

Read guardrails →

From raw export to defensible result

Gazepoint / external streams
  → schema + channel audit
  → timing / TTL / dropout QC
  → EDA / PPG / IBI / pupil / gaze preprocessing
  → event / AOI / multimodal alignment
  → feature extraction + model-ready tables
  → plots + reports + reproducibility outputs
  → optional external-toolbox cross-checks

Generated by the package, not drawn for the website

Every gallery image is regenerated from the current Python API during the documentation workflow. Browse all 13 generated figures.

Documentation paths