Skip to content

About

Exploratory multimodal ML research with SciPy statistics and scikit-learn PCA/K-means on eye, cardiac and questionnaire data.

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Multimodal-Multisensor

Python analysis of eye, cardiac and questionnaire data from 10 adults across three weekly sessions. The code checks recordings, measures within-session variation and compares session summaries.

Keywords: Physiological signals · Reliability analysis · PCA · scikit-learn

Project pipeline: inputs, checks, analysis and outputs for available recordings and released group tables. Clock-dependent work is blocked by missing metadata.

View full size · Edit in Figma · Design files

The repository includes 51 source CSV files, 24 raw sensor streams and 22 Jupyter notebooks. Eye and cardiac recordings are available. GSR collection was attempted; facial integration was unfinished.

The shared mms package uses NumPy, pandas and SciPy for analysis, Matplotlib for plots and scikit-learn for exploratory clustering. The questionnaires include HADS, STAI-S, STAI-T, BFI-10 and the Fear Questionnaire.

Run the analysis

Use Python 3.11 or 3.12. From a clone of this repository:

python -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[dev,notebooks,docs]'
python -m pytest tests -q
python -m scripts.build_group_summaries --check
python -m scripts.build_figures --check
python -m scripts.build_recording_figures --check
python -m scripts.build_group_sensitivity --check

The --check commands read source data without writing files. Open the case study, group and individual notebooks with jupyter lab notebooks. Run python scripts/verify_notebooks.py to execute them in a temporary workspace and check that inputs stay unchanged.

See CONTRIBUTING.md for output settings and the hashed Linux environment. Installed wheels contain code only; use a repository checkout for the included data and notebooks.

Results and limitations

The released group tables give the following ICC(1,1) estimates for the session-to-session reliability of within-session standard deviations. Each estimate uses 10 participant rows across three sessions and a 95% confidence interval.

Within-session standard deviation ICC 95% interval
Interval samples 0.22 −0.13 to 0.66
Pupil diameter 0.45 0.07 to 0.79
Response duration 0.61 0.25 to 0.87

ICC estimates and 95 percent confidence intervals

These calculations describe the released tables. The small sample and wide intervals do not establish diagnostic accuracy or stable traits. The Spearman correlation plot is also descriptive.

  • Repeated cardiac interval samples are not verified unique beats. Cross-stream clock alignment is unverified.
  • Two equality patterns in the group tables are suspected duplicates. Most participant rows cannot be reconstructed from the available raw recordings.
  • The case-study summaries numerically match group row P02. That match does not independently confirm participant identity.

The data provenance describes schemas, units, source gaps and reconciliation tolerances. The figure notes record source hashes, filters and historical images, including photographs of the experimental setup.

Documentation and data use

Browse the documentation for the workflow, figures and data notes.

The original technical report, thesis and proposed protocol are preserved. Read the report corrections alongside them.

The author records consent for sharing and session photographs. Dates, device labels, responses and recognizable photos remain in the release; participant codes do not make it anonymous. Review the consent account, data terms and questionnaire rights before reuse. Code and notebooks use the MIT license. Cite the data using CITATION.cff.

About

Exploratory multimodal ML research with SciPy statistics and scikit-learn PCA/K-means on eye, cardiac and questionnaire data.

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages