eyeprocesspy 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eyeprocesspy-0.1.0/LICENSE +1 -0
- eyeprocesspy-0.1.0/PKG-INFO +234 -0
- eyeprocesspy-0.1.0/README.md +159 -0
- eyeprocesspy-0.1.0/pyproject.toml +129 -0
- eyeprocesspy-0.1.0/setup.cfg +4 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/__init__.py +177 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/adapters.py +148 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/advanced_process_irt_07.py +515 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/bayesian_3pl_08.py +67 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/benchmark_reproducibility_10.py +521 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/benchmark_stress_09.py +898 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/compositional_aoi_10.py +948 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/context_structure_08.py +526 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/coordinates.py +77 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/core_plots_10.py +986 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/dataset.py +157 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/dynamic_irt.py +1004 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/engine_adapters.py +587 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/evidence_graph.py +121 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/exceptions.py +23 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/foundation_09.py +1678 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/frontier_08.py +80 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/functional_pupil.py +544 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/gazepoint.py +415 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/gazepoint_real_10.py +588 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/gazepoint_workflow_10.py +1870 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/governance_09.py +1043 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/grouped_validation_10.py +521 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/importers.py +322 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/interoperability_storage_10.py +956 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/io_validation_10.py +2420 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/irt.py +1624 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/irt_validation_07.py +344 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/legacy_models.py +515 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/mapping.py +7 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/measurement_intelligence.py +366 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/measurement_intelligence_utils_10.py +416 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/measurement_quality_legacy.py +265 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/multimodal_staged.py +744 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/negative_controls_09.py +710 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/operational_validation_08.py +350 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/partitioned_storage_10.py +943 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_completion_08.py +388 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_functional_pupil.py +49 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_governance_08.py +151 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_governance_09.py +163 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_irt.py +195 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_irt_08.py +164 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_legacy_models.py +29 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_multimodal_staged.py +220 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_operational_08.py +44 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_process_irt_07.py +144 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/plots_process_quality_09.py +56 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/preprocess_features_09.py +1637 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/probabilistic_aoi_10.py +855 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/process_dynamics.py +279 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/process_governance_08.py +634 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/process_irt_07.py +803 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/process_quality_09.py +478 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/pupil_missingness.py +158 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/reproducibility_provenance_09.py +735 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/requested_api_07.py +311 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/api-lifecycle-module-policy-0.9.csv +109 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/api-lifecycle-registry-0.9.csv +1183 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/LICENSE.txt +1 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/README.md +5 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/SYNTHETIC_DATA.txt +1 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/aoi_definitions.csv +4 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/events.csv +193 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/expected_outputs.csv +12 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/gaze_samples.csv +4801 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/items.csv +9 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/manifest.csv +11 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/participants.csv +13 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/provenance.csv +7 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/pupil_samples.csv +3841 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/quality.csv +97 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/recordings.csv +13 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/responses.csv +97 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/dynamic_irtree_hidden.stan +128 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/dynamic_irtree_observed.stan +65 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/four-channel-response-rt-gaze-pupil.stan +105 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/functional_pupil_irt.stan +109 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/gaze_diffusion_irt.stan +127 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m0-response-reference-0-10.stan +67 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m1-response-rt-reference-0-10.stan +130 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m2-man2022-response-rt-gaze-0-10.stan +187 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m3-ablation-subset-0-10.stan +144 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m3-response-rt-gaze-pupil-0-10.stan +217 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m4-trait-conditioned-state-0-11.stan +417 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/theory_strategy_mixture.stan +70 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/three-way-response-rt-gaze.stan +78 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/schema.py +96 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/semantic_validation_07.py +399 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/sensitivity_08.py +92 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/software_paper_evidence_09.py +496 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/timebase.py +82 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_atlas_09.py +535 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_completion_10.py +875 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_evidence_10.py +698 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_evidence_programs_09.py +720 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_extras_09.py +681 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_orchestration_10.py +1687 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_orchestration_completion_10.py +1282 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_program_10.py +706 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/validation_stress_freeze_09.py +861 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/vendor_corpus_10.py +1295 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy/vendor_importers_10.py +1512 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/PKG-INFO +234 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/SOURCES.txt +244 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/dependency_links.txt +1 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/requires.txt +60 -0
- eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/top_level.txt +1 -0
- eyeprocesspy-0.1.0/tests/test_advanced_process_irt_07.py +144 -0
- eyeprocesspy-0.1.0/tests/test_advanced_process_irt_07_residual_coverage.py +332 -0
- eyeprocesspy-0.1.0/tests/test_benchmark_reproducibility_10.py +107 -0
- eyeprocesspy-0.1.0/tests/test_benchmark_stress_09.py +397 -0
- eyeprocesspy-0.1.0/tests/test_benchmark_stress_09_residual_coverage.py +356 -0
- eyeprocesspy-0.1.0/tests/test_compositional_aoi_10.py +304 -0
- eyeprocesspy-0.1.0/tests/test_compositional_aoi_10_residual_coverage.py +480 -0
- eyeprocesspy-0.1.0/tests/test_context_structure_08_residual_coverage.py +486 -0
- eyeprocesspy-0.1.0/tests/test_core_foundation_09.py +292 -0
- eyeprocesspy-0.1.0/tests/test_core_parity.py +78 -0
- eyeprocesspy-0.1.0/tests/test_core_plots_10.py +139 -0
- eyeprocesspy-0.1.0/tests/test_core_plots_10_residual_coverage.py +477 -0
- eyeprocesspy-0.1.0/tests/test_dynamic_irt_branch_coverage.py +361 -0
- eyeprocesspy-0.1.0/tests/test_dynamic_irt_residual_coverage.py +843 -0
- eyeprocesspy-0.1.0/tests/test_dynamic_strategy_diffusion.py +189 -0
- eyeprocesspy-0.1.0/tests/test_dynamic_strategy_exports.py +17 -0
- eyeprocesspy-0.1.0/tests/test_engine_adapters.py +162 -0
- eyeprocesspy-0.1.0/tests/test_engine_adapters_residual_coverage.py +455 -0
- eyeprocesspy-0.1.0/tests/test_final_coverage_closure_a.py +421 -0
- eyeprocesspy-0.1.0/tests/test_final_coverage_closure_b.py +269 -0
- eyeprocesspy-0.1.0/tests/test_final_coverage_closure_c.py +281 -0
- eyeprocesspy-0.1.0/tests/test_foundation_09_branch_coverage.py +344 -0
- eyeprocesspy-0.1.0/tests/test_foundation_09_residual_coverage.py +449 -0
- eyeprocesspy-0.1.0/tests/test_functional_pupil.py +131 -0
- eyeprocesspy-0.1.0/tests/test_functional_pupil_residual_coverage.py +372 -0
- eyeprocesspy-0.1.0/tests/test_functional_pupil_residual_coverage_2.py +309 -0
- eyeprocesspy-0.1.0/tests/test_gazepoint_parity.py +54 -0
- eyeprocesspy-0.1.0/tests/test_gazepoint_real_10.py +212 -0
- eyeprocesspy-0.1.0/tests/test_gazepoint_residual_coverage.py +503 -0
- eyeprocesspy-0.1.0/tests/test_gazepoint_workflow_10.py +207 -0
- eyeprocesspy-0.1.0/tests/test_gazepoint_workflow_residual_coverage.py +370 -0
- eyeprocesspy-0.1.0/tests/test_governance_09.py +273 -0
- eyeprocesspy-0.1.0/tests/test_governance_residual_coverage.py +745 -0
- eyeprocesspy-0.1.0/tests/test_grouped_validation_10.py +178 -0
- eyeprocesspy-0.1.0/tests/test_import_adapter_parity.py +76 -0
- eyeprocesspy-0.1.0/tests/test_interoperability_storage_10.py +279 -0
- eyeprocesspy-0.1.0/tests/test_interoperability_storage_10_residual_coverage.py +585 -0
- eyeprocesspy-0.1.0/tests/test_io_format_validation_10.py +527 -0
- eyeprocesspy-0.1.0/tests/test_io_validation_10_branch_coverage.py +227 -0
- eyeprocesspy-0.1.0/tests/test_io_validation_10_residual_coverage.py +476 -0
- eyeprocesspy-0.1.0/tests/test_io_validation_helpers_branch_coverage.py +323 -0
- eyeprocesspy-0.1.0/tests/test_irt_0_9_parity.py +164 -0
- eyeprocesspy-0.1.0/tests/test_irt_branch_coverage.py +384 -0
- eyeprocesspy-0.1.0/tests/test_irt_examples.py +9 -0
- eyeprocesspy-0.1.0/tests/test_irt_exports.py +18 -0
- eyeprocesspy-0.1.0/tests/test_irt_frontier_08.py +210 -0
- eyeprocesspy-0.1.0/tests/test_irt_p4_model_spec.py +13 -0
- eyeprocesspy-0.1.0/tests/test_irt_p4_numerical_parity.py +352 -0
- eyeprocesspy-0.1.0/tests/test_irt_plots.py +64 -0
- eyeprocesspy-0.1.0/tests/test_irt_residual_coverage.py +357 -0
- eyeprocesspy-0.1.0/tests/test_irt_residual_coverage_2.py +390 -0
- eyeprocesspy-0.1.0/tests/test_legacy_models.py +181 -0
- eyeprocesspy-0.1.0/tests/test_legacy_models_residual_coverage.py +441 -0
- eyeprocesspy-0.1.0/tests/test_measurement_intelligence.py +61 -0
- eyeprocesspy-0.1.0/tests/test_measurement_intelligence_exports.py +14 -0
- eyeprocesspy-0.1.0/tests/test_measurement_intelligence_residual_coverage.py +223 -0
- eyeprocesspy-0.1.0/tests/test_measurement_intelligence_utils_10.py +148 -0
- eyeprocesspy-0.1.0/tests/test_measurement_intelligence_utils_10_residual_coverage.py +215 -0
- eyeprocesspy-0.1.0/tests/test_measurement_quality_legacy_residual_coverage.py +245 -0
- eyeprocesspy-0.1.0/tests/test_multimodal_staged.py +348 -0
- eyeprocesspy-0.1.0/tests/test_multimodal_staged_articles.py +37 -0
- eyeprocesspy-0.1.0/tests/test_multimodal_staged_residual_coverage.py +501 -0
- eyeprocesspy-0.1.0/tests/test_negative_controls_09.py +326 -0
- eyeprocesspy-0.1.0/tests/test_negative_controls_09_residual_coverage.py +342 -0
- eyeprocesspy-0.1.0/tests/test_operational_validation_08.py +100 -0
- eyeprocesspy-0.1.0/tests/test_operational_validation_08_residual_coverage.py +266 -0
- eyeprocesspy-0.1.0/tests/test_partitioned_storage_10.py +242 -0
- eyeprocesspy-0.1.0/tests/test_partitioned_storage_10_residual_coverage.py +341 -0
- eyeprocesspy-0.1.0/tests/test_plots_completion_08.py +246 -0
- eyeprocesspy-0.1.0/tests/test_plots_governance_08_residual_coverage.py +342 -0
- eyeprocesspy-0.1.0/tests/test_plots_irt_08_residual_coverage.py +506 -0
- eyeprocesspy-0.1.0/tests/test_plots_multimodal_staged_residual_coverage.py +348 -0
- eyeprocesspy-0.1.0/tests/test_plots_process_irt_07_residual_coverage.py +248 -0
- eyeprocesspy-0.1.0/tests/test_preprocess_features_09.py +378 -0
- eyeprocesspy-0.1.0/tests/test_preprocess_features_09_branch_coverage.py +253 -0
- eyeprocesspy-0.1.0/tests/test_preprocess_features_09_residual_coverage.py +420 -0
- eyeprocesspy-0.1.0/tests/test_preprocess_features_09_residual_coverage_2.py +368 -0
- eyeprocesspy-0.1.0/tests/test_probabilistic_aoi_10.py +261 -0
- eyeprocesspy-0.1.0/tests/test_probabilistic_aoi_10_residual_coverage.py +275 -0
- eyeprocesspy-0.1.0/tests/test_process_dynamics_residual_coverage.py +331 -0
- eyeprocesspy-0.1.0/tests/test_process_governance_08.py +181 -0
- eyeprocesspy-0.1.0/tests/test_process_governance_08_residual_coverage.py +487 -0
- eyeprocesspy-0.1.0/tests/test_process_irt_07.py +145 -0
- eyeprocesspy-0.1.0/tests/test_process_irt_07_residual_coverage.py +590 -0
- eyeprocesspy-0.1.0/tests/test_process_irt_p4_completion.py +344 -0
- eyeprocesspy-0.1.0/tests/test_process_quality_09.py +224 -0
- eyeprocesspy-0.1.0/tests/test_public_api.py +14 -0
- eyeprocesspy-0.1.0/tests/test_public_api_front_door.py +20 -0
- eyeprocesspy-0.1.0/tests/test_reconstructed_measurement_p4.py +242 -0
- eyeprocesspy-0.1.0/tests/test_reconstructed_measurement_process.py +50 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_d.py +198 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_e.py +217 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_f.py +195 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_g.py +157 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_h.py +232 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_i.py +143 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_j.py +159 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_k.py +329 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_l.py +145 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_m.py +103 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_n.py +127 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_o.py +243 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_p.py +118 -0
- eyeprocesspy-0.1.0/tests/test_release_coverage_closure_q.py +371 -0
- eyeprocesspy-0.1.0/tests/test_reproducibility_provenance_09.py +365 -0
- eyeprocesspy-0.1.0/tests/test_reproducibility_provenance_09_residual_coverage.py +170 -0
- eyeprocesspy-0.1.0/tests/test_requested_api_07_residual_coverage.py +253 -0
- eyeprocesspy-0.1.0/tests/test_semantic_requested_api_07.py +172 -0
- eyeprocesspy-0.1.0/tests/test_semantic_validation_07_residual_coverage.py +318 -0
- eyeprocesspy-0.1.0/tests/test_software_paper_evidence_09.py +291 -0
- eyeprocesspy-0.1.0/tests/test_validation_atlas_09.py +306 -0
- eyeprocesspy-0.1.0/tests/test_validation_atlas_09_residual_coverage.py +195 -0
- eyeprocesspy-0.1.0/tests/test_validation_completion_10.py +149 -0
- eyeprocesspy-0.1.0/tests/test_validation_completion_10_residual_coverage.py +313 -0
- eyeprocesspy-0.1.0/tests/test_validation_evidence_10.py +324 -0
- eyeprocesspy-0.1.0/tests/test_validation_evidence_10_residual_coverage.py +424 -0
- eyeprocesspy-0.1.0/tests/test_validation_evidence_programs_09.py +432 -0
- eyeprocesspy-0.1.0/tests/test_validation_evidence_programs_09_residual_coverage.py +217 -0
- eyeprocesspy-0.1.0/tests/test_validation_extras_09.py +391 -0
- eyeprocesspy-0.1.0/tests/test_validation_extras_09_residual_coverage.py +207 -0
- eyeprocesspy-0.1.0/tests/test_validation_orchestration_10.py +341 -0
- eyeprocesspy-0.1.0/tests/test_validation_orchestration_10_residual_coverage.py +610 -0
- eyeprocesspy-0.1.0/tests/test_validation_orchestration_branch_coverage.py +249 -0
- eyeprocesspy-0.1.0/tests/test_validation_orchestration_completion_10.py +317 -0
- eyeprocesspy-0.1.0/tests/test_validation_orchestration_completion_residual_coverage.py +579 -0
- eyeprocesspy-0.1.0/tests/test_validation_program_10.py +232 -0
- eyeprocesspy-0.1.0/tests/test_validation_program_10_residual_coverage.py +469 -0
- eyeprocesspy-0.1.0/tests/test_validation_stress_freeze_09.py +457 -0
- eyeprocesspy-0.1.0/tests/test_validation_stress_freeze_09_residual_coverage.py +463 -0
- eyeprocesspy-0.1.0/tests/test_vendor_corpus_10.py +352 -0
- eyeprocesspy-0.1.0/tests/test_vendor_corpus_10_residual_coverage.py +504 -0
- eyeprocesspy-0.1.0/tests/test_vendor_importers_10.py +264 -0
- eyeprocesspy-0.1.0/tests/test_vendor_importers_10_residual_coverage.py +374 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MIT License
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: eyeprocesspy
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Vendor-neutral Python infrastructure for eye-tracking, pupillometry, biometrics, psychometrics, and multimodal process data, ported from eyeprocess 0.11.1.
|
|
5
|
+
Author: Stefanos Balaskas
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/stefanosbalaskas/eyeprocesspy
|
|
8
|
+
Project-URL: Documentation, https://stefanosbalaskas.github.io/eyeprocesspy/
|
|
9
|
+
Project-URL: Source, https://github.com/stefanosbalaskas/eyeprocesspy
|
|
10
|
+
Project-URL: Issues, https://github.com/stefanosbalaskas/eyeprocesspy/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/stefanosbalaskas/eyeprocesspy/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: eye-tracking,pupillometry,biometrics,psychometrics,item-response-theory,multimodal,behavioral-data,gazepoint,reproducibility
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: numpy>=1.26
|
|
26
|
+
Requires-Dist: pandas>=2.2
|
|
27
|
+
Requires-Dist: scipy>=1.13
|
|
28
|
+
Provides-Extra: arrow
|
|
29
|
+
Requires-Dist: pyarrow>=20; extra == "arrow"
|
|
30
|
+
Provides-Extra: stan
|
|
31
|
+
Requires-Dist: cmdstanpy>=1.3; extra == "stan"
|
|
32
|
+
Provides-Extra: bayes
|
|
33
|
+
Requires-Dist: pymc; extra == "bayes"
|
|
34
|
+
Requires-Dist: arviz; extra == "bayes"
|
|
35
|
+
Provides-Extra: physio
|
|
36
|
+
Requires-Dist: neurokit2; extra == "physio"
|
|
37
|
+
Requires-Dist: biosppy; extra == "physio"
|
|
38
|
+
Provides-Extra: streaming
|
|
39
|
+
Requires-Dist: pylsl; extra == "streaming"
|
|
40
|
+
Requires-Dist: pyxdf; extra == "streaming"
|
|
41
|
+
Provides-Extra: gaze
|
|
42
|
+
Requires-Dist: pymovements; extra == "gaze"
|
|
43
|
+
Requires-Dist: remodnav; extra == "gaze"
|
|
44
|
+
Requires-Dist: multimatch-gaze; extra == "gaze"
|
|
45
|
+
Provides-Extra: psychometrics
|
|
46
|
+
Requires-Dist: girth; extra == "psychometrics"
|
|
47
|
+
Requires-Dist: catsim; extra == "psychometrics"
|
|
48
|
+
Requires-Dist: patsy>=1.0; extra == "psychometrics"
|
|
49
|
+
Requires-Dist: statsmodels>=0.14; extra == "psychometrics"
|
|
50
|
+
Provides-Extra: plots
|
|
51
|
+
Requires-Dist: matplotlib>=3.9; extra == "plots"
|
|
52
|
+
Provides-Extra: ml
|
|
53
|
+
Requires-Dist: scikit-learn>=1.5; extra == "ml"
|
|
54
|
+
Provides-Extra: docs
|
|
55
|
+
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
56
|
+
Requires-Dist: mkdocs-material>=9.6; extra == "docs"
|
|
57
|
+
Requires-Dist: mkdocstrings[python]>=0.30; extra == "docs"
|
|
58
|
+
Provides-Extra: dev
|
|
59
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
60
|
+
Requires-Dist: pytest-cov>=6; extra == "dev"
|
|
61
|
+
Requires-Dist: coverage[toml]>=7.10; extra == "dev"
|
|
62
|
+
Requires-Dist: ruff>=0.12; extra == "dev"
|
|
63
|
+
Requires-Dist: mypy>=1.15; extra == "dev"
|
|
64
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
65
|
+
Requires-Dist: twine>=6; extra == "dev"
|
|
66
|
+
Requires-Dist: matplotlib>=3.9; extra == "dev"
|
|
67
|
+
Requires-Dist: patsy>=1.0; extra == "dev"
|
|
68
|
+
Requires-Dist: statsmodels>=0.14; extra == "dev"
|
|
69
|
+
Requires-Dist: scikit-learn>=1.5; extra == "dev"
|
|
70
|
+
Requires-Dist: pyarrow>=20; extra == "dev"
|
|
71
|
+
Requires-Dist: mkdocs>=1.6; extra == "dev"
|
|
72
|
+
Requires-Dist: mkdocs-material>=9.6; extra == "dev"
|
|
73
|
+
Requires-Dist: mkdocstrings[python]>=0.30; extra == "dev"
|
|
74
|
+
Dynamic: license-file
|
|
75
|
+
|
|
76
|
+
<p align="center">
|
|
77
|
+
<img src="https://raw.githubusercontent.com/stefanosbalaskas/eyeprocesspy/main/docs/assets/python-suite-logo.png" width="270" alt="Python Suite research packages logo">
|
|
78
|
+
</p>
|
|
79
|
+
|
|
80
|
+
<h1 align="center">eyeprocesspy</h1>
|
|
81
|
+
|
|
82
|
+
<p align="center">
|
|
83
|
+
<strong>Reproducible Python infrastructure for eye-tracking, pupillometry, AOIs, process data, psychometrics, and multimodal behavioral measurement.</strong>
|
|
84
|
+
</p>
|
|
85
|
+
|
|
86
|
+
<p align="center">
|
|
87
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/">Documentation</a> ·
|
|
88
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/getting-started/">Getting started</a> ·
|
|
89
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/gallery/">Visual gallery</a> ·
|
|
90
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/articles/">88 workflow articles</a>
|
|
91
|
+
</p>
|
|
92
|
+
|
|
93
|
+
[](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/ci.yml)
|
|
94
|
+
[](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/docs.yml)
|
|
95
|
+
[](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/deep-parity-audit.yml)
|
|
96
|
+
[](IMPLEMENTATION_STATUS.md)
|
|
97
|
+
[](RELEASE_VALIDATION.md)
|
|
98
|
+
[](https://www.python.org/)
|
|
99
|
+
[](docs/parity-and-validation.md)
|
|
100
|
+
|
|
101
|
+
`eyeprocesspy` is the Python companion and deep-parity port of the R package **eyeprocess**, with frozen **eyeprocess 0.11.1** as the scientific reference. It brings vendor import, canonical data contracts, preprocessing, gaze/AOI analysis, pupil workflows, process measurement, IRT, validation, scientific plots, provenance, and reporting into one auditable package.
|
|
102
|
+
|
|
103
|
+
> **0.1.0 release evidence:** the controlling deep-parity gate passed with **1,458 tests**, **23,085 / 23,085 statements**, and **9,680 / 9,680 branches** covered. The frozen API and article ledgers are complete, and the cross-platform release matrix is green.
|
|
104
|
+
|
|
105
|
+
## Release snapshot
|
|
106
|
+
|
|
107
|
+
| Dimension | Verified state |
|
|
108
|
+
| --- | ---: |
|
|
109
|
+
| Frozen R public APIs resolved | **1,182 / 1,182** |
|
|
110
|
+
| Frozen R reference | **0.11.1** |
|
|
111
|
+
| Frozen workflow articles linked | **88 / 88** |
|
|
112
|
+
| P4 numerical `not_started` debt | **0** |
|
|
113
|
+
| P6 plot `not_started` debt | **0** |
|
|
114
|
+
| Full deep-parity tests | **1,458 passed** |
|
|
115
|
+
| Statement coverage | **23,085 / 23,085 (100%)** |
|
|
116
|
+
| Branch coverage | **9,680 / 9,680 (100%)** |
|
|
117
|
+
| CI matrix | **Ubuntu / macOS / Windows × Python 3.11–3.14** |
|
|
118
|
+
|
|
119
|
+
The exact evidence is recorded in [`RELEASE_VALIDATION.md`](RELEASE_VALIDATION.md) and [`TEST_SUMMARY.md`](TEST_SUMMARY.md).
|
|
120
|
+
|
|
121
|
+
## Installation
|
|
122
|
+
|
|
123
|
+
After publication to PyPI:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
pip install eyeprocesspy
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
For development or source installation:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
pip install "git+https://github.com/stefanosbalaskas/eyeprocesspy.git@v0.1.0"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Windows manual installation
|
|
136
|
+
|
|
137
|
+
The hardened installer has been exercised successfully on a real Windows installation with **Python 3.11.9**. Package verification passed, the recommended extras installed, and `python -m pip check` reported **No broken requirements found**.
|
|
138
|
+
|
|
139
|
+
From the extracted manual-install bundle:
|
|
140
|
+
|
|
141
|
+
```powershell
|
|
142
|
+
Set-ExecutionPolicy -Scope Process Bypass
|
|
143
|
+
.\install_eyeprocesspy.ps1 -WithAllRecommended
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The installer does **not** require the Windows `py` launcher and can also use an explicitly supplied interpreter path. See the [manual-install guide](https://stefanosbalaskas.github.io/eyeprocesspy/manual-install/).
|
|
147
|
+
|
|
148
|
+
## Why eyeprocesspy?
|
|
149
|
+
|
|
150
|
+
- **One coherent data model** for recordings, gaze samples, eye/pupil samples, fixations and episodes, events, intervals, AOIs, responses, features, quality, and provenance.
|
|
151
|
+
- **Scientific parity first:** **1,182 / 1,182** frozen APIs are resolved against eyeprocess 0.11.1, with governed records for unavoidable cross-language differences.
|
|
152
|
+
- **Process data as first-class evidence:** scanpaths, transitions, temporal structure, uncertainty, reliability, and psychometrics live in the same analytical surface.
|
|
153
|
+
- **Measurement guardrails:** calibration uncertainty, quality, reliability, DIF/fairness, and process metrics retain explicit interpretation boundaries.
|
|
154
|
+
- **Reproducibility by construction:** deterministic benchmarks, provenance, validation evidence, software-paper evidence, and release audits are built in.
|
|
155
|
+
- **Broad scientific plotting surface:** gaze, AOI, pupil, quality, IRT, process-measurement, validation, and model-diagnostic graphics are supported through Matplotlib-oriented workflows.
|
|
156
|
+
|
|
157
|
+
## Visual tour
|
|
158
|
+
|
|
159
|
+
| Gaze trace | Scanpath |
|
|
160
|
+
| --- | --- |
|
|
161
|
+
|  |  |
|
|
162
|
+
|
|
163
|
+
| Pupil time series | Probabilistic AOI membership |
|
|
164
|
+
| --- | --- |
|
|
165
|
+
|  |  |
|
|
166
|
+
|
|
167
|
+
| Process reliability | IRT information |
|
|
168
|
+
| --- | --- |
|
|
169
|
+
|  |  |
|
|
170
|
+
|
|
171
|
+
**[Open the complete visual gallery →](https://stefanosbalaskas.github.io/eyeprocesspy/gallery/)**
|
|
172
|
+
|
|
173
|
+
## 30-second reproducible check
|
|
174
|
+
|
|
175
|
+
```python
|
|
176
|
+
import eyeprocesspy as ep
|
|
177
|
+
|
|
178
|
+
study = ep.eyeprocess_benchmark_study()
|
|
179
|
+
audit = ep.validate_benchmark_study(study)
|
|
180
|
+
data = ep.import_benchmark_study(study)
|
|
181
|
+
|
|
182
|
+
print(audit["valid"])
|
|
183
|
+
print(data)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
For a real export:
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
import eyeprocesspy as ep
|
|
190
|
+
|
|
191
|
+
eye = ep.read_eye_export("participant_001.csv", vendor="auto")
|
|
192
|
+
issues = ep.validate_eye_dataset(eye)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Capability map
|
|
196
|
+
|
|
197
|
+
| Area | Representative capabilities |
|
|
198
|
+
| --- | --- |
|
|
199
|
+
| **Import & canonicalization** | Generic/vendor-aware readers, Gazepoint workflows, schema validation, coordinates, events/timebase, file pairing |
|
|
200
|
+
| **Preprocessing & gaze** | Fixations, saccades, dwell, scanpaths, transitions, entropy, recurrence, spatial/process features |
|
|
201
|
+
| **AOI uncertainty** | Hard, probabilistic and compositional AOIs; calibration-error propagation and sensitivity |
|
|
202
|
+
| **Pupil & multimodal analysis** | Baselines, pupil features, functional pupil, missingness, synchronized streams, staged multimodal models |
|
|
203
|
+
| **Psychometrics & IRT** | Foundations, scoring, fit, Q3, DIF/DTF, process-informed/dynamic/advanced IRT, diagnostics |
|
|
204
|
+
| **Measurement intelligence** | Reliability, calibration uncertainty, process guardrails, linking, norms, fairness, item-bank optimization |
|
|
205
|
+
| **Validation** | Recovery, SBC-style evidence, stress tests, negative controls, grouped/leakage-aware validation, evidence atlases |
|
|
206
|
+
| **Reproducibility** | Bundled benchmarks, provenance, manifests, frozen-R oracle, software-paper and release evidence |
|
|
207
|
+
| **Plots & reporting** | Publication-oriented plots, validation visualizations, scientific evidence/reporting helpers |
|
|
208
|
+
|
|
209
|
+
## Documentation
|
|
210
|
+
|
|
211
|
+
- **Website:** https://stefanosbalaskas.github.io/eyeprocesspy/
|
|
212
|
+
- [Getting started](docs/getting-started.md)
|
|
213
|
+
- [Manual installation](docs/manual-install.md)
|
|
214
|
+
- [Runnable examples](docs/examples/index.md)
|
|
215
|
+
- [Practical cookbook](docs/cookbook.md)
|
|
216
|
+
- [Visual gallery](docs/gallery.md)
|
|
217
|
+
- [Python-native guides](docs/guides/)
|
|
218
|
+
- [88-article workflow library](docs/articles/)
|
|
219
|
+
- [API and plotting reference](docs/reference/)
|
|
220
|
+
- [FAQ](docs/faq.md)
|
|
221
|
+
- [Parity and validation](docs/parity-and-validation.md)
|
|
222
|
+
- [Release and reproducibility](docs/release-and-reproducibility.md)
|
|
223
|
+
|
|
224
|
+
## Scientific boundary
|
|
225
|
+
|
|
226
|
+
`eyeprocesspy` provides **measurement and analysis infrastructure**. A metric is not automatically a validated psychological construct, diagnosis, or causal explanation. Reliability does not establish construct validity; prediction does not establish causation; probabilistic AOI membership reflects modeled coordinate uncertainty rather than probability of attention; and gaze, pupil, and biometric measures require an appropriate design, measurement model, and ethical interpretation.
|
|
227
|
+
|
|
228
|
+
## Relationship to R eyeprocess
|
|
229
|
+
|
|
230
|
+
The Python package is developed against the frozen `eyeprocess 0.11.1` reference. API, articles, data, plots, backends, numerical evidence, and unavoidable language-specific divergences are tracked explicitly. Python-native extensions are separated from reference parity so they do not masquerade as R-equivalent behavior.
|
|
231
|
+
|
|
232
|
+
## License
|
|
233
|
+
|
|
234
|
+
See [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/stefanosbalaskas/eyeprocesspy/main/docs/assets/python-suite-logo.png" width="270" alt="Python Suite research packages logo">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">eyeprocesspy</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>Reproducible Python infrastructure for eye-tracking, pupillometry, AOIs, process data, psychometrics, and multimodal behavioral measurement.</strong>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/">Documentation</a> ·
|
|
13
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/getting-started/">Getting started</a> ·
|
|
14
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/gallery/">Visual gallery</a> ·
|
|
15
|
+
<a href="https://stefanosbalaskas.github.io/eyeprocesspy/articles/">88 workflow articles</a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
[](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/ci.yml)
|
|
19
|
+
[](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/docs.yml)
|
|
20
|
+
[](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/deep-parity-audit.yml)
|
|
21
|
+
[](IMPLEMENTATION_STATUS.md)
|
|
22
|
+
[](RELEASE_VALIDATION.md)
|
|
23
|
+
[](https://www.python.org/)
|
|
24
|
+
[](docs/parity-and-validation.md)
|
|
25
|
+
|
|
26
|
+
`eyeprocesspy` is the Python companion and deep-parity port of the R package **eyeprocess**, with frozen **eyeprocess 0.11.1** as the scientific reference. It brings vendor import, canonical data contracts, preprocessing, gaze/AOI analysis, pupil workflows, process measurement, IRT, validation, scientific plots, provenance, and reporting into one auditable package.
|
|
27
|
+
|
|
28
|
+
> **0.1.0 release evidence:** the controlling deep-parity gate passed with **1,458 tests**, **23,085 / 23,085 statements**, and **9,680 / 9,680 branches** covered. The frozen API and article ledgers are complete, and the cross-platform release matrix is green.
|
|
29
|
+
|
|
30
|
+
## Release snapshot
|
|
31
|
+
|
|
32
|
+
| Dimension | Verified state |
|
|
33
|
+
| --- | ---: |
|
|
34
|
+
| Frozen R public APIs resolved | **1,182 / 1,182** |
|
|
35
|
+
| Frozen R reference | **0.11.1** |
|
|
36
|
+
| Frozen workflow articles linked | **88 / 88** |
|
|
37
|
+
| P4 numerical `not_started` debt | **0** |
|
|
38
|
+
| P6 plot `not_started` debt | **0** |
|
|
39
|
+
| Full deep-parity tests | **1,458 passed** |
|
|
40
|
+
| Statement coverage | **23,085 / 23,085 (100%)** |
|
|
41
|
+
| Branch coverage | **9,680 / 9,680 (100%)** |
|
|
42
|
+
| CI matrix | **Ubuntu / macOS / Windows × Python 3.11–3.14** |
|
|
43
|
+
|
|
44
|
+
The exact evidence is recorded in [`RELEASE_VALIDATION.md`](RELEASE_VALIDATION.md) and [`TEST_SUMMARY.md`](TEST_SUMMARY.md).
|
|
45
|
+
|
|
46
|
+
## Installation
|
|
47
|
+
|
|
48
|
+
After publication to PyPI:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pip install eyeprocesspy
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
For development or source installation:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pip install "git+https://github.com/stefanosbalaskas/eyeprocesspy.git@v0.1.0"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Windows manual installation
|
|
61
|
+
|
|
62
|
+
The hardened installer has been exercised successfully on a real Windows installation with **Python 3.11.9**. Package verification passed, the recommended extras installed, and `python -m pip check` reported **No broken requirements found**.
|
|
63
|
+
|
|
64
|
+
From the extracted manual-install bundle:
|
|
65
|
+
|
|
66
|
+
```powershell
|
|
67
|
+
Set-ExecutionPolicy -Scope Process Bypass
|
|
68
|
+
.\install_eyeprocesspy.ps1 -WithAllRecommended
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The installer does **not** require the Windows `py` launcher and can also use an explicitly supplied interpreter path. See the [manual-install guide](https://stefanosbalaskas.github.io/eyeprocesspy/manual-install/).
|
|
72
|
+
|
|
73
|
+
## Why eyeprocesspy?
|
|
74
|
+
|
|
75
|
+
- **One coherent data model** for recordings, gaze samples, eye/pupil samples, fixations and episodes, events, intervals, AOIs, responses, features, quality, and provenance.
|
|
76
|
+
- **Scientific parity first:** **1,182 / 1,182** frozen APIs are resolved against eyeprocess 0.11.1, with governed records for unavoidable cross-language differences.
|
|
77
|
+
- **Process data as first-class evidence:** scanpaths, transitions, temporal structure, uncertainty, reliability, and psychometrics live in the same analytical surface.
|
|
78
|
+
- **Measurement guardrails:** calibration uncertainty, quality, reliability, DIF/fairness, and process metrics retain explicit interpretation boundaries.
|
|
79
|
+
- **Reproducibility by construction:** deterministic benchmarks, provenance, validation evidence, software-paper evidence, and release audits are built in.
|
|
80
|
+
- **Broad scientific plotting surface:** gaze, AOI, pupil, quality, IRT, process-measurement, validation, and model-diagnostic graphics are supported through Matplotlib-oriented workflows.
|
|
81
|
+
|
|
82
|
+
## Visual tour
|
|
83
|
+
|
|
84
|
+
| Gaze trace | Scanpath |
|
|
85
|
+
| --- | --- |
|
|
86
|
+
|  |  |
|
|
87
|
+
|
|
88
|
+
| Pupil time series | Probabilistic AOI membership |
|
|
89
|
+
| --- | --- |
|
|
90
|
+
|  |  |
|
|
91
|
+
|
|
92
|
+
| Process reliability | IRT information |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
|  |  |
|
|
95
|
+
|
|
96
|
+
**[Open the complete visual gallery →](https://stefanosbalaskas.github.io/eyeprocesspy/gallery/)**
|
|
97
|
+
|
|
98
|
+
## 30-second reproducible check
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
import eyeprocesspy as ep
|
|
102
|
+
|
|
103
|
+
study = ep.eyeprocess_benchmark_study()
|
|
104
|
+
audit = ep.validate_benchmark_study(study)
|
|
105
|
+
data = ep.import_benchmark_study(study)
|
|
106
|
+
|
|
107
|
+
print(audit["valid"])
|
|
108
|
+
print(data)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
For a real export:
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
import eyeprocesspy as ep
|
|
115
|
+
|
|
116
|
+
eye = ep.read_eye_export("participant_001.csv", vendor="auto")
|
|
117
|
+
issues = ep.validate_eye_dataset(eye)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Capability map
|
|
121
|
+
|
|
122
|
+
| Area | Representative capabilities |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| **Import & canonicalization** | Generic/vendor-aware readers, Gazepoint workflows, schema validation, coordinates, events/timebase, file pairing |
|
|
125
|
+
| **Preprocessing & gaze** | Fixations, saccades, dwell, scanpaths, transitions, entropy, recurrence, spatial/process features |
|
|
126
|
+
| **AOI uncertainty** | Hard, probabilistic and compositional AOIs; calibration-error propagation and sensitivity |
|
|
127
|
+
| **Pupil & multimodal analysis** | Baselines, pupil features, functional pupil, missingness, synchronized streams, staged multimodal models |
|
|
128
|
+
| **Psychometrics & IRT** | Foundations, scoring, fit, Q3, DIF/DTF, process-informed/dynamic/advanced IRT, diagnostics |
|
|
129
|
+
| **Measurement intelligence** | Reliability, calibration uncertainty, process guardrails, linking, norms, fairness, item-bank optimization |
|
|
130
|
+
| **Validation** | Recovery, SBC-style evidence, stress tests, negative controls, grouped/leakage-aware validation, evidence atlases |
|
|
131
|
+
| **Reproducibility** | Bundled benchmarks, provenance, manifests, frozen-R oracle, software-paper and release evidence |
|
|
132
|
+
| **Plots & reporting** | Publication-oriented plots, validation visualizations, scientific evidence/reporting helpers |
|
|
133
|
+
|
|
134
|
+
## Documentation
|
|
135
|
+
|
|
136
|
+
- **Website:** https://stefanosbalaskas.github.io/eyeprocesspy/
|
|
137
|
+
- [Getting started](docs/getting-started.md)
|
|
138
|
+
- [Manual installation](docs/manual-install.md)
|
|
139
|
+
- [Runnable examples](docs/examples/index.md)
|
|
140
|
+
- [Practical cookbook](docs/cookbook.md)
|
|
141
|
+
- [Visual gallery](docs/gallery.md)
|
|
142
|
+
- [Python-native guides](docs/guides/)
|
|
143
|
+
- [88-article workflow library](docs/articles/)
|
|
144
|
+
- [API and plotting reference](docs/reference/)
|
|
145
|
+
- [FAQ](docs/faq.md)
|
|
146
|
+
- [Parity and validation](docs/parity-and-validation.md)
|
|
147
|
+
- [Release and reproducibility](docs/release-and-reproducibility.md)
|
|
148
|
+
|
|
149
|
+
## Scientific boundary
|
|
150
|
+
|
|
151
|
+
`eyeprocesspy` provides **measurement and analysis infrastructure**. A metric is not automatically a validated psychological construct, diagnosis, or causal explanation. Reliability does not establish construct validity; prediction does not establish causation; probabilistic AOI membership reflects modeled coordinate uncertainty rather than probability of attention; and gaze, pupil, and biometric measures require an appropriate design, measurement model, and ethical interpretation.
|
|
152
|
+
|
|
153
|
+
## Relationship to R eyeprocess
|
|
154
|
+
|
|
155
|
+
The Python package is developed against the frozen `eyeprocess 0.11.1` reference. API, articles, data, plots, backends, numerical evidence, and unavoidable language-specific divergences are tracked explicitly. Python-native extensions are separated from reference parity so they do not masquerade as R-equivalent behavior.
|
|
156
|
+
|
|
157
|
+
## License
|
|
158
|
+
|
|
159
|
+
See [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "eyeprocesspy"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Vendor-neutral Python infrastructure for eye-tracking, pupillometry, biometrics, psychometrics, and multimodal process data, ported from eyeprocess 0.11.1."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [
|
|
14
|
+
{name = "Stefanos Balaskas"},
|
|
15
|
+
]
|
|
16
|
+
keywords = [
|
|
17
|
+
"eye-tracking",
|
|
18
|
+
"pupillometry",
|
|
19
|
+
"biometrics",
|
|
20
|
+
"psychometrics",
|
|
21
|
+
"item-response-theory",
|
|
22
|
+
"multimodal",
|
|
23
|
+
"behavioral-data",
|
|
24
|
+
"gazepoint",
|
|
25
|
+
"reproducibility",
|
|
26
|
+
]
|
|
27
|
+
classifiers = [
|
|
28
|
+
"Development Status :: 4 - Beta",
|
|
29
|
+
"Intended Audience :: Science/Research",
|
|
30
|
+
"Operating System :: OS Independent",
|
|
31
|
+
"Programming Language :: Python :: 3",
|
|
32
|
+
"Programming Language :: Python :: 3.11",
|
|
33
|
+
"Programming Language :: Python :: 3.12",
|
|
34
|
+
"Programming Language :: Python :: 3.13",
|
|
35
|
+
"Programming Language :: Python :: 3.14",
|
|
36
|
+
"Topic :: Scientific/Engineering",
|
|
37
|
+
]
|
|
38
|
+
dependencies = [
|
|
39
|
+
"numpy>=1.26",
|
|
40
|
+
"pandas>=2.2",
|
|
41
|
+
"scipy>=1.13",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[project.urls]
|
|
45
|
+
Homepage = "https://github.com/stefanosbalaskas/eyeprocesspy"
|
|
46
|
+
Documentation = "https://stefanosbalaskas.github.io/eyeprocesspy/"
|
|
47
|
+
Source = "https://github.com/stefanosbalaskas/eyeprocesspy"
|
|
48
|
+
Issues = "https://github.com/stefanosbalaskas/eyeprocesspy/issues"
|
|
49
|
+
Changelog = "https://github.com/stefanosbalaskas/eyeprocesspy/blob/main/CHANGELOG.md"
|
|
50
|
+
|
|
51
|
+
[project.optional-dependencies]
|
|
52
|
+
arrow = ["pyarrow>=20"]
|
|
53
|
+
stan = ["cmdstanpy>=1.3"]
|
|
54
|
+
bayes = ["pymc", "arviz"]
|
|
55
|
+
physio = ["neurokit2", "biosppy"]
|
|
56
|
+
streaming = ["pylsl", "pyxdf"]
|
|
57
|
+
gaze = ["pymovements", "remodnav", "multimatch-gaze"]
|
|
58
|
+
psychometrics = ["girth", "catsim", "patsy>=1.0", "statsmodels>=0.14"]
|
|
59
|
+
plots = ["matplotlib>=3.9"]
|
|
60
|
+
ml = ["scikit-learn>=1.5"]
|
|
61
|
+
docs = [
|
|
62
|
+
"mkdocs>=1.6",
|
|
63
|
+
"mkdocs-material>=9.6",
|
|
64
|
+
"mkdocstrings[python]>=0.30",
|
|
65
|
+
]
|
|
66
|
+
dev = [
|
|
67
|
+
"pytest>=8",
|
|
68
|
+
"pytest-cov>=6",
|
|
69
|
+
"coverage[toml]>=7.10",
|
|
70
|
+
"ruff>=0.12",
|
|
71
|
+
"mypy>=1.15",
|
|
72
|
+
"build>=1.2",
|
|
73
|
+
"twine>=6",
|
|
74
|
+
"matplotlib>=3.9",
|
|
75
|
+
"patsy>=1.0",
|
|
76
|
+
"statsmodels>=0.14",
|
|
77
|
+
"scikit-learn>=1.5",
|
|
78
|
+
"pyarrow>=20",
|
|
79
|
+
"mkdocs>=1.6",
|
|
80
|
+
"mkdocs-material>=9.6",
|
|
81
|
+
"mkdocstrings[python]>=0.30",
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
[tool.setuptools]
|
|
85
|
+
package-dir = {"" = "src"}
|
|
86
|
+
include-package-data = true
|
|
87
|
+
|
|
88
|
+
[tool.setuptools.packages.find]
|
|
89
|
+
where = ["src"]
|
|
90
|
+
|
|
91
|
+
[tool.setuptools.package-data]
|
|
92
|
+
eyeprocesspy = [
|
|
93
|
+
"resources/stan/*.stan",
|
|
94
|
+
"resources/extdata/*.csv",
|
|
95
|
+
"resources/extdata/benchmark-study/*",
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
[tool.pytest.ini_options]
|
|
99
|
+
testpaths = ["tests"]
|
|
100
|
+
addopts = "-ra"
|
|
101
|
+
|
|
102
|
+
[tool.coverage.run]
|
|
103
|
+
branch = true
|
|
104
|
+
source = ["eyeprocesspy"]
|
|
105
|
+
parallel = false
|
|
106
|
+
|
|
107
|
+
[tool.coverage.report]
|
|
108
|
+
show_missing = true
|
|
109
|
+
skip_covered = false
|
|
110
|
+
precision = 2
|
|
111
|
+
fail_under = 100
|
|
112
|
+
exclude_also = [
|
|
113
|
+
"if TYPE_CHECKING:",
|
|
114
|
+
"raise NotImplementedError",
|
|
115
|
+
'if j >= n:',
|
|
116
|
+
'if md > float\(spec\.missingness_tolerance\) and status == "LOSSLESS":',
|
|
117
|
+
'raise AssertionError\("unreachable"\)',
|
|
118
|
+
]
|
|
119
|
+
partial_also = [
|
|
120
|
+
'if not dt\.size:return np\.nan',
|
|
121
|
+
'if width<3:raise EyeProcessValidationError\("Signal is too short for median filtering\."\)',
|
|
122
|
+
]
|
|
123
|
+
|
|
124
|
+
[tool.ruff]
|
|
125
|
+
line-length = 120
|
|
126
|
+
target-version = "py311"
|
|
127
|
+
|
|
128
|
+
[tool.ruff.lint]
|
|
129
|
+
select = ["E9", "F63", "F7", "F82"]
|