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.
Files changed (246) hide show
  1. eyeprocesspy-0.1.0/LICENSE +1 -0
  2. eyeprocesspy-0.1.0/PKG-INFO +234 -0
  3. eyeprocesspy-0.1.0/README.md +159 -0
  4. eyeprocesspy-0.1.0/pyproject.toml +129 -0
  5. eyeprocesspy-0.1.0/setup.cfg +4 -0
  6. eyeprocesspy-0.1.0/src/eyeprocesspy/__init__.py +177 -0
  7. eyeprocesspy-0.1.0/src/eyeprocesspy/adapters.py +148 -0
  8. eyeprocesspy-0.1.0/src/eyeprocesspy/advanced_process_irt_07.py +515 -0
  9. eyeprocesspy-0.1.0/src/eyeprocesspy/bayesian_3pl_08.py +67 -0
  10. eyeprocesspy-0.1.0/src/eyeprocesspy/benchmark_reproducibility_10.py +521 -0
  11. eyeprocesspy-0.1.0/src/eyeprocesspy/benchmark_stress_09.py +898 -0
  12. eyeprocesspy-0.1.0/src/eyeprocesspy/compositional_aoi_10.py +948 -0
  13. eyeprocesspy-0.1.0/src/eyeprocesspy/context_structure_08.py +526 -0
  14. eyeprocesspy-0.1.0/src/eyeprocesspy/coordinates.py +77 -0
  15. eyeprocesspy-0.1.0/src/eyeprocesspy/core_plots_10.py +986 -0
  16. eyeprocesspy-0.1.0/src/eyeprocesspy/dataset.py +157 -0
  17. eyeprocesspy-0.1.0/src/eyeprocesspy/dynamic_irt.py +1004 -0
  18. eyeprocesspy-0.1.0/src/eyeprocesspy/engine_adapters.py +587 -0
  19. eyeprocesspy-0.1.0/src/eyeprocesspy/evidence_graph.py +121 -0
  20. eyeprocesspy-0.1.0/src/eyeprocesspy/exceptions.py +23 -0
  21. eyeprocesspy-0.1.0/src/eyeprocesspy/foundation_09.py +1678 -0
  22. eyeprocesspy-0.1.0/src/eyeprocesspy/frontier_08.py +80 -0
  23. eyeprocesspy-0.1.0/src/eyeprocesspy/functional_pupil.py +544 -0
  24. eyeprocesspy-0.1.0/src/eyeprocesspy/gazepoint.py +415 -0
  25. eyeprocesspy-0.1.0/src/eyeprocesspy/gazepoint_real_10.py +588 -0
  26. eyeprocesspy-0.1.0/src/eyeprocesspy/gazepoint_workflow_10.py +1870 -0
  27. eyeprocesspy-0.1.0/src/eyeprocesspy/governance_09.py +1043 -0
  28. eyeprocesspy-0.1.0/src/eyeprocesspy/grouped_validation_10.py +521 -0
  29. eyeprocesspy-0.1.0/src/eyeprocesspy/importers.py +322 -0
  30. eyeprocesspy-0.1.0/src/eyeprocesspy/interoperability_storage_10.py +956 -0
  31. eyeprocesspy-0.1.0/src/eyeprocesspy/io_validation_10.py +2420 -0
  32. eyeprocesspy-0.1.0/src/eyeprocesspy/irt.py +1624 -0
  33. eyeprocesspy-0.1.0/src/eyeprocesspy/irt_validation_07.py +344 -0
  34. eyeprocesspy-0.1.0/src/eyeprocesspy/legacy_models.py +515 -0
  35. eyeprocesspy-0.1.0/src/eyeprocesspy/mapping.py +7 -0
  36. eyeprocesspy-0.1.0/src/eyeprocesspy/measurement_intelligence.py +366 -0
  37. eyeprocesspy-0.1.0/src/eyeprocesspy/measurement_intelligence_utils_10.py +416 -0
  38. eyeprocesspy-0.1.0/src/eyeprocesspy/measurement_quality_legacy.py +265 -0
  39. eyeprocesspy-0.1.0/src/eyeprocesspy/multimodal_staged.py +744 -0
  40. eyeprocesspy-0.1.0/src/eyeprocesspy/negative_controls_09.py +710 -0
  41. eyeprocesspy-0.1.0/src/eyeprocesspy/operational_validation_08.py +350 -0
  42. eyeprocesspy-0.1.0/src/eyeprocesspy/partitioned_storage_10.py +943 -0
  43. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_completion_08.py +388 -0
  44. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_functional_pupil.py +49 -0
  45. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_governance_08.py +151 -0
  46. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_governance_09.py +163 -0
  47. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_irt.py +195 -0
  48. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_irt_08.py +164 -0
  49. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_legacy_models.py +29 -0
  50. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_multimodal_staged.py +220 -0
  51. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_operational_08.py +44 -0
  52. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_process_irt_07.py +144 -0
  53. eyeprocesspy-0.1.0/src/eyeprocesspy/plots_process_quality_09.py +56 -0
  54. eyeprocesspy-0.1.0/src/eyeprocesspy/preprocess_features_09.py +1637 -0
  55. eyeprocesspy-0.1.0/src/eyeprocesspy/probabilistic_aoi_10.py +855 -0
  56. eyeprocesspy-0.1.0/src/eyeprocesspy/process_dynamics.py +279 -0
  57. eyeprocesspy-0.1.0/src/eyeprocesspy/process_governance_08.py +634 -0
  58. eyeprocesspy-0.1.0/src/eyeprocesspy/process_irt_07.py +803 -0
  59. eyeprocesspy-0.1.0/src/eyeprocesspy/process_quality_09.py +478 -0
  60. eyeprocesspy-0.1.0/src/eyeprocesspy/pupil_missingness.py +158 -0
  61. eyeprocesspy-0.1.0/src/eyeprocesspy/reproducibility_provenance_09.py +735 -0
  62. eyeprocesspy-0.1.0/src/eyeprocesspy/requested_api_07.py +311 -0
  63. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/api-lifecycle-module-policy-0.9.csv +109 -0
  64. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/api-lifecycle-registry-0.9.csv +1183 -0
  65. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/LICENSE.txt +1 -0
  66. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/README.md +5 -0
  67. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/SYNTHETIC_DATA.txt +1 -0
  68. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/aoi_definitions.csv +4 -0
  69. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/events.csv +193 -0
  70. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/expected_outputs.csv +12 -0
  71. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/gaze_samples.csv +4801 -0
  72. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/items.csv +9 -0
  73. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/manifest.csv +11 -0
  74. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/participants.csv +13 -0
  75. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/provenance.csv +7 -0
  76. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/pupil_samples.csv +3841 -0
  77. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/quality.csv +97 -0
  78. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/recordings.csv +13 -0
  79. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/extdata/benchmark-study/responses.csv +97 -0
  80. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/dynamic_irtree_hidden.stan +128 -0
  81. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/dynamic_irtree_observed.stan +65 -0
  82. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/four-channel-response-rt-gaze-pupil.stan +105 -0
  83. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/functional_pupil_irt.stan +109 -0
  84. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/gaze_diffusion_irt.stan +127 -0
  85. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m0-response-reference-0-10.stan +67 -0
  86. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m1-response-rt-reference-0-10.stan +130 -0
  87. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m2-man2022-response-rt-gaze-0-10.stan +187 -0
  88. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m3-ablation-subset-0-10.stan +144 -0
  89. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m3-response-rt-gaze-pupil-0-10.stan +217 -0
  90. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/m4-trait-conditioned-state-0-11.stan +417 -0
  91. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/theory_strategy_mixture.stan +70 -0
  92. eyeprocesspy-0.1.0/src/eyeprocesspy/resources/stan/three-way-response-rt-gaze.stan +78 -0
  93. eyeprocesspy-0.1.0/src/eyeprocesspy/schema.py +96 -0
  94. eyeprocesspy-0.1.0/src/eyeprocesspy/semantic_validation_07.py +399 -0
  95. eyeprocesspy-0.1.0/src/eyeprocesspy/sensitivity_08.py +92 -0
  96. eyeprocesspy-0.1.0/src/eyeprocesspy/software_paper_evidence_09.py +496 -0
  97. eyeprocesspy-0.1.0/src/eyeprocesspy/timebase.py +82 -0
  98. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_atlas_09.py +535 -0
  99. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_completion_10.py +875 -0
  100. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_evidence_10.py +698 -0
  101. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_evidence_programs_09.py +720 -0
  102. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_extras_09.py +681 -0
  103. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_orchestration_10.py +1687 -0
  104. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_orchestration_completion_10.py +1282 -0
  105. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_program_10.py +706 -0
  106. eyeprocesspy-0.1.0/src/eyeprocesspy/validation_stress_freeze_09.py +861 -0
  107. eyeprocesspy-0.1.0/src/eyeprocesspy/vendor_corpus_10.py +1295 -0
  108. eyeprocesspy-0.1.0/src/eyeprocesspy/vendor_importers_10.py +1512 -0
  109. eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/PKG-INFO +234 -0
  110. eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/SOURCES.txt +244 -0
  111. eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/dependency_links.txt +1 -0
  112. eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/requires.txt +60 -0
  113. eyeprocesspy-0.1.0/src/eyeprocesspy.egg-info/top_level.txt +1 -0
  114. eyeprocesspy-0.1.0/tests/test_advanced_process_irt_07.py +144 -0
  115. eyeprocesspy-0.1.0/tests/test_advanced_process_irt_07_residual_coverage.py +332 -0
  116. eyeprocesspy-0.1.0/tests/test_benchmark_reproducibility_10.py +107 -0
  117. eyeprocesspy-0.1.0/tests/test_benchmark_stress_09.py +397 -0
  118. eyeprocesspy-0.1.0/tests/test_benchmark_stress_09_residual_coverage.py +356 -0
  119. eyeprocesspy-0.1.0/tests/test_compositional_aoi_10.py +304 -0
  120. eyeprocesspy-0.1.0/tests/test_compositional_aoi_10_residual_coverage.py +480 -0
  121. eyeprocesspy-0.1.0/tests/test_context_structure_08_residual_coverage.py +486 -0
  122. eyeprocesspy-0.1.0/tests/test_core_foundation_09.py +292 -0
  123. eyeprocesspy-0.1.0/tests/test_core_parity.py +78 -0
  124. eyeprocesspy-0.1.0/tests/test_core_plots_10.py +139 -0
  125. eyeprocesspy-0.1.0/tests/test_core_plots_10_residual_coverage.py +477 -0
  126. eyeprocesspy-0.1.0/tests/test_dynamic_irt_branch_coverage.py +361 -0
  127. eyeprocesspy-0.1.0/tests/test_dynamic_irt_residual_coverage.py +843 -0
  128. eyeprocesspy-0.1.0/tests/test_dynamic_strategy_diffusion.py +189 -0
  129. eyeprocesspy-0.1.0/tests/test_dynamic_strategy_exports.py +17 -0
  130. eyeprocesspy-0.1.0/tests/test_engine_adapters.py +162 -0
  131. eyeprocesspy-0.1.0/tests/test_engine_adapters_residual_coverage.py +455 -0
  132. eyeprocesspy-0.1.0/tests/test_final_coverage_closure_a.py +421 -0
  133. eyeprocesspy-0.1.0/tests/test_final_coverage_closure_b.py +269 -0
  134. eyeprocesspy-0.1.0/tests/test_final_coverage_closure_c.py +281 -0
  135. eyeprocesspy-0.1.0/tests/test_foundation_09_branch_coverage.py +344 -0
  136. eyeprocesspy-0.1.0/tests/test_foundation_09_residual_coverage.py +449 -0
  137. eyeprocesspy-0.1.0/tests/test_functional_pupil.py +131 -0
  138. eyeprocesspy-0.1.0/tests/test_functional_pupil_residual_coverage.py +372 -0
  139. eyeprocesspy-0.1.0/tests/test_functional_pupil_residual_coverage_2.py +309 -0
  140. eyeprocesspy-0.1.0/tests/test_gazepoint_parity.py +54 -0
  141. eyeprocesspy-0.1.0/tests/test_gazepoint_real_10.py +212 -0
  142. eyeprocesspy-0.1.0/tests/test_gazepoint_residual_coverage.py +503 -0
  143. eyeprocesspy-0.1.0/tests/test_gazepoint_workflow_10.py +207 -0
  144. eyeprocesspy-0.1.0/tests/test_gazepoint_workflow_residual_coverage.py +370 -0
  145. eyeprocesspy-0.1.0/tests/test_governance_09.py +273 -0
  146. eyeprocesspy-0.1.0/tests/test_governance_residual_coverage.py +745 -0
  147. eyeprocesspy-0.1.0/tests/test_grouped_validation_10.py +178 -0
  148. eyeprocesspy-0.1.0/tests/test_import_adapter_parity.py +76 -0
  149. eyeprocesspy-0.1.0/tests/test_interoperability_storage_10.py +279 -0
  150. eyeprocesspy-0.1.0/tests/test_interoperability_storage_10_residual_coverage.py +585 -0
  151. eyeprocesspy-0.1.0/tests/test_io_format_validation_10.py +527 -0
  152. eyeprocesspy-0.1.0/tests/test_io_validation_10_branch_coverage.py +227 -0
  153. eyeprocesspy-0.1.0/tests/test_io_validation_10_residual_coverage.py +476 -0
  154. eyeprocesspy-0.1.0/tests/test_io_validation_helpers_branch_coverage.py +323 -0
  155. eyeprocesspy-0.1.0/tests/test_irt_0_9_parity.py +164 -0
  156. eyeprocesspy-0.1.0/tests/test_irt_branch_coverage.py +384 -0
  157. eyeprocesspy-0.1.0/tests/test_irt_examples.py +9 -0
  158. eyeprocesspy-0.1.0/tests/test_irt_exports.py +18 -0
  159. eyeprocesspy-0.1.0/tests/test_irt_frontier_08.py +210 -0
  160. eyeprocesspy-0.1.0/tests/test_irt_p4_model_spec.py +13 -0
  161. eyeprocesspy-0.1.0/tests/test_irt_p4_numerical_parity.py +352 -0
  162. eyeprocesspy-0.1.0/tests/test_irt_plots.py +64 -0
  163. eyeprocesspy-0.1.0/tests/test_irt_residual_coverage.py +357 -0
  164. eyeprocesspy-0.1.0/tests/test_irt_residual_coverage_2.py +390 -0
  165. eyeprocesspy-0.1.0/tests/test_legacy_models.py +181 -0
  166. eyeprocesspy-0.1.0/tests/test_legacy_models_residual_coverage.py +441 -0
  167. eyeprocesspy-0.1.0/tests/test_measurement_intelligence.py +61 -0
  168. eyeprocesspy-0.1.0/tests/test_measurement_intelligence_exports.py +14 -0
  169. eyeprocesspy-0.1.0/tests/test_measurement_intelligence_residual_coverage.py +223 -0
  170. eyeprocesspy-0.1.0/tests/test_measurement_intelligence_utils_10.py +148 -0
  171. eyeprocesspy-0.1.0/tests/test_measurement_intelligence_utils_10_residual_coverage.py +215 -0
  172. eyeprocesspy-0.1.0/tests/test_measurement_quality_legacy_residual_coverage.py +245 -0
  173. eyeprocesspy-0.1.0/tests/test_multimodal_staged.py +348 -0
  174. eyeprocesspy-0.1.0/tests/test_multimodal_staged_articles.py +37 -0
  175. eyeprocesspy-0.1.0/tests/test_multimodal_staged_residual_coverage.py +501 -0
  176. eyeprocesspy-0.1.0/tests/test_negative_controls_09.py +326 -0
  177. eyeprocesspy-0.1.0/tests/test_negative_controls_09_residual_coverage.py +342 -0
  178. eyeprocesspy-0.1.0/tests/test_operational_validation_08.py +100 -0
  179. eyeprocesspy-0.1.0/tests/test_operational_validation_08_residual_coverage.py +266 -0
  180. eyeprocesspy-0.1.0/tests/test_partitioned_storage_10.py +242 -0
  181. eyeprocesspy-0.1.0/tests/test_partitioned_storage_10_residual_coverage.py +341 -0
  182. eyeprocesspy-0.1.0/tests/test_plots_completion_08.py +246 -0
  183. eyeprocesspy-0.1.0/tests/test_plots_governance_08_residual_coverage.py +342 -0
  184. eyeprocesspy-0.1.0/tests/test_plots_irt_08_residual_coverage.py +506 -0
  185. eyeprocesspy-0.1.0/tests/test_plots_multimodal_staged_residual_coverage.py +348 -0
  186. eyeprocesspy-0.1.0/tests/test_plots_process_irt_07_residual_coverage.py +248 -0
  187. eyeprocesspy-0.1.0/tests/test_preprocess_features_09.py +378 -0
  188. eyeprocesspy-0.1.0/tests/test_preprocess_features_09_branch_coverage.py +253 -0
  189. eyeprocesspy-0.1.0/tests/test_preprocess_features_09_residual_coverage.py +420 -0
  190. eyeprocesspy-0.1.0/tests/test_preprocess_features_09_residual_coverage_2.py +368 -0
  191. eyeprocesspy-0.1.0/tests/test_probabilistic_aoi_10.py +261 -0
  192. eyeprocesspy-0.1.0/tests/test_probabilistic_aoi_10_residual_coverage.py +275 -0
  193. eyeprocesspy-0.1.0/tests/test_process_dynamics_residual_coverage.py +331 -0
  194. eyeprocesspy-0.1.0/tests/test_process_governance_08.py +181 -0
  195. eyeprocesspy-0.1.0/tests/test_process_governance_08_residual_coverage.py +487 -0
  196. eyeprocesspy-0.1.0/tests/test_process_irt_07.py +145 -0
  197. eyeprocesspy-0.1.0/tests/test_process_irt_07_residual_coverage.py +590 -0
  198. eyeprocesspy-0.1.0/tests/test_process_irt_p4_completion.py +344 -0
  199. eyeprocesspy-0.1.0/tests/test_process_quality_09.py +224 -0
  200. eyeprocesspy-0.1.0/tests/test_public_api.py +14 -0
  201. eyeprocesspy-0.1.0/tests/test_public_api_front_door.py +20 -0
  202. eyeprocesspy-0.1.0/tests/test_reconstructed_measurement_p4.py +242 -0
  203. eyeprocesspy-0.1.0/tests/test_reconstructed_measurement_process.py +50 -0
  204. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_d.py +198 -0
  205. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_e.py +217 -0
  206. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_f.py +195 -0
  207. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_g.py +157 -0
  208. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_h.py +232 -0
  209. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_i.py +143 -0
  210. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_j.py +159 -0
  211. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_k.py +329 -0
  212. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_l.py +145 -0
  213. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_m.py +103 -0
  214. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_n.py +127 -0
  215. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_o.py +243 -0
  216. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_p.py +118 -0
  217. eyeprocesspy-0.1.0/tests/test_release_coverage_closure_q.py +371 -0
  218. eyeprocesspy-0.1.0/tests/test_reproducibility_provenance_09.py +365 -0
  219. eyeprocesspy-0.1.0/tests/test_reproducibility_provenance_09_residual_coverage.py +170 -0
  220. eyeprocesspy-0.1.0/tests/test_requested_api_07_residual_coverage.py +253 -0
  221. eyeprocesspy-0.1.0/tests/test_semantic_requested_api_07.py +172 -0
  222. eyeprocesspy-0.1.0/tests/test_semantic_validation_07_residual_coverage.py +318 -0
  223. eyeprocesspy-0.1.0/tests/test_software_paper_evidence_09.py +291 -0
  224. eyeprocesspy-0.1.0/tests/test_validation_atlas_09.py +306 -0
  225. eyeprocesspy-0.1.0/tests/test_validation_atlas_09_residual_coverage.py +195 -0
  226. eyeprocesspy-0.1.0/tests/test_validation_completion_10.py +149 -0
  227. eyeprocesspy-0.1.0/tests/test_validation_completion_10_residual_coverage.py +313 -0
  228. eyeprocesspy-0.1.0/tests/test_validation_evidence_10.py +324 -0
  229. eyeprocesspy-0.1.0/tests/test_validation_evidence_10_residual_coverage.py +424 -0
  230. eyeprocesspy-0.1.0/tests/test_validation_evidence_programs_09.py +432 -0
  231. eyeprocesspy-0.1.0/tests/test_validation_evidence_programs_09_residual_coverage.py +217 -0
  232. eyeprocesspy-0.1.0/tests/test_validation_extras_09.py +391 -0
  233. eyeprocesspy-0.1.0/tests/test_validation_extras_09_residual_coverage.py +207 -0
  234. eyeprocesspy-0.1.0/tests/test_validation_orchestration_10.py +341 -0
  235. eyeprocesspy-0.1.0/tests/test_validation_orchestration_10_residual_coverage.py +610 -0
  236. eyeprocesspy-0.1.0/tests/test_validation_orchestration_branch_coverage.py +249 -0
  237. eyeprocesspy-0.1.0/tests/test_validation_orchestration_completion_10.py +317 -0
  238. eyeprocesspy-0.1.0/tests/test_validation_orchestration_completion_residual_coverage.py +579 -0
  239. eyeprocesspy-0.1.0/tests/test_validation_program_10.py +232 -0
  240. eyeprocesspy-0.1.0/tests/test_validation_program_10_residual_coverage.py +469 -0
  241. eyeprocesspy-0.1.0/tests/test_validation_stress_freeze_09.py +457 -0
  242. eyeprocesspy-0.1.0/tests/test_validation_stress_freeze_09_residual_coverage.py +463 -0
  243. eyeprocesspy-0.1.0/tests/test_vendor_corpus_10.py +352 -0
  244. eyeprocesspy-0.1.0/tests/test_vendor_corpus_10_residual_coverage.py +504 -0
  245. eyeprocesspy-0.1.0/tests/test_vendor_importers_10.py +264 -0
  246. 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
+ [![CI](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/ci.yml)
94
+ [![Documentation](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/docs.yml)
95
+ [![Deep parity audit](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/deep-parity-audit.yml/badge.svg?branch=main)](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/deep-parity-audit.yml)
96
+ [![Frozen API](https://img.shields.io/badge/frozen%20API-1182%20%2F%201182-success)](IMPLEMENTATION_STATUS.md)
97
+ [![Coverage](https://img.shields.io/badge/statements%20%2B%20branches-100%25-success)](RELEASE_VALIDATION.md)
98
+ [![Python 3.11–3.14](https://img.shields.io/badge/Python-3.11%E2%80%933.14-blue)](https://www.python.org/)
99
+ [![R reference 0.11.1](https://img.shields.io/badge/R%20reference-0.11.1-276DC3)](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
+ | ![Gaze trace](docs/assets/gallery/gaze-trace.svg) | ![Scanpath](docs/assets/gallery/scanpath.svg) |
162
+
163
+ | Pupil time series | Probabilistic AOI membership |
164
+ | --- | --- |
165
+ | ![Pupil time series](docs/assets/gallery/pupil-timeseries.svg) | ![Probabilistic AOI](docs/assets/gallery/probabilistic-aoi.svg) |
166
+
167
+ | Process reliability | IRT information |
168
+ | --- | --- |
169
+ | ![Process reliability](docs/assets/gallery/process-reliability.svg) | ![IRT information](docs/assets/gallery/irt-information.svg) |
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
+ [![CI](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/ci.yml)
19
+ [![Documentation](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/docs.yml)
20
+ [![Deep parity audit](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/deep-parity-audit.yml/badge.svg?branch=main)](https://github.com/stefanosbalaskas/eyeprocesspy/actions/workflows/deep-parity-audit.yml)
21
+ [![Frozen API](https://img.shields.io/badge/frozen%20API-1182%20%2F%201182-success)](IMPLEMENTATION_STATUS.md)
22
+ [![Coverage](https://img.shields.io/badge/statements%20%2B%20branches-100%25-success)](RELEASE_VALIDATION.md)
23
+ [![Python 3.11–3.14](https://img.shields.io/badge/Python-3.11%E2%80%933.14-blue)](https://www.python.org/)
24
+ [![R reference 0.11.1](https://img.shields.io/badge/R%20reference-0.11.1-276DC3)](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
+ | ![Gaze trace](docs/assets/gallery/gaze-trace.svg) | ![Scanpath](docs/assets/gallery/scanpath.svg) |
87
+
88
+ | Pupil time series | Probabilistic AOI membership |
89
+ | --- | --- |
90
+ | ![Pupil time series](docs/assets/gallery/pupil-timeseries.svg) | ![Probabilistic AOI](docs/assets/gallery/probabilistic-aoi.svg) |
91
+
92
+ | Process reliability | IRT information |
93
+ | --- | --- |
94
+ | ![Process reliability](docs/assets/gallery/process-reliability.svg) | ![IRT information](docs/assets/gallery/irt-information.svg) |
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"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+