diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index b7955a0..0000000 --- a/.gitattributes +++ /dev/null @@ -1,5 +0,0 @@ -# Track all files in data/collection and its subfolders with Git LFS -data/collection/** filter=lfs diff=lfs merge=lfs -text - -# Track meta.json file with Git LFS -data/collection/meta.json filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77f3e5b..0d846bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,9 +25,11 @@ jobs: with: python-version: "3.12" - name: Install linters - run: pip install black==24.10.0 flake8==6.1 ruff==0.3.4 + run: pip install black==24.10.0 isort==5.12.0 flake8==6.1 ruff==0.3.4 - name: Run Black run: black --check eyefeatures + - name: Run isort + run: isort --check-only eyefeatures - name: Run flake8 run: flake8 eyefeatures --max-line-length=88 --extend-ignore=E501,E203,W503 - name: Run ruff @@ -42,10 +44,6 @@ jobs: python-version: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - - name: Fetch Git LFS files - run: | - git lfs install - git lfs pull - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} diff --git a/.gitignore b/.gitignore index 9519881..a2f6410 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,21 @@ -.env -.venv -.idea/ - -data/* -!data/collection/ -*.xlsx - -__pycache__/ -__pypackages__/ -.ipynb_checkpoints/ -.DS_Store -.pytest_cache -.ruff_cache - -dist/ -poetry.lock -.pypirc - -_build/ -.coverage -coverage.xml +.env +.venv +.idea/ + +data/ +*.xlsx + +__pycache__/ +__pypackages__/ +.ipynb_checkpoints/ +.DS_Store +.pytest_cache +.ruff_cache + +dist/ +poetry.lock +.pypirc + +_build/ +.coverage +coverage.xml diff --git a/README.md b/README.md index 4ca12d4..2d5649f 100644 --- a/README.md +++ b/README.md @@ -22,29 +22,23 @@ ## Installation +**Note**: Latest version in PyPi is `v1.0.1`. Check [Contribution](https://eyefeatures-docs.readthedocs.io/en/latest/contribution.html) page in the documentation for installation with `poetry`. + ```bash pip install eyefeatures ``` -Check [Contribution](https://eyefeatures-docs.readthedocs.io/en/latest/contribution.html) page in the documentation for installation with `poetry`. - ## Documentation & Tutorials Check out our [Full Documentation](https://eyefeatures-docs.readthedocs.io/) and the following interactive tutorials: - 🚀 [Quickstart Examples](https://eyefeatures-docs.readthedocs.io/en/latest/quickstart/quickstart.html) - 📊 [Simple Features](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/features_tutorial.ipynb) -- 🧠 [Feature Maps & Timeseries](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/feature_maps_tutorial.ipynb) -- 🛠️ [Preprocessing](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/preprocessing_tutorial.ipynb) +- 🧠 [Complex Features & Timeseries](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/complex_tutorial.ipynb) +- 🛠️ [Preprocessing & Smoothing](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/preprocessing_tutorial.ipynb) - 🧿 [AOI Definition](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/AOI_definition_tutorial.ipynb) - 🎥 [Visualization](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/visualization_tutorial.ipynb) -- ⚡ [Deep Learning](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/DL_tutorial.ipynb) - -## Collection experiments - -The **[collection_experiments](collection_experiments/)** folder contains reproducible pipelines that use the library on collection data (`data/collection`): - -See [experiments/collection_experiments/README.md](experiments/collection_experiments/README.md) for more details. +- ⚡ [Deep Learning with Gaze](https://colab.research.google.com/github/hse-scila/EyeFeatures/blob/main/tutorials/DL_tutorial.ipynb) ## Supported Methods @@ -118,7 +112,7 @@ Check a comprehensive list of all methods. > > >
-> Measures +> Complexity & Entropy Measures > > | Method | Description | Docs | > | :--- | :--- | :---: | @@ -144,28 +138,28 @@ Check a comprehensive list of all methods. > > | Method | Description | Docs | > | :--- | :--- | :---: | -> | Euclidean Distance | Point-to-point distance | [EucDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.EucDist) | -> | Hausdorff Distance | Max distance between point sets | [HauDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.HauDist) | -> | Dynamic Time Warping | Time-invariant scanpath similarity | [DTWDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.DTWDist) | -> | Discrete Fréchet Distance | Shape-based curve similarity | [DFDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.DFDist) | -> | ScanMatch | String-based scanpath comparison | [ScanMatchDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.ScanMatchDist) | -> | MultiMatch | Multi-dimensional scanpath comparison | [MultiMatchDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.MultiMatchDist) | -> | Mannan Distance | Fixation position similarity | [MannanDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.MannanDist) | -> | EyeAnalysis Distance | Fixation-based scanpath comparison | [EyeAnalysisDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.EyeAnalysisDist) | -> | Time Delay Embedding Distance | Phase-space reconstruction similarity | [TDEDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.dist.TDEDist) | +> | Euclidean Distance | Point-to-point distance | [EucDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.EucDist) | +> | Hausdorff Distance | Max distance between point sets | [HauDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.HauDist) | +> | Dynamic Time Warping | Time-invariant scanpath similarity | [DTWDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.DTWDist) | +> | Discrete Fréchet Distance | Shape-based curve similarity | [DFDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.DFDist) | +> | ScanMatch | String-based scanpath comparison | [ScanMatchDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.ScanMatchDist) | +> | MultiMatch | Multi-dimensional scanpath comparison | [MultiMatchDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.MultiMatchDist) | +> | Mannan Distance | Fixation position similarity | [MannanDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.MannanDist) | +> | EyeAnalysis Distance | Fixation-based scanpath comparison | [EyeAnalysisDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.EyeAnalysisDist) | +> | Time Delay Embedding Distance | Phase-space reconstruction similarity | [TDEDist](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.scanpath_dist.TDEDist) | > >
> >
-> Feature Maps +> Complex Representations > > | Method | Description | Docs | > | :--- | :--- | :---: | -> | Heatmap | Aggregated gaze density visualization | [get_heatmap](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.feature_maps.get_heatmap) | -> | Markov Transition Field | Temporal dynamics as transition probabilities | [get_mtf](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.feature_maps.get_mtf) | -> | Gramian Angular Field | Polar encoding of time series | [get_gaf](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.feature_maps.get_gaf) | -> | Recurrence Plot | Visual representation of dynamical systems | [get_rqa](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.feature_maps.get_rqa) | -> | Hilbert Curve Mapping | Space-filling curve for 2D→1D mapping | [get_hilbert_curve](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.feature_maps.get_hilbert_curve) | +> | Heatmap | Aggregated gaze density visualization | [get_heatmap](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.complex.get_heatmap) | +> | Markov Transition Field | Temporal dynamics as transition probabilities | [get_mtf](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.complex.get_mtf) | +> | Gramian Angular Field | Polar encoding of time series | [get_gaf](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.complex.get_gaf) | +> | Recurrence Plot | Visual representation of dynamical systems | [get_rqa](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.complex.get_rqa) | +> | Hilbert Curve Mapping | Space-filling curve for 2D→1D mapping | [get_hilbert_curve](https://eyefeatures-docs.readthedocs.io/en/latest/api/features.html#eyefeatures.features.complex.get_hilbert_curve) | > >
> @@ -232,10 +226,3 @@ Check a comprehensive list of all methods. > - -
-📁 Data - -> Utilities to list and load benchmark datasets (Parquet), with column conventions for keys, labels, and meta. [API](https://eyefeatures-docs.readthedocs.io/en/latest/api/data.html) - -
diff --git a/data/collection/ASD_fixations.parquet b/data/collection/ASD_fixations.parquet deleted file mode 100644 index c8e2296..0000000 --- a/data/collection/ASD_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df281a946bc1f8007e150eaf48d280d508421299aa8e66e355ceebe479b9f4d0 -size 847679 diff --git a/data/collection/Cognitive_load_gazes.parquet b/data/collection/Cognitive_load_gazes.parquet deleted file mode 100644 index 7e97562..0000000 --- a/data/collection/Cognitive_load_gazes.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:028e6d6b684482ba637bbc3cfc0fbb7f840e6122a98a4e11bc57f233cd1d7933 -size 234216096 diff --git a/data/collection/Dyslexia_1_fixations.parquet b/data/collection/Dyslexia_1_fixations.parquet deleted file mode 100644 index 2decba9..0000000 --- a/data/collection/Dyslexia_1_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6725f6b1ff4c4f41832243f64c1e9461bb24935ddbf6a202fc561fda38622d34 -size 352609 diff --git a/data/collection/Dyslexia_2_fixations.parquet b/data/collection/Dyslexia_2_fixations.parquet deleted file mode 100644 index df9ce4c..0000000 --- a/data/collection/Dyslexia_2_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1f32995bb9115fc4938752249595cb364228081f3c1d0e3bcc997d7bd5613cbf -size 2225255 diff --git a/data/collection/Dyslexia_Czech_fixations.parquet b/data/collection/Dyslexia_Czech_fixations.parquet deleted file mode 100644 index b1dfb03..0000000 --- a/data/collection/Dyslexia_Czech_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22f07fb332fb5119724107526928b494a7e8054ca12e536cc731916fdec11965 -size 2905349 diff --git a/data/collection/Dyslexia_Czech_gazes.parquet b/data/collection/Dyslexia_Czech_gazes.parquet deleted file mode 100644 index 719a302..0000000 --- a/data/collection/Dyslexia_Czech_gazes.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:587ade8b6a72de4a0ea921c6899f7420875e62b81fa494adacb8259bdd36f1c8 -size 311520089 diff --git a/data/collection/Emotions_gazes.parquet b/data/collection/Emotions_gazes.parquet deleted file mode 100644 index 29cecfb..0000000 --- a/data/collection/Emotions_gazes.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1313ca8a5f8ed75ae23768d9119de74ba2034cc0be6073162d6c2eb0e526910f -size 192598851 diff --git a/data/collection/Emotions_ready_data_gazes.parquet b/data/collection/Emotions_ready_data_gazes.parquet deleted file mode 100644 index 29cecfb..0000000 --- a/data/collection/Emotions_ready_data_gazes.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1313ca8a5f8ed75ae23768d9119de74ba2034cc0be6073162d6c2eb0e526910f -size 192598851 diff --git a/data/collection/Paris_experiment_fixations.parquet b/data/collection/Paris_experiment_fixations.parquet deleted file mode 100644 index dcd18e4..0000000 --- a/data/collection/Paris_experiment_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:032503c9fec0299517154f915354fa1ba195332a8aac6978d95ee58ae1d4b8bf -size 474328 diff --git a/data/collection/Surgical_skills_1_fixations.parquet b/data/collection/Surgical_skills_1_fixations.parquet deleted file mode 100644 index 4b76321..0000000 --- a/data/collection/Surgical_skills_1_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67bc13bc2cc966ef68fb63c06dc1c1dd6b068765e7c4489d3e0c071444fd9d68 -size 5923513 diff --git a/data/collection/Surgical_skills_1_gazes.parquet b/data/collection/Surgical_skills_1_gazes.parquet deleted file mode 100644 index dc058fb..0000000 --- a/data/collection/Surgical_skills_1_gazes.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ec026363183e765594c113847a0742fe2031ae2c6e320fc2f8bbe891cd3fb70 -size 113623521 diff --git a/data/collection/Surgical_skills_2_fixations.parquet b/data/collection/Surgical_skills_2_fixations.parquet deleted file mode 100644 index cd286d2..0000000 --- a/data/collection/Surgical_skills_2_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e4fd01dc47a4bfa45f97af3cfdf6e28aa644fe90be4980f219e6d201bbf4bd01 -size 1110076 diff --git a/data/collection/Surgical_skills_2_gazes.parquet b/data/collection/Surgical_skills_2_gazes.parquet deleted file mode 100644 index 4d6682c..0000000 --- a/data/collection/Surgical_skills_2_gazes.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ef355e64d77037fec1f6352f852dd6dab86a4bd9c052b228e14d6cfc6d92ac10 -size 28968494 diff --git a/data/collection/extensive_collection/3D_fixations.parquet b/data/collection/extensive_collection/3D_fixations.parquet deleted file mode 100644 index 4fb5bfd..0000000 --- a/data/collection/extensive_collection/3D_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fee0d0e191329a5a58543ebd010dac0bb4d09603df823bf47e9b66b53143c794 -size 4301470 diff --git a/data/collection/extensive_collection/AFC_fixations.parquet b/data/collection/extensive_collection/AFC_fixations.parquet deleted file mode 100644 index 289dfad..0000000 --- a/data/collection/extensive_collection/AFC_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72c2758f50841e78dec129231b78a4fc6a8222a671ccbcb71b36f0c13c4a9e11 -size 1995239 diff --git a/data/collection/extensive_collection/APPC_context_fixations.parquet b/data/collection/extensive_collection/APPC_context_fixations.parquet deleted file mode 100644 index 3a66890..0000000 --- a/data/collection/extensive_collection/APPC_context_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:54135c89b69291f216cde9b23fd0008d44ddb8908fb66545aeac7734019fc3a8 -size 679415 diff --git a/data/collection/extensive_collection/APP_fixations.parquet b/data/collection/extensive_collection/APP_fixations.parquet deleted file mode 100644 index 5861dc1..0000000 --- a/data/collection/extensive_collection/APP_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ecb732e2790a749c13ae5fe330d5da294b76befc65deb9d159275a5520f200a5 -size 4983026 diff --git a/data/collection/extensive_collection/Age_study_fixations.parquet b/data/collection/extensive_collection/Age_study_fixations.parquet deleted file mode 100644 index 8f14ce7..0000000 --- a/data/collection/extensive_collection/Age_study_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9b70928a629a1b2973c3d3fde94c2c01d9e0b97656f24cb0d29f87a74ab22d4 -size 5323693 diff --git a/data/collection/extensive_collection/Baseline_fixations.parquet b/data/collection/extensive_collection/Baseline_fixations.parquet deleted file mode 100644 index b54e7c0..0000000 --- a/data/collection/extensive_collection/Baseline_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34f594f60387507bbcba5eab7e81bfca85bb1d9bfae0f71bfaff1aeddcf195c0 -size 4655237 diff --git a/data/collection/extensive_collection/Bias_fixations.parquet b/data/collection/extensive_collection/Bias_fixations.parquet deleted file mode 100644 index 2701e26..0000000 --- a/data/collection/extensive_collection/Bias_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:920bd3d9226ed2410cafa6d3598bcd4a8436fe9621ffb232dc6f9eacdeee5a3c -size 12215464 diff --git a/data/collection/extensive_collection/Crossmodal2_fixations.parquet b/data/collection/extensive_collection/Crossmodal2_fixations.parquet deleted file mode 100644 index 10061d0..0000000 --- a/data/collection/extensive_collection/Crossmodal2_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b58a1b9c824d9891e931723937a95b86867223594085c25f6efda04d7b934f3 -size 1560068 diff --git a/data/collection/extensive_collection/Crossmodal_fixations.parquet b/data/collection/extensive_collection/Crossmodal_fixations.parquet deleted file mode 100644 index ed1dcfe..0000000 --- a/data/collection/extensive_collection/Crossmodal_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:91ca90e9eaf70db8d03fb4c239e0f8e03882f788ce04c7759ce3e785c61af63a -size 5952531 diff --git a/data/collection/extensive_collection/EEG_fixations.parquet b/data/collection/extensive_collection/EEG_fixations.parquet deleted file mode 100644 index 3c3fe74..0000000 --- a/data/collection/extensive_collection/EEG_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c61d98de8049ecbe8b5f6098e0c0ff09d9319c84717d0ed9390f5f4ec89b4625 -size 5063043 diff --git a/data/collection/extensive_collection/Filtered_fixations.parquet b/data/collection/extensive_collection/Filtered_fixations.parquet deleted file mode 100644 index 7dd27a1..0000000 --- a/data/collection/extensive_collection/Filtered_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:04fb48b8bed66a2d9996d95564e2cec3b7b0b614b3bc1a8413beb89b194a5373 -size 4970054 diff --git a/data/collection/extensive_collection/Gap_fixations.parquet b/data/collection/extensive_collection/Gap_fixations.parquet deleted file mode 100644 index 41e62b7..0000000 --- a/data/collection/extensive_collection/Gap_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6235d6873516d8adf7bdbd669a60c1d7d50dbdb6b01a3ec48b1017883f21d431 -size 2897456 diff --git a/data/collection/extensive_collection/Head_fixed_fixations.parquet b/data/collection/extensive_collection/Head_fixed_fixations.parquet deleted file mode 100644 index 0d225a1..0000000 --- a/data/collection/extensive_collection/Head_fixed_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c09ac2b6779d5ba3e9eb305feb543cc3b208ae423c31dd3189b955151ac5a77c -size 4346933 diff --git a/data/collection/extensive_collection/Memory_1_fixations.parquet b/data/collection/extensive_collection/Memory_1_fixations.parquet deleted file mode 100644 index a7b4b65..0000000 --- a/data/collection/extensive_collection/Memory_1_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3d2d2e69cc143240af515c28275b55b168045e2ec126f1730da574556020c994 -size 8385924 diff --git a/data/collection/extensive_collection/Memory_2_fixations.parquet b/data/collection/extensive_collection/Memory_2_fixations.parquet deleted file mode 100644 index 1d026ca..0000000 --- a/data/collection/extensive_collection/Memory_2_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bcb21c813be808a3011839c8c020acef9c944b25a302bc7370cf5d9e7bd65b02 -size 5440084 diff --git a/data/collection/extensive_collection/Patch_fixations.parquet b/data/collection/extensive_collection/Patch_fixations.parquet deleted file mode 100644 index 85e9309..0000000 --- a/data/collection/extensive_collection/Patch_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:200d170af01f6ecf7518dcea4174eeefebfdd75f422411a62ea17763fb7d8abf -size 3236114 diff --git a/data/collection/extensive_collection/Scaled_fixations.parquet b/data/collection/extensive_collection/Scaled_fixations.parquet deleted file mode 100644 index 87223c0..0000000 --- a/data/collection/extensive_collection/Scaled_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0588254e378cfe928ba54e2c2d372868a420e37e01e363855eb827e5b31fe3e0 -size 10797343 diff --git a/data/collection/extensive_collection/Tactile_fixations.parquet b/data/collection/extensive_collection/Tactile_fixations.parquet deleted file mode 100644 index ac1d0b1..0000000 --- a/data/collection/extensive_collection/Tactile_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d268e4842b8301ed15d49dc15130deec8779cecb889eec98349eb63c40954a6 -size 15669311 diff --git a/data/collection/extensive_collection/Webtask_fixations.parquet b/data/collection/extensive_collection/Webtask_fixations.parquet deleted file mode 100644 index bf1ff85..0000000 --- a/data/collection/extensive_collection/Webtask_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3af86d5a030df3ba8fa8268546e3cf44f3b69fadfcf69fb1879cad4bec52eaf0 -size 7543061 diff --git a/data/collection/extensive_collection/Webtask_school_fixations.parquet b/data/collection/extensive_collection/Webtask_school_fixations.parquet deleted file mode 100644 index b90ae2c..0000000 --- a/data/collection/extensive_collection/Webtask_school_fixations.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:556c0a1a03dc787a7cb026019a6ba11aaed3e0ce141a6468d846aa5d9a68fc83 -size 2135625 diff --git a/data/collection/extracted_fixations/Cognitive_load_fixations_0.01.parquet b/data/collection/extracted_fixations/Cognitive_load_fixations_0.01.parquet deleted file mode 100644 index c017329..0000000 --- a/data/collection/extracted_fixations/Cognitive_load_fixations_0.01.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67480d223227edb1c8fef402d2fd2324d509254e746b484a67615ea4ab961a6d -size 6184602 diff --git a/data/collection/extracted_fixations/Cognitive_load_fixations_0.02.parquet b/data/collection/extracted_fixations/Cognitive_load_fixations_0.02.parquet deleted file mode 100644 index 980dc06..0000000 --- a/data/collection/extracted_fixations/Cognitive_load_fixations_0.02.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b7a5ea3571dd95f302e7b014ada61660295d64c9748ac976920f3de60e371a3b -size 4851883 diff --git a/data/collection/extracted_fixations/Cognitive_load_fixations_0.03.parquet b/data/collection/extracted_fixations/Cognitive_load_fixations_0.03.parquet deleted file mode 100644 index cb614c0..0000000 --- a/data/collection/extracted_fixations/Cognitive_load_fixations_0.03.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45366a1024558b898a99bee7fa38451fcdd6eb6f4d75cad943c1e6ecd4f3c629 -size 4178568 diff --git a/data/collection/extracted_fixations/Cognitive_load_fixations_0.04.parquet b/data/collection/extracted_fixations/Cognitive_load_fixations_0.04.parquet deleted file mode 100644 index 3c77e99..0000000 --- a/data/collection/extracted_fixations/Cognitive_load_fixations_0.04.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:74dfbb53e209f63a55ea172019ed18396eaec3504cfc950e0b2b023bffa6f059 -size 3696835 diff --git a/data/collection/extracted_fixations/Cognitive_load_fixations_0.05.parquet b/data/collection/extracted_fixations/Cognitive_load_fixations_0.05.parquet deleted file mode 100644 index 854304c..0000000 --- a/data/collection/extracted_fixations/Cognitive_load_fixations_0.05.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:caf68e202e3f629074533cfa7377036d3743f67a96eeaaaf76df6fc161969a26 -size 3289418 diff --git a/data/collection/extracted_fixations/Emotions_fixations_0.01.parquet b/data/collection/extracted_fixations/Emotions_fixations_0.01.parquet deleted file mode 100644 index 43b671c..0000000 --- a/data/collection/extracted_fixations/Emotions_fixations_0.01.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab6ff1a6ceb0a427107b218f8f12359eecbb3c170f40236dba0778355e21bac4 -size 21133559 diff --git a/data/collection/extracted_fixations/Emotions_fixations_0.02.parquet b/data/collection/extracted_fixations/Emotions_fixations_0.02.parquet deleted file mode 100644 index b76c635..0000000 --- a/data/collection/extracted_fixations/Emotions_fixations_0.02.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a9479ee59827404e002b4ba1f438de0f26e538a7e6da8603f77f2260301acabc -size 15736209 diff --git a/data/collection/extracted_fixations/Emotions_fixations_0.03.parquet b/data/collection/extracted_fixations/Emotions_fixations_0.03.parquet deleted file mode 100644 index 6a2060f..0000000 --- a/data/collection/extracted_fixations/Emotions_fixations_0.03.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d1b3396efc5a8ebd41ed0fefa844a2eeef75aa0d73ddf127582318171e405520 -size 13300012 diff --git a/data/collection/extracted_fixations/Emotions_fixations_0.04.parquet b/data/collection/extracted_fixations/Emotions_fixations_0.04.parquet deleted file mode 100644 index ced2e34..0000000 --- a/data/collection/extracted_fixations/Emotions_fixations_0.04.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a4bd65ca713242127f65525ddd743bb79cb3769bbac21ecebccd11be00f755c7 -size 11747932 diff --git a/data/collection/extracted_fixations/Emotions_fixations_0.05.parquet b/data/collection/extracted_fixations/Emotions_fixations_0.05.parquet deleted file mode 100644 index 5767673..0000000 --- a/data/collection/extracted_fixations/Emotions_fixations_0.05.parquet +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:83e88f7afede912dfc713c0d1942e7410b3a26a77b7dfc462e9a4f875124f140 -size 10624402 diff --git a/data/collection/meta.json b/data/collection/meta.json deleted file mode 100644 index 6e71d51..0000000 --- a/data/collection/meta.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:681c2a1b20e110ec13dd97a96295fce98f303a600501983db0236584324372d4 -size 46819 diff --git a/docs/all_methods.rst b/docs/all_methods.rst index 4e4978d..a9b2c56 100644 --- a/docs/all_methods.rst +++ b/docs/all_methods.rst @@ -6,50 +6,22 @@ This is an alphabetical list of all public transformers and functions in the ``e .. autosummary:: :nosignatures: - eyefeatures.data.utils.get_labels - eyefeatures.data.utils.get_meta - eyefeatures.data.utils.get_pk - eyefeatures.data.utils.list_datasets - eyefeatures.data.utils.load_dataset - eyefeatures.features.dist.calc_dfr_dist - eyefeatures.features.dist.calc_dtw_dist - eyefeatures.features.dist.calc_euc_dist - eyefeatures.features.dist.calc_eye_dist - eyefeatures.features.dist.calc_hau_dist - eyefeatures.features.dist.calc_man_dist - eyefeatures.features.dist.calc_mm_features - eyefeatures.features.dist.calc_scan_match_dist - eyefeatures.features.dist.calc_tde_dist - eyefeatures.features.dist.DFDist - eyefeatures.features.dist.DistanceTransformer - eyefeatures.features.dist.DTWDist - eyefeatures.features.dist.EucDist - eyefeatures.features.dist.EyeAnalysisDist - eyefeatures.features.dist.get_expected_path - eyefeatures.features.dist.HauDist - eyefeatures.features.dist.MannanDist - eyefeatures.features.dist.MultiMatchDist - eyefeatures.features.dist.ScanMatchDist - eyefeatures.features.dist.SimpleDistances - eyefeatures.features.dist.TDEDist + eyefeatures.features.complex.calculate_topological_features + eyefeatures.features.complex.get_gaf + eyefeatures.features.complex.get_heatmap + eyefeatures.features.complex.get_heatmaps + eyefeatures.features.complex.get_hilbert_curve + eyefeatures.features.complex.get_hilbert_curve_enc + eyefeatures.features.complex.get_mtf + eyefeatures.features.complex.get_pca + eyefeatures.features.complex.get_rqa + eyefeatures.features.complex.hilbert_huang_transform + eyefeatures.features.complex.lower_star_filtration + eyefeatures.features.complex.persistence_curve + eyefeatures.features.complex.persistence_entropy_curve + eyefeatures.features.complex.vietoris_rips_filtration + eyefeatures.features.complex.xy2h eyefeatures.features.extractor.Extractor - eyefeatures.features.feature_maps.calculate_topological_features - eyefeatures.features.feature_maps.get_gaf - eyefeatures.features.feature_maps.get_gafs - eyefeatures.features.feature_maps.get_heatmap - eyefeatures.features.feature_maps.get_heatmaps - eyefeatures.features.feature_maps.get_hilbert_curve - eyefeatures.features.feature_maps.get_hilbert_curve_enc - eyefeatures.features.feature_maps.get_mtf - eyefeatures.features.feature_maps.get_mtfs - eyefeatures.features.feature_maps.get_pca - eyefeatures.features.feature_maps.get_rqa - eyefeatures.features.feature_maps.hilbert_huang_transform - eyefeatures.features.feature_maps.lower_star_filtration - eyefeatures.features.feature_maps.persistence_curve - eyefeatures.features.feature_maps.persistence_entropy_curve - eyefeatures.features.feature_maps.vietoris_rips_filtration - eyefeatures.features.feature_maps.xy2h eyefeatures.features.measures.CorrelationDimension eyefeatures.features.measures.FractalDimension eyefeatures.features.measures.FuzzyEntropy @@ -65,17 +37,38 @@ This is an alphabetical list of all public transformers and functions in the ``e eyefeatures.features.measures.SampleEntropy eyefeatures.features.measures.ShannonEntropy eyefeatures.features.measures.SpectralEntropy - eyefeatures.features.pairwise.compute_rv_coefficient - eyefeatures.features.pairwise.dimensionality_reduction_order - eyefeatures.features.pairwise.get_center_matrix - eyefeatures.features.pairwise.get_compromise_matrix - eyefeatures.features.pairwise.get_cross_product_matrix - eyefeatures.features.pairwise.get_dist_matrix - eyefeatures.features.pairwise.get_sim_matrix - eyefeatures.features.pairwise.hierarchical_clustering_order - eyefeatures.features.pairwise.optimal_leaf_ordering_clustering - eyefeatures.features.pairwise.restore_matrix - eyefeatures.features.pairwise.spectral_order + eyefeatures.features.scanpath_complex.compute_rv_coefficient + eyefeatures.features.scanpath_complex.dimensionality_reduction_order + eyefeatures.features.scanpath_complex.get_center_matrix + eyefeatures.features.scanpath_complex.get_compromise_matrix + eyefeatures.features.scanpath_complex.get_cross_product_matrix + eyefeatures.features.scanpath_complex.get_dist_matrix + eyefeatures.features.scanpath_complex.get_expected_path + eyefeatures.features.scanpath_complex.get_sim_matrix + eyefeatures.features.scanpath_complex.hierarchical_clustering_order + eyefeatures.features.scanpath_complex.optimal_leaf_ordering_clustering + eyefeatures.features.scanpath_complex.restore_matrix + eyefeatures.features.scanpath_complex.spectral_order + eyefeatures.features.scanpath_dist.calc_dfr_dist + eyefeatures.features.scanpath_dist.calc_dtw_dist + eyefeatures.features.scanpath_dist.calc_euc_dist + eyefeatures.features.scanpath_dist.calc_eye_dist + eyefeatures.features.scanpath_dist.calc_hau_dist + eyefeatures.features.scanpath_dist.calc_man_dist + eyefeatures.features.scanpath_dist.calc_mm_features + eyefeatures.features.scanpath_dist.calc_scan_match_dist + eyefeatures.features.scanpath_dist.calc_tde_dist + eyefeatures.features.scanpath_dist.DFDist + eyefeatures.features.scanpath_dist.DistanceTransformer + eyefeatures.features.scanpath_dist.DTWDist + eyefeatures.features.scanpath_dist.EucDist + eyefeatures.features.scanpath_dist.EyeAnalysisDist + eyefeatures.features.scanpath_dist.HauDist + eyefeatures.features.scanpath_dist.MannanDist + eyefeatures.features.scanpath_dist.MultiMatchDist + eyefeatures.features.scanpath_dist.ScanMatchDist + eyefeatures.features.scanpath_dist.SimpleDistances + eyefeatures.features.scanpath_dist.TDEDist eyefeatures.features.shift.IndividualNormalization eyefeatures.features.stats.FixationFeatures eyefeatures.features.stats.MicroSaccadeFeatures diff --git a/docs/api/data/index.rst b/docs/api/data/index.rst deleted file mode 100644 index 4d066a9..0000000 --- a/docs/api/data/index.rst +++ /dev/null @@ -1,20 +0,0 @@ -Data -==== - -.. currentmodule:: eyefeatures.data - -The ``data`` module provides simple data loading utilities for the eye-tracking -collection. Collection data lives in the repo at ``data/collection`` as Parquet -files (tracked with Git LFS). Column conventions: primary key (columns -starting with ``group_``), labels (columns ending with ``_label``), meta -(columns starting with ``meta_``). - -.. autofunction:: list_datasets - -.. autofunction:: load_dataset - -.. autofunction:: get_pk - -.. autofunction:: get_labels - -.. autofunction:: get_meta diff --git a/docs/api/deep/datasets/index.rst b/docs/api/deep/datasets/index.rst index 2fb9446..37e6080 100644 --- a/docs/api/deep/datasets/index.rst +++ b/docs/api/deep/datasets/index.rst @@ -21,3 +21,15 @@ fast integration in model pipeline for eyetracking data. .. autoclass:: GridGraphDataset :members: :exclude-members: __init__ + +.. autoclass:: DatasetLightning2D + :members: + :exclude-members: __init__ + +.. autoclass:: DatasetLightningTimeSeries + :members: + :exclude-members: __init__ + +.. autoclass:: DatasetLightningTimeSeries2D + :members: + :exclude-members: __init__ diff --git a/docs/api/features/feature_maps/calculate_topological_features.rst b/docs/api/features/complex/calculate_topological_features.rst similarity index 68% rename from docs/api/features/feature_maps/calculate_topological_features.rst rename to docs/api/features/complex/calculate_topological_features.rst index d84e3ab..6008dc0 100644 --- a/docs/api/features/feature_maps/calculate_topological_features.rst +++ b/docs/api/features/complex/calculate_topological_features.rst @@ -1,6 +1,6 @@ calculate_topological_features ============================== -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex .. autofunction:: calculate_topological_features diff --git a/docs/api/features/feature_maps/get_gaf.rst b/docs/api/features/complex/get_gaf.rst similarity index 96% rename from docs/api/features/feature_maps/get_gaf.rst rename to docs/api/features/complex/get_gaf.rst index 95d778b..e333111 100644 --- a/docs/api/features/feature_maps/get_gaf.rst +++ b/docs/api/features/complex/get_gaf.rst @@ -1,7 +1,7 @@ get_gaf ======= -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex .. autofunction:: get_gaf diff --git a/docs/api/features/feature_maps/get_heatmaps.rst b/docs/api/features/complex/get_heatmaps.rst similarity index 52% rename from docs/api/features/feature_maps/get_heatmaps.rst rename to docs/api/features/complex/get_heatmaps.rst index 2ae7f78..c309264 100644 --- a/docs/api/features/feature_maps/get_heatmaps.rst +++ b/docs/api/features/complex/get_heatmaps.rst @@ -1,6 +1,6 @@ get_heatmaps ============ -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex .. autofunction:: get_heatmaps diff --git a/docs/api/features/feature_maps/get_hilbert_curve.rst b/docs/api/features/complex/get_hilbert_curve.rst similarity index 93% rename from docs/api/features/feature_maps/get_hilbert_curve.rst rename to docs/api/features/complex/get_hilbert_curve.rst index 99ac81c..ec9bd90 100644 --- a/docs/api/features/feature_maps/get_hilbert_curve.rst +++ b/docs/api/features/complex/get_hilbert_curve.rst @@ -3,7 +3,7 @@ get_hilbert_curve ================= -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex .. autofunction:: get_hilbert_curve diff --git a/docs/api/features/feature_maps/get_hilbert_curve_enc.rst b/docs/api/features/complex/get_hilbert_curve_enc.rst similarity index 90% rename from docs/api/features/feature_maps/get_hilbert_curve_enc.rst rename to docs/api/features/complex/get_hilbert_curve_enc.rst index ffeb548..c66828c 100644 --- a/docs/api/features/feature_maps/get_hilbert_curve_enc.rst +++ b/docs/api/features/complex/get_hilbert_curve_enc.rst @@ -1,7 +1,7 @@ get_hilbert_curve_enc ===================== -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex .. autofunction:: get_hilbert_curve_enc diff --git a/docs/api/features/feature_maps/get_mtf.rst b/docs/api/features/complex/get_mtf.rst similarity index 96% rename from docs/api/features/feature_maps/get_mtf.rst rename to docs/api/features/complex/get_mtf.rst index 0c0f481..d57890c 100644 --- a/docs/api/features/feature_maps/get_mtf.rst +++ b/docs/api/features/complex/get_mtf.rst @@ -1,7 +1,7 @@ get_mtf ======= -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex .. autofunction:: get_mtf diff --git a/docs/api/features/complex/get_rqa.rst b/docs/api/features/complex/get_rqa.rst new file mode 100644 index 0000000..f6fc462 --- /dev/null +++ b/docs/api/features/complex/get_rqa.rst @@ -0,0 +1,6 @@ +get_rqa +======= + +.. currentmodule:: eyefeatures.features.complex + +.. autofunction:: get_rqa diff --git a/docs/api/features/feature_maps/hilbert_huang_transform.rst b/docs/api/features/complex/hilbert_huang_transform.rst similarity index 63% rename from docs/api/features/feature_maps/hilbert_huang_transform.rst rename to docs/api/features/complex/hilbert_huang_transform.rst index 9a4b177..8a96128 100644 --- a/docs/api/features/feature_maps/hilbert_huang_transform.rst +++ b/docs/api/features/complex/hilbert_huang_transform.rst @@ -1,6 +1,6 @@ hilbert_huang_transform ======================= -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex .. autofunction:: hilbert_huang_transform diff --git a/docs/api/features/feature_maps/index.rst b/docs/api/features/complex/index.rst similarity index 65% rename from docs/api/features/feature_maps/index.rst rename to docs/api/features/complex/index.rst index 949efc5..7543a98 100644 --- a/docs/api/features/feature_maps/index.rst +++ b/docs/api/features/complex/index.rst @@ -1,9 +1,9 @@ -Feature Maps +Complex Features ================ -.. currentmodule:: eyefeatures.features.feature_maps +.. currentmodule:: eyefeatures.features.complex -The ``feature_maps`` submodule provides functionality to acquire diverse +The ``complex`` submodule provides functionality to acquire diverse feature maps from scanpaths (i.e. fixations). .. toctree:: diff --git a/docs/api/features/feature_maps/get_rqa.rst b/docs/api/features/feature_maps/get_rqa.rst deleted file mode 100644 index 1149608..0000000 --- a/docs/api/features/feature_maps/get_rqa.rst +++ /dev/null @@ -1,6 +0,0 @@ -get_rqa -======= - -.. currentmodule:: eyefeatures.features.feature_maps - -.. autofunction:: get_rqa diff --git a/docs/api/features/index.rst b/docs/api/features/index.rst index bc8cbb5..90c68d3 100644 --- a/docs/api/features/index.rst +++ b/docs/api/features/index.rst @@ -4,10 +4,10 @@ Feature Extraction The ``features`` module provides tools for calculating eye-tracking features. There are two types of features: -1. Scalar Features ------------------- +1. Single value features +------------------------ -In simple words, the module coheres all features that are functions from scanpaths to :math:`\mathbb{R}`. +In simple words, the module coheres all features that are functions from scanpaths to single value. This could be used in ``scikit-learn`` pipeline, giving an object (like person reading the text) a mean saccade length. @@ -21,7 +21,7 @@ interface. stats/index measures/index - dist/index + scanpath_dist/index shift/index Statistical Features @@ -51,10 +51,10 @@ The collection of algorithms that compare a pair of scanpaths. There is a wide r of methods, starting from simple Euclidean/Hausdorff distances, and going up to `Dynamic Time Warp `_ algorithm. -Refer to ``dist`` submodule. +Refer to ``scanpath_dist`` submodule. -Shift -***** +Shift Features +************** The submodule provides ``InstanceNormalization`` class interface, which is capable of normalizing features across any user-defined dimensions. For example, normalize input features @@ -63,37 +63,37 @@ already extracted features (for instance, from ``Extractor`` class). Refer to ``shift`` submodule. -2. Maps -------- +2. Feature maps +--------------- Instead of outputting a single number, functions in this module output a feature map. For example, ``get_mtf`` returns Markov Transition Field (MTF), which is a matrix, and cannot be integrated into a classical Machine Learning pipeline in some unified format. Its usage is either in Deep Learning -networks or other specific analysis. +networks or other custom analysis. There are two submodules that work with that type of features. .. toctree:: :maxdepth: 1 - feature_maps/index - pairwise/index + complex/index + scanpath_complex/index -Feature Maps -************ +Complex Features +**************** The collection of algorithms to get various feature maps from scanpath. The user can find here scanpath heatmaps, MTF, Recurrence Quantification Analysis (RQA) matrix, and other. -Refer to ``feature_maps`` submodule. +Refer to ``complex`` submodule. -Pairwise Scanpath Distances -*************************** +Complex Scanpath Distances +************************** The collection of algorithms to aggregate several scanpaths. There are similarity/distance matrix calculations, spectral/optimal leaf matrix reorderings, and more. -Refer to ``pairwise`` submodule. +Refer to ``scanpath_complex`` submodule. Extractor --------- diff --git a/docs/api/features/pairwise/dimensionality_reduction_order.rst b/docs/api/features/scanpath_complex/dimensionality_reduction_order.rst similarity index 66% rename from docs/api/features/pairwise/dimensionality_reduction_order.rst rename to docs/api/features/scanpath_complex/dimensionality_reduction_order.rst index 10a37d4..97413b9 100644 --- a/docs/api/features/pairwise/dimensionality_reduction_order.rst +++ b/docs/api/features/scanpath_complex/dimensionality_reduction_order.rst @@ -1,6 +1,6 @@ dimensionality_reduction_order ============================== -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: dimensionality_reduction_order diff --git a/docs/api/features/pairwise/get_compromise_matrix.rst b/docs/api/features/scanpath_complex/get_compromise_matrix.rst similarity index 60% rename from docs/api/features/pairwise/get_compromise_matrix.rst rename to docs/api/features/scanpath_complex/get_compromise_matrix.rst index ba77d8b..7e9a85c 100644 --- a/docs/api/features/pairwise/get_compromise_matrix.rst +++ b/docs/api/features/scanpath_complex/get_compromise_matrix.rst @@ -1,6 +1,6 @@ get_compromise_matrix ===================== -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: get_compromise_matrix diff --git a/docs/api/features/pairwise/get_dist_matrix.rst b/docs/api/features/scanpath_complex/get_dist_matrix.rst similarity index 54% rename from docs/api/features/pairwise/get_dist_matrix.rst rename to docs/api/features/scanpath_complex/get_dist_matrix.rst index 9bfa091..955f172 100644 --- a/docs/api/features/pairwise/get_dist_matrix.rst +++ b/docs/api/features/scanpath_complex/get_dist_matrix.rst @@ -1,6 +1,6 @@ get_dist_matrix =============== -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: get_dist_matrix diff --git a/docs/api/features/scanpath_complex/get_expected_path.rst b/docs/api/features/scanpath_complex/get_expected_path.rst new file mode 100644 index 0000000..605f018 --- /dev/null +++ b/docs/api/features/scanpath_complex/get_expected_path.rst @@ -0,0 +1,6 @@ +get_expected_path +================= + +.. currentmodule:: eyefeatures.features.scanpath_complex + +.. autofunction:: get_expected_path diff --git a/docs/api/features/pairwise/get_sim_matrix.rst b/docs/api/features/scanpath_complex/get_sim_matrix.rst similarity index 53% rename from docs/api/features/pairwise/get_sim_matrix.rst rename to docs/api/features/scanpath_complex/get_sim_matrix.rst index 4fe0709..eea75fc 100644 --- a/docs/api/features/pairwise/get_sim_matrix.rst +++ b/docs/api/features/scanpath_complex/get_sim_matrix.rst @@ -1,6 +1,6 @@ get_sim_matrix ============== -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: get_sim_matrix diff --git a/docs/api/features/pairwise/hierarchical_clustering_order.rst b/docs/api/features/scanpath_complex/hierarchical_clustering_order.rst similarity index 65% rename from docs/api/features/pairwise/hierarchical_clustering_order.rst rename to docs/api/features/scanpath_complex/hierarchical_clustering_order.rst index 38ee082..2aebe0c 100644 --- a/docs/api/features/pairwise/hierarchical_clustering_order.rst +++ b/docs/api/features/scanpath_complex/hierarchical_clustering_order.rst @@ -1,6 +1,6 @@ hierarchical_clustering_order ============================= -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: hierarchical_clustering_order diff --git a/docs/api/features/pairwise/index.rst b/docs/api/features/scanpath_complex/index.rst similarity index 62% rename from docs/api/features/pairwise/index.rst rename to docs/api/features/scanpath_complex/index.rst index a185540..52a521c 100644 --- a/docs/api/features/pairwise/index.rst +++ b/docs/api/features/scanpath_complex/index.rst @@ -1,14 +1,15 @@ -Pairwise Scanpath Distances +Complex Scanpath Distances ========================== -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex -The ``pairwise`` submodule provides functionality to extract features +The ``scanpath_complex`` submodule provides functionality to extract features from a collection of scanpaths. .. toctree:: :maxdepth: 1 + get_expected_path restore_matrix get_sim_matrix get_dist_matrix diff --git a/docs/api/features/pairwise/optimal_leaf_ordering_clustering.rst b/docs/api/features/scanpath_complex/optimal_leaf_ordering_clustering.rst similarity index 67% rename from docs/api/features/pairwise/optimal_leaf_ordering_clustering.rst rename to docs/api/features/scanpath_complex/optimal_leaf_ordering_clustering.rst index 09ffecf..34ee31d 100644 --- a/docs/api/features/pairwise/optimal_leaf_ordering_clustering.rst +++ b/docs/api/features/scanpath_complex/optimal_leaf_ordering_clustering.rst @@ -1,6 +1,6 @@ optimal_leaf_ordering_clustering ================================ -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: optimal_leaf_ordering_clustering diff --git a/docs/api/features/pairwise/restore_matrix.rst b/docs/api/features/scanpath_complex/restore_matrix.rst similarity index 53% rename from docs/api/features/pairwise/restore_matrix.rst rename to docs/api/features/scanpath_complex/restore_matrix.rst index 685338d..a701bd3 100644 --- a/docs/api/features/pairwise/restore_matrix.rst +++ b/docs/api/features/scanpath_complex/restore_matrix.rst @@ -1,6 +1,6 @@ restore_matrix ============== -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: restore_matrix diff --git a/docs/api/features/pairwise/spectral_order.rst b/docs/api/features/scanpath_complex/spectral_order.rst similarity index 53% rename from docs/api/features/pairwise/spectral_order.rst rename to docs/api/features/scanpath_complex/spectral_order.rst index 132e067..8ecbc44 100644 --- a/docs/api/features/pairwise/spectral_order.rst +++ b/docs/api/features/scanpath_complex/spectral_order.rst @@ -1,6 +1,6 @@ spectral_order ============== -.. currentmodule:: eyefeatures.features.pairwise +.. currentmodule:: eyefeatures.features.scanpath_complex .. autofunction:: spectral_order diff --git a/docs/api/features/scanpath_dist/calc_dfr_dist.rst b/docs/api/features/scanpath_dist/calc_dfr_dist.rst new file mode 100644 index 0000000..3d4445d --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_dfr_dist.rst @@ -0,0 +1,6 @@ +calc_dfr_dist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_dfr_dist diff --git a/docs/api/features/scanpath_dist/calc_dtw_dist.rst b/docs/api/features/scanpath_dist/calc_dtw_dist.rst new file mode 100644 index 0000000..55b07ee --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_dtw_dist.rst @@ -0,0 +1,6 @@ +calc_dtw_dist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_dtw_dist diff --git a/docs/api/features/scanpath_dist/calc_euc_dist.rst b/docs/api/features/scanpath_dist/calc_euc_dist.rst new file mode 100644 index 0000000..ec995ec --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_euc_dist.rst @@ -0,0 +1,6 @@ +calc_euc_dist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_euc_dist diff --git a/docs/api/features/scanpath_dist/calc_eye_dist.rst b/docs/api/features/scanpath_dist/calc_eye_dist.rst new file mode 100644 index 0000000..1ee762f --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_eye_dist.rst @@ -0,0 +1,6 @@ +calc_eye_dist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_eye_dist diff --git a/docs/api/features/scanpath_dist/calc_hau_dist.rst b/docs/api/features/scanpath_dist/calc_hau_dist.rst new file mode 100644 index 0000000..5da4eae --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_hau_dist.rst @@ -0,0 +1,6 @@ +calc_hau_dist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_hau_dist diff --git a/docs/api/features/scanpath_dist/calc_man_dist.rst b/docs/api/features/scanpath_dist/calc_man_dist.rst new file mode 100644 index 0000000..8bfdef0 --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_man_dist.rst @@ -0,0 +1,6 @@ +calc_man_dist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_man_dist diff --git a/docs/api/features/scanpath_dist/calc_mm_features.rst b/docs/api/features/scanpath_dist/calc_mm_features.rst new file mode 100644 index 0000000..b5be813 --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_mm_features.rst @@ -0,0 +1,6 @@ +calc_mm_features +================ + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_mm_features diff --git a/docs/api/features/scanpath_dist/calc_scan_match_dist.rst b/docs/api/features/scanpath_dist/calc_scan_match_dist.rst new file mode 100644 index 0000000..70e1072 --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_scan_match_dist.rst @@ -0,0 +1,6 @@ +calc_scan_match_dist +==================== + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_scan_match_dist diff --git a/docs/api/features/scanpath_dist/calc_tde_dist.rst b/docs/api/features/scanpath_dist/calc_tde_dist.rst new file mode 100644 index 0000000..08183d6 --- /dev/null +++ b/docs/api/features/scanpath_dist/calc_tde_dist.rst @@ -0,0 +1,6 @@ +calc_tde_dist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autofunction:: calc_tde_dist diff --git a/docs/api/features/scanpath_dist/df_dist.rst b/docs/api/features/scanpath_dist/df_dist.rst new file mode 100644 index 0000000..4a65fe8 --- /dev/null +++ b/docs/api/features/scanpath_dist/df_dist.rst @@ -0,0 +1,8 @@ +DFDist +====== + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: DFDist + :members: + :exclude-members: __init__ diff --git a/docs/api/features/scanpath_dist/dtw_dist.rst b/docs/api/features/scanpath_dist/dtw_dist.rst new file mode 100644 index 0000000..4b4cb96 --- /dev/null +++ b/docs/api/features/scanpath_dist/dtw_dist.rst @@ -0,0 +1,8 @@ +DTWDist +======= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: DTWDist + :members: + :exclude-members: __init__ diff --git a/docs/api/features/scanpath_dist/euc_dist.rst b/docs/api/features/scanpath_dist/euc_dist.rst new file mode 100644 index 0000000..3f13567 --- /dev/null +++ b/docs/api/features/scanpath_dist/euc_dist.rst @@ -0,0 +1,15 @@ +EucDist +======= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: EucDist + :members: + :exclude-members: __init__ + +Euclidean distance is simply the sum of pairwise distances of two sequences at each timestamp: + +.. math:: + \text{EUC}(p, q) = \sum_{i=1}^n ||p_i - q_i||_2 + +where :math:`p` and :math:`q` are aligned. diff --git a/docs/api/features/scanpath_dist/eye_analysis_dist.rst b/docs/api/features/scanpath_dist/eye_analysis_dist.rst new file mode 100644 index 0000000..e16bfe6 --- /dev/null +++ b/docs/api/features/scanpath_dist/eye_analysis_dist.rst @@ -0,0 +1,13 @@ +EyeAnalysisDist +=============== + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: EyeAnalysisDist + :members: + :exclude-members: __init__ + +EyeDist distance is calculated as follows: + +.. math:: + \text{EYE}(p, q) = \frac{1}{\max\{n, m\}} \left(\sum_{i=1}^n \min_{1 \leq j \leq m} ||p_i - q_j||_2^2 + \sum_{j=1}^m \min_{1 \leq i \leq n} ||q_j - p_i||_2^2\right) diff --git a/docs/api/features/scanpath_dist/hau_dist.rst b/docs/api/features/scanpath_dist/hau_dist.rst new file mode 100644 index 0000000..3ba0a1c --- /dev/null +++ b/docs/api/features/scanpath_dist/hau_dist.rst @@ -0,0 +1,8 @@ +HauDist +======= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: HauDist + :members: + :exclude-members: __init__ diff --git a/docs/api/features/scanpath_dist/index.rst b/docs/api/features/scanpath_dist/index.rst new file mode 100644 index 0000000..6018d27 --- /dev/null +++ b/docs/api/features/scanpath_dist/index.rst @@ -0,0 +1,53 @@ +Scanpath Distances +================== + +.. currentmodule:: eyefeatures.features.scanpath_dist + +The ``scanpath_dist`` module provides common methods to measure distance between +scanpaths, treating them as different types of timeseries. The main idea is to +calculate expected scanpath and compare it with the input scanpath. + +Base Distance Transformer +------------------------- +.. autoclass:: DistanceTransformer + :members: + :exclude-members: __init__, _calc_feats, _check_params + +Distance Transformers +--------------------- + +All transformers in this list own ``fit``/``transform`` methods. As well as +class instances, there are functions in section below that provide the same +functionality (i.e. calculate distances between scanpaths). + +.. toctree:: + :maxdepth: 1 + + simple_distances + euc_dist + hau_dist + dtw_dist + scan_match_dist + mannan_dist + eye_analysis_dist + df_dist + tde_dist + multi_match_dist + +Distance Functions +------------------ + +The functions in this list are used in corresponding transformers. + +.. toctree:: + :maxdepth: 1 + + calc_dfr_dist + calc_dtw_dist + calc_euc_dist + calc_eye_dist + calc_hau_dist + calc_man_dist + calc_mm_features + calc_scan_match_dist + calc_tde_dist diff --git a/docs/api/features/scanpath_dist/mannan_dist.rst b/docs/api/features/scanpath_dist/mannan_dist.rst new file mode 100644 index 0000000..1ed6d27 --- /dev/null +++ b/docs/api/features/scanpath_dist/mannan_dist.rst @@ -0,0 +1,13 @@ +MannanDist +========== + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: MannanDist + :members: + :exclude-members: __init__ + +Mannan distance is somewhat a more complex version of EyeDist since it considers the weighted distance: + +.. math:: + \text{MAN}(p, q) = \frac{1}{4 \cdot n \cdot m} \left(m \cdot \sum_{i=1}^n \min_{1 \leq j \leq m} ||p_i - q_j||_2^2 + n \cdot \sum_{j=1}^m \min_{1 \leq i \leq n} ||q_j - p_i||_2^2 \right) diff --git a/docs/api/features/scanpath_dist/multi_match_dist.rst b/docs/api/features/scanpath_dist/multi_match_dist.rst new file mode 100644 index 0000000..6805cf3 --- /dev/null +++ b/docs/api/features/scanpath_dist/multi_match_dist.rst @@ -0,0 +1,8 @@ +MultiMatchDist +============== + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: MultiMatchDist + :members: + :exclude-members: __init__ diff --git a/docs/api/features/scanpath_dist/scan_match_dist.rst b/docs/api/features/scanpath_dist/scan_match_dist.rst new file mode 100644 index 0000000..ad7e2c5 --- /dev/null +++ b/docs/api/features/scanpath_dist/scan_match_dist.rst @@ -0,0 +1,8 @@ +ScanMatchDist +============= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: ScanMatchDist + :members: + :exclude-members: __init__ diff --git a/docs/api/features/scanpath_dist/simple_distances.rst b/docs/api/features/scanpath_dist/simple_distances.rst new file mode 100644 index 0000000..9c2ddb3 --- /dev/null +++ b/docs/api/features/scanpath_dist/simple_distances.rst @@ -0,0 +1,8 @@ +SimpleDistances +=============== + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: SimpleDistances + :members: + :exclude-members: __init__ diff --git a/docs/api/features/scanpath_dist/tde_dist.rst b/docs/api/features/scanpath_dist/tde_dist.rst new file mode 100644 index 0000000..356bbe1 --- /dev/null +++ b/docs/api/features/scanpath_dist/tde_dist.rst @@ -0,0 +1,8 @@ +TDEDist +======= + +.. currentmodule:: eyefeatures.features.scanpath_dist + +.. autoclass:: TDEDist + :members: + :exclude-members: __init__ diff --git a/docs/api/index.rst b/docs/api/index.rst index e1e4f5f..407fcc3 100644 --- a/docs/api/index.rst +++ b/docs/api/index.rst @@ -4,7 +4,6 @@ API Reference .. toctree:: :maxdepth: 1 - data/index deep/index features/index preprocessing/index diff --git a/docs/changelog.rst b/docs/changelog.rst index f64142f..2b66ee5 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -53,7 +53,7 @@ Fixed - **Mathematical & Topological Correctness**: - Fixed ``RuntimeWarning`` (log(0)) in ``persistence_entropy_curve`` and standardized ``float`` return types. - - Fixed Fill Path Calculation logic in ``pairwise.py`` to correctly calculate the expected path of expected paths. + - Fixed Fill Path Calculation logic in ``scanpath_complex.py`` to correctly calculate the expected path of expected paths. - Validated original implementations for ``HurstExponent`` and ``SpectralEntropy`` after architecture refactor. Removed diff --git a/docs/conf.py b/docs/conf.py index bc5d371..54e3d9c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,7 +13,6 @@ def setup(app): def generate_api_index(): # Modules to scan scan_modules = [ - "eyefeatures.data", "eyefeatures.features", "eyefeatures.preprocessing", "eyefeatures.visualization", diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..32bb245 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/overview.rst b/docs/overview.rst index ea0166e..2adffc2 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -14,5 +14,4 @@ Key Features - Statistical analysis of eye movement patterns and direct usage for ML tasks. - Algorithms like Markov Transition Field, Hilbert Curve calculation, Vietoris-Rips filtration for complex analysis and potential usage in Deep Learning architectures. - Visualization tools for exploring gaze/fixations patterns. -- Benchmark data loading utilities (Parquet datasets, column conventions for keys/labels/meta). - ``scikit-learn`` compatible transformers for ``Pipeline`` integration. \ No newline at end of file diff --git a/docs/quickstart/examples/advanced_all_features.rst b/docs/quickstart/examples/advanced_all_features.rst index 98844b1..0f81fe9 100644 --- a/docs/quickstart/examples/advanced_all_features.rst +++ b/docs/quickstart/examples/advanced_all_features.rst @@ -4,6 +4,6 @@ Advanced All Features This comprehensive example calculates all available features in the library, demonstrating the full power of the EyeFeatures toolbox. -.. literalinclude:: ../../../examples/advanced_all_features.py +.. literalinclude:: ../../../eyefeatures/examples/advanced_all_features.py :language: python :linenos: diff --git a/docs/quickstart/examples/advanced_pipeline.rst b/docs/quickstart/examples/advanced_pipeline.rst index f22c4ea..217a634 100644 --- a/docs/quickstart/examples/advanced_pipeline.rst +++ b/docs/quickstart/examples/advanced_pipeline.rst @@ -4,6 +4,6 @@ Advanced Pipeline This example demonstrates a complete end-to-end pipeline covering preprocessing, feature extraction, and per-participant normalization. -.. literalinclude:: ../../../examples/advanced_pipeline.py +.. literalinclude:: ../../../eyefeatures/examples/advanced_pipeline.py :language: python :linenos: diff --git a/docs/quickstart/examples/basic_features.rst b/docs/quickstart/examples/basic_features.rst index d071014..b99a353 100644 --- a/docs/quickstart/examples/basic_features.rst +++ b/docs/quickstart/examples/basic_features.rst @@ -6,6 +6,6 @@ This example shows how to use the ``Extractor`` class to calculate a mix of feat .. _extractor_usage_example: -.. literalinclude:: ../../../examples/basic_features.py +.. literalinclude:: ../../../eyefeatures/examples/basic_features.py :language: python :linenos: diff --git a/docs/quickstart/examples/basic_fixation.rst b/docs/quickstart/examples/basic_fixation.rst index 62f7fb1..afa03aa 100644 --- a/docs/quickstart/examples/basic_fixation.rst +++ b/docs/quickstart/examples/basic_fixation.rst @@ -4,6 +4,6 @@ Basic Fixation Extraction This example demonstrates how to extract fixations from raw gaze data using the I-DT (Identification by Dispersion-Threshold) algorithm, combined with smoothing filters. -.. literalinclude:: ../../../examples/basic_fixation.py +.. literalinclude:: ../../../eyefeatures/examples/basic_fixation.py :language: python :linenos: diff --git a/docs/quickstart/examples/basic_scanpath.rst b/docs/quickstart/examples/basic_scanpath.rst index 72a3b26..d73a782 100644 --- a/docs/quickstart/examples/basic_scanpath.rst +++ b/docs/quickstart/examples/basic_scanpath.rst @@ -4,6 +4,6 @@ Basic Scanpath Processing This example demonstrates how to generate a Gramian Angular Field (GAF) from a scanpath. GAF encodes time-series into an image, often used for Deep Learning models. -.. literalinclude:: ../../../examples/basic_scanpath.py +.. literalinclude:: ../../../eyefeatures/examples/basic_scanpath.py :language: python :linenos: diff --git a/examples/advanced_all_features.py b/examples/advanced_all_features.py index 715e44c..e734318 100644 --- a/examples/advanced_all_features.py +++ b/examples/advanced_all_features.py @@ -8,18 +8,6 @@ import pandas as pd -from eyefeatures.features.dist import ( - DFDist, - DTWDist, - EucDist, - EyeAnalysisDist, - HauDist, - MannanDist, - MultiMatchDist, - ScanMatchDist, - SimpleDistances, - TDEDist, -) from eyefeatures.features.extractor import Extractor from eyefeatures.features.measures import ( CorrelationDimension, @@ -34,6 +22,18 @@ ShannonEntropy, SpectralEntropy, ) +from eyefeatures.features.scanpath_dist import ( + DFDist, + DTWDist, + EucDist, + EyeAnalysisDist, + HauDist, + MannanDist, + MultiMatchDist, + ScanMatchDist, + SimpleDistances, + TDEDist, +) from eyefeatures.features.stats import ( FixationFeatures, MicroSaccadeFeatures, diff --git a/examples/basic_features.py b/examples/basic_features.py index 765b0bf..61275cf 100644 --- a/examples/basic_features.py +++ b/examples/basic_features.py @@ -8,9 +8,9 @@ import pandas as pd -from eyefeatures.features.dist import EucDist from eyefeatures.features.extractor import Extractor from eyefeatures.features.measures import HurstExponent, SpectralEntropy +from eyefeatures.features.scanpath_dist import EucDist from eyefeatures.features.stats import SaccadeFeatures fixations_df = pd.read_csv("data/fixations/fixations_subset.csv") diff --git a/examples/basic_scanpath.py b/examples/basic_scanpath.py index c22eee4..46fa2f9 100644 --- a/examples/basic_scanpath.py +++ b/examples/basic_scanpath.py @@ -10,7 +10,7 @@ import matplotlib.pyplot as plt import pandas as pd -from eyefeatures.features.feature_maps import get_gaf +from eyefeatures.features.complex import get_gaf # Load sample data fixations_df = pd.read_csv("data/fixations/fixations_subset.csv") diff --git a/experiments/additional_experiment.ipynb b/experiments/additional_experiment.ipynb deleted file mode 100644 index 134dcd0..0000000 --- a/experiments/additional_experiment.ipynb +++ /dev/null @@ -1,836 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "bc54a942", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import eyefeatures.features.pairwise as eye_complex\n", - "import eyefeatures.features.dist as eye_dist\n", - "from matplotlib import pyplot as plt\n", - "from sklearn.model_selection import train_test_split" - ] - }, - { - "cell_type": "markdown", - "id": "5dacc4d0", - "metadata": {}, - "source": [ - "# Getting distance matrices" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "b32a57d7", - "metadata": {}, - "outputs": [], - "source": [ - "data = pd.read_excel('data_for_scanpath_analysis.xlsx')" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "8bdd7892", - "metadata": {}, - "outputs": [], - "source": [ - "scanpaths = [x[1][['x', 'y']] for x in data.groupby(['participant', 'item'])]\n", - "y = [0 if x[1]['gr'].iloc[0]=='norm' else 1 for x in data.groupby(['participant', 'item'])]\n", - "sentence = [x[1]['item'].iloc[0] for x in data.groupby(['participant', 'item'])]" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "59346017", - "metadata": {}, - "outputs": [], - "source": [ - "#hau_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_hau_dist)\n", - "#euc_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_euc_dist)\n", - "#man_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_man_dist)\n", - "#eye_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_eye_dist)\n", - "#dfr_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_dfr_dist)\n", - "#dtw_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_dtw_dist)\n", - "\n", - "#eye_matrix.to_csv('eye_matrix.csv')\n", - "#dfr_matrix.to_csv('dfr_matrix.csv')\n", - "#dtw_matrix.to_csv('dtw_matrix.csv')\n", - "#hau_matrix.to_csv('hau_matrix.csv')\n", - "#euc_matrix.to_csv('euc_matrix.csv')\n", - "#man_matrix.to_csv('man_matrix.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "7596f00b", - "metadata": {}, - "outputs": [], - "source": [ - "eye_matrix = pd.read_csv('eye_matrix.csv', index_col=0)\n", - "dfr_matrix = pd.read_csv('dfr_matrix.csv', index_col=0)\n", - "dtw_matrix = pd.read_csv('dtw_matrix.csv', index_col=0)\n", - "hau_matrix = pd.read_csv('hau_matrix.csv', index_col=0)\n", - "euc_matrix = pd.read_csv('euc_matrix.csv', index_col=0)\n", - "man_matrix = pd.read_csv('man_matrix.csv', index_col=0)" - ] - }, - { - "cell_type": "markdown", - "id": "40b24df1", - "metadata": {}, - "source": [ - "# Running umap to get embeddings from distances" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cc9c11f5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hausdorff | groups: 0%| | 0/30 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import re\n", - "from itertools import cycle\n", - "from tqdm import tqdm\n", - "import numpy as np\n", - "from umap import UMAP\n", - "from sklearn.svm import SVC\n", - "\n", - "# --------------------------------------------------------------------------\n", - "# helper to sort IDs naturally: \"10\" comes after \"2\", \"text_12\" after \"text_3\"\n", - "# --------------------------------------------------------------------------\n", - "def _natkey(s):\n", - " return [int(tok) if tok.isdigit() else tok.lower()\n", - " for tok in re.split(r'(\\d+)', str(s))]\n", - "\n", - "# --------------------------------------------------------------------------\n", - "# Low‑level helper – plots ONE distance matrix (one row in the final grid)\n", - "# --------------------------------------------------------------------------\n", - "def _plot_one_umap_best_groups(\n", - " D, labels, groups, *, ax,\n", - " n_components=2, random_state=228,\n", - " test_size=.30, top_n=4,\n", - " cmap_cycle=(\"tab10\", \"Set2\", \"Dark2\"),\n", - " global_handles=None,\n", - " title_prefix=\"\",\n", - " umap_params=None):\n", - "\n", - " # -- validation ------------------------------------------------------\n", - " D, labels, groups = map(np.asarray, (D, labels, groups))\n", - " n = D.shape[0]\n", - " if D.shape != (n, n):\n", - " raise ValueError(\"D must be square\")\n", - " if labels.shape[0] != n or groups.shape[0] != n:\n", - " raise ValueError(\"labels / groups length mismatch\")\n", - " if global_handles is None:\n", - " global_handles = {}\n", - "\n", - " uniq_groups = np.unique(groups)\n", - "\n", - " # -- per‑group UMAP + SVM -------------------------------------------\n", - " embeddings = np.full((n, n_components), np.nan)\n", - " svm_scores, svms = {}, {}\n", - " for g in tqdm(uniq_groups, desc=f\"{title_prefix} groups\"):\n", - " idx = np.where(groups == g)[0]\n", - " if len(idx) < 4 or len(np.unique(labels[idx])) < 2:\n", - " continue\n", - "\n", - " reducer = UMAP(n_components=n_components,\n", - " metric=\"precomputed\",\n", - " random_state=random_state,\n", - " **(umap_params or {}))\n", - " embeddings[idx] = reducer.fit_transform(D[np.ix_(idx, idx)])\n", - " X_emb = embeddings[idx]\n", - "\n", - " # you can keep / drop the split – here we still split:\n", - " Xtr, Xte, ytr, yte = train_test_split(\n", - " X_emb, labels[idx], test_size=test_size,\n", - " stratify=labels[idx], random_state=random_state)\n", - " svm = SVC(kernel=\"linear\", C=1, random_state=random_state)\n", - " svm.fit(Xtr, ytr)\n", - " acc = svm.score(Xte, yte)\n", - "\n", - " svm_scores[g] = acc\n", - " svms[g] = svm\n", - "\n", - " if not svm_scores:\n", - " raise ValueError(\"No scorable groups\")\n", - "\n", - " # ---------- choose & **order** groups --------------------------------\n", - " best = sorted(svm_scores, key=svm_scores.get, reverse=True)[:top_n] # pick by score\n", - " chosen = sorted(best, key=_natkey) # order by text_id\n", - "\n", - " # ---------- plot -----------------------------------------------------\n", - " cmaps = cycle(cmap_cycle)\n", - " for axis, g, cmap in zip(ax, chosen, cmaps):\n", - " mask = groups == g\n", - " Xg, yg = embeddings[mask], labels[mask]\n", - "\n", - " # points\n", - " for cls in np.unique(yg):\n", - " pts = yg == cls\n", - " sc = axis.scatter(Xg[pts, 0], Xg[pts, 1],\n", - " s=45, alpha=.85, cmap=cmap,\n", - " label=str(cls))\n", - " if cls not in global_handles:\n", - " global_handles[cls] = sc\n", - "\n", - " # linear boundary\n", - " w, b = svms[g].coef_[0], svms[g].intercept_[0]\n", - " if abs(w[1]) > 1e-10:\n", - " xlim = np.array(axis.get_xlim())\n", - " ylim = -(w[0] * xlim + b) / w[1]\n", - " axis.plot(xlim, ylim, '--', lw=1, c='black', label='_nolegend_')\n", - " else:\n", - " axis.axvline(x=-b / w[0], ls='--', lw=1, c='black', label='_nolegend_')\n", - "\n", - " axis.set_title(f\"{title_prefix}text_id = {g}\\nAcc={svm_scores[g]:.2%}\",\n", - " fontsize=9)\n", - " axis.set_xlabel(\"UMAP‑1\"); axis.set_ylabel(\"UMAP‑2\")\n", - "\n", - " # hide unused axes (if < top_n groups were plottable)\n", - " for axis in ax[len(chosen):]:\n", - " axis.set_visible(False)\n", - "\n", - " return {\"chosen_groups\": chosen,\n", - " \"test_accuracy\": {g: svm_scores[g] for g in chosen}}\n", - "\n", - "\n", - "\n", - "def plot_umap_best_groups_grid(\n", - " matrices,\n", - " names,\n", - " labels: np.ndarray,\n", - " groups: np.ndarray,\n", - " *,\n", - " top_n: int = 4,\n", - " n_components: int = 2,\n", - " random_state: int = 228,\n", - " test_size: float = .30,\n", - " size_per_plot: Tuple[int, int] = (4, 3),\n", - " cmap_cycle: Tuple[str, ...] = (\"tab10\", \"Set2\", \"Dark2\"),\n", - " figure_title: str = \"UMAP – best texts for each distance function\",\n", - " umap_params: Dict | None = None\n", - "):\n", - " \"\"\"\n", - " Create a single figure with one *row per distance matrix* and\n", - " `top_n` columns – the best‑performing groups.\n", - "\n", - " Parameters\n", - " ----------\n", - " matrices, names\n", - " Sequences of equal length. `names` appear as row titles.\n", - " labels, groups\n", - " 1‑D arrays of length n.\n", - " umap_params\n", - " Extra keyword arguments forwarded to `UMAP(...)` (e.g. `n_neighbors`).\n", - " \"\"\"\n", - "\n", - " n_rows, n_cols = len(matrices), top_n\n", - " w, h = size_per_plot\n", - " fig, axes = plt.subplots(\n", - " n_rows, n_cols,\n", - " figsize=(w * n_cols, h * n_rows),\n", - " squeeze=False\n", - " )\n", - "\n", - " global_handles = {}\n", - " summaries = {}\n", - "\n", - " for r, (D, title) in enumerate(zip(matrices, names)):\n", - " row_axes = axes[r]\n", - " summaries[title] = _plot_one_umap_best_groups(\n", - " D, labels, groups,\n", - " ax=row_axes,\n", - " n_components=n_components,\n", - " random_state=random_state,\n", - " test_size=test_size,\n", - " top_n=top_n,\n", - " cmap_cycle=cmap_cycle,\n", - " global_handles=global_handles,\n", - " title_prefix=f\"{title} | \",\n", - " umap_params=umap_params\n", - " )\n", - "\n", - " # annotate row name once along left margin\n", - " row_axes[0].annotate(title, xy=(0, .5),\n", - " xytext=(-row_axes[0].yaxis.labelpad - 25, 0),\n", - " xycoords=row_axes[0].yaxis.label,\n", - " textcoords='offset points',\n", - " size='large', ha='right', va='center',\n", - " rotation=90)\n", - "\n", - " # global legend (right‑hand side)\n", - " fig.legend(global_handles.values(), global_handles.keys(),\n", - " loc=\"center right\", title=\"class\")\n", - " fig.subplots_adjust(right=.85)\n", - " fig.suptitle(figure_title, fontsize=16, y=.995)\n", - " plt.tight_layout()\n", - " plt.show()\n", - "\n", - " return summaries\n", - "\n", - "\n", - "# ──────────────────────────────────────────────────────────────────────────────\n", - "# Example usage\n", - "# ──────────────────────────────────────────────────────────────────────────────\n", - "\n", - "if True:\n", - " summaries = plot_umap_best_groups_grid(\n", - " matrices=[\n", - " hau_matrix, \n", - " dtw_matrix, \n", - " dfr_matrix, \n", - " man_matrix, \n", - " ],\n", - " names=[\n", - " \"Hausdorff\", \n", - " \"DTW\", \n", - " \"DFR\", \n", - " \"Manhattan\", \n", - " ],\n", - " labels=y,\n", - " groups=sentence,\n", - " top_n=4,\n", - " )\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "eyefeatures_env", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.0" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/experiments/collection_experiments/README.md b/experiments/collection_experiments/README.md deleted file mode 100644 index b4dd256..0000000 --- a/experiments/collection_experiments/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Collection experiments – folder structure - -Structure of the `collection_experiments` folder. - -## Python modules (`utils/`) - -| File | Role | -|------|------| -| `benchmark_utils.py` | Data via `eyefeatures.data` (Parquet + meta), `get_collection_dir`, split groups from meta, `create_and_save_splits_for_dataset`, split helpers, `col_info_from_meta`, `ensure_duration`; DL adapters `find_datasets_parquet`, `load_dataset_parquet`. | -| `feature_extraction_utils.py` | Shared feature extraction: `setup_paths`, `extract_and_save_features`, `apply_splits_and_save`, `print_summary`. | -| `distance_extraction_utils.py` | Distance-feature pipeline: fit on train only, transform train/val/test; simple/advanced/expected-path methods; `path_pk_per_label`. | -| `split_utils.py` | Re-exports split-related helpers from `benchmark_utils`. | -| `flaml_training.py` | FLAML AutoML on feature CSVs: `run_training_battery`, split/label loading from splits_dir and features_dir. | -| `dl_training_utils.py` | DL training battery: dataset creation, model wrappers (2D, TimeSeries, merged), `run_dl_training_battery`. | -| `training_common.py` | Shared for FLAML and DL: task type, `REGRESSION_DATASET_PREFIXES`, `SKIP_DATASET_SUBSTRINGS`, label helpers. | - -## Notebooks - -| Notebook | Purpose | -|----------|--------| -| `create_splits.ipynb` | Create train/val/test splits from meta; writes split info under `features_output/splits/`. | -| `feature_extraction_all.ipynb` | Single pipeline for all feature batteries: simple, extended, complex, distance. Run after `create_splits`. | -| `training.ipynb` | ML (FLAML AutoML) and DL training: feature CSVs for FLAML; Parquet + splits for DL. Run after `create_splits` and `feature_extraction_all`. | -| `gaze_idt_fixation_extraction.ipynb` | Gaze / I-DT fixation extraction from gaze-only datasets. | - -## Output and result folders - -- **`features_output/`** – Extracted feature CSVs and split-applied train/val/test files (created by `feature_extraction_all`). -- **`features_output/splits/`** – Split metadata and label CSVs (created by `create_splits`). -- **`results/`** – Result CSVs: FLAML (`flaml_results_all_batteries.csv`, `flaml_results_all_batteries_additional.csv`), DL (`dl_training_results_all_representations.csv`), best ML/DL per task (`best_ml_dl_per_task_table.csv`). -- **`plots/`** – Figures and plot data (e.g. radar plots, ML vs DL wins). - -Data is read from the repo `data/collection` (Parquet + `meta.json`). diff --git a/experiments/collection_experiments/create_splits.ipynb b/experiments/collection_experiments/create_splits.ipynb deleted file mode 100644 index 1e1fd37..0000000 --- a/experiments/collection_experiments/create_splits.ipynb +++ /dev/null @@ -1,97 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Create train/val/test splits from meta\n", - "\n", - "Splits are derived from **data/collection** (Parquet + meta.json) using `eyefeatures.data`:\n", - "\n", - "- **Data**: `eyefeatures.data.load_dataset` (Parquet)\n", - "- **Split groups**: from `meta.json` per-dataset `labels[label_col].splitting_column`\n", - "- **Output**: `splits_dir/{dataset}_labels.csv`, `{dataset}_{label}_split_info.json` per label\n", - "\n", - "Run this once before feature extraction notebooks." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(0, str(Path('.').resolve()))\n", - "\n", - "from utils.benchmark_utils import (\n", - " get_collection_dir,\n", - " list_datasets,\n", - " load_dataset_with_meta,\n", - " create_and_save_splits_for_dataset,\n", - ")\n", - "\n", - "OUTPUT_DIR = Path('features_output')\n", - "OUTPUT_DIR.mkdir(exist_ok=True)\n", - "SPLITS_DIR = OUTPUT_DIR / 'splits'\n", - "SPLITS_DIR.mkdir(exist_ok=True)\n", - "\n", - "COLLECTION_DIR = get_collection_dir()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "# List fixation datasets\n", - "dataset_names = list_datasets(dataset_type='fixation')\n", - "print(f\"Found {len(dataset_names)} fixation datasets\")" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "for name in dataset_names:\n", - " try:\n", - " df, meta_info = load_dataset_with_meta(name)\n", - " if meta_info.get('info') and meta_info['info'].get('labels'):\n", - " labels_path, split_paths = create_and_save_splits_for_dataset(\n", - " name, df, meta_info, SPLITS_DIR,\n", - " test_size=0.2, val_size=0.2, random_state=42, overwrite=False\n", - " )\n", - " print(f\"{name}: {len(split_paths)} label splits\")\n", - " else:\n", - " print(f\"{name}: no meta labels, skip\")\n", - " except Exception as e:\n", - " print(f\"{name}: ERROR {e}\")" - ], - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "eyefeatures-dev", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.0" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/experiments/collection_experiments/feature_extraction_all.ipynb b/experiments/collection_experiments/feature_extraction_all.ipynb deleted file mode 100644 index 9361fce..0000000 --- a/experiments/collection_experiments/feature_extraction_all.ipynb +++ /dev/null @@ -1,373 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Unified feature extraction\n", - "\n", - "Single notebook for all feature batteries. Uses **eyefeatures.data** (Parquet + meta) and shared **collection_experiments** utils.\n", - "\n", - "**Parts:**\n", - "1. **Simple** – fixation duration, saccade length (mean, std, min, max, count, sum)\n", - "2. **Extended** – extended stats, regression, angles\n", - "3. **Complex** – Hurst, entropies, RQA, Lyapunov, fractal, HHT, etc. (full hyperparameter grids)\n", - "4. **Distance** – split-first pipeline; fit on train only; path_pk per split_id via PATH_PK_PER_LABEL\n", - "\n", - "Run **0_create_splits** first. Outputs go to `features_output/` and `features_output/splits/`." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "import warnings\n", - "warnings.filterwarnings('ignore')\n", - "\n", - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(0, str(Path('.').resolve()))\n", - "\n", - "from eyefeatures.features.extractor import Extractor\n", - "from eyefeatures.features.stats import FixationFeatures, SaccadeFeatures, RegressionFeatures\n", - "from eyefeatures.features.measures import (\n", - " HurstExponent, SpectralEntropy, FuzzyEntropy, SampleEntropy,\n", - " IncrementalEntropy, GriddedDistributionEntropy,\n", - " PhaseEntropy, LyapunovExponent, FractalDimension, CorrelationDimension,\n", - " RQAMeasures, SaccadeUnlikelihood, HHTFeatures,\n", - ")\n", - "\n", - "from utils.benchmark_utils import (\n", - " get_collection_dir,\n", - " list_datasets,\n", - " load_dataset_with_meta,\n", - " col_info_from_meta,\n", - " get_split_info_paths_for_dataset,\n", - ")\n", - "from utils.feature_extraction_utils import setup_paths, extract_and_save_features, print_summary\n", - "from utils.distance_extraction_utils import (\n", - " extract_and_save_distance_features,\n", - " SIMPLE_DISTANCE_METHODS,\n", - " ADVANCED_DISTANCE_METHODS,\n", - " EXPECTED_PATH_METHODS,\n", - ")" - ], - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "# Shared setup\n", - "paths = setup_paths(output_dir='features_output', splits_dir='features_output/splits')\n", - "COLLECTION_DIR = paths['collection_dir']\n", - "dataset_names = list_datasets(dataset_type='fixation')\n", - "print(f\"Datasets: {len(dataset_names)}\")\n", - "print(f\"Output: {paths['output_dir']}\")" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 1: Simple features\n", - "\n", - "Fixation duration and saccade length statistics (mean, std, min, max, count, sum)." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "basic_stats = ['mean', 'std', 'min', 'max', 'count', 'sum']\n", - "results_simple = []\n", - "\n", - "for dataset_name in dataset_names:\n", - " print(f\"\\n{'='*80}\\n[Simple] {dataset_name}\\n{'='*80}\")\n", - " try:\n", - " df, meta_info = load_dataset_with_meta(dataset_name)\n", - " col_info = col_info_from_meta(df, meta_info)\n", - " if not col_info['group_cols'] or not col_info.get('duration'):\n", - " results_simple.append({'dataset': dataset_name, 'status': 'skipped', 'reason': 'missing pk or duration'})\n", - " continue\n", - " fix = FixationFeatures(features_stats={'duration': basic_stats}, x=col_info['x_col'], y=col_info['y_col'], duration='duration', pk=col_info['group_cols'], return_df=True)\n", - " sac = SaccadeFeatures(features_stats={'length': basic_stats}, x=col_info['x_col'], y=col_info['y_col'], t=col_info['t_col'], duration='duration', pk=col_info['group_cols'], return_df=True)\n", - " extractor = Extractor(features=[fix, sac], x=col_info['x_col'], y=col_info['y_col'], t=col_info['t_col'], duration='duration', pk=col_info['group_cols'], return_df=True)\n", - " result = extract_and_save_features(df, dataset_name, 'simple_features', extractor, meta_info, paths, check_cache_first=True)\n", - " results_simple.append(result)\n", - " except Exception as e:\n", - " import traceback\n", - " traceback.print_exc()\n", - " results_simple.append({'dataset': dataset_name, 'status': 'error', 'error': str(e)})\n", - "\n", - "print_summary(results_simple, feature_type='simple_features')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 2: Extended statistical features\n", - "\n", - "Extended stats (median, skew, kurtosis), fixation duration, saccade length/speed/acceleration/angles, regression features." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "extended_stats = ['mean', 'std', 'min', 'max', 'count', 'median', 'skew', 'kurtosis']\n", - "results_extended = []\n", - "\n", - "for dataset_name in dataset_names:\n", - " print(f\"\\n{'='*80}\\n[Extended] {dataset_name}\\n{'='*80}\")\n", - " try:\n", - " df, meta_info = load_dataset_with_meta(dataset_name)\n", - " col_info = col_info_from_meta(df, meta_info)\n", - " if not col_info['group_cols'] or not col_info.get('duration'):\n", - " results_extended.append({'dataset': dataset_name, 'status': 'skipped', 'reason': 'missing pk or duration'})\n", - " continue\n", - " fix = FixationFeatures(features_stats={'duration': extended_stats + ['sum']}, x=col_info['x_col'], y=col_info['y_col'], duration='duration', pk=col_info['group_cols'], return_df=True)\n", - " sac = SaccadeFeatures(features_stats={'length': extended_stats + ['sum'], 'speed': extended_stats, 'acceleration': extended_stats, 'direction_angle': extended_stats, 'rotation_angle': extended_stats}, x=col_info['x_col'], y=col_info['y_col'], t=col_info['t_col'], duration='duration', pk=col_info['group_cols'], return_df=True)\n", - " reg = RegressionFeatures(features_stats={'length': extended_stats, 'speed': extended_stats, 'mask': ['sum']}, x=col_info['x_col'], y=col_info['y_col'], t=col_info['t_col'], duration='duration', pk=col_info['group_cols'], return_df=True)\n", - " extractor = Extractor(features=[fix, sac, reg], x=col_info['x_col'], y=col_info['y_col'], t=col_info['t_col'], duration='duration', pk=col_info['group_cols'], return_df=True)\n", - " result = extract_and_save_features(df, dataset_name, 'extended_features', extractor, meta_info, paths, check_cache_first=True)\n", - " results_extended.append(result)\n", - " except Exception as e:\n", - " import traceback\n", - " traceback.print_exc()\n", - " results_extended.append({'dataset': dataset_name, 'status': 'error', 'error': str(e)})\n", - "\n", - "print_summary(results_extended, feature_type='extended_features')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 3: Complex features\n", - "\n", - "Full hyperparameter grids: Hurst, SpectralEntropy, FuzzyEntropy, SampleEntropy, IncrementalEntropy, GriddedDistributionEntropy, PhaseEntropy, LyapunovExponent, FractalDimension, CorrelationDimension, RQAMeasures, SaccadeUnlikelihood, HHTFeatures." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "results_complex = []\n", - "\n", - "for dataset_name in dataset_names:\n", - " print(f\"\\n{'='*80}\\n[Complex] {dataset_name}\\n{'='*80}\")\n", - " try:\n", - " df, meta_info = load_dataset_with_meta(dataset_name)\n", - " col_info = col_info_from_meta(df, meta_info)\n", - " if not col_info['group_cols'] or not col_info.get('duration'):\n", - " results_complex.append({'dataset': dataset_name, 'status': 'skipped', 'reason': 'missing pk or duration'})\n", - " continue\n", - " pk, x_col, y_col, t_col = col_info['group_cols'], col_info['x_col'], col_info['y_col'], col_info['t_col']\n", - " duration = 'duration' if col_info.get('has_duration') else None\n", - " features_list = []\n", - " for n_iters in [1, 2, 3, 4, 5]:\n", - " for fill_strategy in ['last', 'mean', 'reduce']:\n", - " features_list.append(HurstExponent(n_iters=n_iters, fill_strategy=fill_strategy, coordinate=x_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for n_iters in [1, 2, 3, 4, 5]:\n", - " for fill_strategy in ['last', 'mean', 'reduce']:\n", - " features_list.append(HurstExponent(n_iters=n_iters, fill_strategy=fill_strategy, coordinate=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " features_list.append(SpectralEntropy(x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for m in [1, 2, 3]:\n", - " for r in [0.05, 0.1, 0.15, 0.2, 0.3, 0.4]:\n", - " features_list.append(FuzzyEntropy(m=m, r=r, x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for m in [1, 2, 3]:\n", - " for r in [0.05, 0.1, 0.15, 0.2, 0.3, 0.4]:\n", - " features_list.append(SampleEntropy(m=m, r=r, x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " features_list.append(IncrementalEntropy(x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for grid_size in [4, 5, 6, 7, 8, 16, 32]:\n", - " features_list.append(GriddedDistributionEntropy(grid_size=grid_size, x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for m in [1, 2, 3, 4, 5]:\n", - " for tau in [1, 2, 3, 4, 5]:\n", - " features_list.append(PhaseEntropy(m=m, tau=tau, x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for m in [1, 2, 3, 4, 5]:\n", - " for tau in [1, 2, 3, 4, 5]:\n", - " features_list.append(LyapunovExponent(m=m, tau=tau, T=1, x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for m in [2, 3, 4]:\n", - " for tau in [1, 2, 3, 4, 5]:\n", - " features_list.append(FractalDimension(m=m, tau=tau, x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for m in [2, 3, 4]:\n", - " for tau in [1, 2, 3, 4, 5]:\n", - " for r in [0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5]:\n", - " features_list.append(CorrelationDimension(m=m, tau=tau, r=r, x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for rho in [0.05, 0.1, 0.15, 0.2, 0.3, 0.4]:\n", - " for min_length in [1, 2, 3, 4]:\n", - " features_list.append(RQAMeasures(rho=rho, min_length=min_length, measures=['rec', 'det', 'lam', 'corm'], x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " features_list.append(SaccadeUnlikelihood(x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " for max_imfs in [-1] + list(range(1, 25, 5)):\n", - " features_list.append(HHTFeatures(max_imfs=max_imfs, features=['mean', 'std', 'var', 'entropy', 'energy'], x=x_col, y=y_col, pk=pk, return_df=True, ignore_errors=True))\n", - " extractor = Extractor(features=features_list, x=x_col, y=y_col, t=t_col, duration=duration, pk=pk, return_df=True)\n", - " result = extract_and_save_features(df, dataset_name, 'complex_features', extractor, meta_info, paths, check_cache_first=True)\n", - " results_complex.append(result)\n", - " except Exception as e:\n", - " import traceback\n", - " traceback.print_exc()\n", - " results_complex.append({'dataset': dataset_name, 'status': 'error', 'error': str(e)})\n", - "\n", - "print_summary(results_complex, feature_type='complex_features')" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 4: Distance features\n", - "\n", - "**Different pipeline**: split data first; fit transformers on **train only** (expected paths from train); transform train/val/test. path_pk (reference path grouping) per split_id via **PATH_PK_PER_LABEL**. Simple methods: euc, hau, dtw, man, eye, dfr. Advanced: tde, multimatch. Expected path methods: mean, fwp." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "# PATH_PK_PER_LABEL: path_pk per split_id\n", - "PATH_PK_PER_LABEL = {\n", - " '3D_condition_label': ['group_category_label', 'group_filenumber'],\n", - " '3D_group_category_label': ['group_subject'],\n", - " 'AFC_group_category_label': ['group_subject'],\n", - " 'AFC_mod_label': ['group_category_label', 'group_filenumber'],\n", - " 'AFC_scr_label': ['group_category_label', 'group_filenumber'],\n", - " 'APPC_context_group_category_label': ['group_subject'],\n", - " 'APP_group_category_label': ['group_subject'],\n", - " 'APP_known_label': ['group_category_label', 'group_filenumber'],\n", - " 'APP_meta_certainty_label': ['group_category_label', 'group_filenumber'],\n", - " 'APP_mod_label': ['group_category_label', 'group_filenumber'],\n", - " 'ASD_fixations_ASD_label': ['group_observation'],\n", - " 'Age_study_group_category_label': ['group_subject'],\n", - " 'Age_study_meta_age_label': ['group_category_label', 'group_filenumber'],\n", - " 'Baseline_group_category_label': ['group_subject'],\n", - " 'Bias_group_category_label': ['group_subject'],\n", - " 'Crossmodal2_group_category_label': ['group_subject'],\n", - " 'Crossmodal_condition_label': ['group_category_label', 'group_filenumber'],\n", - " 'Crossmodal_group_category_label': ['group_subject'],\n", - " 'Dyslexia_1_fixations_Dyslexia_label': ['group_stimul'],\n", - " 'Dyslexia_1_fixations_meta_Age_label': ['group_stimul'],\n", - " 'Dyslexia_1_fixations_meta_Sex_label': ['group_stimul'],\n", - " 'Dyslexia_2_fixations_Dyslexia_label': ['group_stimul'],\n", - " 'Dyslexia_2_fixations_meta_Age_label': ['group_stimul'],\n", - " 'Dyslexia_Czech_fixations_Dyslexia_label': ['group_task'],\n", - " 'Filtered_group_category_label': ['group_subject'],\n", - " 'Filtered_meta_delay_label': ['group_category_label', 'group_filenumber'],\n", - " 'Filtered_meta_spatial_filter_label': ['group_category_label', 'group_filenumber'],\n", - " 'Gap_gap_label': ['group_category_label', 'group_filenumber'],\n", - " 'Gap_group_category_label': ['group_subject'],\n", - " 'Head_fixed_group_category_label': ['group_subject'],\n", - " 'Head_fixed_meta_condition_label': ['group_category_label', 'group_filenumber'],\n", - " 'Head_fixed_meta_guided_viewing_label': ['group_category_label', 'group_filenumber'],\n", - " 'Memory_1_group_category_label': ['group_subject'],\n", - " 'Memory_1_group_iteration_label': ['group_category_label', 'group_filenumber'],\n", - " 'Memory_2_condition_label': ['group_category_label', 'group_filenumber'],\n", - " 'Memory_2_group_category_label': ['group_category_label', 'group_filenumber'],\n", - " 'Memory_2_group_iteration_label': ['group_category_label', 'group_filenumber'],\n", - " 'Paris_experiment_fixations_TEXT_TYPE_2_label': ['group_subject'],\n", - " 'Paris_experiment_fixations_TEXT_TYPE_label': ['group_subject'],\n", - " 'Patch_group_category_label': ['group_subject'],\n", - " 'Patch_scr_label': ['group_category_label', 'group_filenumber'],\n", - " 'Surgical_skills_1_fixations_Performance_label': ['group_Task'],\n", - " 'Surgical_skills_2_fixations_Performance_label': ['group_Subject'],\n", - " 'Webtask_condition_label': ['group_category_label', 'group_filenumber'],\n", - " 'Webtask_familiarity_label': ['group_category_label', 'group_filenumber'],\n", - " 'Webtask_group_category_label': ['group_subject'],\n", - " 'Webtask_relevance_label': ['group_category_label', 'group_filenumber'],\n", - " 'Webtask_school_condition_label': ['group_category_label', 'group_filenumber'],\n", - " 'Webtask_school_familiarity_label': ['group_category_label', 'group_filenumber'],\n", - " 'Webtask_school_group_category_label': ['group_subject'],\n", - " 'Webtask_school_relevance_label': ['group_category_label', 'group_filenumber'],\n", - " 'Webtask_school_search_result_label': ['group_category_label', 'group_filenumber'],\n", - " 'Webtask_search_result_label': ['group_category_label', 'group_filenumber'],\n", - "}\n", - "for _name in dataset_names:\n", - " try:\n", - " _df, _meta = load_dataset_with_meta(_name)\n", - " _ci = col_info_from_meta(_df, _meta)\n", - " _pk = _ci.get('group_cols') or []\n", - " if not _pk:\n", - " continue\n", - " for _path in get_split_info_paths_for_dataset(paths['splits_dir'], _name):\n", - " _sid = _path.stem.replace('_split_info', '')\n", - " PATH_PK_PER_LABEL.setdefault(_sid, list(_pk))\n", - " except Exception:\n", - " pass\n", - "print(f\"PATH_PK_PER_LABEL: {len(PATH_PK_PER_LABEL)} split_ids\")" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "results_distance = []\n", - "\n", - "for dataset_name in dataset_names:\n", - " print(f\"\\n{'='*80}\\n[Distance] {dataset_name}\\n{'='*80}\")\n", - " try:\n", - " df, meta_info = load_dataset_with_meta(dataset_name)\n", - " col_info = col_info_from_meta(df, meta_info)\n", - " pk = col_info.get('group_cols') or []\n", - " if not pk:\n", - " results_distance.append({'dataset': dataset_name, 'status': 'skipped', 'reason': 'no pk'})\n", - " continue\n", - " n_scanpaths = len(df[pk].drop_duplicates())\n", - " if n_scanpaths < 2:\n", - " results_distance.append({'dataset': dataset_name, 'status': 'skipped', 'reason': 'need at least 2 scanpaths'})\n", - " continue\n", - " results = extract_and_save_distance_features(\n", - " df, dataset_name, meta_info, col_info, paths,\n", - " simple_methods=SIMPLE_DISTANCE_METHODS,\n", - " advanced_methods=ADVANCED_DISTANCE_METHODS,\n", - " expected_path_methods=EXPECTED_PATH_METHODS,\n", - " path_pk_per_label=PATH_PK_PER_LABEL,\n", - " check_cache_per_split=True,\n", - " )\n", - " for r in results:\n", - " r['dataset'] = dataset_name\n", - " results_distance.append(r)\n", - " except Exception as e:\n", - " import traceback\n", - " traceback.print_exc()\n", - " results_distance.append({'dataset': dataset_name, 'status': 'error', 'error': str(e)})\n", - "\n", - "print_summary(results_distance, feature_type='distance_features')" - ], - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "eyefeatures-dev", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.0" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/experiments/collection_experiments/gaze_idt_fixation_extraction.ipynb b/experiments/collection_experiments/gaze_idt_fixation_extraction.ipynb deleted file mode 100644 index d3d741b..0000000 --- a/experiments/collection_experiments/gaze_idt_fixation_extraction.ipynb +++ /dev/null @@ -1,267 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Gaze → Fixations via IDT (I-DT Algorithm)\n", - "\n", - "This notebook extracts **fixations** from **gaze-only** benchmark datasets using the **I-DT (Identification by Dispersion-Threshold)** algorithm from EyeFeatures.\n", - "\n", - "- **One cell per gaze dataset** so you can run and inspect each independently.\n", - "- For each dataset we: load → run IDT → report **scanpath statistics** → **visualize** a few scanpaths.\n", - "\n", - "Gaze datasets are those whose filename ends with `_gaze` or `_gazes` (excluding `_skip`)." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "import sys\n", - "from pathlib import Path\n", - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "sys.path.insert(0, str(Path('.').resolve()))\n", - "\n", - "from utils.benchmark_utils import get_collection_dir, list_datasets, load_dataset_with_meta, col_info_from_meta\n", - "from utils.feature_extraction_utils import setup_paths\n", - "from sklearn.pipeline import Pipeline\n", - "from eyefeatures.preprocessing.fixation_extraction import IDT\n", - "from eyefeatures.preprocessing.smoothing import WienerFilter, SavGolFilter\n", - "\n", - "paths = setup_paths(output_dir=\"features_output\")\n", - "COLLECTION_DIR = paths[\"collection_dir\"]\n", - "print(f\"Collection directory: {COLLECTION_DIR}\")\n", - "\n", - "# Gaze datasets (names ending with _gaze/_gazes)\n", - "gaze_dataset_names = list_datasets(dataset_type=\"gaze\", include_extensive_collection=True)\n", - "print(f\"Found {len(gaze_dataset_names)} gaze dataset(s):\")\n", - "for name in gaze_dataset_names:\n", - " print(f\" - {name}\")" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "def run_idt_on_gaze(\n", - " df: pd.DataFrame,\n", - " col_info: dict,\n", - " min_duration: float = 0.05,\n", - " max_duration: float = 2.0,\n", - " max_dispersion: float = 0.05,\n", - ") -> pd.DataFrame:\n", - " \"\"\"\n", - " Run IDT fixation extraction on a gaze dataframe.\n", - "\n", - " Uses col_info['x_col'], col_info['y_col'], col_info['t_col'], col_info['group_cols'].\n", - " If t_col is missing, adds a synthetic timestamp (row order per scanpath at 60 Hz).\n", - " \"\"\"\n", - " df = df.copy()\n", - " print(f'Number of gazes = {len(df)}')\n", - " x_col = col_info[\"x_col\"]\n", - " y_col = col_info[\"y_col\"]\n", - " t_col = col_info.get(\"t_col\")\n", - " pk = col_info.get(\"group_cols\") or []\n", - "\n", - " idt = IDT(\n", - " x=x_col,\n", - " y=y_col,\n", - " t=t_col,\n", - " min_duration=min_duration,\n", - " max_duration=max_duration,\n", - " max_dispersion=max_dispersion,\n", - " pk=pk if pk else None,\n", - " )\n", - "\n", - " fixations = idt.fit_transform(df)\n", - "\n", - " # Keep label columns in final dataset\n", - " label_cols = col_info.get(\"label_cols\") or []\n", - " existing = [c for c in label_cols if c in df.columns and c not in fixations.columns]\n", - " if existing:\n", - " if pk:\n", - " group_labels = df.groupby(pk)[existing].first().reset_index()\n", - " fixations = fixations.merge(group_labels, on=pk, how=\"left\")\n", - " else:\n", - " for c in existing:\n", - " fixations[c] = df[c].iloc[0]\n", - "\n", - " return fixations\n", - "\n", - "\n", - "def scanpath_stats(fixations: pd.DataFrame, pk: list) -> dict:\n", - " \"\"\"Compute scanpath-level statistics from a fixations DataFrame.\"\"\"\n", - " if not pk or not all(c in fixations.columns for c in pk):\n", - " n_scanpaths = 1\n", - " fix_per_scanpath = [len(fixations)]\n", - " else:\n", - " counts = fixations.groupby(pk).size()\n", - " n_scanpaths = len(counts)\n", - " fix_per_scanpath = counts.values\n", - "\n", - " duration_col = \"duration\" if \"duration\" in fixations.columns else None\n", - " durations = fixations[\"duration\"].values if duration_col else None\n", - "\n", - " stats = {\n", - " \"n_scanpaths\": n_scanpaths,\n", - " \"n_fixations_total\": len(fixations),\n", - " \"fixations_per_scanpath_mean\": np.mean(fix_per_scanpath),\n", - " \"fixations_per_scanpath_std\": np.std(fix_per_scanpath),\n", - " \"fixations_per_scanpath_min\": int(np.min(fix_per_scanpath)),\n", - " \"fixations_per_scanpath_max\": int(np.max(fix_per_scanpath)),\n", - " }\n", - " if durations is not None:\n", - " stats[\"duration_mean_ms\"] = np.mean(durations) * 1000\n", - " stats[\"duration_std_ms\"] = np.std(durations) * 1000\n", - " stats[\"duration_min_ms\"] = np.min(durations) * 1000\n", - " stats[\"duration_max_ms\"] = np.max(durations) * 1000\n", - " return stats\n", - "\n", - "\n", - "def print_stats(name: str, stats: dict):\n", - " print(f\"\\n--- {name} ---\")\n", - " print(f\" Scanpaths: {stats['n_scanpaths']}\")\n", - " print(f\" Total fixations: {stats['n_fixations_total']}\")\n", - " print(f\" Fixations per scanpath: mean={stats['fixations_per_scanpath_mean']:.1f} std={stats['fixations_per_scanpath_std']:.1f} min={stats['fixations_per_scanpath_min']} max={stats['fixations_per_scanpath_max']}\")\n", - " if \"duration_mean_ms\" in stats:\n", - " print(f\" Fixation duration (ms): mean={stats['duration_mean_ms']:.0f} std={stats['duration_std_ms']:.0f} min={stats['duration_min_ms']:.0f} max={stats['duration_max_ms']:.0f}\")\n", - "\n", - "\n", - "def plot_sample_scanpaths(fixations: pd.DataFrame, x_col: str, y_col: str, pk: list, n_show: int = 3, figsize: tuple = (5, 5)):\n", - " \"\"\"Plot a few sample scanpaths (path + numbered points) in subplots.\"\"\"\n", - " if not pk or not all(c in fixations.columns for c in pk):\n", - " groups = [(None, fixations)]\n", - " else:\n", - " groups = list(fixations.groupby(pk))\n", - " n_show = min(n_show, len(groups))\n", - " fig, axes = plt.subplots(1, n_show, figsize=(figsize[0] * n_show, figsize[1]))\n", - " if n_show == 1:\n", - " axes = [axes]\n", - " for i, (key, grp) in enumerate(groups[:n_show]):\n", - " ax = axes[i]\n", - " grp = grp.sort_values(\"start_time\") if \"start_time\" in grp.columns else grp\n", - " x, y = grp[x_col].values, grp[y_col].values\n", - " ax.plot(x, y, \"k-\", alpha=0.5, linewidth=1)\n", - " ax.scatter(x, y, s=60, c=\"steelblue\", edgecolors=\"black\", zorder=2)\n", - " for j in range(len(x)):\n", - " ax.annotate(str(j + 1), (x[j], y[j]), fontsize=8, ha=\"center\", va=\"center\")\n", - " ax.set_xlabel(x_col)\n", - " ax.set_ylabel(y_col)\n", - " ax.set_title(f\"Scanpath {i+1}\" if isinstance(key, (list, tuple)) else str(key)[:40])\n", - " ax.set_aspect(\"equal\", adjustable=\"box\")\n", - " plt.tight_layout()\n", - " plt.show()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Cognitive_load_gazes\n", - "\n", - "Gaze data with `norm_pos_x`, `norm_pos_y`, `timestamp`; scanpaths by `group_subject`, `group_task_label`." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "max_disp_list = [0.01, 0.02, 0.03, 0.04, 0.05]\n", - "\n", - "for max_disp in max_disp_list:\n", - " print(f'Experiment for disp = {max_disp}')\n", - " dataset_name = \"Cognitive_load_gazes\"\n", - " try:\n", - " df, meta_info = load_dataset_with_meta(dataset_name)\n", - " col_info = col_info_from_meta(df, meta_info)\n", - " except Exception as e:\n", - " print(f\"Dataset not found or load failed: {dataset_name} — {e}\")\n", - " df, col_info = None, {}\n", - " if df is not None and col_info.get(\"x_col\") and col_info.get(\"y_col\"):\n", - " # Subsample for speed\n", - " pk = col_info.get(\"group_cols\", [])\n", - " fixations_cog = run_idt_on_gaze(\n", - " df, \n", - " col_info,\n", - " max_dispersion = max_disp\n", - " )\n", - " fixations_cog.to_csv(f\"data\\\\benchmark\\\\extracted_fixations\\\\Cognitive_load_fixations_{max_disp}.parquet\")\n", - " stats_cog = scanpath_stats(fixations_cog, col_info.get(\"group_cols\", []))\n", - " print_stats(dataset_name, stats_cog)\n", - " x_col = col_info[\"x_col\"]\n", - " y_col = col_info[\"y_col\"]\n", - " plot_sample_scanpaths(fixations_cog, x_col, y_col, col_info.get(\"group_cols\", []), n_show=3)\n", - " else:\n", - " print(f\"Missing coordinates or load failed for {dataset_name}\")" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Emotions_gazes\n", - "\n", - "Gaze data with `norm_pos_x`, `norm_pos_y`, `timestamp`; scanpaths by `group_1`, `group_2`." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "max_disp_list = [0.01, 0.02, 0.03, 0.04, 0.05]\n", - "\n", - "for max_disp in max_disp_list:\n", - "\n", - " dataset_name = \"Emotions_gazes\"\n", - " try:\n", - " df, meta_info = load_dataset_with_meta(dataset_name)\n", - " col_info = col_info_from_meta(df, meta_info)\n", - " except Exception as e:\n", - " print(f\"Dataset not found or load failed: {dataset_name} — {e}\")\n", - " df, col_info = None, {}\n", - " if df is not None and col_info.get(\"x_col\") and col_info.get(\"y_col\"):\n", - " pk = col_info.get(\"group_cols\", [])\n", - " fixations_emo = run_idt_on_gaze(df, col_info, max_dispersion = max_disp)\n", - " fixations_emo.to_parquet(f\"data\\\\benchmark\\\\extracted_fixations\\\\Emotions_fixations_{max_disp}.parquet\")\n", - " stats_emo = scanpath_stats(fixations_emo, pk)\n", - " print_stats(dataset_name, stats_emo)\n", - " plot_sample_scanpaths(fixations_emo, col_info[\"x_col\"], col_info[\"y_col\"], pk, n_show=3)\n", - " else:\n", - " print(f\"Missing coordinates or load failed for {dataset_name}\")" - ], - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "eyefeatures", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.12" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/experiments/collection_experiments/plots/ml_vs_dl_wins_bar.png b/experiments/collection_experiments/plots/ml_vs_dl_wins_bar.png deleted file mode 100644 index 398c88e..0000000 Binary files a/experiments/collection_experiments/plots/ml_vs_dl_wins_bar.png and /dev/null differ diff --git a/experiments/collection_experiments/plots/radar_controlled_viewing.png b/experiments/collection_experiments/plots/radar_controlled_viewing.png deleted file mode 100644 index 0de5ba3..0000000 Binary files a/experiments/collection_experiments/plots/radar_controlled_viewing.png and /dev/null differ diff --git a/experiments/collection_experiments/results/best_ml_dl_per_task_table.csv b/experiments/collection_experiments/results/best_ml_dl_per_task_table.csv deleted file mode 100644 index c808186..0000000 --- a/experiments/collection_experiments/results/best_ml_dl_per_task_table.csv +++ /dev/null @@ -1,56 +0,0 @@ -dataset,label,is_random_baseline_beaten,clf_or_regr,n_classes_or_-,best_ml_methods,best_ml_f1_or_r2,best_dl_methods,best_dl_f1_or_r2 -3D,condition_label,True,clf,6,complex_features,0.3109512112165036,"2d_baseline, merged_baseline, timeseries",0.2575158645670096 -AFC,mod_label,False,clf,6,"all_features, complex_features, distance_features, simple_features",0.1736502804581267,"2d_baseline, 2d_gaf, merged_baseline, merged_gaf",0.1709200944780765 -AFC,scr_label,False,clf,5,"all_features, complex_features, simple_features",0.243552805875473,"2d_baseline, 2d_heatmap, merged_baseline",0.2355038056410467 -APP,known_label,True,clf,2,"complex_features, distance_features, extended_features",0.6812070771737866,"2d_baseline, 2d_heatmap, merged_baseline, merged_heatmap, merged_mtf",0.5411482734013837 -APP,meta_certainty_label,True,clf,6,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,"2d_gaf, 2d_heatmap, 2d_mtf, merged_heatmap, merged_mtf",0.1770447027140787 -APP,mod_label,True,clf,4,"all_features, complex_features",0.4930470630446289,"2d_heatmap, merged_baseline",0.633993896925859 -ASD_ready_data_fixations,ASD_label,True,clf,2,"all_features, extended_features, simple_features",0.7049422676666255,"merged_heatmap, merged_mtf, timeseries",0.6561326931470973 -Age_study,group_category_label,True,clf,4,"all_features, complex_features",0.4413078359802652,"2d_baseline, 2d_heatmap, merged_baseline, merged_heatmap",0.3679134123118809 -Age_study,meta_age_label,True,clf,3,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,"merged_baseline, merged_heatmap",0.5541357640558374 -Baseline,group_category_label,True,clf,4,"all_features, complex_features",0.4579999859124037,"2d_baseline, merged_baseline, timeseries",0.3589382898612633 -Bias,group_category_label,True,clf,4,all_features,0.4719029607341846,"2d_baseline, 2d_heatmap, merged_baseline, merged_heatmap",0.3912941579649678 -Cognitive_load_ready_data_gazes_0.02,effort_label,True,regr,-,simple_features,0.5461569366003101,merged_baseline,0.0159065723419189 -Cognitive_load_ready_data_gazes_0.02,frustration_label,True,regr,-,distance_features,0.545852780342102,2d_baseline,0.0811482667922973 -Cognitive_load_ready_data_gazes_0.02,group_task_label,True,clf,4,distance_features,0.6984942302279764,"2d_baseline, 2d_gaf, merged_baseline, merged_heatmap",0.4632218271924154 -Cognitive_load_ready_data_gazes_0.02,mean_label,True,regr,-,extended_features,0.966536443174824,merged_baseline,0.0337787866592407 -Cognitive_load_ready_data_gazes_0.02,mental_label,True,regr,-,extended_features,0.6801014761392234,"2d_heatmap, merged_mtf",0.0057309865951538 -Cognitive_load_ready_data_gazes_0.02,performance_label,True,regr,-,all_features,0.36579881334337,2d_baseline,0.0117032527923583 -Cognitive_load_ready_data_gazes_0.02,physical_label,True,regr,-,all_features,0.4551218900703705,2d_mtf,-0.0757734775543212 -Cognitive_load_ready_data_gazes_0.02,temporal_label,True,regr,-,distance_features,0.6028531887722737,merged_heatmap,0.0418839454650878 -Crossmodal,condition_label,True,clf,5,extended_features,0.427815604395682,"2d_baseline, 2d_gaf, merged_baseline, merged_mtf",0.2073818973565348 -Dyslexia_1_ready_data_fixations,Dyslexia_label,True,clf,2,"all_features, complex_features, distance_features, extended_features, simple_features",0.5165323701028064,timeseries,0.6760443307757886 -Dyslexia_1_ready_data_fixations,meta_Age_label,True,clf,4,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,"2d_heatmap, timeseries",0.4065323565323565 -Dyslexia_1_ready_data_fixations,meta_Sex_label,True,clf,2,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,"2d_heatmap, merged_baseline, merged_gaf, merged_heatmap",0.53125 -Dyslexia_2_ready_data_fixations,Dyslexia_label,True,clf,2,"all_features, extended_features, simple_features",0.7769746504923026,"merged_gaf, merged_heatmap",0.6669090350192712 -Dyslexia_2_ready_data_fixations,meta_Age_label,True,clf,6,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,"merged_baseline, merged_mtf, timeseries",0.2059849132498036 -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,True,clf,2,"distance_features, extended_features, simple_features",0.8095238095238095,"2d_baseline, 2d_mtf, merged_baseline",0.7379466817923993 -Emotions_ready_data_gazes_0.02,Anger_label,True,regr,-,complex_features,0.665082402076018,timeseries,-0.0282701253890991 -Emotions_ready_data_gazes_0.02,Disgust_label,True,regr,-,distance_features,0.4752206264045712,timeseries,-0.0028944015502929 -Emotions_ready_data_gazes_0.02,Sadness_label,True,regr,-,complex_features,0.6321990393859618,"2d_baseline, timeseries",-0.0216678380966186 -Emotions_ready_data_gazes_0.02,Tenderness_label,True,regr,-,"distance_features, simple_features",0.2582316848793896,"merged_gaf, timeseries",-0.0144436359405517 -Filtered,group_category_label,True,clf,6,"all_features, complex_features",0.6407089942380837,"2d_heatmap, merged_baseline, merged_heatmap",0.247143592887139 -Filtered,meta_delay_label,True,clf,2,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,timeseries,0.892100564590069 -Filtered,meta_spatial_filter_label,True,clf,3,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,"2d_baseline, 2d_heatmap, 2d_mtf, merged_baseline, merged_gaf, timeseries",0.3865059961632225 -Gap,gap_label,True,clf,4,extended_features,0.3711733305069917,"2d_baseline, 2d_gaf, 2d_heatmap, merged_baseline, merged_gaf, merged_heatmap",0.2606030540334146 -Gap,group_category_label,True,clf,2,"all_features, complex_features, extended_features, simple_features",0.6991442324835087,"2d_heatmap, merged_heatmap",0.6981446737544299 -Head_fixed,meta_condition_label,False,clf,4,,,"2d_baseline, merged_baseline, merged_gaf, merged_mtf",0.2718407636827803 -Head_fixed,meta_guided_viewing_label,False,clf,2,,,"2d_baseline, 2d_gaf, 2d_heatmap, 2d_mtf, merged_baseline, merged_gaf, merged_heatmap, merged_mtf, timeseries",0.5244994241985215 -Memory_1,group_category_label,True,clf,4,"all_features, complex_features",0.4028609668842849,"2d_baseline, 2d_gaf, 2d_mtf, merged_baseline, merged_gaf, merged_heatmap",0.3261684133163084 -Memory_1,group_iteration_label,True,clf,5,"all_features, distance_features",0.3953207022103288,"2d_baseline, merged_baseline, merged_heatmap",0.2325439369688136 -Memory_2,condition_label,True,clf,3,"all_features, complex_features",0.538817472210635,"2d_baseline, merged_baseline",0.7075655580487732 -Memory_2,group_iteration_label,True,clf,6,all_features,0.3614251054613336,"2d_baseline, 2d_heatmap, merged_baseline, merged_heatmap",0.2516932656078635 -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,True,clf,4,"all_features, simple_features",0.7672748223545228,"2d_baseline, 2d_gaf, 2d_heatmap",0.317885623148781 -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,True,clf,3,"all_features, complex_features, distance_features, extended_features, simple_features",1.0,"2d_heatmap, merged_baseline",0.451369328570821 -Patch,scr_label,False,clf,5,"all_features, complex_features, extended_features, simple_features",0.2467581510685309,merged_baseline,0.2717379932411822 -Surgical_skills_1_fixations,Performance_label,True,regr,-,extended_features,0.5652311696602275,merged_mtf,0.0482291579246521 -Surgical_skills_2_fixations,Performance_label,True,regr,-,"complex_features, distance_features, simple_features",1.0,2d_baseline,-0.1068453788757324 -Visual_search_ready_data_saccades,correct_or_not_label,True,clf,2,"distance_features, extended_features",1.0,, -Webtask,condition_label,True,clf,4,"all_features, extended_features, simple_features",0.966613247863248,timeseries,0.6931612426035503 -Webtask,familiarity_label,False,clf,6,"all_features, complex_features, distance_features, extended_features, simple_features",0.1738468223565859,"2d_baseline, 2d_heatmap, 2d_mtf, merged_baseline, merged_heatmap, merged_mtf, timeseries",0.2621010638297872 -Webtask,relevance_label,True,clf,6,complex_features,0.3547298436368036,"2d_heatmap, merged_baseline, merged_gaf, merged_heatmap",0.1826381101891306 -Webtask,search_result_label,True,clf,6,"complex_features, distance_features, extended_features",0.361210729513668,"2d_baseline, 2d_gaf, 2d_mtf, merged_gaf, merged_heatmap, merged_mtf",0.1793650938446219 -Webtask_school,condition_label,True,clf,4,"all_features, extended_features, simple_features",0.9823504983388704,"2d_mtf, merged_gaf",0.6753716013455402 -Webtask_school,familiarity_label,False,clf,5,extended_features,0.2153482880755607,"2d_baseline, 2d_gaf, 2d_heatmap, merged_baseline, merged_gaf, merged_heatmap, merged_mtf, timeseries",0.2080496557074968 -Webtask_school,relevance_label,True,clf,6,extended_features,0.3505704654071149,"2d_heatmap, merged_heatmap",0.1862257946962301 -Webtask_school,search_result_label,True,clf,6,all_features,0.4202025980684518,merged_heatmap,0.1958801968174377 diff --git a/experiments/collection_experiments/results/dl_training_results_all_representations.csv b/experiments/collection_experiments/results/dl_training_results_all_representations.csv deleted file mode 100644 index 8f42659..0000000 --- a/experiments/collection_experiments/results/dl_training_results_all_representations.csv +++ /dev/null @@ -1,703 +0,0 @@ -dataset,label,dataset_type,task_type,n_classes,train_size,val_size,test_size,rep_type,cnn_architecture,train_accuracy,train_precision,train_recall,train_f1,train_n_classes,val_accuracy,val_precision,val_recall,val_f1,val_n_classes,test_accuracy,test_precision,test_recall,test_f1,test_n_classes,error,train_r2,train_mse,train_rmse,train_mae,val_r2,val_mse,val_rmse,val_mae,test_r2,test_mse,test_rmse,test_mae -ASD_ready_data_fixations,ASD_label,2d,classification,2.0,4555.0,1528.0,1515.0,gaf_fixed,large_resnet,0.8410537870472009,0.8428686898020425,0.8414768012056371,0.8409415462521699,2.0,0.5615183246073299,0.5618941396783432,0.5616078342687582,0.5610483114406307,2.0,0.5610561056105611,0.561655204499979,0.5614424209887819,0.5608081156827435,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,2d,classification,2.0,4555.0,1528.0,1515.0,mtf_fixed,large_resnet,0.6821075740944017,0.6825201438475581,0.6817477340317883,0.6816268385653774,2.0,0.5575916230366492,0.557637916357745,0.5575371942736922,0.557372468962491,2.0,0.5656765676567657,0.5655691172296338,0.5652273947388604,0.5648756001745963,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,2d,classification,2.0,4555.0,1528.0,1515.0,heatmap_fixed,large_resnet,0.6713501646542261,0.6725939901932088,0.6707717094871415,0.6702592306800672,2.0,0.550392670157068,0.5504573367114699,0.5503261994339481,0.5500687282130279,2.0,0.5683168316831683,0.5682893163748662,0.5682986007013924,0.5682850440250695,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,2d,classification,2.0,4555.0,1528.0,1515.0,heatmap_zoomed,large_resnet,0.506476399560922,0.512166734918206,0.5008707549730983,0.3525437326559084,2.0,0.5019633507853403,0.5108316699933466,0.5006972855547104,0.3488234045639168,2.0,0.5016501650165016,0.4455699504390922,0.4956354712087513,0.3477011215668517,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,2d,classification,2.0,4555.0,1528.0,1515.0,baseline_fixed,large_resnet,0.8748627881448957,0.8752935431692708,0.8750706668949603,0.8748553993868934,2.0,0.525523560209424,0.5258686091021421,0.5256453746153793,0.5245540494664644,2.0,0.5471947194719472,0.5486381219767476,0.5479514254439479,0.5458966453791383,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,2d,classification,2.0,4555.0,1528.0,1515.0,baseline_zoomed,large_resnet,0.8461031833150384,0.8495039425670501,0.8466776147329582,0.8458624830291146,2.0,0.5418848167539267,0.5420998349834983,0.5419604860097449,0.5415384351612931,2.0,0.5485148514851486,0.5491857105332283,0.5489571495304297,0.5481508483563097,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,timeseries,classification,2.0,4555.0,1528.0,1515.0,,,0.6990120746432492,0.7009393295080535,0.6995308219495039,0.6986117930052644,2.0,0.631544502617801,0.6322210654023869,0.6316327789313543,0.6311652074294831,2.0,0.6567656765676567,0.6589195714607501,0.6574071491818252,0.6561326931470973,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,merged,classification,2.0,4555.0,1528.0,1515.0,gaf_fixed,large_resnet,0.9130625686059276,0.9179724253683804,0.9137099367873538,0.9128861199652274,2.0,0.5772251308900523,0.5790523376650641,0.5774141156637405,0.5751024484314198,2.0,0.5801980198019802,0.5829591018444267,0.581142063320528,0.578248598451556,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,merged,classification,2.0,4555.0,1528.0,1515.0,mtf_fixed,large_resnet,0.7040614709110867,0.7107495512292297,0.7050484314070289,0.70231390874064,2.0,0.5948952879581152,0.5977254603737914,0.5951100923089574,0.5922531583360457,2.0,0.6125412541254125,0.6185368536853686,0.6138132804384051,0.6091071843787925,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,merged,classification,2.0,4555.0,1528.0,1515.0,heatmap_fixed,large_resnet,0.779582875960483,0.7836326414064929,0.7788632328532998,0.7784689330825255,2.0,0.5955497382198953,0.5966816679167708,0.5953996285712329,0.5941417055345719,2.0,0.6066006600660065,0.6066899730971864,0.6061744835423799,0.6059191989022614,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,merged,classification,2.0,4555.0,1528.0,1515.0,heatmap_zoomed,large_resnet,0.6366630076838639,0.637415433047813,0.6361105133829409,0.6355652080379879,2.0,0.6236910994764397,0.6246459462028324,0.6235703076279956,0.6228302328226989,2.0,0.6488448844884488,0.6491862995553033,0.6484087945952353,0.6481972937581841,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,merged,classification,2.0,4555.0,1528.0,1515.0,baseline_fixed,large_resnet,0.9628979143798024,0.963092307941508,0.9630487337417938,0.9628977999332078,2.0,0.5589005235602095,0.5591721672167217,0.558976309423463,0.5585670075695879,2.0,0.5643564356435643,0.5652297399646554,0.5648509018399348,0.5639002383087406,2.0,,,,,,,,,,,,, -ASD_ready_data_fixations,ASD_label,merged,classification,2.0,4555.0,1528.0,1515.0,baseline_zoomed,large_resnet,0.9220636663007684,0.9237820591816504,0.9217082145589616,0.9219306761881768,2.0,0.5759162303664922,0.5811335746446544,0.5755741041508193,0.5683728716030654,2.0,0.5610561056105611,0.5622682144438236,0.5598196668735054,0.5561050834388941,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,2d,classification,2.0,360.0,120.0,120.0,gaf_fixed,large_resnet,0.825,0.8287379060925474,0.8376190476190476,0.8242827591015798,2.0,0.4583333333333333,0.449579831932773,0.4583333333333333,0.4337568058076225,2.0,0.6,0.6098901098901099,0.6,0.5907928388746804,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,2d,classification,2.0,360.0,120.0,120.0,mtf_fixed,large_resnet,0.6472222222222223,0.7919402985074626,0.5776190476190476,0.5206290956749673,2.0,0.5,0.25,0.5,0.3333333333333333,2.0,0.5166666666666667,0.6293103448275862,0.5166666666666666,0.3821022727272727,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,2d,classification,2.0,360.0,120.0,120.0,heatmap_fixed,large_resnet,0.8555555555555555,0.851088056680162,0.8523809523809525,0.8517063278304129,2.0,0.6,0.6669758812615956,0.6,0.5554183389935166,2.0,0.45,0.2368421052631578,0.45,0.3103448275862069,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,2d,classification,2.0,360.0,120.0,120.0,heatmap_zoomed,large_resnet,0.7194444444444444,0.7317775571002979,0.6852380952380952,0.687561761546724,2.0,0.5,0.5,0.5,0.4998610725201445,2.0,0.5666666666666667,0.5770218228498074,0.5666666666666667,0.5515952860017247,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,2d,classification,2.0,360.0,120.0,120.0,baseline_fixed,large_resnet,0.9,0.9012987012987012,0.8923809523809524,0.8960705693664796,2.0,0.5333333333333333,0.6754385964912282,0.5333333333333333,0.4148380355276906,2.0,0.4833333333333333,0.2457627118644068,0.4833333333333333,0.3258426966292135,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,2d,classification,2.0,360.0,120.0,120.0,baseline_zoomed,large_resnet,0.9444444444444444,0.9436511983681796,0.941904761904762,0.9427462705556792,2.0,0.4583333333333333,0.4327655759748992,0.4583333333333333,0.4014273655130074,2.0,0.5416666666666666,0.5543675244653861,0.5416666666666666,0.513238439412936,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,timeseries,classification,2.0,360.0,120.0,120.0,,,0.7805555555555556,0.7755244755244756,0.7814285714285714,0.7770723104056437,2.0,0.5,0.5,0.5,0.3475897064153678,2.0,0.6833333333333333,0.7014652014652014,0.6833333333333333,0.6760443307757886,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,merged,classification,2.0,360.0,120.0,120.0,gaf_fixed,large_resnet,0.8444444444444444,0.8603730921424533,0.8238095238095238,0.8330628332946906,2.0,0.5,0.5,0.5,0.4047619047619047,2.0,0.5833333333333334,0.6391465677179963,0.5833333333333334,0.5368941031182464,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,merged,classification,2.0,360.0,120.0,120.0,mtf_fixed,large_resnet,0.8083333333333333,0.8146008240651816,0.8223809523809524,0.8077979557254389,2.0,0.5166666666666667,0.53,0.5166666666666666,0.45625,2.0,0.6,0.6041666666666667,0.6,0.595959595959596,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,merged,classification,2.0,360.0,120.0,120.0,heatmap_fixed,large_resnet,0.8611111111111112,0.8575851393188854,0.8666666666666667,0.859375,2.0,0.6,0.6669758812615956,0.6,0.5554183389935166,2.0,0.4083333333333333,0.2627606038820992,0.4083333333333334,0.3011237798375851,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,merged,classification,2.0,360.0,120.0,120.0,heatmap_zoomed,large_resnet,0.7611111111111111,0.8107142857142857,0.720952380952381,0.7252883762200533,2.0,0.5,0.5,0.5,0.4791666666666667,2.0,0.5916666666666667,0.6719645648775404,0.5916666666666667,0.5376995046780407,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,merged,classification,2.0,360.0,120.0,120.0,baseline_fixed,large_resnet,0.9444444444444444,0.9405176704828272,0.9495238095238094,0.943522324370117,2.0,0.525,0.5900900900900901,0.525,0.4202898550724637,2.0,0.4833333333333333,0.4639423076923077,0.4833333333333333,0.4030808729139923,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,Dyslexia_label,merged,classification,2.0,360.0,120.0,120.0,baseline_zoomed,large_resnet,0.8888888888888888,0.90625,0.8714285714285714,0.8814814814814815,2.0,0.4916666666666666,0.4865531151949798,0.4916666666666667,0.4382626045583608,2.0,0.5,0.5,0.5,0.4375,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,2d,classification,4.0,360.0,120.0,120.0,gaf_fixed,large_resnet,0.8972222222222223,0.9091400568848228,0.8861111111111111,0.8948235445581968,4.0,0.25,0.2048748353096179,0.25,0.1981276176398127,4.0,0.3166666666666666,0.3149073149073149,0.3166666666666666,0.290880412410795,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,2d,classification,4.0,360.0,120.0,120.0,mtf_fixed,large_resnet,0.2638888888888889,0.2436003303055326,0.2625,0.126421727237539,4.0,0.2166666666666666,0.09102402022756,0.2166666666666666,0.1009261009261009,4.0,0.25,0.3114406779661017,0.25,0.1141020052310374,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,2d,classification,4.0,360.0,120.0,120.0,heatmap_fixed,large_resnet,0.7361111111111112,0.8005971399041061,0.7097222222222223,0.7189368871351768,4.0,0.125,0.1160714285714285,0.125,0.1118263196751568,4.0,0.175,0.1478723404255319,0.175,0.157388926862611,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,2d,classification,4.0,360.0,120.0,120.0,heatmap_zoomed,large_resnet,0.6083333333333333,0.6178575310212939,0.5951388888888889,0.5965453276154382,4.0,0.2416666666666666,0.1957259953161592,0.2416666666666666,0.1871878121878122,4.0,0.4333333333333333,0.4028907496012759,0.4333333333333333,0.3833800186741363,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,2d,classification,4.0,360.0,120.0,120.0,baseline_fixed,large_resnet,0.6,0.7557452038922555,0.5756944444444444,0.5790103336962846,4.0,0.2583333333333333,0.3086309523809524,0.2583333333333333,0.1843358395989975,4.0,0.45,0.7435815147625161,0.45,0.3507274244982984,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,2d,classification,4.0,360.0,120.0,120.0,baseline_zoomed,large_resnet,0.95,0.9516067513923452,0.9534722222222222,0.9513411970332306,4.0,0.2416666666666666,0.2212152837674659,0.2416666666666666,0.2213711732982748,4.0,0.375,0.3789408866995074,0.375,0.3706073446327684,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,timeseries,classification,4.0,360.0,120.0,120.0,,,0.5305555555555556,0.4106756907308377,0.5,0.4256519072263753,4.0,0.4,0.2905789909015716,0.4,0.3346430268472321,4.0,0.4666666666666667,0.3895930913348946,0.4666666666666667,0.4065323565323565,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,merged,classification,4.0,360.0,120.0,120.0,gaf_fixed,large_resnet,0.5694444444444444,0.6405657439601405,0.5743055555555556,0.5792917396929279,4.0,0.1666666666666666,0.117251461988304,0.1666666666666666,0.1374509803921568,4.0,0.3666666666666666,0.4507661290322581,0.3666666666666667,0.36183690451425,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,merged,classification,4.0,360.0,120.0,120.0,mtf_fixed,large_resnet,0.9138888888888888,0.9150891692040016,0.9069444444444446,0.9097385877791369,4.0,0.4416666666666666,0.5032051282051282,0.4416666666666666,0.4557461648627061,4.0,0.2916666666666667,0.4040754555460438,0.2916666666666667,0.2853523388349259,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,merged,classification,4.0,360.0,120.0,120.0,heatmap_fixed,large_resnet,0.775,0.7829050229081647,0.7597222222222223,0.7674762337247358,4.0,0.15,0.133780487804878,0.15,0.1404289372599231,4.0,0.2083333333333333,0.1795138888888889,0.2083333333333333,0.1888998682476943,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,merged,classification,4.0,360.0,120.0,120.0,heatmap_zoomed,large_resnet,0.6166666666666667,0.6332665264502952,0.6222222222222222,0.6122084123874605,4.0,0.275,0.2208228317272053,0.275,0.2080512132845937,4.0,0.3583333333333333,0.3152998776009792,0.3583333333333333,0.3265858672236018,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,merged,classification,4.0,360.0,120.0,120.0,baseline_fixed,large_resnet,0.6361111111111111,0.7492182954445565,0.6027777777777777,0.6231861331924293,4.0,0.2583333333333333,0.2260416666666666,0.2583333333333333,0.1755050505050505,4.0,0.3833333333333333,0.3907552973342447,0.3833333333333333,0.3252453419598793,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Age_label,merged,classification,4.0,360.0,120.0,120.0,baseline_zoomed,large_resnet,0.975,0.978373015873016,0.9736111111111112,0.9755595271469956,4.0,0.2583333333333333,0.2785427216461699,0.2583333333333333,0.2271638514779438,4.0,0.4083333333333333,0.405629698144233,0.4083333333333333,0.3771963641659598,4.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,2d,classification,2.0,360.0,120.0,120.0,gaf_fixed,large_resnet,0.6527777777777778,0.6562548298352446,0.6604761904761904,0.6513546807571027,2.0,0.4583333333333333,0.4541539316476799,0.4388888888888889,0.4195996725946871,2.0,0.45,0.4422336328626444,0.4499999999999999,0.4308709399252658,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,2d,classification,2.0,360.0,120.0,120.0,mtf_fixed,large_resnet,0.4222222222222222,0.5842696629213483,0.5038095238095238,0.3084850947508404,2.0,0.25,0.3728813559322034,0.4888888888888889,0.2068155111633372,2.0,0.4916666666666666,0.2478991596638655,0.4916666666666666,0.329608938547486,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,2d,classification,2.0,360.0,120.0,120.0,heatmap_fixed,large_resnet,0.7694444444444445,0.7701451065143563,0.75,0.755144184674386,2.0,0.6083333333333333,0.6041956098916366,0.6388888888888888,0.5803259171069276,2.0,0.5333333333333333,0.5352526439482961,0.5333333333333333,0.5268938327231766,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,2d,classification,2.0,360.0,120.0,120.0,heatmap_zoomed,large_resnet,0.7944444444444444,0.7885699962401302,0.7923809523809524,0.7900643046274114,2.0,0.65,0.5969447708578144,0.6222222222222222,0.5956354300385109,2.0,0.3833333333333333,0.3812217194570135,0.3833333333333333,0.3805803571428571,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,2d,classification,2.0,360.0,120.0,120.0,baseline_fixed,large_resnet,0.7277777777777777,0.7467105263157895,0.7476190476190476,0.7277693755980124,2.0,0.4416666666666666,0.5679205851619644,0.5722222222222222,0.4413174900979779,2.0,0.35,0.3493303571428571,0.35,0.3492769744160178,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,2d,classification,2.0,360.0,120.0,120.0,baseline_zoomed,large_resnet,0.8916666666666667,0.8872504749151382,0.8947619047619048,0.8897881325996342,2.0,0.5166666666666667,0.4915824915824915,0.4888888888888889,0.4688644688644688,2.0,0.4166666666666667,0.4158249158249158,0.4166666666666666,0.4152046783625731,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,timeseries,classification,2.0,360.0,120.0,120.0,,,0.5916666666666667,0.7941176470588236,0.51,0.3899782135076252,2.0,0.75,0.375,0.5,0.4285714285714285,2.0,0.5,0.25,0.5,0.3333333333333333,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,merged,classification,2.0,360.0,120.0,120.0,gaf_fixed,large_resnet,0.8111111111111111,0.8064836666252639,0.8133333333333334,0.8082466474495551,2.0,0.5,0.4571428571428572,0.4444444444444444,0.4375,2.0,0.525,0.5262314194112503,0.525,0.5193591455273698,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,merged,classification,2.0,360.0,120.0,120.0,mtf_fixed,large_resnet,0.725,0.7222880853586248,0.7023809523809523,0.7062290325505486,2.0,0.6333333333333333,0.4739583333333333,0.4777777777777777,0.4743130227001194,2.0,0.45,0.421875,0.45,0.3956043956043956,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,merged,classification,2.0,360.0,120.0,120.0,heatmap_fixed,large_resnet,0.8416666666666667,0.8383458646616542,0.8471428571428572,0.8397863818424566,2.0,0.4583333333333333,0.479020979020979,0.4722222222222222,0.4337568058076225,2.0,0.5333333333333333,0.5339366515837104,0.5333333333333333,0.53125,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,merged,classification,2.0,360.0,120.0,120.0,heatmap_zoomed,large_resnet,0.7777777777777778,0.7799972447995591,0.7580952380952382,0.7636554621848739,2.0,0.7416666666666667,0.6534672224327397,0.65,0.6516527764771982,2.0,0.425,0.4232736572890025,0.425,0.4217473287240729,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,merged,classification,2.0,360.0,120.0,120.0,baseline_fixed,large_resnet,0.8666666666666667,0.8624746963562753,0.8638095238095238,0.8631135333819195,2.0,0.7166666666666667,0.6936026936026936,0.7555555555555555,0.6886446886446886,2.0,0.525,0.5258695027306697,0.525,0.5209748581833462,2.0,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations,meta_Sex_label,merged,classification,2.0,360.0,120.0,120.0,baseline_zoomed,large_resnet,0.9472222222222222,0.9585152838427948,0.9366666666666666,0.9445520797023322,2.0,0.6333333333333333,0.5,0.5,0.4998105342932929,2.0,0.3833333333333333,0.374401913875598,0.3833333333333333,0.3721719457013575,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,2d,classification,2.0,2546.0,911.0,841.0,gaf_fixed,large_resnet,0.6802827965435978,0.6626570306058107,0.5550759309340545,0.5236325989836608,2.0,0.6454445664105378,0.510735171261487,0.5027719653989688,0.4444041637636254,2.0,0.643281807372176,0.4995748299319728,0.4998792577529232,0.4446058748943364,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,2d,classification,2.0,2546.0,911.0,841.0,mtf_fixed,large_resnet,0.8955223880597015,0.918198143155472,0.8541059912627418,0.8756404945322921,2.0,0.6366630076838639,0.5587662337662338,0.5409970446750221,0.5337501952107271,2.0,0.5992865636147443,0.501937984496124,0.5014171326893746,0.4909319840427347,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,2d,classification,2.0,2546.0,911.0,841.0,heatmap_fixed,large_resnet,0.7458758837391988,0.7263539729372614,0.6806480133139172,0.6909908424403376,2.0,0.6399560922063666,0.5726490447957839,0.5570949371184504,0.555551589143136,2.0,0.6349583828775267,0.5692853369557014,0.5583439247585155,0.5584894174058322,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,2d,classification,2.0,2546.0,911.0,841.0,heatmap_zoomed,large_resnet,0.6818538884524745,0.7780066535143708,0.5393436654878303,0.4792761892064685,2.0,0.6487376509330406,0.438650607128868,0.4932426602239144,0.4079129092533918,2.0,0.6539833531510107,0.4569123020706455,0.4955039400101678,0.4112528597650602,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,2d,classification,2.0,2546.0,911.0,841.0,baseline_fixed,large_resnet,0.6916732128829537,0.6649623289601116,0.5861374037861452,0.5771471901670817,2.0,0.6849615806805708,0.6402757822477649,0.5758191858834696,0.5666542359678127,2.0,0.6789536266349584,0.624695910973085,0.5612385612608033,0.5460924006908463,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,2d,classification,2.0,2546.0,911.0,841.0,baseline_zoomed,large_resnet,0.795758051846033,0.8093523904099873,0.7268176617432911,0.7445410684694461,2.0,0.6245883644346871,0.545160703897615,0.5334927842612767,0.5274724274742475,2.0,0.6206896551724138,0.5290978340675477,0.5201480681240468,0.5097966127090106,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,timeseries,classification,2.0,2546.0,911.0,841.0,,,0.7144540455616654,0.7217772674915743,0.7454623465779071,0.7091756466016714,2.0,0.7156970362239298,0.7117165345216737,0.7367441810298336,0.706648216321593,2.0,0.6218787158145065,0.6260992586724011,0.6416052364006101,0.612767867485231,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,merged,classification,2.0,2546.0,911.0,841.0,gaf_fixed,large_resnet,0.7796543597800472,0.791518631724095,0.7050005200748908,0.7207915856637257,2.0,0.6992316136114161,0.6575311559948431,0.6186147723105464,0.6233037546782567,2.0,0.6956004756242569,0.6499846602239607,0.6242691916624301,0.6296021030320548,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,merged,classification,2.0,2546.0,911.0,841.0,mtf_fixed,large_resnet,0.9277297721916732,0.9278129545649012,0.9105731225296444,0.9182744375593144,2.0,0.7025246981339188,0.6626254131429445,0.6491279634143711,0.6537224545098792,2.0,0.6123662306777645,0.5604511659344373,0.5591096847991865,0.5596434307741728,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,merged,classification,2.0,2546.0,911.0,841.0,heatmap_fixed,large_resnet,0.8315003927729773,0.8133468010889096,0.8359423757021012,0.8204730311121631,2.0,0.725576289791438,0.7075875772740654,0.7281775136441098,0.710330179080179,2.0,0.6813317479191439,0.668529277739804,0.688021098118963,0.6669090350192712,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,merged,classification,2.0,2546.0,911.0,841.0,heatmap_zoomed,large_resnet,0.8291437549096622,0.8120768326793355,0.8054789889744123,0.8085512760741732,2.0,0.6959385290889133,0.6563419741906271,0.648966175550618,0.6519087654925546,2.0,0.6230677764565993,0.5816771107567948,0.5839889425521098,0.582553156174791,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,merged,classification,2.0,2546.0,911.0,841.0,baseline_fixed,large_resnet,0.8562450903377847,0.8524193548387097,0.8905502392344498,0.8519836098592453,2.0,0.6278814489571899,0.6863579539535368,0.692942813383092,0.6276230036956876,2.0,0.6123662306777645,0.6714844898559247,0.677900991357397,0.6120760889251109,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,Dyslexia_label,merged,classification,2.0,2546.0,911.0,841.0,baseline_zoomed,large_resnet,0.8075412411626081,0.8194295681409084,0.8526497815685459,0.8045686392460586,2.0,0.6169045005488474,0.641943470187745,0.6558340703669349,0.6134597732591716,2.0,0.5434007134363853,0.5912659084591305,0.5959741992882562,0.5426966037564855,2.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,2d,classification,9.0,2516.0,899.0,883.0,gaf_fixed,large_resnet,0.71939586645469,0.8257092309333753,0.7607346660043339,0.7874462496670225,8.0,0.200222469410456,0.1485446388697049,0.1615165581428831,0.1396102205545945,7.0,0.2457531143827859,0.1821395351416681,0.1873463544793721,0.1765107210977549,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,2d,classification,9.0,2516.0,899.0,883.0,mtf_fixed,large_resnet,1.0,1.0,1.0,1.0,8.0,0.1835372636262514,0.1450496649466184,0.1441923698931052,0.135791389242381,7.0,0.2276330690826727,0.1683263048823895,0.1854115603107894,0.1665843567158495,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,2d,classification,9.0,2516.0,899.0,883.0,heatmap_fixed,large_resnet,0.6224165341812401,0.7443998694254352,0.7006828072319338,0.717562749012844,8.0,0.2169076751946607,0.163281377354214,0.1685233211040045,0.1564215957308275,7.0,0.2434881087202718,0.1618171189114667,0.1511729051548251,0.1533115953971323,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,2d,classification,9.0,2516.0,899.0,883.0,heatmap_zoomed,large_resnet,0.595389507154213,0.7178047716790394,0.4917023569113657,0.5467970930996546,8.0,0.1479421579532814,0.1379541952747709,0.1407616356497071,0.1032433862404914,7.0,0.2480181200453001,0.1683958213778475,0.175239047670856,0.1422159036466433,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,2d,classification,9.0,2516.0,899.0,883.0,baseline_fixed,large_resnet,0.8294912559618441,0.8890905747234141,0.8719965168179091,0.8761418921542965,8.0,0.2280311457174638,0.1804786962090581,0.1878052937675624,0.1688907598219425,7.0,0.2344280860702151,0.2019322980883217,0.1762621169383584,0.1817561966160635,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,2d,classification,9.0,2516.0,899.0,883.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,8.0,0.203559510567297,0.127090360064498,0.1355689826533541,0.1220224650618912,7.0,0.2197055492638731,0.1596933583575651,0.1676943117439341,0.1576574092426087,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,timeseries,classification,9.0,2516.0,899.0,883.0,,,0.3775834658187599,0.2698470632035333,0.21889294089286,0.2032122236323305,8.0,0.1890989988876529,0.127569644965287,0.1691801871480719,0.1181964048077236,7.0,0.304643261608154,0.2249644095863872,0.2103236993406445,0.1915498995579579,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,merged,classification,9.0,2516.0,899.0,883.0,gaf_fixed,large_resnet,0.6045310015898251,0.7415324738582114,0.575040084917321,0.6321609992436792,8.0,0.1935483870967742,0.1701057153203105,0.1640439495757002,0.1498770848534146,7.0,0.2446206115515288,0.1859601698405726,0.1832805257823846,0.1753934645330903,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,merged,classification,9.0,2516.0,899.0,883.0,mtf_fixed,large_resnet,0.9833068362480128,0.9904695801176642,0.987459025858186,0.9888708324379574,8.0,0.1991101223581757,0.1504601512424559,0.1525634610925704,0.1370545512445856,7.0,0.2502831257078142,0.2076064629505526,0.1864377848548004,0.1895856832869751,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,merged,classification,9.0,2516.0,899.0,883.0,heatmap_fixed,large_resnet,0.809220985691574,0.8696297883877173,0.8558599526162332,0.8615935731494782,8.0,0.2402669632925472,0.1480887638576257,0.1595448757668442,0.1461935877845283,7.0,0.2298980747451868,0.1842957294855428,0.1667062530718461,0.1722004412862575,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,merged,classification,9.0,2516.0,899.0,883.0,heatmap_zoomed,large_resnet,0.8135930047694754,0.8755155453958442,0.8730146768248992,0.8728974550592841,8.0,0.1590656284760845,0.1221086131494821,0.1274742208929837,0.1145369853315681,7.0,0.2140430351075877,0.1731863773626571,0.1700565886121398,0.161323725760056,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,merged,classification,9.0,2516.0,899.0,883.0,baseline_fixed,large_resnet,0.7368839427662957,0.817818187737343,0.808639359566822,0.8094830288326661,8.0,0.2280311457174638,0.1846060521973208,0.1971870032619913,0.1733822767106028,7.0,0.2389580973952434,0.2247409463087731,0.1995756350744023,0.2059849132498036,6.0,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations,meta_Age_label,merged,classification,9.0,2516.0,899.0,883.0,baseline_zoomed,large_resnet,0.992845786963434,0.996018566337872,0.9951035008206168,0.995547608051054,8.0,0.2024471635150166,0.156528043762864,0.1639890840056952,0.1428246227123666,7.0,0.2434881087202718,0.1910426567344485,0.175608140017407,0.1778378910165689,6.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,2d,classification,2.0,126.0,42.0,42.0,gaf_fixed,large_resnet,0.8412698412698413,0.8795180722891567,0.8412698412698413,0.837167226673559,2.0,0.5952380952380952,0.6166666666666667,0.5952380952380952,0.5757575757575757,2.0,0.5476190476190477,0.5583333333333333,0.5476190476190476,0.5258467023172906,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,2d,classification,2.0,126.0,42.0,42.0,mtf_fixed,large_resnet,0.7698412698412699,0.8423913043478262,0.7698412698412698,0.7569670768207515,2.0,0.6666666666666666,0.7474747474747474,0.6666666666666666,0.6370370370370371,2.0,0.7142857142857143,0.7333333333333334,0.7142857142857142,0.7083333333333333,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,2d,classification,2.0,126.0,42.0,42.0,heatmap_fixed,large_resnet,0.5555555555555556,0.5718475073313782,0.5555555555555556,0.5288461538461539,2.0,0.4523809523809524,0.4464285714285714,0.4523809523809524,0.436734693877551,2.0,0.5238095238095238,0.5278514588859416,0.5238095238095238,0.5058823529411764,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,2d,classification,2.0,126.0,42.0,42.0,heatmap_zoomed,large_resnet,0.8333333333333334,0.8481578947368421,0.8333333333333333,0.8315400776723754,2.0,0.5714285714285714,0.5720823798627002,0.5714285714285714,0.5704545454545455,2.0,0.6666666666666666,0.6681922196796339,0.6666666666666667,0.6659090909090909,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,2d,classification,2.0,126.0,42.0,42.0,baseline_fixed,large_resnet,0.9206349206349206,0.92752880921895,0.9206349206349206,0.9203136858082468,2.0,0.7857142857142857,0.8028846153846154,0.7857142857142857,0.7826336975273145,2.0,0.7380952380952381,0.7386363636363636,0.7380952380952381,0.7379466817923993,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,2d,classification,2.0,126.0,42.0,42.0,baseline_zoomed,large_resnet,0.7777777777777778,0.8348010932280596,0.7777777777777777,0.7678947368421052,2.0,0.6666666666666666,0.6729411764705883,0.6666666666666666,0.6636155606407322,2.0,0.5476190476190477,0.5477272727272727,0.5476190476190477,0.5473624503686898,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,timeseries,classification,2.0,126.0,42.0,42.0,,,0.6428571428571429,0.6812659846547314,0.6428571428571428,0.6228799467908215,2.0,0.6190476190476191,0.7142857142857142,0.6190476190476191,0.5714285714285714,2.0,0.5476190476190477,0.565625,0.5476190476190477,0.5143031040779062,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,merged,classification,2.0,126.0,42.0,42.0,gaf_fixed,large_resnet,0.9523809523809524,0.9528373266078184,0.9523809523809524,0.9523689516129032,2.0,0.6190476190476191,0.620137299771167,0.6190476190476191,0.6181818181818182,2.0,0.4523809523809524,0.4522727272727272,0.4523809523809523,0.4520703346568349,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,merged,classification,2.0,126.0,42.0,42.0,mtf_fixed,large_resnet,0.8095238095238095,0.8175239079865598,0.8095238095238095,0.808316430020284,2.0,0.6666666666666666,0.6681922196796339,0.6666666666666667,0.6659090909090909,2.0,0.6904761904761905,0.7019230769230769,0.6904761904761905,0.6860264519838988,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,merged,classification,2.0,126.0,42.0,42.0,heatmap_fixed,large_resnet,0.9285714285714286,0.9339285714285714,0.9285714285714286,0.9283502874834144,2.0,0.5476190476190477,0.5486111111111112,0.5476190476190477,0.5452991452991452,2.0,0.6428571428571429,0.6431818181818182,0.6428571428571428,0.6426545660805445,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,merged,classification,2.0,126.0,42.0,42.0,heatmap_zoomed,large_resnet,0.7857142857142857,0.85,0.7857142857142857,0.7754010695187166,2.0,0.5714285714285714,0.606060606060606,0.5714285714285714,0.5333333333333333,2.0,0.6190476190476191,0.653958944281525,0.6190476190476191,0.5961538461538461,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,merged,classification,2.0,126.0,42.0,42.0,baseline_fixed,large_resnet,0.8650793650793651,0.8813157894736843,0.8650793650793651,0.8636276819252562,2.0,0.7380952380952381,0.7430555555555556,0.7380952380952381,0.7367521367521368,2.0,0.6904761904761905,0.6944444444444444,0.6904761904761905,0.6888888888888889,2.0,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations,Dyslexia_label,merged,classification,2.0,126.0,42.0,42.0,baseline_zoomed,large_resnet,0.7698412698412699,0.8423913043478262,0.7698412698412698,0.7569670768207515,2.0,0.7380952380952381,0.7916666666666666,0.7380952380952381,0.7254901960784313,2.0,0.7380952380952381,0.7524038461538461,0.7380952380952381,0.7343300747556067,2.0,,,,,,,,,,,,, -3D,condition_label,2d,classification,6.0,1079.0,360.0,360.0,gaf_fixed,large_resnet,0.9990732159406858,0.9990791896869246,0.9990689013035382,0.999071466074888,6.0,0.2083333333333333,0.2041979861350053,0.2083333333333333,0.1994276765507484,6.0,0.2194444444444444,0.2195957040035987,0.2194444444444444,0.2161023812788518,6.0,,,,,,,,,,,,, -3D,condition_label,2d,classification,6.0,1079.0,360.0,360.0,mtf_fixed,large_resnet,0.9990732159406858,0.9990791896869244,0.999074074074074,0.9990740669295288,6.0,0.2166666666666666,0.204703526734178,0.2166666666666666,0.2074509403437659,6.0,0.1722222222222222,0.1686828550698413,0.1722222222222222,0.1667465443504047,6.0,,,,,,,,,,,,, -3D,condition_label,2d,classification,6.0,1079.0,360.0,360.0,heatmap_fixed,large_resnet,0.7080630213160334,0.7393426453677496,0.7080333126422511,0.7077140087715078,6.0,0.2416666666666666,0.2446288454250408,0.2416666666666666,0.2367436951680118,6.0,0.2,0.2009042390250201,0.1999999999999999,0.1956583146531409,6.0,,,,,,,,,,,,, -3D,condition_label,2d,classification,6.0,1079.0,360.0,360.0,heatmap_zoomed,large_resnet,0.4726598702502317,0.5112358546229515,0.472692944340989,0.4711194031219581,6.0,0.1666666666666666,0.1685272627065669,0.1666666666666666,0.1647528662452698,6.0,0.175,0.1712698620841815,0.175,0.1678643812410052,6.0,,,,,,,,,,,,, -3D,condition_label,2d,classification,6.0,1079.0,360.0,360.0,baseline_fixed,large_resnet,0.5301204819277109,0.5665966369581553,0.5302969170287607,0.5333314579025203,6.0,0.3,0.3049858142891739,0.3,0.2987286591331182,6.0,0.2527777777777777,0.2711091086771667,0.2527777777777778,0.2523729577301006,6.0,,,,,,,,,,,,, -3D,condition_label,2d,classification,6.0,1079.0,360.0,360.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.2361111111111111,0.2346890394688163,0.236111111111111,0.2327363638079405,6.0,0.2555555555555555,0.2582875080761855,0.2555555555555556,0.2560548222843614,6.0,,,,,,,,,,,,, -3D,condition_label,timeseries,classification,6.0,1079.0,360.0,360.0,,,0.2826691380908248,0.3563590096515376,0.2827798468859921,0.2631565853992131,6.0,0.2305555555555555,0.1851236769461068,0.2305555555555555,0.1755492663239181,6.0,0.2777777777777778,0.3263499427393204,0.2777777777777777,0.2499450725838085,6.0,,,,,,,,,,,,, -3D,condition_label,merged,classification,6.0,1079.0,360.0,360.0,gaf_fixed,large_resnet,0.9564411492122336,0.9578459493773744,0.9564142354645148,0.9565669962296804,6.0,0.1944444444444444,0.1915059755639089,0.1944444444444444,0.1879629357602499,6.0,0.1972222222222222,0.1922381106292001,0.1972222222222222,0.1897565999759958,6.0,,,,,,,,,,,,, -3D,condition_label,merged,classification,6.0,1079.0,360.0,360.0,mtf_fixed,large_resnet,0.9972196478220574,0.9972273378350726,0.9972222222222222,0.9972222150776768,6.0,0.2194444444444444,0.2190895027759434,0.2194444444444444,0.2149734191001275,6.0,0.2277777777777777,0.226231554934947,0.2277777777777777,0.2252812123619627,6.0,,,,,,,,,,,,, -3D,condition_label,merged,classification,6.0,1079.0,360.0,360.0,heatmap_fixed,large_resnet,0.607970342910102,0.6232442291150913,0.6078522656734947,0.6038813235693234,6.0,0.2555555555555555,0.2736456550257236,0.2555555555555555,0.2574448874559671,6.0,0.2416666666666666,0.2311046144842985,0.2416666666666666,0.2315258435226123,6.0,,,,,,,,,,,,, -3D,condition_label,merged,classification,6.0,1079.0,360.0,360.0,heatmap_zoomed,large_resnet,0.3725671918443002,0.5271383009638825,0.3729774467204634,0.3713169580369669,6.0,0.2,0.200841182978998,0.2,0.1874523382927369,6.0,0.1805555555555555,0.1732141680417542,0.1805555555555555,0.1516510289132424,6.0,,,,,,,,,,,,, -3D,condition_label,merged,classification,6.0,1079.0,360.0,360.0,baseline_fixed,large_resnet,0.8035217794253939,0.8179670052165293,0.8036571487688805,0.8009368377098854,6.0,0.2833333333333333,0.289453027781251,0.2833333333333334,0.2811423168744173,6.0,0.2666666666666666,0.2647066507201317,0.2666666666666666,0.2575158645670096,6.0,,,,,,,,,,,,, -3D,condition_label,merged,classification,6.0,1079.0,360.0,360.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.2222222222222222,0.217820696358771,0.2222222222222222,0.2187113011772369,6.0,0.2583333333333333,0.2610338828238323,0.2583333333333333,0.2568704114533866,6.0,,,,,,,,,,,,, -AFC,mod_label,2d,classification,6.0,1532.0,512.0,510.0,gaf_fixed,large_resnet,0.9882506527415144,0.98865691083811,0.9882316873789616,0.9882553690061489,6.0,0.142578125,0.144597439378677,0.1432657165674156,0.1417926183321926,6.0,0.1627450980392157,0.1639344405893934,0.1633781182784299,0.1616840762779375,6.0,,,,,,,,,,,,, -AFC,mod_label,2d,classification,6.0,1532.0,512.0,510.0,mtf_fixed,large_resnet,0.9830287206266318,0.9831306731232692,0.9830483033526136,0.9830416483286136,6.0,0.16015625,0.159936146329565,0.1602997903743084,0.1590960231937755,6.0,0.1490196078431372,0.1518634112506478,0.1494207130567393,0.1488212162044879,6.0,,,,,,,,,,,,, -AFC,mod_label,2d,classification,6.0,1532.0,512.0,510.0,heatmap_fixed,large_resnet,0.4601827676240209,0.4795215351267974,0.4600276807634029,0.4566620126714262,6.0,0.1953125,0.1953622918911618,0.1951253881353427,0.1906636689338035,6.0,0.1450980392156863,0.1278386683864829,0.1449499143644001,0.1326880255540435,6.0,,,,,,,,,,,,, -AFC,mod_label,2d,classification,6.0,1532.0,512.0,510.0,heatmap_zoomed,large_resnet,0.358355091383812,0.4730047474753809,0.358629368373176,0.3581010654294114,6.0,0.154296875,0.1674911325158879,0.1555260011264589,0.1373231731653955,6.0,0.1647058823529411,0.1596900843084829,0.1672192342033533,0.1373854126360808,6.0,,,,,,,,,,,,, -AFC,mod_label,2d,classification,6.0,1532.0,512.0,510.0,baseline_fixed,large_resnet,0.3361618798955613,0.3699980430944629,0.3344635232228601,0.3310278692293656,6.0,0.162109375,0.172489863422962,0.161788568036502,0.1594986266393558,6.0,0.1705882352941176,0.1688168900648655,0.1698193014239617,0.1626038946715387,6.0,,,,,,,,,,,,, -AFC,mod_label,2d,classification,6.0,1532.0,512.0,510.0,baseline_zoomed,large_resnet,0.9928198433420364,0.9931077694235588,0.9927727452895608,0.9928496975638564,6.0,0.171875,0.1743597462611248,0.1716586192468556,0.172733723903109,6.0,0.1568627450980392,0.1582208727314908,0.1567931882593239,0.1571445312447495,6.0,,,,,,,,,,,,, -AFC,mod_label,timeseries,classification,6.0,1532.0,512.0,510.0,,,0.2225848563968668,0.3186681843473925,0.2179884999776593,0.170598040270314,6.0,0.16015625,0.1523873511881952,0.1621080049789662,0.0989659211425686,6.0,0.1764705882352941,0.1915988800471559,0.1736121025365571,0.1091140452159415,6.0,,,,,,,,,,,,, -AFC,mod_label,merged,classification,6.0,1532.0,512.0,510.0,gaf_fixed,large_resnet,0.9862924281984334,0.986804661055028,0.986284450836389,0.9864145606099528,6.0,0.142578125,0.1375494668327335,0.1419358921869618,0.1370180477756001,6.0,0.1725490196078431,0.1721175617058191,0.1719753867344526,0.1709200944780765,6.0,,,,,,,,,,,,, -AFC,mod_label,merged,classification,6.0,1532.0,512.0,510.0,mtf_fixed,large_resnet,0.9523498694516972,0.954408493390637,0.9522973877529446,0.952700430695092,6.0,0.171875,0.1757505194649082,0.1709275415897042,0.1696236793756009,6.0,0.1333333333333333,0.1310174695031737,0.1330522004147888,0.1309956421308496,6.0,,,,,,,,,,,,, -AFC,mod_label,merged,classification,6.0,1532.0,512.0,510.0,heatmap_fixed,large_resnet,0.4223237597911227,0.4404014929954467,0.4216645744936371,0.4157724761510127,6.0,0.162109375,0.1591641179420405,0.1618350041074122,0.1550376708835932,6.0,0.1568627450980392,0.1508776899544731,0.1570451281157262,0.1490052789288052,6.0,,,,,,,,,,,,, -AFC,mod_label,merged,classification,6.0,1532.0,512.0,510.0,heatmap_zoomed,large_resnet,0.5456919060052219,0.5844111851159911,0.5465650577297148,0.5502784920303244,6.0,0.171875,0.1698989949819679,0.1724975355276544,0.1677203669151733,6.0,0.1549019607843137,0.1609404210866183,0.1548190344262179,0.1516109976735627,6.0,,,,,,,,,,,,, -AFC,mod_label,merged,classification,6.0,1532.0,512.0,510.0,baseline_fixed,large_resnet,0.3772845953002611,0.4041896586424302,0.3774277780168851,0.3689141621194257,6.0,0.2109375,0.2143370155140473,0.2124752884395846,0.1987279639455562,6.0,0.1784313725490196,0.1893932965251669,0.1795314228859471,0.1663373692476575,6.0,,,,,,,,,,,,, -AFC,mod_label,merged,classification,6.0,1532.0,512.0,510.0,baseline_zoomed,large_resnet,0.987597911227154,0.9877251392627652,0.9876919708414168,0.9876369950651734,6.0,0.171875,0.1709387236087803,0.1710390093978012,0.1695979595119688,6.0,0.1509803921568627,0.150833856315292,0.150915861158032,0.1497864779591022,6.0,,,,,,,,,,,,, -AFC,scr_label,2d,classification,5.0,1532.0,512.0,510.0,gaf_fixed,large_resnet,0.9360313315926893,0.9362350669453812,0.9362164749688155,0.935953597273992,5.0,0.1875,0.1859587875702538,0.1887884863458948,0.1864069772051884,5.0,0.2078431372549019,0.2077581243593549,0.2073697548326261,0.2069058118265241,5.0,,,,,,,,,,,,, -AFC,scr_label,2d,classification,5.0,1532.0,512.0,510.0,mtf_fixed,large_resnet,0.7232375979112271,0.7312289784506756,0.723205479632447,0.7236029498859221,5.0,0.2265625,0.2252753394348503,0.2260369951942284,0.2243643849106825,5.0,0.1862745098039215,0.1877702914698066,0.1869812407064882,0.1861574466048366,5.0,,,,,,,,,,,,, -AFC,scr_label,2d,classification,5.0,1532.0,512.0,510.0,heatmap_fixed,large_resnet,0.5261096605744126,0.5784944255776764,0.5244383363442106,0.5160220566831599,5.0,0.224609375,0.2161631249577872,0.2231187697716511,0.2129344623957945,5.0,0.2392156862745098,0.2333100624865331,0.2358114822471257,0.2212985188910735,5.0,,,,,,,,,,,,, -AFC,scr_label,2d,classification,5.0,1532.0,512.0,510.0,heatmap_zoomed,large_resnet,0.4575718015665796,0.4701344030548763,0.4571614283488138,0.456436862138958,5.0,0.21875,0.2170314712471575,0.2177938046635557,0.2161229502187957,5.0,0.2019607843137255,0.1882617139719412,0.2016725147789504,0.1927131271640234,5.0,,,,,,,,,,,,, -AFC,scr_label,2d,classification,5.0,1532.0,512.0,510.0,baseline_fixed,large_resnet,0.3302872062663185,0.4247328196837784,0.3284961958411442,0.3083906623869626,5.0,0.251953125,0.2480825361039279,0.2483470679012306,0.2231245680794151,5.0,0.2078431372549019,0.2157721591203379,0.2056937039857832,0.179705730694638,5.0,,,,,,,,,,,,, -AFC,scr_label,2d,classification,5.0,1532.0,512.0,510.0,baseline_zoomed,large_resnet,0.9941253263707572,0.9941694886284732,0.9941501332209824,0.9941316970214348,5.0,0.205078125,0.2055819192842093,0.2051902737391563,0.2037712627179324,5.0,0.2215686274509803,0.2210905506783314,0.2225659612664563,0.2207887736633405,5.0,,,,,,,,,,,,, -AFC,scr_label,timeseries,classification,5.0,1532.0,512.0,510.0,,,0.248041775456919,0.2435699933054432,0.2485993825461993,0.1766799066621703,5.0,0.21484375,0.2261836373619669,0.2145926926966776,0.1233297269951957,5.0,0.2,0.287025858302454,0.2087933848329887,0.1262362825564159,5.0,,,,,,,,,,,,, -AFC,scr_label,merged,classification,5.0,1532.0,512.0,510.0,gaf_fixed,large_resnet,0.5058746736292428,0.5817018519438113,0.5038270099235336,0.506127293128314,5.0,0.19921875,0.1848334879080613,0.1965910663310411,0.1809600959316145,5.0,0.1941176470588235,0.1927258971749303,0.1921055470931708,0.1722948985899738,5.0,,,,,,,,,,,,, -AFC,scr_label,merged,classification,5.0,1532.0,512.0,510.0,mtf_fixed,large_resnet,0.9836814621409922,0.9839695281802522,0.9836651651108064,0.9837703272191682,5.0,0.189453125,0.1888877235085108,0.1880056343917043,0.1863713205329948,5.0,0.2137254901960784,0.2193700451807231,0.2131573006201719,0.2128342933302577,5.0,,,,,,,,,,,,, -AFC,scr_label,merged,classification,5.0,1532.0,512.0,510.0,heatmap_fixed,large_resnet,0.4007832898172324,0.4157372163155403,0.4012358531122354,0.3878900710363144,5.0,0.2421875,0.2351941485330673,0.2435120746329121,0.2313007044590015,5.0,0.2313725490196078,0.2192438333269472,0.2311483607151923,0.2134165021146651,5.0,,,,,,,,,,,,, -AFC,scr_label,merged,classification,5.0,1532.0,512.0,510.0,heatmap_zoomed,large_resnet,0.2898172323759791,0.5837662688496753,0.2905512173340768,0.2374355834803768,5.0,0.18359375,0.171613327848622,0.1827496250475219,0.1060498837567562,5.0,0.2019607843137255,0.2387482791485756,0.2114119791099989,0.1302367561812254,5.0,,,,,,,,,,,,, -AFC,scr_label,merged,classification,5.0,1532.0,512.0,510.0,baseline_fixed,large_resnet,0.4817232375979112,0.4997852126831215,0.4834406013387129,0.4749409348039794,5.0,0.251953125,0.254695175000981,0.2548832949831174,0.2430508015337969,5.0,0.2431372549019607,0.2507191698531102,0.2449508123889311,0.2355038056410467,5.0,,,,,,,,,,,,, -AFC,scr_label,merged,classification,5.0,1532.0,512.0,510.0,baseline_zoomed,large_resnet,0.9843342036553524,0.9847819428422568,0.98422709797551,0.9843410525160742,5.0,0.23046875,0.2237698982775383,0.2291685069589655,0.2224045158043603,5.0,0.2156862745098039,0.2184377350050351,0.2164458890944039,0.2136366154529355,5.0,,,,,,,,,,,,, -Age_study,group_category_label,2d,classification,4.0,4365.0,1519.0,1507.0,gaf_fixed,large_resnet,0.986712485681558,0.986887766148116,0.9867660838868304,0.9867316621116023,4.0,0.304147465437788,0.30546943957625,0.3037382922436114,0.3006429559658278,4.0,0.2806901128069011,0.2851092271926561,0.2807210819381204,0.2793595485850281,4.0,,,,,,,,,,,,, -Age_study,group_category_label,2d,classification,4.0,4365.0,1519.0,1507.0,mtf_fixed,large_resnet,0.5049255441008018,0.5042713313176665,0.5050871247957696,0.5043266606175867,4.0,0.336405529953917,0.3315746753246753,0.3353077507598784,0.3329575557851598,4.0,0.3198407431984074,0.3168287099100706,0.320021509930232,0.317608312365892,4.0,,,,,,,,,,,,, -Age_study,group_category_label,2d,classification,4.0,4365.0,1519.0,1507.0,heatmap_fixed,large_resnet,0.6836197021764032,0.691105702677978,0.6833385442159765,0.6847050979200613,4.0,0.3199473337722185,0.3209580300215986,0.3199306194199811,0.3185303084592283,4.0,0.3570006635700066,0.3637771057325513,0.3571177995620186,0.3574174487606417,4.0,,,,,,,,,,,,, -Age_study,group_category_label,2d,classification,4.0,4365.0,1519.0,1507.0,heatmap_zoomed,large_resnet,0.7615120274914089,0.7669686727920397,0.7620290367535474,0.7616132719345206,4.0,0.271889400921659,0.2676808447855959,0.2710013119268438,0.2666545984334352,4.0,0.2899800928998009,0.2897575918904725,0.29006664021877,0.2882473491313142,4.0,,,,,,,,,,,,, -Age_study,group_category_label,2d,classification,4.0,4365.0,1519.0,1507.0,baseline_fixed,large_resnet,0.8435280641466208,0.8500272622150513,0.8429792911064635,0.8412318784212307,4.0,0.337063857801185,0.338580428959211,0.336584010945713,0.3346551763556504,4.0,0.3682813536828135,0.3757166967704675,0.3683088941709631,0.3679134123118809,4.0,,,,,,,,,,,,, -Age_study,group_category_label,2d,classification,4.0,4365.0,1519.0,1507.0,baseline_zoomed,large_resnet,0.9665521191294388,0.9664938179963104,0.9665536373388756,0.9665105074140348,4.0,0.292955892034233,0.2923735309267309,0.2924835749357026,0.2923813204108494,4.0,0.3032514930325149,0.3050154056664459,0.3032710659485507,0.3037803545264408,4.0,,,,,,,,,,,,, -Age_study,group_category_label,timeseries,classification,4.0,4365.0,1519.0,1507.0,,,0.3743413516609393,0.3713553811246337,0.3748009839690541,0.3643395398180052,4.0,0.3601053324555628,0.348158368494025,0.3593914716095567,0.3463339688002719,4.0,0.345056403450564,0.3408388702831163,0.3451360730772495,0.3344911385944651,4.0,,,,,,,,,,,,, -Age_study,group_category_label,merged,classification,4.0,4365.0,1519.0,1507.0,gaf_fixed,large_resnet,0.917983963344788,0.9200196488399208,0.918318794168176,0.918135229429341,4.0,0.3166556945358789,0.312346567190453,0.3155401523220672,0.3130603646675367,4.0,0.2866622428666224,0.2857583721584145,0.2869314499639043,0.2861292964897419,4.0,,,,,,,,,,,,, -Age_study,group_category_label,merged,classification,4.0,4365.0,1519.0,1507.0,mtf_fixed,large_resnet,0.4235967926689576,0.4993488643854684,0.4239080160401632,0.3717529673873951,4.0,0.3535220539828835,0.3682286041265551,0.3533385290832099,0.2987605796547082,4.0,0.3337757133377571,0.3016902445803224,0.3339813030482401,0.2818176974221605,4.0,,,,,,,,,,,,, -Age_study,group_category_label,merged,classification,4.0,4365.0,1519.0,1507.0,heatmap_fixed,large_resnet,0.8813287514318442,0.889365676093995,0.8821775021513171,0.8812258277121511,4.0,0.3317972350230415,0.3278660997566252,0.3299036556430174,0.3228944967834111,4.0,0.3596549435965494,0.3593306832285499,0.360121050536872,0.3538074971218203,4.0,,,,,,,,,,,,, -Age_study,group_category_label,merged,classification,4.0,4365.0,1519.0,1507.0,heatmap_zoomed,large_resnet,0.752348224513173,0.7590833325043367,0.7534067887081675,0.751508195835807,4.0,0.3192890059249506,0.3132188151858134,0.3179301106694724,0.3130137734655921,4.0,0.3364299933642999,0.3301410434157919,0.3367310418527457,0.3309536967927832,4.0,,,,,,,,,,,,, -Age_study,group_category_label,merged,classification,4.0,4365.0,1519.0,1507.0,baseline_fixed,large_resnet,0.9168384879725086,0.9259541973751017,0.9174377423850704,0.9173354584121924,4.0,0.3278472679394338,0.3143866583775582,0.3254858675603356,0.308112089880326,4.0,0.3662906436629064,0.3634215715359947,0.366862355959719,0.3537254978126235,4.0,,,,,,,,,,,,, -Age_study,group_category_label,merged,classification,4.0,4365.0,1519.0,1507.0,baseline_zoomed,large_resnet,0.9917525773195875,0.9917516192455944,0.991747873321754,0.9917315603857356,4.0,0.3173140223831468,0.3172772213280275,0.316750188345933,0.3165833909787562,4.0,0.3019243530192435,0.305089028623017,0.3019555570265509,0.3028375614234266,4.0,,,,,,,,,,,,, -Age_study,meta_age_label,2d,classification,3.0,4327.0,1532.0,1532.0,gaf_fixed,large_resnet,0.900855095909406,0.9038628784872164,0.8991593254893858,0.8999628193733212,3.0,0.4242819843342036,0.4074949291650724,0.4068159448818897,0.4069374952136935,3.0,0.3936031331592689,0.3790305955773488,0.3785261715942922,0.3787193356190959,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,2d,classification,3.0,4327.0,1532.0,1532.0,mtf_fixed,large_resnet,0.4039750404437254,0.6654614127860149,0.3618029011360095,0.2560763530311399,3.0,0.487597911227154,0.4148537311668255,0.4067913385826771,0.3343843847178757,3.0,0.4471279373368146,0.3063510617572569,0.3640727124183007,0.2628531055887752,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,2d,classification,3.0,4327.0,1532.0,1532.0,heatmap_fixed,large_resnet,0.6272244048994684,0.640875631823881,0.6212589526728595,0.6262748561572834,3.0,0.5006527415143603,0.4892238197502099,0.4811898512685914,0.4774472147090574,3.0,0.47911227154047,0.4749312828145711,0.466859365910413,0.466913086012902,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,2d,classification,3.0,4327.0,1532.0,1532.0,heatmap_zoomed,large_resnet,0.3926507973191587,0.4788959190393974,0.3463390156799609,0.2302184194194246,3.0,0.4262402088772846,0.4450959672532122,0.3496555118110236,0.2448446967701807,3.0,0.4236292428198433,0.483791501914266,0.3441869417924237,0.2326610271377131,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,2d,classification,3.0,4327.0,1532.0,1532.0,baseline_fixed,large_resnet,0.8035590478391496,0.8154496683940663,0.8061202144363152,0.8009472756195417,3.0,0.5150130548302873,0.5032817450201136,0.4930692257217847,0.4918843854179828,3.0,0.4843342036553524,0.4670157738867679,0.4601959501077918,0.4538705938523406,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,2d,classification,3.0,4327.0,1532.0,1532.0,baseline_zoomed,large_resnet,0.9907557198983128,0.9903130390672832,0.9914251799661108,0.9908402170961907,3.0,0.4308093994778068,0.4365758292040704,0.4303682742782151,0.42768346525349,3.0,0.368798955613577,0.3741887110806034,0.3656700201895766,0.3653405980277807,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,timeseries,classification,3.0,4327.0,1532.0,1532.0,,,0.4857869193436561,0.4890396429704258,0.4894190724180018,0.4866859973681309,3.0,0.4986945169712793,0.490522123141563,0.501334208223972,0.492529746301927,3.0,0.4575718015665796,0.4518769717884762,0.4583410862163364,0.4521086324815331,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,merged,classification,3.0,4327.0,1532.0,1532.0,gaf_fixed,large_resnet,0.8696556505662122,0.8717242088457863,0.8677049602755188,0.8692494334208257,3.0,0.4105744125326371,0.4100403132770511,0.4060900590551181,0.402727427456748,3.0,0.3400783289817232,0.3388767318064936,0.3303077306402491,0.3298448069622691,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,merged,classification,3.0,4327.0,1532.0,1532.0,mtf_fixed,large_resnet,0.9431476773746243,0.941862866458568,0.9433156441248874,0.9423713354148138,3.0,0.4157963446475196,0.4139254547777894,0.4139927821522309,0.4120124775445328,3.0,0.3563968668407311,0.3544793174114131,0.3493221841528933,0.3481295676047859,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,merged,classification,3.0,4327.0,1532.0,1532.0,heatmap_fixed,large_resnet,0.690547723596025,0.6926805312660759,0.6900061681798123,0.6908070173688315,3.0,0.5607049608355091,0.5467235709740003,0.5453712817147857,0.5455905321537985,3.0,0.5509138381201044,0.5390919819156027,0.5402868138965883,0.5393783522721974,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,merged,classification,3.0,4327.0,1532.0,1532.0,heatmap_zoomed,large_resnet,0.5532701640859718,0.572277902597811,0.552249021288407,0.5438308784934208,3.0,0.5306788511749347,0.519651433684439,0.5050812007874016,0.5065921664397786,3.0,0.5287206266318538,0.5231466671916088,0.5159084881771206,0.5175873094831701,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,merged,classification,3.0,4327.0,1532.0,1532.0,baseline_fixed,large_resnet,0.7899237346891611,0.7910816262799081,0.792833512212069,0.7903028468053909,3.0,0.589425587467363,0.5788839778184189,0.5753964348206474,0.5768229994317421,3.0,0.5554830287206266,0.5528920786998436,0.5607981085104199,0.5541357640558374,3.0,,,,,,,,,,,,, -Age_study,meta_age_label,merged,classification,3.0,4327.0,1532.0,1532.0,baseline_zoomed,large_resnet,0.9805870117864572,0.98184116901582,0.9790583286139504,0.9802297024983928,3.0,0.4105744125326371,0.415007322152954,0.400911800087489,0.3960206886076529,3.0,0.3655352480417754,0.3651755856054994,0.3541776276391883,0.3516700846473761,3.0,,,,,,,,,,,,, -APP,known_label,2d,classification,2.0,2666.0,941.0,939.0,gaf_fixed,large_resnet,0.8218304576144037,0.8358087679516251,0.5166933914985914,0.4841556115975065,2.0,0.7311370882040382,0.5545953912111468,0.5023529072117328,0.4336409290198569,2.0,0.7497337593184239,0.7084673097534834,0.5070143171408994,0.4445954619247177,2.0,,,,,,,,,,,,, -APP,known_label,2d,classification,2.0,2666.0,941.0,939.0,mtf_fixed,large_resnet,0.8147036759189797,0.6048462715293885,0.5059870199041288,0.4663333117219917,2.0,0.7332624867162593,0.6178839957035446,0.5063369709567527,0.4417357432737466,2.0,0.744408945686901,0.5167841814837523,0.5006581557214468,0.4347573088267753,2.0,,,,,,,,,,,,, -APP,known_label,2d,classification,2.0,2666.0,941.0,939.0,heatmap_fixed,large_resnet,0.8683420855213804,0.7999649750933997,0.7172151128220013,0.7468266278370421,2.0,0.7311370882040382,0.6269226561645335,0.5669900109706103,0.5664155197502736,2.0,0.731629392971246,0.5949506574919803,0.5466118504093187,0.5411482734013837,2.0,,,,,,,,,,,,, -APP,known_label,2d,classification,2.0,2666.0,941.0,939.0,heatmap_zoomed,large_resnet,0.8165791447861965,0.4082895723930982,0.5,0.4495147635762956,2.0,0.7332624867162593,0.3666312433581296,0.5,0.4230533415082771,2.0,0.7476038338658147,0.3738019169329074,0.5,0.4277879341864716,2.0,,,,,,,,,,,,, -APP,known_label,2d,classification,2.0,2666.0,941.0,939.0,baseline_fixed,large_resnet,0.8552138034508627,0.8064823491737931,0.6465436666845146,0.6810704332906885,2.0,0.7492029755579172,0.6810623556581986,0.5679023038281656,0.5622013342375447,2.0,0.759318423855165,0.6861983048681801,0.5525532835659418,0.5391861374098845,2.0,,,,,,,,,,,,, -APP,known_label,2d,classification,2.0,2666.0,941.0,939.0,baseline_zoomed,large_resnet,0.8225806451612904,0.910754716981132,0.516359918200409,0.4826879331811367,2.0,0.7300743889479278,0.3662046908315565,0.4978260869565217,0.4219901719901719,2.0,0.744408945686901,0.473661670235546,0.4992607017923473,0.4307825981531249,2.0,,,,,,,,,,,,, -APP,known_label,timeseries,classification,2.0,2666.0,941.0,939.0,,,0.8229557389347337,0.7712316867246445,0.5261034443564576,0.5039045744707693,2.0,0.7290116896918172,0.5458853444290338,0.503438420232115,0.4400182028214373,2.0,0.739084132055378,0.4229817007534984,0.4956994482310938,0.4289412868586123,2.0,,,,,,,,,,,,, -APP,known_label,merged,classification,2.0,2666.0,941.0,939.0,gaf_fixed,large_resnet,0.8353338334583645,0.7601755541170956,0.5875945114991926,0.6054472680223482,2.0,0.7173219978746015,0.5159052858167903,0.5030717708874647,0.4547565523490868,2.0,0.7326943556975506,0.5379171301446051,0.5081953911067836,0.4685429007592276,2.0,,,,,,,,,,,,, -APP,known_label,merged,classification,2.0,2666.0,941.0,939.0,mtf_fixed,large_resnet,0.9144786196549136,0.919090101945146,0.785106049205629,0.8316516444657148,2.0,0.6695005313496281,0.4689711423582391,0.4844044113401466,0.4601381702131585,2.0,0.7071352502662407,0.5227721882860223,0.5106657290201594,0.4932999228838686,2.0,,,,,,,,,,,,, -APP,known_label,merged,classification,2.0,2666.0,941.0,939.0,heatmap_fixed,large_resnet,0.8642160540135033,0.8066158740919351,0.6869399644733517,0.7222533038633329,2.0,0.7364505844845909,0.6376839261064936,0.5541370748888504,0.5443455170259294,2.0,0.7465388711395101,0.6280200903693192,0.5412113671607343,0.5253546852433948,2.0,,,,,,,,,,,,, -APP,known_label,merged,classification,2.0,2666.0,941.0,939.0,heatmap_zoomed,large_resnet,0.8150787696924231,0.5333897667419112,0.5006669465963648,0.453041725013993,2.0,0.7332624867162593,0.6168796592119276,0.5012673941913506,0.426911439642643,2.0,0.7465388711395101,0.3736673773987207,0.4992877492877492,0.4274390243902439,2.0,,,,,,,,,,,,, -APP,known_label,merged,classification,2.0,2666.0,941.0,939.0,baseline_fixed,large_resnet,0.873218304576144,0.8535012444608501,0.6853167479683961,0.7279963004685992,2.0,0.7438894792773645,0.6632532186165404,0.5604769328483169,0.551838347907712,2.0,0.7529286474973376,0.6547091679506933,0.5482797792924375,0.5347832029247959,2.0,,,,,,,,,,,,, -APP,known_label,merged,classification,2.0,2666.0,941.0,939.0,baseline_zoomed,large_resnet,0.8859714928732183,0.8416296987787195,0.7454518469254232,0.7800673856788065,2.0,0.6865037194473964,0.5267675103486624,0.5150095271089555,0.5027825691343497,2.0,0.6964856230031949,0.5211004784688995,0.5119279454722493,0.500696858260709,2.0,,,,,,,,,,,,, -APP,meta_certainty_label,2d,classification,6.0,2669.0,937.0,940.0,gaf_fixed,large_resnet,0.98613713001124,0.9886797640998336,0.9914008977061078,0.990001539098708,6.0,0.3927427961579509,0.221062991883076,0.1943724195287059,0.1905442381022774,6.0,0.3659574468085106,0.1803559838198392,0.1885100086309632,0.1770447027140787,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,2d,classification,6.0,2669.0,937.0,940.0,mtf_fixed,large_resnet,0.992131884600974,0.992660641209984,0.9955467759176612,0.9940907800228178,6.0,0.3628601921024546,0.1750590683427842,0.180572817343758,0.1709352070297073,6.0,0.3734042553191489,0.1771567465721807,0.1720542081566926,0.1693884494679536,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,2d,classification,6.0,2669.0,937.0,940.0,heatmap_fixed,large_resnet,0.8403896590483327,0.8568408152332058,0.855397185898272,0.8521173378092376,6.0,0.3980789754535752,0.2148798126518338,0.2095927049294688,0.2016585419484999,6.0,0.3638297872340426,0.1754099452944341,0.176716160656991,0.1694171844017656,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,2d,classification,6.0,2669.0,937.0,940.0,heatmap_zoomed,large_resnet,0.7463469464218808,0.8568429699192214,0.7048197100383967,0.7637355762832186,6.0,0.4258271077908218,0.173442158427716,0.1678515238140982,0.1589600833899107,6.0,0.3904255319148936,0.1761110073926065,0.173410795795562,0.1648358173412549,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,2d,classification,6.0,2669.0,937.0,940.0,baseline_fixed,large_resnet,0.5646309479205694,0.6076491244883564,0.3601110071766224,0.4095363336097701,6.0,0.4887940234791889,0.2032308281741882,0.1860000321967867,0.1701771981482293,6.0,0.4021276595744681,0.1788442606199615,0.1721029627208117,0.1478429226721358,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,2d,classification,6.0,2669.0,937.0,940.0,baseline_zoomed,large_resnet,0.962907455976021,0.9784661584366704,0.9737297396855324,0.9760365512230884,6.0,0.3671291355389541,0.1922559236657911,0.1824423774283282,0.1759984623039207,6.0,0.3744680851063829,0.1603802883123319,0.1584960070984915,0.1551134166294809,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,timeseries,classification,6.0,2669.0,937.0,940.0,,,0.5035593855376546,0.1610883508443854,0.1926862948792662,0.1647965716731192,6.0,0.4749199573105656,0.1121110916230621,0.1621510673234811,0.132565813508145,6.0,0.4212765957446808,0.1486307499552532,0.1641156462585034,0.1368509599984401,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,merged,classification,6.0,2669.0,937.0,940.0,gaf_fixed,large_resnet,0.9928812289246908,0.9937678479712376,0.9903043760802565,0.9919558727525788,6.0,0.4140875133404482,0.2669021311790122,0.187792856606244,0.1816529516150967,6.0,0.3574468085106383,0.1547835205897197,0.1606403430937592,0.1445525891206319,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,merged,classification,6.0,2669.0,937.0,940.0,mtf_fixed,large_resnet,0.870738104158861,0.936612793504514,0.8946668555964316,0.9111374913511896,6.0,0.3617929562433298,0.1799134936326643,0.1728401630107479,0.1626955664276193,6.0,0.3659574468085106,0.1660575048260277,0.1747781937590698,0.1626219666975326,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,merged,classification,6.0,2669.0,937.0,940.0,heatmap_fixed,large_resnet,0.5781191457474709,0.6211689959534225,0.3673879766107948,0.4189498114803693,6.0,0.48025613660619,0.2291634842698672,0.1900191456521054,0.1697321637265687,6.0,0.4170212765957446,0.1857569578491557,0.1827111342884471,0.1671261900421048,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,merged,classification,6.0,2669.0,937.0,940.0,heatmap_zoomed,large_resnet,0.5698763581865868,0.7614833962917088,0.3601686146596125,0.4218858395801265,6.0,0.4887940234791889,0.1558055289626399,0.1669053253485302,0.1440838020995216,6.0,0.4053191489361702,0.1954230316299281,0.1788312006724886,0.1468927569702763,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,merged,classification,6.0,2669.0,937.0,940.0,baseline_fixed,large_resnet,0.5586361933308355,0.7794977763802167,0.2699292616137221,0.2902434435743217,6.0,0.4845250800426894,0.1811718849802289,0.1940312523476823,0.1679908346658786,6.0,0.4351063829787234,0.1661104967769934,0.1725841302704656,0.1540419390609869,6.0,,,,,,,,,,,,, -APP,meta_certainty_label,merged,classification,6.0,2669.0,937.0,940.0,baseline_zoomed,large_resnet,0.8538778568752342,0.9004717588573173,0.8797800880943222,0.8894759000382697,6.0,0.3511205976520811,0.1725138959877331,0.168724131509271,0.1635069335933654,6.0,0.3478723404255319,0.1573255345609679,0.1685423660946707,0.1544534352562999,6.0,,,,,,,,,,,,, -APP,mod_label,2d,classification,4.0,2669.0,937.0,940.0,gaf_fixed,large_resnet,0.6080929186961409,0.830834177026972,0.3213386772244812,0.3167585293439626,4.0,0.5624332977588047,0.2732363579403053,0.2522990540431425,0.1949053079815093,4.0,0.5606382978723404,0.2255326832791621,0.249030806507442,0.1871333508449348,4.0,,,,,,,,,,,,, -APP,mod_label,2d,classification,4.0,2669.0,937.0,940.0,mtf_fixed,large_resnet,0.8804795803671788,0.8806818842620623,0.8408338474532759,0.8561938403593815,4.0,0.4034151547491996,0.2342874147362733,0.2354819224725312,0.2318760543658813,4.0,0.3893617021276596,0.2317036864882696,0.2361024575977847,0.2321588187832701,4.0,,,,,,,,,,,,, -APP,mod_label,2d,classification,4.0,2669.0,937.0,940.0,heatmap_fixed,large_resnet,0.9490445859872612,0.9290686296306804,0.91483559476233,0.9178879613029146,4.0,0.7470651013874067,0.6281026829972087,0.589396339153173,0.6021877582481161,4.0,0.7680851063829788,0.6512624149305162,0.6253721010730356,0.633993896925859,4.0,,,,,,,,,,,,, -APP,mod_label,2d,classification,4.0,2669.0,937.0,940.0,heatmap_zoomed,large_resnet,0.5829898838516299,0.7485722170905895,0.278640592696175,0.2390514257582304,4.0,0.5613660618996799,0.2531132873896747,0.2518447090390743,0.1936143691133367,4.0,0.5702127659574469,0.5428571428571429,0.2560055382485289,0.1958368681715523,4.0,,,,,,,,,,,,, -APP,mod_label,2d,classification,4.0,2669.0,937.0,940.0,baseline_fixed,large_resnet,0.7950543274634695,0.7185320162498731,0.6655348368533215,0.6767810453588347,4.0,0.6990394877267876,0.5617590180301192,0.5306791572723151,0.5381037684409786,4.0,0.7159574468085106,0.5970823602829161,0.5623226029768086,0.5621839858354499,4.0,,,,,,,,,,,,, -APP,mod_label,2d,classification,4.0,2669.0,937.0,940.0,baseline_zoomed,large_resnet,0.998126639190708,0.9972375633774516,0.9986884969573128,0.9979606804256002,4.0,0.4962646744930629,0.3533084719215659,0.3527711008006161,0.3521933488100117,4.0,0.5138297872340426,0.3837787091331703,0.3835410176531671,0.3834341237270851,4.0,,,,,,,,,,,,, -APP,mod_label,timeseries,classification,4.0,2669.0,937.0,940.0,,,0.5702510303484452,0.3853829078801332,0.2550359230895915,0.1927723185175009,4.0,0.5656350053361793,0.1838709677419354,0.2495248476717536,0.1842408274785323,4.0,0.5659574468085107,0.1922829581993569,0.2499826929733472,0.1844297391981315,4.0,,,,,,,,,,,,, -APP,mod_label,merged,classification,4.0,2669.0,937.0,940.0,gaf_fixed,large_resnet,0.9895091794679656,0.9867839498882016,0.9880917001852444,0.987359697253113,4.0,0.4589114194236926,0.3151725089049527,0.3127106353376687,0.3099607471891145,4.0,0.4659574468085106,0.295273950665296,0.2919003115264797,0.2888948519596545,4.0,,,,,,,,,,,,, -APP,mod_label,merged,classification,4.0,2669.0,937.0,940.0,mtf_fixed,large_resnet,0.9902585237916824,0.9865820020515385,0.9913357889615304,0.9889354839800264,4.0,0.4215581643543223,0.2578264526357711,0.2573328737088589,0.2552162256596557,4.0,0.4095744680851064,0.2556785646290512,0.257442021460713,0.2560367959551543,4.0,,,,,,,,,,,,, -APP,mod_label,merged,classification,4.0,2669.0,937.0,940.0,heatmap_fixed,large_resnet,0.9726489321843388,0.9550040225192298,0.9602181822374328,0.957318936191888,4.0,0.7374599786552828,0.6111224462042606,0.5924191464649288,0.598517419090108,4.0,0.7361702127659574,0.6065214606713829,0.6099688473520248,0.6068360748573863,4.0,,,,,,,,,,,,, -APP,mod_label,merged,classification,4.0,2669.0,937.0,940.0,heatmap_zoomed,large_resnet,0.6275758711127764,0.7428568500859639,0.3571399488771813,0.371468214616142,4.0,0.5635005336179295,0.4048860024441775,0.2792507499953416,0.252418235409103,4.0,0.5861702127659575,0.5211808057929237,0.2962443752163378,0.2752276265638238,4.0,,,,,,,,,,,,, -APP,mod_label,merged,classification,4.0,2669.0,937.0,940.0,baseline_fixed,large_resnet,0.8167853128512551,0.7231121063120535,0.6984147421972019,0.7096469847857777,4.0,0.7139807897545357,0.5754458974332618,0.5415227234613449,0.5541386221180629,4.0,0.7531914893617021,0.6258746003551976,0.6049844236760125,0.6138260057478031,4.0,,,,,,,,,,,,, -APP,mod_label,merged,classification,4.0,2669.0,937.0,940.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,4.0,0.4919957310565635,0.3347294035836483,0.3313195259656772,0.3320066957169243,4.0,0.5319148936170213,0.402435742256802,0.3859466943579093,0.3918161527411568,4.0,,,,,,,,,,,,, -Baseline,group_category_label,2d,classification,4.0,7269.0,2445.0,2486.0,gaf_fixed,large_resnet,0.9885816480946484,0.9885807866853612,0.988581032644156,0.988580648070065,4.0,0.2948875255623722,0.2946972551203717,0.2958828005715851,0.2951916307043039,4.0,0.2972646822204344,0.2970035438105582,0.2973187305570262,0.2971355290098783,4.0,,,,,,,,,,,,, -Baseline,group_category_label,2d,classification,4.0,7269.0,2445.0,2486.0,mtf_fixed,large_resnet,0.4640253129728986,0.469202462104786,0.4641475888471861,0.4632601126544255,4.0,0.3157464212678936,0.3160523789167151,0.3179103870346333,0.3146861542411907,4.0,0.3181818181818182,0.3228902860447281,0.3182756555285439,0.3185950748733832,4.0,,,,,,,,,,,,, -Baseline,group_category_label,2d,classification,4.0,7269.0,2445.0,2486.0,heatmap_fixed,large_resnet,0.6756087494841106,0.6799791494653035,0.6756404470087848,0.672957950212413,4.0,0.3562372188139059,0.3572021089588397,0.3589738413705596,0.3527942004999306,4.0,0.331456154465004,0.32461167233112,0.3316367316740989,0.3261848493383448,4.0,,,,,,,,,,,,, -Baseline,group_category_label,2d,classification,4.0,7269.0,2445.0,2486.0,heatmap_zoomed,large_resnet,0.471591690741505,0.4831411773806229,0.4717563337383945,0.4672468523984774,4.0,0.3128834355828221,0.3115414876130755,0.3157472893873277,0.3073813156741196,4.0,0.2855993563958166,0.2795008977276972,0.2857952058225257,0.2779017879620569,4.0,,,,,,,,,,,,, -Baseline,group_category_label,2d,classification,4.0,7269.0,2445.0,2486.0,baseline_fixed,large_resnet,0.9917457697069748,0.9917858595988978,0.991748477226638,0.9917412546246124,4.0,0.3353783231083844,0.3320061732233469,0.3389269677978913,0.3323044424293837,4.0,0.3543845534995977,0.3518181041294048,0.3545602977249643,0.3520498557064108,4.0,,,,,,,,,,,,, -Baseline,group_category_label,2d,classification,4.0,7269.0,2445.0,2486.0,baseline_zoomed,large_resnet,0.9785390012381344,0.9785579803327882,0.9785280949375812,0.97853438487562,4.0,0.3251533742331288,0.3266591163730366,0.3261318803033999,0.3263444944114269,4.0,0.3238133547868061,0.3244420287487385,0.3238902196955507,0.3240342737464035,4.0,,,,,,,,,,,,, -Baseline,group_category_label,timeseries,classification,4.0,7269.0,2445.0,2486.0,,,0.3900123813454395,0.4044637894203208,0.389868168137149,0.3544011858978879,4.0,0.3705521472392638,0.3654078243122899,0.3721712638667626,0.3329424340747936,4.0,0.3921962992759453,0.4006764993616869,0.3921239695724717,0.3589382898612633,4.0,,,,,,,,,,,,, -Baseline,group_category_label,merged,classification,4.0,7269.0,2445.0,2486.0,gaf_fixed,large_resnet,0.9584537075251066,0.9586415832762512,0.958448464298662,0.9584132866527484,4.0,0.3161554192229039,0.3138394668704652,0.3179240956928337,0.314746150297249,4.0,0.3065164923572003,0.3048709779701206,0.3065593326953499,0.3051467592248547,4.0,,,,,,,,,,,,, -Baseline,group_category_label,merged,classification,4.0,7269.0,2445.0,2486.0,mtf_fixed,large_resnet,0.8347778236346127,0.8356857226940304,0.8347625096523597,0.8349211326082175,4.0,0.3006134969325153,0.3010438696692191,0.3023558909460869,0.3004177752925561,4.0,0.3057119871279163,0.3095505308548446,0.3058253005986078,0.3060791516532432,4.0,,,,,,,,,,,,, -Baseline,group_category_label,merged,classification,4.0,7269.0,2445.0,2486.0,heatmap_fixed,large_resnet,0.8259733113220525,0.8269659585319269,0.8260273086504163,0.826054860338086,4.0,0.3496932515337423,0.3521143463720073,0.3514254212604788,0.3498252503453722,4.0,0.333467417538214,0.3321556030333717,0.333639776379678,0.3315865886066064,4.0,,,,,,,,,,,,, -Baseline,group_category_label,merged,classification,4.0,7269.0,2445.0,2486.0,heatmap_zoomed,large_resnet,0.6355757325629385,0.6509748096660474,0.6355517071736113,0.6360522285683056,4.0,0.3116564417177914,0.3205005726253762,0.3121828186657592,0.3095692696468378,4.0,0.2996781979082864,0.3077587314430103,0.2997300684872609,0.2967355903233665,4.0,,,,,,,,,,,,, -Baseline,group_category_label,merged,classification,4.0,7269.0,2445.0,2486.0,baseline_fixed,large_resnet,0.920896959691842,0.9240271138499494,0.9207130813375222,0.920505060107936,4.0,0.3333333333333333,0.3447409315867076,0.3347313811953096,0.3367559137103704,4.0,0.3503620273531778,0.3684258470009168,0.3504377131662236,0.3553131452720555,4.0,,,,,,,,,,,,, -Baseline,group_category_label,merged,classification,4.0,7269.0,2445.0,2486.0,baseline_zoomed,large_resnet,0.9862429495116248,0.9863135494228188,0.9862202566379054,0.9862340006241184,4.0,0.3137014314928425,0.3193724386736796,0.3143343251249527,0.3145719950203858,4.0,0.333065164923572,0.3362995978656699,0.3330995794180501,0.3334675950824862,4.0,,,,,,,,,,,,, -Bias,group_category_label,2d,classification,4.0,6034.0,2075.0,2082.0,gaf_fixed,large_resnet,0.5124295657938349,0.5106656332860828,0.5129868586637412,0.5111967256000081,4.0,0.3643373493975904,0.3610115692019516,0.364390625584536,0.3622456561712959,4.0,0.3477425552353506,0.3454437927217937,0.3478274059038962,0.3455587634281998,4.0,,,,,,,,,,,,, -Bias,group_category_label,2d,classification,4.0,6034.0,2075.0,2082.0,mtf_fixed,large_resnet,0.8629433211799801,0.8655594333736472,0.8630299333021578,0.8626454826688488,4.0,0.3151807228915663,0.3116190683040519,0.3151416920100095,0.3124935252797641,4.0,0.3150816522574448,0.312860378934015,0.3152423129533397,0.3137059513843677,4.0,,,,,,,,,,,,, -Bias,group_category_label,2d,classification,4.0,6034.0,2075.0,2082.0,heatmap_fixed,large_resnet,0.5397746105402718,0.5484911636249177,0.5393500583131697,0.5398139220518605,4.0,0.356144578313253,0.361780404401909,0.3562852563704372,0.3581271405726078,4.0,0.388568683957733,0.4010963102270956,0.3885661580436654,0.3912941579649678,4.0,,,,,,,,,,,,, -Bias,group_category_label,2d,classification,4.0,6034.0,2075.0,2082.0,heatmap_zoomed,large_resnet,0.4774610540271793,0.4967674701009243,0.4784697841210424,0.4732833832786621,4.0,0.3050602409638554,0.3000097913268031,0.3049661883313845,0.2935027738362057,4.0,0.2910662824207493,0.2869891525453028,0.2913845367519859,0.2777976000598975,4.0,,,,,,,,,,,,, -Bias,group_category_label,2d,classification,4.0,6034.0,2075.0,2082.0,baseline_fixed,large_resnet,0.7770964534305601,0.7942097685127305,0.7776145727980008,0.7725783934521043,4.0,0.3653012048192771,0.3509425772813233,0.3649423812165843,0.3482797485648886,4.0,0.3895292987512008,0.3785781038549216,0.3900040391149246,0.3782105248639285,4.0,,,,,,,,,,,,, -Bias,group_category_label,2d,classification,4.0,6034.0,2075.0,2082.0,baseline_zoomed,large_resnet,0.9464700033145508,0.9473108214814882,0.9466041727255448,0.9465202873103592,4.0,0.3272289156626506,0.3312952078824966,0.3273196439654487,0.3282479635447307,4.0,0.329971181556196,0.3300502025662051,0.330136789661676,0.3288733101244752,4.0,,,,,,,,,,,,, -Bias,group_category_label,timeseries,classification,4.0,6034.0,2075.0,2082.0,,,0.3922770964534305,0.3751334479855257,0.3929024706716507,0.3504838279075151,4.0,0.3966265060240964,0.3759528551451099,0.3964614245731446,0.3533875953121057,4.0,0.4000960614793468,0.384891997737066,0.4001583754498747,0.359123471628852,4.0,,,,,,,,,,,,, -Bias,group_category_label,merged,classification,4.0,6034.0,2075.0,2082.0,gaf_fixed,large_resnet,0.9902220749088498,0.9902406011318904,0.9902506272546358,0.9902112229863482,4.0,0.3243373493975903,0.3227166809487872,0.3241955542669017,0.3233700431222734,4.0,0.3410182516810759,0.3396197269911821,0.3412435778638399,0.3400767131251091,4.0,,,,,,,,,,,,, -Bias,group_category_label,merged,classification,4.0,6034.0,2075.0,2082.0,mtf_fixed,large_resnet,0.956247928405701,0.9562591386131732,0.9561332525205064,0.9561105643073288,4.0,0.2997590361445783,0.2994042269268222,0.2994173971610482,0.2984469333931437,4.0,0.3093179634966378,0.309403965207166,0.309459222476034,0.3081710276907084,4.0,,,,,,,,,,,,, -Bias,group_category_label,merged,classification,4.0,6034.0,2075.0,2082.0,heatmap_fixed,large_resnet,0.8114020550215446,0.8146482952343272,0.8111589717422374,0.8116904644344815,4.0,0.3286746987951807,0.3277320966272642,0.3290394429339972,0.3267917511566144,4.0,0.3856868395773294,0.3860649837480501,0.3856504714563555,0.3846464808023004,4.0,,,,,,,,,,,,, -Bias,group_category_label,merged,classification,4.0,6034.0,2075.0,2082.0,heatmap_zoomed,large_resnet,0.7555518727212462,0.7622745311201296,0.7555678986481199,0.7555926290040971,4.0,0.2949397590361445,0.2977746088666043,0.2948666419081838,0.2940793957945136,4.0,0.2891450528338136,0.2909960206821848,0.2892275136136275,0.2885374313586528,4.0,,,,,,,,,,,,, -Bias,group_category_label,merged,classification,4.0,6034.0,2075.0,2082.0,baseline_fixed,large_resnet,0.8995691083858137,0.9122672748678428,0.8999413330788915,0.9002887091934173,4.0,0.3571084337349398,0.3452076395600932,0.3570177853430255,0.3358287684964041,4.0,0.3852065321805956,0.3776231019236614,0.3856321851272321,0.3682790091695324,4.0,,,,,,,,,,,,, -Bias,group_category_label,merged,classification,4.0,6034.0,2075.0,2082.0,baseline_zoomed,large_resnet,0.9985084521047398,0.9984939759036144,0.9985157123882514,0.9985017789536732,4.0,0.3214457831325301,0.3240475380191563,0.3212805355935534,0.3225180690059269,4.0,0.3304514889529298,0.3309377022427031,0.3306084722981206,0.3302692357986305,4.0,,,,,,,,,,,,, -Crossmodal,condition_label,2d,classification,5.0,1361.0,453.0,485.0,gaf_fixed,large_resnet,0.9977957384276268,0.9985937431442236,0.9985915492957746,0.998588779855132,5.0,0.3487858719646799,0.2111648745519713,0.2283803881264736,0.2194175456822809,5.0,0.334020618556701,0.203026910087895,0.2126882528416163,0.2073818973565348,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,2d,classification,5.0,1361.0,453.0,485.0,mtf_fixed,large_resnet,0.9926524614254224,0.995336444549023,0.9952962750209888,0.995299397013256,5.0,0.3090507726269316,0.1928619528619528,0.2022169155431957,0.1970458686996826,5.0,0.2865979381443299,0.1745239697323842,0.182679720070797,0.1775178698111359,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,2d,classification,5.0,1361.0,453.0,485.0,heatmap_fixed,large_resnet,0.6032329169728141,0.704355858746327,0.5585351858416725,0.6003613665704923,5.0,0.2847682119205298,0.1778474807979421,0.1875052898857384,0.1718925277620929,5.0,0.245360824742268,0.188441354243241,0.1820206370833767,0.1824652626013932,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,2d,classification,5.0,1361.0,453.0,485.0,heatmap_zoomed,large_resnet,0.5584129316678913,0.7029924399057548,0.4729034221121493,0.5280233272309774,5.0,0.2891832229580574,0.1750890365736702,0.1896221510186808,0.1817437682280337,5.0,0.2907216494845361,0.1753306464688578,0.1850549763934218,0.1800526146775403,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,2d,classification,5.0,1361.0,453.0,485.0,baseline_fixed,large_resnet,0.3291697281410727,0.3472169059011164,0.2103464637707677,0.1219998048068872,5.0,0.3002207505518763,0.1474961597542242,0.1956843600749652,0.1029400141612038,5.0,0.3134020618556701,0.2785614035087719,0.2012296695984392,0.1065879403081651,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,2d,classification,5.0,1361.0,453.0,485.0,baseline_zoomed,large_resnet,0.9742836149889786,0.9799136264107432,0.9835391771185936,0.9814139830879366,5.0,0.2913907284768212,0.1998827906028639,0.1998404443185831,0.1945960784083951,5.0,0.2927835051546392,0.1955932530369099,0.1995139489301218,0.1956922209255595,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,timeseries,classification,5.0,1361.0,453.0,485.0,,,0.3534166054371785,0.3122783888385234,0.2344205187722312,0.2109868800362536,5.0,0.3024282560706401,0.1967278894680235,0.200065594583157,0.1560558813389916,5.0,0.3072164948453608,0.1689581671663137,0.1943485670829693,0.1495908721468988,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,merged,classification,5.0,1361.0,453.0,485.0,gaf_fixed,large_resnet,0.4121969140337986,0.768152517060814,0.2765179438360209,0.2420829425531419,5.0,0.3090507726269316,0.1859452411994785,0.2015292303971948,0.1489433081236502,5.0,0.2886597938144329,0.155082234751958,0.1850155943742559,0.1385372876564946,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,merged,classification,5.0,1361.0,453.0,485.0,mtf_fixed,large_resnet,0.9977957384276268,0.9985915337369096,0.998590434243776,0.998590435532748,5.0,0.2891832229580574,0.1768781463954893,0.1897593857686959,0.1812859748866594,5.0,0.2845360824742268,0.2221371533561484,0.1940869256223038,0.1977378241793215,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,merged,classification,5.0,1361.0,453.0,485.0,heatmap_fixed,large_resnet,0.440852314474651,0.6633888732107632,0.3249239483144637,0.3541117366804779,5.0,0.2803532008830022,0.1642225031605562,0.1830403240432863,0.1682925805612214,5.0,0.2927835051546392,0.1826137879911045,0.1866026444799536,0.1830804235733813,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,merged,classification,5.0,1361.0,453.0,485.0,heatmap_zoomed,large_resnet,0.3423952975753123,0.6720294388224471,0.2364706225153606,0.2047718189982169,5.0,0.2847682119205298,0.1281235431235431,0.1844510609999395,0.1150672156303356,5.0,0.3154639175257732,0.19946637610706,0.2014401597008777,0.1520353696869515,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,merged,classification,5.0,1361.0,453.0,485.0,baseline_fixed,large_resnet,0.3864805290227773,0.2322512715442013,0.2471357944553598,0.2394511471201611,5.0,0.2869757174392936,0.1698110586273964,0.1876754730669246,0.1769826567986327,5.0,0.311340206185567,0.1890156970553645,0.198326490518892,0.1921033697446399,5.0,,,,,,,,,,,,, -Crossmodal,condition_label,merged,classification,5.0,1361.0,453.0,485.0,baseline_zoomed,large_resnet,0.3952975753122704,0.5877208716848372,0.2825870640093248,0.276803258895091,5.0,0.2958057395143488,0.1790733202673501,0.1957209358563569,0.156068308140992,5.0,0.2948453608247423,0.1674232512096016,0.1866149796526234,0.1577107850898506,5.0,,,,,,,,,,,,, -Filtered,group_category_label,2d,classification,6.0,3427.0,1127.0,1079.0,gaf_fixed,large_resnet,0.8392179749051649,0.8396163895452523,0.8387385833808764,0.8388700996985468,6.0,0.186335403726708,0.1915711688590421,0.18642706961878,0.1875538695625154,6.0,0.1696014828544949,0.167359059767876,0.1678700265755829,0.1667584376962493,6.0,,,,,,,,,,,,, -Filtered,group_category_label,2d,classification,6.0,3427.0,1127.0,1079.0,mtf_fixed,large_resnet,0.5754304056025679,0.579279780337969,0.575352295658829,0.5748493317627438,6.0,0.2031943212067435,0.1995968983873287,0.2014338111212704,0.1999072723087823,6.0,0.190917516218721,0.1880633673197026,0.1895842716438235,0.1882202430387977,6.0,,,,,,,,,,,,, -Filtered,group_category_label,2d,classification,6.0,3427.0,1127.0,1079.0,heatmap_fixed,large_resnet,0.4379924131893785,0.4532275497011704,0.4368813905531765,0.4400364836192531,6.0,0.2129547471162378,0.2122647600800443,0.2084921786413458,0.2075395110888599,6.0,0.2400370713623725,0.2380191638352223,0.2347613114149482,0.2345192090475676,6.0,,,,,,,,,,,,, -Filtered,group_category_label,2d,classification,6.0,3427.0,1127.0,1079.0,heatmap_zoomed,large_resnet,0.2985118179165451,0.3596999950564147,0.2955130216319925,0.2851866341746508,6.0,0.1987577639751552,0.1894785643809743,0.1922147991078265,0.1680996104678107,6.0,0.1936978683966636,0.1868199118934653,0.1828784293102662,0.1585139697066242,6.0,,,,,,,,,,,,, -Filtered,group_category_label,2d,classification,6.0,3427.0,1127.0,1079.0,baseline_fixed,large_resnet,0.8386343740881237,0.8405414487601597,0.8399334160650507,0.8395437189784433,6.0,0.1969831410825199,0.201214387046177,0.196311316522196,0.1959956857886023,6.0,0.2094531974050046,0.2096486779273133,0.2071772000176294,0.2069050330931676,6.0,,,,,,,,,,,,, -Filtered,group_category_label,2d,classification,6.0,3427.0,1127.0,1079.0,baseline_zoomed,large_resnet,0.9699445579223812,0.970430772072852,0.9702882543826508,0.9699371458897428,6.0,0.1685891748003549,0.1692275015186842,0.1660842198042733,0.166456430620615,6.0,0.1797961075069508,0.1823405964164169,0.1809906518168259,0.1793439317307801,6.0,,,,,,,,,,,,, -Filtered,group_category_label,timeseries,classification,6.0,3427.0,1127.0,1079.0,,,0.2646629705281587,0.2817362215273946,0.2626625956315794,0.2380786867350651,6.0,0.2262644188110026,0.2283719659906391,0.2229616565527682,0.1993265154690167,6.0,0.2177942539388322,0.2109967284017917,0.2117253055470188,0.1842887109773677,6.0,,,,,,,,,,,,, -Filtered,group_category_label,merged,classification,6.0,3427.0,1127.0,1079.0,gaf_fixed,large_resnet,0.7079077910709075,0.7161880100907575,0.7082839974716646,0.7102347057301303,6.0,0.1721384205856255,0.1714361250486989,0.1702610333387101,0.1699254559155605,6.0,0.1733086190917516,0.1734204261814453,0.172361497022994,0.1717152365618565,6.0,,,,,,,,,,,,, -Filtered,group_category_label,merged,classification,6.0,3427.0,1127.0,1079.0,mtf_fixed,large_resnet,0.9247154946016924,0.9265035226793557,0.9255448479956432,0.9255969264574933,6.0,0.2023070097604259,0.2025471806136559,0.2033971686027132,0.2021526941726023,6.0,0.1705282669138091,0.1679742653410954,0.1689504697106172,0.1672422427675483,6.0,,,,,,,,,,,,, -Filtered,group_category_label,merged,classification,6.0,3427.0,1127.0,1079.0,heatmap_fixed,large_resnet,0.3463670849139189,0.3674362279861951,0.3469397115615515,0.3378741648315602,6.0,0.2147293700088731,0.2142867298044442,0.2111636636335423,0.2054020789915638,6.0,0.2548656163113994,0.2587044452188987,0.2526785713836435,0.247143592887139,6.0,,,,,,,,,,,,, -Filtered,group_category_label,merged,classification,6.0,3427.0,1127.0,1079.0,heatmap_zoomed,large_resnet,0.4840968777356288,0.486195594194851,0.4842625009311618,0.4824451675130572,6.0,0.1845607808340727,0.1873601003325224,0.1844691287630438,0.184616051575378,6.0,0.1890639481000926,0.1896126987819036,0.1874661345502438,0.1867326728070105,6.0,,,,,,,,,,,,, -Filtered,group_category_label,merged,classification,6.0,3427.0,1127.0,1079.0,baseline_fixed,large_resnet,0.5328275459585643,0.543412194229465,0.5332000360411054,0.5305670629019698,6.0,0.2413487133984028,0.2403195974511914,0.2382960141022877,0.2378391070418473,6.0,0.2344763670064875,0.2347155274187507,0.2329301415691284,0.2306271554424509,6.0,,,,,,,,,,,,, -Filtered,group_category_label,merged,classification,6.0,3427.0,1127.0,1079.0,baseline_zoomed,large_resnet,0.9982491975488764,0.9982328141032718,0.9982696905204388,0.9982485506264108,6.0,0.2023070097604259,0.2031358502356194,0.200590926922119,0.2011823199165021,6.0,0.2094531974050046,0.208504195194796,0.2074438868231256,0.2077735595927369,6.0,,,,,,,,,,,,, -Filtered,meta_delay_label,2d,classification,2.0,3237.0,1200.0,1196.0,gaf_fixed,large_resnet,0.7491504479456287,0.7535839849669637,0.749130000587889,0.7480389081843231,2.0,0.5208333333333334,0.52130203732685,0.5208333333333333,0.5181830052671675,2.0,0.5317725752508361,0.5333557193955762,0.5319446425225739,0.5268492693912961,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,2d,classification,2.0,3237.0,1200.0,1196.0,mtf_fixed,large_resnet,0.6453506333024406,0.6486648760356397,0.6453275038155525,0.6433407043973003,2.0,0.6808333333333333,0.6838614289224478,0.6808333333333334,0.6795137758172364,2.0,0.6438127090301003,0.6632887486176203,0.6440997418925456,0.633139400921659,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,2d,classification,2.0,3237.0,1200.0,1196.0,heatmap_fixed,large_resnet,0.5545257954896509,0.6723582893108413,0.554653447052958,0.4628962327112052,2.0,0.5316666666666666,0.6779470529470529,0.5316666666666666,0.4105224882524054,2.0,0.5158862876254181,0.6227388419234614,0.5151033408556416,0.379324994734224,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,2d,classification,2.0,3237.0,1200.0,1196.0,heatmap_zoomed,large_resnet,0.4998455359901143,0.25,0.4996911673872761,0.333264675592173,2.0,0.4991666666666666,0.2497914929107589,0.4991666666666666,0.3329627570872707,2.0,0.4991638795986622,0.2495819397993311,0.5,0.3329615170105968,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,2d,classification,2.0,3237.0,1200.0,1196.0,baseline_fixed,large_resnet,0.7670682730923695,0.7689683610736242,0.7670552714940245,0.7666502858672581,2.0,0.5916666666666667,0.5919281511855946,0.5916666666666666,0.591376089663761,2.0,0.6028428093645485,0.6097736073875484,0.6030500303409088,0.5967510098970263,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,2d,classification,2.0,3237.0,1200.0,1196.0,baseline_zoomed,large_resnet,0.9484090206981772,0.9500854458510868,0.9484184639910336,0.9483616904513656,2.0,0.5541666666666667,0.5561585803110898,0.5541666666666667,0.550177931953552,2.0,0.5459866220735786,0.5467107436133984,0.5458748947855583,0.5438945679159746,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,timeseries,classification,2.0,3237.0,1200.0,1196.0,,,0.8717948717948718,0.8718452199144777,0.8717966728534988,0.8717909073860131,2.0,0.9,0.9004449388209121,0.8999999999999999,0.899972214504029,2.0,0.8921404682274248,0.8928067266432884,0.8921751215733649,0.892100564590069,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,merged,classification,2.0,3237.0,1200.0,1196.0,gaf_fixed,large_resnet,0.9904232313870868,0.9905038787807516,0.990425234640254,0.990422865783737,2.0,0.5683333333333334,0.5696994424044608,0.5683333333333334,0.5662077513147757,2.0,0.5618729096989966,0.5622880818500824,0.5617989781964916,0.5609779334500875,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,merged,classification,2.0,3237.0,1200.0,1196.0,mtf_fixed,large_resnet,0.6484399135001545,0.6589554873877254,0.6484795815451709,0.6425649120546357,2.0,0.61,0.6389844309359689,0.61,0.5885485199175925,2.0,0.6605351170568562,0.6617314223706647,0.6604614614530638,0.6598416812609458,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,merged,classification,2.0,3237.0,1200.0,1196.0,heatmap_fixed,large_resnet,0.6178560395427866,0.6192589911830093,0.6178727044651318,0.6167486592751285,2.0,0.5341666666666667,0.5341667615743377,0.5341666666666667,0.5341663431710717,2.0,0.5025083612040134,0.502447987336047,0.5024216799076071,0.5011241216813523,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,merged,classification,2.0,3237.0,1200.0,1196.0,heatmap_zoomed,large_resnet,0.6243435279579858,0.629417246417225,0.6243740317963979,0.6206594806218106,2.0,0.5508333333333333,0.5534601575760054,0.5508333333333333,0.5452471365263997,2.0,0.532608695652174,0.5330890308766415,0.5324969309541587,0.5304549971731671,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,merged,classification,2.0,3237.0,1200.0,1196.0,baseline_fixed,large_resnet,0.7188755020080321,0.7189086648121011,0.7188735664478753,0.7188636696810606,2.0,0.6258333333333334,0.6273276649567845,0.6258333333333334,0.624732287440581,2.0,0.6362876254180602,0.6364076474473063,0.6363103777093593,0.6362304055891836,2.0,,,,,,,,,,,,, -Filtered,meta_delay_label,merged,classification,2.0,3237.0,1200.0,1196.0,baseline_zoomed,large_resnet,0.8662341674389867,0.8673409375466647,0.866242648524055,0.866135233288047,2.0,0.5708333333333333,0.5731600253621421,0.5708333333333333,0.5673938137315364,2.0,0.5994983277591973,0.5995049504950495,0.5994874204075469,0.5994756473133915,2.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,2d,classification,3.0,3237.0,1198.0,1198.0,gaf_fixed,large_resnet,0.7896200185356812,0.7902114887718173,0.7896200185356812,0.7893112531101397,3.0,0.333889816360601,0.3325920200764851,0.333965661641541,0.3321190929218137,3.0,0.333889816360601,0.3336203900589051,0.3339489112227805,0.3332987400916645,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,2d,classification,3.0,3237.0,1198.0,1198.0,mtf_fixed,large_resnet,0.5081865925239419,0.5118224491759703,0.5081865925239418,0.4989563817048156,3.0,0.3823038397328882,0.3799252095912073,0.3824539363484087,0.3699154938700668,3.0,0.3998330550918197,0.3949739952832189,0.4001172529313233,0.3865059961632225,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,2d,classification,3.0,3237.0,1198.0,1198.0,heatmap_fixed,large_resnet,0.458758109360519,0.4692294859266399,0.458758109360519,0.4482559963891743,3.0,0.4056761268781302,0.3927360873420247,0.4058835845896147,0.3848241240813443,3.0,0.3848080133555926,0.3902324792845487,0.3848199329983249,0.3677699217778882,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,2d,classification,3.0,3237.0,1198.0,1198.0,heatmap_zoomed,large_resnet,0.409329626197096,0.4923149841797856,0.409329626197096,0.3642008533083611,3.0,0.3330550918196995,0.3381341344044284,0.3327177554438861,0.2733898568004635,3.0,0.335559265442404,0.3490815907574121,0.3351591289782245,0.261615447121062,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,2d,classification,3.0,3237.0,1198.0,1198.0,baseline_fixed,large_resnet,0.6660488106271238,0.6714681828260559,0.666048810627124,0.6648111670112444,3.0,0.3764607679465776,0.3837058947442334,0.3764154103852596,0.3732238164703843,3.0,0.3639398998330551,0.3638281994466195,0.3638944723618091,0.3586092179860298,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,2d,classification,3.0,3237.0,1198.0,1198.0,baseline_zoomed,large_resnet,0.3333333333333333,0.1111111111111111,0.3333333333333333,0.1666666666666666,3.0,0.3347245409015025,0.4447229184071289,0.3341708542713568,0.1686505974809702,3.0,0.333889816360601,0.1112966054535336,0.3333333333333333,0.1668752607425949,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,timeseries,classification,3.0,3237.0,1198.0,1198.0,,,0.417979610750695,0.4177029326929393,0.417979610750695,0.4068211124835077,3.0,0.3914858096828046,0.3829192196468269,0.3917755443886097,0.3587241195702924,3.0,0.4065108514190317,0.4218930761515633,0.40678810720268,0.385074716256667,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,merged,classification,3.0,3237.0,1198.0,1198.0,gaf_fixed,large_resnet,0.7618164967562558,0.7626126066312008,0.7618164967562557,0.7617755449624908,3.0,0.3664440734557596,0.3661390144127143,0.3663902847571189,0.3656538927807967,3.0,0.3597662771285476,0.3602046590825836,0.3597278056951423,0.3596654406437805,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,merged,classification,3.0,3237.0,1198.0,1198.0,mtf_fixed,large_resnet,0.8937287611986408,0.8949979403024145,0.8937287611986408,0.8933711165194443,3.0,0.3614357262103506,0.3612055408494419,0.3613358458961473,0.3585500760259684,3.0,0.3380634390651085,0.338601474524062,0.3380443886097152,0.3380640746742058,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,merged,classification,3.0,3237.0,1198.0,1198.0,heatmap_fixed,large_resnet,0.4405313561940068,0.476171170240534,0.4405313561940068,0.4025425303751353,3.0,0.3914858096828046,0.3776971651800546,0.3915536013400335,0.3485483452125926,3.0,0.3731218697829716,0.3906990414415463,0.3730318257956448,0.3242797826547838,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,merged,classification,3.0,3237.0,1198.0,1198.0,heatmap_zoomed,large_resnet,0.4643188137164041,0.4758966712555521,0.464318813716404,0.456850033660084,3.0,0.3464106844741235,0.3477001367493728,0.3461515912897822,0.3363937375928692,3.0,0.3397328881469115,0.3440361767454278,0.339572864321608,0.3361764413916363,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,merged,classification,3.0,3237.0,1198.0,1198.0,baseline_fixed,large_resnet,0.6923076923076923,0.7291475000623855,0.6923076923076922,0.6866047019757362,3.0,0.3722871452420701,0.3681003261950077,0.3726214405360133,0.3593125828419946,3.0,0.3706176961602671,0.3786520309769649,0.3709757118927974,0.3553504319366738,3.0,,,,,,,,,,,,, -Filtered,meta_spatial_filter_label,merged,classification,3.0,3237.0,1198.0,1198.0,baseline_zoomed,large_resnet,0.9703429101019464,0.9704767435282534,0.9703429101019464,0.9703540189440863,3.0,0.3706176961602671,0.3717521461319109,0.3705904522613065,0.3707006922833624,3.0,0.3772954924874791,0.3777531990255776,0.3773450586264656,0.3775295890049519,3.0,,,,,,,,,,,,, -Gap,gap_label,2d,classification,4.0,1680.0,600.0,600.0,gaf_fixed,large_resnet,0.9851190476190476,0.9852980988769438,0.9851190476190476,0.9851086720493878,4.0,0.2416666666666666,0.2427702514088794,0.2416666666666667,0.2392391552452196,4.0,0.2583333333333333,0.2588015749778172,0.2583333333333333,0.2515198836856084,4.0,,,,,,,,,,,,, -Gap,gap_label,2d,classification,4.0,1680.0,600.0,600.0,mtf_fixed,large_resnet,0.9452380952380952,0.9456027389826048,0.9452380952380952,0.945195648943861,4.0,0.2466666666666666,0.2448109349374908,0.2466666666666666,0.2446992063147043,4.0,0.2366666666666666,0.2379410044890135,0.2366666666666666,0.2355622372840464,4.0,,,,,,,,,,,,, -Gap,gap_label,2d,classification,4.0,1680.0,600.0,600.0,heatmap_fixed,large_resnet,0.3345238095238095,0.3630360807325571,0.3345238095238095,0.3104909960695292,4.0,0.2633333333333333,0.269688501317876,0.2633333333333333,0.2286589131288421,4.0,0.255,0.2687055001685586,0.255,0.2185778746289909,4.0,,,,,,,,,,,,, -Gap,gap_label,2d,classification,4.0,1680.0,600.0,600.0,heatmap_zoomed,large_resnet,0.4392857142857143,0.4585761008452132,0.4392857142857143,0.4333158479692067,4.0,0.2433333333333333,0.2325018842345185,0.2433333333333333,0.22532501561654,4.0,0.2433333333333333,0.2461858416702914,0.2433333333333333,0.2363971151786833,4.0,,,,,,,,,,,,, -Gap,gap_label,2d,classification,4.0,1680.0,600.0,600.0,baseline_fixed,large_resnet,0.3523809523809524,0.3873788203275434,0.3523809523809523,0.3287993636494896,4.0,0.265,0.2455069073543625,0.265,0.2238299073111498,4.0,0.2616666666666666,0.2406892077208573,0.2616666666666666,0.2145912451542156,4.0,,,,,,,,,,,,, -Gap,gap_label,2d,classification,4.0,1680.0,600.0,600.0,baseline_zoomed,large_resnet,0.9928571428571428,0.992991260745138,0.9928571428571428,0.9928664596595485,4.0,0.2883333333333333,0.2893179418120502,0.2883333333333333,0.2804319174052094,4.0,0.2516666666666666,0.2516336578579348,0.2516666666666666,0.2422332571078196,4.0,,,,,,,,,,,,, -Gap,gap_label,timeseries,classification,4.0,1680.0,600.0,600.0,,,0.2892857142857143,0.3121094631245815,0.2892857142857142,0.2501764918700827,4.0,0.2583333333333333,0.30894268455338,0.2583333333333333,0.2219925400993372,4.0,0.2433333333333333,0.2379661948923829,0.2433333333333333,0.1699185498927331,4.0,,,,,,,,,,,,, -Gap,gap_label,merged,classification,4.0,1680.0,600.0,600.0,gaf_fixed,large_resnet,0.9988095238095238,0.9988109376767332,0.9988095238095238,0.9988095229659312,4.0,0.2583333333333333,0.2589184814454139,0.2583333333333333,0.2585684264279196,4.0,0.24,0.2403910854691846,0.24,0.2393386607467043,4.0,,,,,,,,,,,,, -Gap,gap_label,merged,classification,4.0,1680.0,600.0,600.0,mtf_fixed,large_resnet,0.3386904761904762,0.3558595501710335,0.3386904761904762,0.3192966073047466,4.0,0.2966666666666667,0.2981617370362008,0.2966666666666667,0.2718020023492107,4.0,0.2333333333333333,0.2278574203574203,0.2333333333333333,0.2049063504546946,4.0,,,,,,,,,,,,, -Gap,gap_label,merged,classification,4.0,1680.0,600.0,600.0,heatmap_fixed,large_resnet,0.3779761904761904,0.3865511645920749,0.3779761904761904,0.369910313942249,4.0,0.245,0.2414685314136031,0.245,0.2375801453849387,4.0,0.2383333333333333,0.2375647764589275,0.2383333333333333,0.2202900159802396,4.0,,,,,,,,,,,,, -Gap,gap_label,merged,classification,4.0,1680.0,600.0,600.0,heatmap_zoomed,large_resnet,0.5565476190476191,0.5721525969713805,0.5565476190476191,0.5567300447439769,4.0,0.235,0.2398088002192567,0.235,0.234411161528097,4.0,0.2683333333333333,0.2642008518673335,0.2683333333333333,0.2606030540334146,4.0,,,,,,,,,,,,, -Gap,gap_label,merged,classification,4.0,1680.0,600.0,600.0,baseline_fixed,large_resnet,0.3494047619047619,0.4157518634465116,0.3494047619047619,0.3322178035456091,4.0,0.24,0.2509206228485889,0.24,0.2111583783699416,4.0,0.2266666666666666,0.2546311141959241,0.2266666666666666,0.1921738363369025,4.0,,,,,,,,,,,,, -Gap,gap_label,merged,classification,4.0,1680.0,600.0,600.0,baseline_zoomed,large_resnet,0.999404761904762,0.9994061757719714,0.999404761904762,0.9994047610611692,4.0,0.2583333333333333,0.2586984805761039,0.2583333333333333,0.2584404314980744,4.0,0.2533333333333333,0.2535748223901534,0.2533333333333333,0.2523332185101639,4.0,,,,,,,,,,,,, -Gap,group_category_label,2d,classification,2.0,1680.0,600.0,600.0,gaf_fixed,large_resnet,0.981547619047619,0.9825682363452022,0.9804344846491228,0.9813722646325904,2.0,0.525,0.5217595982843394,0.5208333333333334,0.5174603174603174,2.0,0.5466666666666666,0.5444730444730445,0.5415331196581197,0.536231884057971,2.0,,,,,,,,,,,,, -Gap,group_category_label,2d,classification,2.0,1680.0,600.0,600.0,mtf_fixed,large_resnet,0.5535714285714286,0.5623186002156066,0.5171669407894737,0.4276515179045141,2.0,0.5316666666666666,0.5610628390379723,0.5141559829059829,0.4071208791208791,2.0,0.5333333333333333,0.5598430346631786,0.516292735042735,0.417022930431403,2.0,,,,,,,,,,,,, -Gap,group_category_label,2d,classification,2.0,1680.0,600.0,600.0,heatmap_fixed,large_resnet,0.7392857142857143,0.7412685075847034,0.742701480263158,0.7391378332387974,2.0,0.6233333333333333,0.6232895457033388,0.6203258547008547,0.6195286195286196,2.0,0.6983333333333334,0.6981531486481982,0.6984508547008547,0.6981446737544299,2.0,,,,,,,,,,,,, -Gap,group_category_label,2d,classification,2.0,1680.0,600.0,600.0,heatmap_zoomed,large_resnet,0.6053571428571428,0.6513441068068764,0.575452302631579,0.5309829424226231,2.0,0.5366666666666666,0.5499434796012743,0.5216346153846154,0.4501509777291367,2.0,0.5616666666666666,0.5842712842712843,0.5487446581196581,0.5024452074879159,2.0,,,,,,,,,,,,, -Gap,group_category_label,2d,classification,2.0,1680.0,600.0,600.0,baseline_fixed,large_resnet,0.9386904761904762,0.937664596273292,0.940138432017544,0.9384407625746588,2.0,0.62,0.6195430436556508,0.6173878205128205,0.6168968646032866,2.0,0.6333333333333333,0.6334725987821681,0.6336805555555556,0.6332314531814394,2.0,,,,,,,,,,,,, -Gap,group_category_label,2d,classification,2.0,1680.0,600.0,600.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,2.0,0.5766666666666667,0.5785113687248122,0.5702457264957265,0.5619430870939925,2.0,0.6416666666666667,0.6425835235288047,0.6383547008547008,0.6374112852224018,2.0,,,,,,,,,,,,, -Gap,group_category_label,timeseries,classification,2.0,1680.0,600.0,600.0,,,0.5970238095238095,0.5991038451871615,0.5996436403508771,0.5968488307176973,2.0,0.6216666666666667,0.6221998643706018,0.6223290598290598,0.6216403916938676,2.0,0.6116666666666667,0.6120311197554876,0.6121794871794872,0.6116138029898515,2.0,,,,,,,,,,,,, -Gap,group_category_label,merged,classification,2.0,1680.0,600.0,600.0,gaf_fixed,large_resnet,0.9565476190476192,0.9610778878012431,0.9531935307017544,0.9559037836667816,2.0,0.5416666666666666,0.5391600247479711,0.5359241452991453,0.5288393170740064,2.0,0.58,0.5819964349376114,0.5737179487179487,0.565936337329475,2.0,,,,,,,,,,,,, -Gap,group_category_label,merged,classification,2.0,1680.0,600.0,600.0,mtf_fixed,large_resnet,0.7386904761904762,0.7368999750916272,0.7376302083333333,0.7371886036665739,2.0,0.585,0.5838073782033231,0.5827991452991452,0.5824377918952685,2.0,0.555,0.5535672226023172,0.5531517094017093,0.5529123490521016,2.0,,,,,,,,,,,,, -Gap,group_category_label,merged,classification,2.0,1680.0,600.0,600.0,heatmap_fixed,large_resnet,0.731547619047619,0.7452372372372372,0.7186129385964912,0.7188520310758897,2.0,0.605,0.6347670250896058,0.5941506410256411,0.5673485035187164,2.0,0.6733333333333333,0.6968253968253968,0.6655982905982906,0.6567185091775256,2.0,,,,,,,,,,,,, -Gap,group_category_label,merged,classification,2.0,1680.0,600.0,600.0,heatmap_zoomed,large_resnet,0.7488095238095238,0.7580715733235077,0.7559964364035088,0.7487183558660738,2.0,0.5466666666666666,0.5450458550620392,0.5446047008547008,0.5442155592296349,2.0,0.615,0.6219235918031099,0.6185897435897436,0.6133664733499034,2.0,,,,,,,,,,,,, -Gap,group_category_label,merged,classification,2.0,1680.0,600.0,600.0,baseline_fixed,large_resnet,0.9392857142857144,0.9464337042664148,0.9346217105263158,0.938166739074897,2.0,0.61,0.6254960317460317,0.6013621794871795,0.5861629881154499,2.0,0.6366666666666667,0.6508493065295309,0.6292735042735043,0.619904453045995,2.0,,,,,,,,,,,,, -Gap,group_category_label,merged,classification,2.0,1680.0,600.0,600.0,baseline_zoomed,large_resnet,0.8970238095238096,0.9061237331208192,0.9045367324561404,0.8970132641841515,2.0,0.5633333333333334,0.566693722943723,0.5658386752136753,0.5626335470085471,2.0,0.6016666666666667,0.6070758738277919,0.6048344017094017,0.600458052274798,2.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,2d,classification,4.0,1408.0,512.0,512.0,gaf_fixed,large_resnet,0.8515625,0.9296760443307758,0.8122333319701741,0.860496046246651,4.0,0.48828125,0.2451335656213705,0.2486764983928909,0.2455921596960833,4.0,0.474609375,0.2380840659883433,0.2410714285714285,0.23579066175597,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,2d,classification,4.0,1408.0,512.0,512.0,mtf_fixed,large_resnet,0.4857954545454545,0.2464028776978417,0.2499156545209176,0.1689790260366441,4.0,0.498046875,0.1966760961810466,0.2471875590848931,0.1697454918436171,4.0,0.4921875,0.248,0.25,0.1749274661508704,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,2d,classification,4.0,1408.0,512.0,512.0,heatmap_fixed,large_resnet,0.5092329545454546,0.3169733591344457,0.2616209326735642,0.1957428534000837,4.0,0.5,0.2310238069819579,0.2484401588201928,0.1802075220460769,4.0,0.486328125,0.2148233158962314,0.2470238095238095,0.1753312365338418,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,2d,classification,4.0,1408.0,512.0,512.0,heatmap_zoomed,large_resnet,0.546875,0.3310684785504929,0.2803831159094317,0.235046177319201,4.0,0.494140625,0.2281894766902263,0.2457222537341652,0.184436265488897,4.0,0.484375,0.2297130515273063,0.246031746031746,0.1936249796714913,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,2d,classification,4.0,1408.0,512.0,512.0,baseline_fixed,large_resnet,0.6463068181818182,0.82371473826509,0.3732679357679357,0.4084055067550213,4.0,0.53515625,0.2676606589650068,0.2718850444318397,0.2696711941252834,4.0,0.52734375,0.2636575030214022,0.2678571428571428,0.2655693208476318,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,2d,classification,4.0,1408.0,512.0,512.0,baseline_zoomed,large_resnet,0.7691761363636364,0.901222570240692,0.6356275303643725,0.7093316319811498,4.0,0.447265625,0.2213991068725401,0.2297929665343165,0.2133297622815774,4.0,0.498046875,0.24952888668485,0.2529761904761904,0.246303695711457,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,timeseries,classification,4.0,1408.0,512.0,512.0,,,0.4872159090909091,0.2778571428571428,0.2506841355525566,0.1669088426914655,4.0,0.50390625,0.1259765625,0.25,0.1675324675324675,4.0,0.494140625,0.2661244695898161,0.2509920634920635,0.1721870011169879,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,merged,classification,4.0,1408.0,512.0,512.0,gaf_fixed,large_resnet,0.8011363636363636,0.8995903844323322,0.7872858136016032,0.8355886155587414,4.0,0.478515625,0.2390382705675655,0.242838910947249,0.2409158428321549,4.0,0.54296875,0.2724935834468772,0.2757936507936508,0.2718407636827803,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,merged,classification,4.0,1408.0,512.0,512.0,mtf_fixed,large_resnet,0.6967329545454546,0.8359676806792392,0.8001744843850107,0.8060565512068365,4.0,0.474609375,0.2393496604239555,0.2429807146908678,0.233571854502087,4.0,0.521484375,0.2620731937370307,0.2648809523809524,0.255962988211562,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,merged,classification,4.0,1408.0,512.0,512.0,heatmap_fixed,large_resnet,0.5944602272727273,0.6225508945871814,0.435621396147712,0.4884514501157682,4.0,0.490234375,0.2478357398415537,0.2500709018718094,0.2462750390346093,4.0,0.458984375,0.2298691726552423,0.2331349206349206,0.2313519813519813,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,merged,classification,4.0,1408.0,512.0,512.0,heatmap_zoomed,large_resnet,0.5845170454545454,0.6514625397107272,0.7865965662018294,0.6307360503039657,4.0,0.458984375,0.2488849765258216,0.2373558328606541,0.2005278526504941,4.0,0.458984375,0.2182470193740685,0.2331349206349206,0.1907953055458087,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,merged,classification,4.0,1408.0,512.0,512.0,baseline_fixed,large_resnet,0.6960227272727273,0.8493288402309314,0.4649071688545373,0.5236580547773312,4.0,0.5078125,0.2549330596631991,0.2587445641898279,0.2551638072800644,4.0,0.505859375,0.2532816991376557,0.2569444444444444,0.2522261589352062,4.0,,,,,,,,,,,,, -Head_fixed,meta_condition_label,merged,classification,4.0,1408.0,512.0,512.0,baseline_zoomed,large_resnet,0.7627840909090909,0.8453056242242715,0.588598535966957,0.6562182250542191,4.0,0.482421875,0.2414710845221659,0.2448241633579126,0.2431251845979262,4.0,0.513671875,0.2578359299303302,0.2609126984126984,0.2593612013460677,4.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,2d,classification,2.0,1408.0,512.0,512.0,gaf_fixed,large_resnet,1.0,1.0,1.0,1.0,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,2d,classification,2.0,1408.0,512.0,512.0,mtf_fixed,large_resnet,0.9971590909090908,0.9985724482512492,0.8181818181818181,0.8881740926058296,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,2d,classification,2.0,1408.0,512.0,512.0,heatmap_fixed,large_resnet,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,2d,classification,2.0,1408.0,512.0,512.0,heatmap_zoomed,large_resnet,0.9438920454545454,0.510520625415835,0.5658554044380816,0.5096434034711844,2.0,0.90234375,0.4957081545064378,0.4547244094488189,0.4743326488706365,2.0,0.951171875,0.5187841530054645,0.6440733464309103,0.5244994241985215,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,2d,classification,2.0,1408.0,512.0,512.0,baseline_fixed,large_resnet,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,2d,classification,2.0,1408.0,512.0,512.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,timeseries,classification,2.0,1408.0,512.0,512.0,,,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,merged,classification,2.0,1408.0,512.0,512.0,gaf_fixed,large_resnet,1.0,1.0,1.0,1.0,2.0,0.986328125,0.4960707269155206,0.4970472440944882,0.4965585054080629,2.0,0.9921875,0.49706457925636,0.4990176817288801,0.4980392156862745,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,merged,classification,2.0,1408.0,512.0,512.0,mtf_fixed,large_resnet,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,merged,classification,2.0,1408.0,512.0,512.0,heatmap_fixed,large_resnet,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,merged,classification,2.0,1408.0,512.0,512.0,heatmap_zoomed,large_resnet,1.0,1.0,1.0,1.0,2.0,0.984375,0.580368906455863,0.6200787401574803,0.5960552268244576,2.0,0.990234375,0.4970588235294118,0.4980353634577603,0.4975466143277723,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,merged,classification,2.0,1408.0,512.0,512.0,baseline_fixed,large_resnet,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Head_fixed,meta_guided_viewing_label,merged,classification,2.0,1408.0,512.0,512.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,2.0,0.9921875,0.49609375,0.5,0.4980392156862745,2.0,0.994140625,0.4970703125,0.5,0.4985308521057786,2.0,,,,,,,,,,,,, -Memory_1,group_category_label,2d,classification,4.0,6740.0,2248.0,1796.0,gaf_fixed,large_resnet,0.9983679525222552,0.998590287187018,0.9982768060645522,0.998432146521376,4.0,0.2584519572953737,0.2726096973171303,0.3131033188497951,0.2575580884302906,4.0,0.3340757238307349,0.3211502945229302,0.3341059883957294,0.3240339238487333,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,2d,classification,4.0,6740.0,2248.0,1796.0,mtf_fixed,large_resnet,0.9707715133531156,0.9742457490469776,0.9684122571827906,0.9709887520792037,4.0,0.2588967971530249,0.2748769739609202,0.299197812161462,0.2565010168607516,4.0,0.3123608017817372,0.3067627856107133,0.3123824382666949,0.3060322579631678,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,2d,classification,4.0,6740.0,2248.0,1796.0,heatmap_fixed,large_resnet,0.9859050445103856,0.9862643753915918,0.9856096020647784,0.9859174861731764,4.0,0.248220640569395,0.2821498933899795,0.3154346386180585,0.2514495106763392,4.0,0.3201559020044543,0.3081122973854461,0.3202021577933326,0.2993582326792664,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,2d,classification,4.0,6740.0,2248.0,1796.0,heatmap_zoomed,large_resnet,0.4643916913946587,0.4617593299344875,0.4473360131402786,0.4475563198284109,4.0,0.2064056939501779,0.2393497308154836,0.2844156392774716,0.2044470316043887,4.0,0.3173719376391982,0.3030883465813941,0.3174033069519567,0.2938778610123026,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,2d,classification,4.0,6740.0,2248.0,1796.0,baseline_fixed,large_resnet,0.9409495548961424,0.9405720715691678,0.9437493740399152,0.9403678845884448,4.0,0.2731316725978647,0.3003440302258931,0.3214146619330225,0.26867572400661,4.0,0.2789532293986637,0.2984004407871394,0.2789549472814366,0.2609734707080118,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,2d,classification,4.0,6740.0,2248.0,1796.0,baseline_zoomed,large_resnet,0.9876854599406528,0.9881079492314911,0.9876973239202544,0.9878466047326996,4.0,0.2322064056939501,0.250785107067874,0.291872085629504,0.2311143393977096,4.0,0.3296213808463251,0.3200934214311025,0.3296516785537526,0.3188478109933553,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,timeseries,classification,4.0,6740.0,2248.0,1796.0,,,0.4249258160237388,0.3892168764267688,0.3829003976832081,0.3093769811865033,4.0,0.2317615658362989,0.1865262937323166,0.3555064233903254,0.1994295260322108,4.0,0.3624721603563474,0.3159993007699661,0.3625007512284795,0.2739567345250296,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,merged,classification,4.0,6740.0,2248.0,1796.0,gaf_fixed,large_resnet,0.9908011869436202,0.9912150929689216,0.9903459467518476,0.9907655361569756,4.0,0.244661921708185,0.2670434694680386,0.3083226473081814,0.2455857529960904,4.0,0.3407572383073496,0.3272235387505796,0.3407725722063138,0.3261684133163084,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,merged,classification,4.0,6740.0,2248.0,1796.0,mtf_fixed,large_resnet,0.9522255192878338,0.9547010873452132,0.950864379429948,0.9525710748139484,4.0,0.2588967971530249,0.2674538482385415,0.294410561207668,0.2534027258637348,4.0,0.3017817371937639,0.2967709977430922,0.3017823392812953,0.296729260562881,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,merged,classification,4.0,6740.0,2248.0,1796.0,heatmap_fixed,large_resnet,0.9707715133531156,0.9725190205403912,0.970023125301816,0.9711310432687328,4.0,0.2277580071174377,0.2580024615127936,0.307812823818944,0.2291089205339741,4.0,0.294543429844098,0.2724681898405796,0.2946131891416552,0.2641515147006567,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,merged,classification,4.0,6740.0,2248.0,1796.0,heatmap_zoomed,large_resnet,0.935459940652819,0.9361965001133158,0.9331215654590476,0.93430304416646,4.0,0.2629003558718861,0.2826896905844274,0.3209587248598747,0.2633192360749292,4.0,0.3129175946547884,0.3025514170190984,0.312961508378407,0.304598180001745,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,merged,classification,4.0,6740.0,2248.0,1796.0,baseline_fixed,large_resnet,0.960385756676558,0.9616039755293956,0.958568654055315,0.9596333620007216,4.0,0.2326512455516014,0.2622256614798999,0.3012398291413499,0.2341173956307273,4.0,0.3084632516703786,0.2696246720464806,0.3085875910312157,0.2816534922827624,4.0,,,,,,,,,,,,, -Memory_1,group_category_label,merged,classification,4.0,6740.0,2248.0,1796.0,baseline_zoomed,large_resnet,0.9881305637982196,0.9882666874491868,0.9878953110681176,0.9880294459142348,4.0,0.219306049822064,0.234691134728761,0.2706452681220856,0.2160385167912978,4.0,0.3257238307349666,0.3124573406575918,0.32572676384028,0.3112622821927073,4.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,2d,classification,5.0,6468.0,2158.0,2158.0,gaf_fixed,large_resnet,0.9778911564625852,0.9780984901254844,0.9778906883340188,0.9779228596007632,5.0,0.2071362372567191,0.207779844567317,0.2071345707656612,0.2070844871381524,5.0,0.2034291010194624,0.2032452287968685,0.2034065460809647,0.2029187686492302,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,2d,classification,5.0,6468.0,2158.0,2158.0,mtf_fixed,large_resnet,0.2340754483611626,0.2645387795314772,0.2339346605781009,0.192356123975025,5.0,0.2173308619091751,0.2245667631384836,0.217494844031967,0.1661836412583584,5.0,0.2085264133456904,0.2091308833061973,0.2083720930232558,0.158175993576651,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,2d,classification,5.0,6468.0,2158.0,2158.0,heatmap_fixed,large_resnet,0.2535559678416821,0.3244479208402133,0.2533796842944845,0.1899755695043727,5.0,0.227062094531974,0.2310926424607458,0.2273105181747873,0.1394762198463482,5.0,0.2201112140871177,0.2366554512249876,0.2199483204134367,0.1347980466824388,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,2d,classification,5.0,6468.0,2158.0,2158.0,heatmap_zoomed,large_resnet,0.2401051329622758,0.3472408846131751,0.2399228419859184,0.1693660421778534,5.0,0.2140871177015755,0.227499768358621,0.2143228495316662,0.1249142493461981,5.0,0.2071362372567191,0.2248857813672159,0.2069745908699397,0.1147850326859181,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,2d,classification,5.0,6468.0,2158.0,2158.0,baseline_fixed,large_resnet,0.295299938157081,0.2932100114829777,0.2952331010157707,0.2806564756912389,5.0,0.216867469879518,0.2067140496827483,0.2169437999484403,0.2047911537388355,5.0,0.2312326227988878,0.2228409570629757,0.2312209302325581,0.2196471847486519,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,2d,classification,5.0,6468.0,2158.0,2158.0,baseline_zoomed,large_resnet,0.6287878787878788,0.6368200508701737,0.6287849674854507,0.6298358046325623,5.0,0.1974050046339203,0.1972637148382662,0.197420941823494,0.1968239890581397,5.0,0.1978683966635774,0.1980409892714482,0.197906976744186,0.1971078705672113,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,timeseries,classification,5.0,6468.0,2158.0,2158.0,,,0.2462894248608534,0.2772480825092651,0.2462169014242778,0.2126139676272103,5.0,0.2335495829471733,0.2289670427965432,0.2336147632551345,0.1947810669620296,5.0,0.206209453197405,0.2059501371649332,0.2061218776916451,0.1793422895315606,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,merged,classification,5.0,6468.0,2158.0,2158.0,gaf_fixed,large_resnet,0.9700061842918986,0.9703196951401092,0.9700068366364544,0.9700639871140672,5.0,0.1904541241890639,0.1920404302602104,0.1904560883389189,0.1910134333662806,5.0,0.2122335495829471,0.2118993387985881,0.2122394487510766,0.2119862860989086,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,merged,classification,5.0,6468.0,2158.0,2158.0,mtf_fixed,large_resnet,0.6702226345083488,0.6718333484918617,0.6702243819168304,0.6701520755663644,5.0,0.2108433734939759,0.210690862670797,0.2108640543095299,0.2102862358083816,5.0,0.201112140871177,0.2009143223121139,0.2011498708010336,0.2002102260763845,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,merged,classification,5.0,6468.0,2158.0,2158.0,heatmap_fixed,large_resnet,0.4179035250463822,0.4218013760972371,0.4178699603749933,0.4140968276596985,5.0,0.2451343836886005,0.2418216543082562,0.2452049497293116,0.238550862351815,5.0,0.2414272474513438,0.2340742481253201,0.2414298018949182,0.2325439369688136,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,merged,classification,5.0,6468.0,2158.0,2158.0,heatmap_zoomed,large_resnet,0.4302721088435374,0.4484693208265222,0.4302573119445014,0.430414870142752,5.0,0.2025023169601482,0.2059987901756596,0.2025489816963134,0.1986181516299904,5.0,0.1946246524559777,0.191827327846868,0.1946576227390181,0.1892259861450099,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,merged,classification,5.0,6468.0,2158.0,2158.0,baseline_fixed,large_resnet,0.4083178726035869,0.4073458205412925,0.4082553553861449,0.3992061696643636,5.0,0.2367933271547729,0.2286233688441128,0.2368716163959783,0.2249317964782643,5.0,0.2312326227988878,0.2214378329545941,0.2312252368647717,0.2224353701455313,5.0,,,,,,,,,,,,, -Memory_1,group_iteration_label,merged,classification,5.0,6468.0,2158.0,2158.0,baseline_zoomed,large_resnet,0.9846938775510204,0.9848018364812344,0.984694536624122,0.984706303225334,5.0,0.216404077849861,0.21610598233104,0.2163927558649136,0.2159625889140095,5.0,0.2205746061167748,0.2205352423114608,0.2206007751937984,0.2203782653051559,5.0,,,,,,,,,,,,, -Memory_2,condition_label,2d,classification,3.0,3597.0,1259.0,1259.0,gaf_fixed,large_resnet,0.7194884626077287,0.7412466059135744,0.7194542687601072,0.7200952808469707,3.0,0.3550436854646545,0.3547869960397758,0.3549588968443384,0.3462948298093271,3.0,0.3550436854646545,0.3605150976474506,0.3549892033185589,0.3504738624844006,3.0,,,,,,,,,,,,, -Memory_2,condition_label,2d,classification,3.0,3597.0,1259.0,1259.0,mtf_fixed,large_resnet,0.400611620795107,0.4216367143066262,0.4005281394453332,0.3849258210222689,3.0,0.3733121525019857,0.3791897391789329,0.3731863469333636,0.3561796744345865,3.0,0.3741064336775218,0.3768784100375424,0.374010304201235,0.3651807378021151,3.0,,,,,,,,,,,,, -Memory_2,condition_label,2d,classification,3.0,3597.0,1259.0,1259.0,heatmap_fixed,large_resnet,0.9752571587433972,0.975346273894719,0.9752578464184198,0.975234913792968,3.0,0.607625099285147,0.6077705375548007,0.6075785127097776,0.6071174385863733,3.0,0.6060365369340747,0.6060995603249125,0.6060461416070008,0.6057036089642676,3.0,,,,,,,,,,,,, -Memory_2,condition_label,2d,classification,3.0,3597.0,1259.0,1259.0,heatmap_zoomed,large_resnet,0.6552682791214901,0.6568538309272357,0.655265093306439,0.6549845770838035,3.0,0.4130262112787927,0.4141521912748327,0.4130393605333939,0.4131997717349882,3.0,0.4217633042096902,0.4227651246999828,0.4217998257377732,0.4212421484651784,3.0,,,,,,,,,,,,, -Memory_2,condition_label,2d,classification,3.0,3597.0,1259.0,1259.0,baseline_fixed,large_resnet,0.987489574645538,0.9875768304631564,0.9874870184901812,0.9875012065392784,3.0,0.6568705321683876,0.6627238084157002,0.6568189566996249,0.6567971421899251,3.0,0.7077045274027005,0.708569223341089,0.7076864795241883,0.7075655580487732,3.0,,,,,,,,,,,,, -Memory_2,condition_label,2d,classification,3.0,3597.0,1259.0,1259.0,baseline_zoomed,large_resnet,0.9977759243814288,0.9977777642407548,0.9977749957494104,0.9977753387586702,3.0,0.4590945194598888,0.4620734793148586,0.4591089896579157,0.4588617408097779,3.0,0.4622716441620333,0.4623523906329616,0.4623271583892108,0.4610214939270349,3.0,,,,,,,,,,,,, -Memory_2,condition_label,timeseries,classification,3.0,3597.0,1259.0,1259.0,,,0.440922991381707,0.4434891697235067,0.4407863815282908,0.412803676563908,3.0,0.3788721207307386,0.37787838390302,0.3788972231692996,0.3458068510801013,3.0,0.4011119936457506,0.3739829787593356,0.4012463537523203,0.3539266083125732,3.0,,,,,,,,,,,,, -Memory_2,condition_label,merged,classification,3.0,3597.0,1259.0,1259.0,gaf_fixed,large_resnet,0.9755351681957186,0.9758980977829004,0.9755321390220534,0.9755529193222262,3.0,0.4765687053216839,0.4790939716207936,0.4766299200666742,0.4752310982803576,3.0,0.4527402700555997,0.456748806745033,0.4528109254839565,0.4511402942058188,3.0,,,,,,,,,,,,, -Memory_2,condition_label,merged,classification,3.0,3597.0,1259.0,1259.0,mtf_fixed,large_resnet,0.9855435084792884,0.9856800218877962,0.9855397943379826,0.985537776150228,3.0,0.3566322478157268,0.35466588193746,0.356580293215138,0.3515306064096228,3.0,0.3590150913423351,0.359369511766772,0.3590029169981437,0.3571546171067234,3.0,,,,,,,,,,,,, -Memory_2,condition_label,merged,classification,3.0,3597.0,1259.0,1259.0,heatmap_fixed,large_resnet,0.94356408117876,0.9440196306677328,0.9435777341193096,0.9435037084141946,3.0,0.6219221604447974,0.6219219595088138,0.6219115808614616,0.6209230315258706,3.0,0.6298649722001588,0.6327989841097744,0.629895442663939,0.6289046866615285,3.0,,,,,,,,,,,,, -Memory_2,condition_label,merged,classification,3.0,3597.0,1259.0,1259.0,heatmap_zoomed,large_resnet,0.7545176536002224,0.7568205881747486,0.7545050217294477,0.7547494289575738,3.0,0.4193804606830818,0.4222992520694118,0.4193847785733227,0.419043610792646,3.0,0.4352660841938046,0.4351643833124101,0.435254006137061,0.4345943023909125,3.0,,,,,,,,,,,,, -Memory_2,condition_label,merged,classification,3.0,3597.0,1259.0,1259.0,baseline_fixed,large_resnet,0.9961078676675008,0.9961159493376264,0.9961076344458816,0.9961099423071792,3.0,0.6957903097696585,0.6963159287140535,0.6957551994544834,0.6955812514040666,3.0,0.7005559968228753,0.7004065266348073,0.700562563927719,0.7003823357047553,3.0,,,,,,,,,,,,, -Memory_2,condition_label,merged,classification,3.0,3597.0,1259.0,1259.0,baseline_zoomed,large_resnet,0.9916597164303588,0.9917006393243772,0.9916548423692592,0.9916463554683472,3.0,0.4463860206513105,0.4474341445629386,0.4464124711141418,0.446115916708317,3.0,0.448768864177919,0.448873835741975,0.4488010001136492,0.4482338516993852,3.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,2d,classification,6.0,3597.0,1258.0,1260.0,gaf_fixed,large_resnet,0.9966638865721434,0.9966721945519316,0.9966652754590984,0.9966645653465064,6.0,0.2273449920508744,0.2278894128987779,0.227579365079365,0.2270069530502193,6.0,0.2126984126984127,0.2189601815303266,0.2126984126984127,0.2151633367449597,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,2d,classification,6.0,3597.0,1258.0,1260.0,mtf_fixed,large_resnet,0.9847094801223242,0.9847402956637478,0.9847055091199316,0.9847039199238298,6.0,0.2130365659777424,0.2130334590517086,0.2131791819291819,0.21209554550339,6.0,0.2134920634920634,0.2131896190804287,0.2134920634920635,0.2127850871129931,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,2d,classification,6.0,3597.0,1258.0,1260.0,heatmap_fixed,large_resnet,0.7392271337225466,0.7502141573059996,0.7392759811503007,0.7401036239443387,6.0,0.2551669316375198,0.2526251171181671,0.2555631868131868,0.2515004070408037,6.0,0.2523809523809524,0.2633029896044276,0.2523809523809524,0.2516932656078635,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,2d,classification,6.0,3597.0,1258.0,1260.0,heatmap_zoomed,large_resnet,0.9174311926605504,0.9196025048969564,0.9174554301762692,0.9174136838925256,6.0,0.2154213036565977,0.2198187332901773,0.2155982905982906,0.215806490527667,6.0,0.1968253968253968,0.1992091723071814,0.1968253968253968,0.1965340614703656,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,2d,classification,6.0,3597.0,1258.0,1260.0,baseline_fixed,large_resnet,0.9805393383375036,0.9807301496943251,0.9805393232496376,0.9804788763373428,6.0,0.273449920508744,0.2613892590699038,0.2739316239316239,0.2656344348289554,6.0,0.2523809523809524,0.2516439942810423,0.2523809523809524,0.2511079276715356,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,2d,classification,6.0,3597.0,1258.0,1260.0,baseline_zoomed,large_resnet,0.9997219905476786,0.999722684414864,0.9997217584863662,0.9997219897741392,6.0,0.1995230524642289,0.2023499889573716,0.1996184371184371,0.2007268131575305,6.0,0.1928571428571428,0.195452422467766,0.1928571428571428,0.1935289815412863,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,timeseries,classification,6.0,3597.0,1258.0,1260.0,,,0.2721712538226299,0.2807469256911861,0.2723512772743374,0.2541972327650734,6.0,0.2098569157392686,0.201720019518076,0.2102182539682539,0.1927233432839123,6.0,0.2373015873015873,0.2272314526859974,0.2373015873015873,0.2136257428435073,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,merged,classification,6.0,3597.0,1258.0,1260.0,gaf_fixed,large_resnet,0.2882958020572699,0.2843843630983191,0.2884251437270962,0.2592834523036008,6.0,0.2305246422893481,0.2325818027973892,0.2307310744810745,0.2046187253125362,6.0,0.2539682539682539,0.2285943948636662,0.2539682539682539,0.2237473470160096,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,merged,classification,6.0,3597.0,1258.0,1260.0,mtf_fixed,large_resnet,0.972199054767862,0.972787364421158,0.9722083023917604,0.9722588894245664,6.0,0.1772655007949125,0.1794480877831059,0.1773351648351648,0.1776924081694959,6.0,0.2095238095238095,0.2097628093946546,0.2095238095238095,0.2088460633675393,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,merged,classification,6.0,3597.0,1258.0,1260.0,heatmap_fixed,large_resnet,0.8940783986655546,0.8994634461762198,0.894090562804724,0.8945740694365053,6.0,0.2591414944356121,0.2630705825099521,0.2594551282051281,0.260196374957965,6.0,0.2428571428571428,0.2518524415881392,0.2428571428571428,0.2455763614036316,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,merged,classification,6.0,3597.0,1258.0,1260.0,heatmap_zoomed,large_resnet,0.9510703363914372,0.9513257768640296,0.9510851170878754,0.9510347075993654,6.0,0.205087440381558,0.2062329834380407,0.2052655677655677,0.2051484996558571,6.0,0.2071428571428571,0.2069882867576532,0.2071428571428571,0.2061811775515135,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,merged,classification,6.0,3597.0,1258.0,1260.0,baseline_fixed,large_resnet,0.9335557408951904,0.9342503980891376,0.9335581909400592,0.9337322370836136,6.0,0.2527821939586645,0.266786222074828,0.2531517094017094,0.2580881330759475,6.0,0.242063492063492,0.258856161443422,0.242063492063492,0.2467958695802742,6.0,,,,,,,,,,,,, -Memory_2,group_iteration_label,merged,classification,6.0,3597.0,1258.0,1260.0,baseline_zoomed,large_resnet,0.986099527383931,0.986228072078973,0.98610368513359,0.986103567183238,6.0,0.2034976152623211,0.2081037981241416,0.2036858974358974,0.2045341788448237,6.0,0.2150793650793651,0.2200672280133104,0.215079365079365,0.2157574430709613,6.0,,,,,,,,,,,,, -Patch,scr_label,2d,classification,5.0,2687.0,896.0,894.0,gaf_fixed,large_resnet,0.6029028656494232,0.629774096575015,0.6027708554309453,0.6058602549269809,5.0,0.2131696428571428,0.2110645008111514,0.21398381255646,0.2028506883308513,5.0,0.2181208053691275,0.2194138392530255,0.2179369363714351,0.2155219671834326,5.0,,,,,,,,,,,,, -Patch,scr_label,2d,classification,5.0,2687.0,896.0,894.0,mtf_fixed,large_resnet,0.9609229624116116,0.9619585872421392,0.9609412470850148,0.9610845670083862,5.0,0.1908482142857142,0.1935668727565617,0.1909934059511634,0.1903793612354198,5.0,0.2527964205816554,0.2502112795868636,0.2528990298439799,0.2501304805375456,5.0,,,,,,,,,,,,, -Patch,scr_label,2d,classification,5.0,2687.0,896.0,894.0,heatmap_fixed,large_resnet,0.3784890212132489,0.3981099446573721,0.378407409909539,0.3796593547274335,5.0,0.2633928571428571,0.2721707398315995,0.2634415216416516,0.2635304243668709,5.0,0.2203579418344519,0.2321494966519218,0.2205853018921878,0.2113471144020766,5.0,,,,,,,,,,,,, -Patch,scr_label,2d,classification,5.0,2687.0,896.0,894.0,heatmap_zoomed,large_resnet,0.3308522515816896,0.465920406225227,0.3304223459930596,0.3112376862901569,5.0,0.1941964285714285,0.1981843753995653,0.1937021508928536,0.1566251741557721,5.0,0.2281879194630872,0.2583467524693011,0.2288000334777059,0.1721239291438047,5.0,,,,,,,,,,,,, -Patch,scr_label,2d,classification,5.0,2687.0,896.0,894.0,baseline_fixed,large_resnet,0.5601042054335691,0.5609332263802257,0.5602196383154997,0.5589526873626154,5.0,0.2868303571428571,0.2855080082460758,0.2871049160025987,0.2844311825081971,5.0,0.2348993288590604,0.2385985884320283,0.2349344743651441,0.2329749661157006,5.0,,,,,,,,,,,,, -Patch,scr_label,2d,classification,5.0,2687.0,896.0,894.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,5.0,0.2209821428571428,0.2193282860504709,0.2213359466707751,0.2186766681269857,5.0,0.227069351230425,0.226135377497241,0.2269628746190167,0.2251099539194576,5.0,,,,,,,,,,,,, -Patch,scr_label,timeseries,classification,5.0,2687.0,896.0,894.0,,,0.291030889467808,0.3114280490701067,0.2911205000555646,0.2807397814505771,5.0,0.2611607142857143,0.2768288920092322,0.2614357904291399,0.2534630762562603,5.0,0.2460850111856823,0.2840058119858469,0.2462318052155475,0.2330465884817857,5.0,,,,,,,,,,,,, -Patch,scr_label,merged,classification,5.0,2687.0,896.0,894.0,gaf_fixed,large_resnet,0.2017119464086341,0.2402234636871508,0.2007490636704119,0.0684692814994793,5.0,0.1986607142857142,0.2395530726256983,0.2010989010989011,0.0682305684691297,5.0,0.1991051454138702,0.0398656215005599,0.1988826815642458,0.0664179104477612,5.0,,,,,,,,,,,,, -Patch,scr_label,merged,classification,5.0,2687.0,896.0,894.0,mtf_fixed,large_resnet,0.9237067361369558,0.9265811989681,0.9237425614396576,0.9240586802582008,5.0,0.2198660714285714,0.2201079125909727,0.2198264847118431,0.2131151286718902,5.0,0.2237136465324384,0.2224402322574259,0.2237983944650193,0.2196341263145265,5.0,,,,,,,,,,,,, -Patch,scr_label,merged,classification,5.0,2687.0,896.0,894.0,heatmap_fixed,large_resnet,0.4465947152958689,0.4801790739938111,0.4462527989353645,0.4317002847899943,5.0,0.28125,0.2774999200133775,0.2814977019846111,0.2595360075580328,5.0,0.2404921700223713,0.2444097307965639,0.2406401216356649,0.2250963876779909,5.0,,,,,,,,,,,,, -Patch,scr_label,merged,classification,5.0,2687.0,896.0,894.0,heatmap_zoomed,large_resnet,0.4752512095273539,0.4805293661728079,0.4751303697461265,0.4729052627900043,5.0,0.2287946428571428,0.2261194315136224,0.2293396539130951,0.2255897059042484,5.0,0.2225950782997763,0.2178083730981654,0.2224060008787898,0.2148606786677037,5.0,,,,,,,,,,,,, -Patch,scr_label,merged,classification,5.0,2687.0,896.0,894.0,baseline_fixed,large_resnet,0.6564942314849275,0.6904913944565392,0.656508203834927,0.6542577878743451,5.0,0.2745535714285714,0.2712696640455767,0.2741007714204626,0.2612249443597044,5.0,0.2762863534675615,0.3040980232353397,0.2766326309989607,0.2717379932411822,5.0,,,,,,,,,,,,, -Patch,scr_label,merged,classification,5.0,2687.0,896.0,894.0,baseline_zoomed,large_resnet,0.9988835132117604,0.9988867966901032,0.9988847583643125,0.9988833590210966,5.0,0.2176339285714285,0.2169751101608142,0.2177649076996048,0.2168013595803787,5.0,0.2371364653243848,0.2371228697563109,0.2371629039120094,0.2369352312919966,5.0,,,,,,,,,,,,, -Webtask,condition_label,2d,classification,4.0,2543.0,908.0,910.0,gaf_fixed,large_resnet,0.9386551317341724,0.9582168212112432,0.9535621843839374,0.9527445000861564,4.0,0.5187224669603524,0.6415973468756663,0.6352396878483835,0.6182263868835771,4.0,0.5043956043956044,0.6050549321086847,0.6241666666666666,0.5994001492087464,4.0,,,,,,,,,,,,, -Webtask,condition_label,2d,classification,4.0,2543.0,908.0,910.0,mtf_fixed,large_resnet,0.391663389697208,0.2995072562103889,0.2968344322485326,0.284077888623674,4.0,0.3777533039647577,0.2897805212143447,0.2862931995540691,0.2757176913224308,4.0,0.4021978021978022,0.3121785873365097,0.305,0.2946648296742632,4.0,,,,,,,,,,,,, -Webtask,condition_label,2d,classification,4.0,2543.0,908.0,910.0,heatmap_fixed,large_resnet,0.6795123869445536,0.761049943116993,0.7569582101623638,0.7574924773627119,4.0,0.3920704845814978,0.4816091954022988,0.4423160535117056,0.4591866801639871,4.0,0.432967032967033,0.5724959481017899,0.5216666666666667,0.5436921899028895,4.0,,,,,,,,,,,,, -Webtask,condition_label,2d,classification,4.0,2543.0,908.0,910.0,heatmap_zoomed,large_resnet,0.7707432166732207,0.8267916911532643,0.8261479646391879,0.8262735181940868,4.0,0.36784140969163,0.523646489489391,0.3756243032329989,0.4173750201695399,4.0,0.345054945054945,0.5078000854540828,0.3341666666666666,0.3736550026293155,4.0,,,,,,,,,,,,, -Webtask,condition_label,2d,classification,4.0,2543.0,908.0,910.0,baseline_fixed,large_resnet,0.570979158474243,0.7351266643961141,0.5799950869091103,0.5982433666820473,4.0,0.3854625550660793,0.5489201723218124,0.4133695652173913,0.4290057971509546,4.0,0.4285714285714285,0.5992964572314761,0.5183333333333333,0.518073447171734,4.0,,,,,,,,,,,,, -Webtask,condition_label,2d,classification,4.0,2543.0,908.0,910.0,baseline_zoomed,large_resnet,0.9964608729846638,0.9973406670753582,0.9973125408108856,0.9973174393268344,4.0,0.4151982378854625,0.5566015169993566,0.508185618729097,0.5294162590818491,4.0,0.4186813186813187,0.5611308415698785,0.5349999999999999,0.5472491952670386,4.0,,,,,,,,,,,,, -Webtask,condition_label,timeseries,classification,4.0,2543.0,908.0,910.0,,,0.6629964608729847,0.7355965789752519,0.7446684638731755,0.7226375977034334,4.0,0.6156387665198237,0.6912547859380438,0.7087876254180602,0.6881294481168313,4.0,0.6153846153846154,0.6923394405043342,0.7083333333333334,0.6931612426035503,4.0,,,,,,,,,,,,, -Webtask,condition_label,merged,classification,4.0,2543.0,908.0,910.0,gaf_fixed,large_resnet,0.9598898938261896,0.9615492765655208,0.9695753244198082,0.965397254097595,4.0,0.4944933920704846,0.615550683049975,0.6166666666666667,0.6158211812478083,4.0,0.5098901098901099,0.628712456214211,0.6283333333333333,0.627888507172078,4.0,,,,,,,,,,,,, -Webtask,condition_label,merged,classification,4.0,2543.0,908.0,910.0,mtf_fixed,large_resnet,0.9567440031458908,0.9686166779722468,0.9585342410203832,0.9626487538478152,4.0,0.5220264317180616,0.6298679658699444,0.6375724637681159,0.6288459876738104,4.0,0.521978021978022,0.6303210207540797,0.6133333333333333,0.6166399690109297,4.0,,,,,,,,,,,,, -Webtask,condition_label,merged,classification,4.0,2543.0,908.0,910.0,heatmap_fixed,large_resnet,0.6335037357451828,0.7163518712541753,0.7219735202273312,0.7135445222705158,4.0,0.4262114537444934,0.4796678990545561,0.5164548494983278,0.4924284516629286,4.0,0.4758241758241758,0.5724906293619831,0.5783333333333334,0.5705503120496737,4.0,,,,,,,,,,,,, -Webtask,condition_label,merged,classification,3.0,714.0,254.0,255.0,heatmap_zoomed,large_resnet,0.7661064425770309,0.7894883708510241,0.7665598290598291,0.7614870509607351,3.0,0.3858267716535433,0.391436639982113,0.3837702137681997,0.3816569678688099,3.0,0.3607843137254902,0.3482652510534072,0.3517677665030292,0.3445295594180436,3.0,,,,,,,,,,,,, -Webtask,condition_label,merged,classification,3.0,714.0,254.0,255.0,baseline_fixed,large_resnet,0.7016806722689075,0.7258301266989093,0.6998219373219373,0.6969097890837022,3.0,0.4881889763779528,0.5180900094265176,0.4877960733039035,0.4761583011583011,3.0,0.4784313725490196,0.4874196082859334,0.4880123539656844,0.4763235832418222,3.0,,,,,,,,,,,,, -Webtask,condition_label,merged,classification,3.0,714.0,254.0,255.0,baseline_zoomed,large_resnet,0.8697478991596639,0.8682857341393927,0.8693019943019943,0.8687007718887699,3.0,0.452755905511811,0.4477055996043337,0.4489671483962708,0.4482644097588122,3.0,0.4156862745098039,0.4120799067449383,0.4144117169643288,0.4128838679099262,3.0,,,,,,,,,,,,, -Webtask,familiarity_label,2d,classification,6.0,714.0,254.0,255.0,gaf_fixed,large_resnet,0.9831932773109244,0.9967948717948718,0.971830985915493,0.9829972616380384,6.0,0.8149606299212598,0.1419753086419753,0.1597222222222222,0.1503267973856209,6.0,0.8745098039215686,0.2266260162601626,0.240301724137931,0.2332635983263598,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,2d,classification,6.0,714.0,254.0,255.0,mtf_fixed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.8110236220472441,0.2489171374764595,0.2002865961199294,0.2098901999344477,6.0,0.8470588235294118,0.2406821378340365,0.2473060344827586,0.2439169697729838,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,2d,classification,6.0,714.0,254.0,255.0,heatmap_fixed,large_resnet,0.8641456582633054,0.8105312646920545,0.2567781690140845,0.3053909487361912,6.0,0.84251968503937,0.1415343915343915,0.1651234567901234,0.1524216524216524,6.0,0.9058823529411764,0.2273622047244094,0.2489224137931034,0.2376543209876543,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,2d,classification,6.0,714.0,254.0,255.0,heatmap_zoomed,large_resnet,0.8781512605042017,0.6459227467811158,0.259585289514867,0.3110443849828543,6.0,0.8464566929133859,0.1421957671957671,0.165895061728395,0.1531339031339031,6.0,0.9058823529411764,0.1818897637795275,0.1991379310344827,0.1901234567901234,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,2d,classification,6.0,714.0,254.0,255.0,baseline_fixed,large_resnet,0.8571428571428571,0.1428571428571428,0.1666666666666666,0.1538461538461538,6.0,0.8503937007874016,0.1417322834645669,0.1666666666666666,0.1531914893617021,6.0,0.9098039215686274,0.2274509803921568,0.25,0.2381930184804928,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,2d,classification,6.0,714.0,254.0,255.0,baseline_zoomed,large_resnet,0.9677871148459384,0.9696021941722904,0.9628411810733684,0.9660263239131308,6.0,0.7834645669291339,0.1696991751576904,0.1822089947089947,0.1756970453599667,6.0,0.8392156862745098,0.2511755485893417,0.2596982758620689,0.2547640653357532,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,timeseries,classification,6.0,714.0,254.0,255.0,,,0.8571428571428571,0.1428571428571428,0.1666666666666666,0.1538461538461538,6.0,0.8503937007874016,0.1417322834645669,0.1666666666666666,0.1531914893617021,6.0,0.9098039215686274,0.2274509803921568,0.25,0.2381930184804928,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,merged,classification,6.0,714.0,254.0,255.0,gaf_fixed,large_resnet,0.9677871148459384,0.9719671608480792,0.9667602565282764,0.9692979113042084,6.0,0.8188976377952756,0.1414965986394557,0.1604938271604938,0.1503976861894432,6.0,0.8392156862745098,0.180590717299578,0.1844827586206896,0.1825159914712153,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,merged,classification,6.0,714.0,254.0,255.0,mtf_fixed,large_resnet,0.9873949579831932,0.995241821486268,0.9809483261223112,0.9876703673616752,6.0,0.8110236220472441,0.1660689380354652,0.1732804232804232,0.1684981684981684,6.0,0.8588235294117647,0.2591911764705882,0.2650862068965517,0.2621010638297872,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,merged,classification,6.0,714.0,254.0,255.0,heatmap_fixed,large_resnet,0.8613445378151261,0.6434599156118144,0.2210974178403756,0.2450991507714196,6.0,0.8346456692913385,0.1413333333333333,0.1635802469135802,0.1516452074391988,6.0,0.9098039215686274,0.2274509803921568,0.25,0.2381930184804928,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,merged,classification,6.0,714.0,254.0,255.0,heatmap_zoomed,large_resnet,0.8599439775910365,0.3099250936329588,0.1713615023474178,0.1632109699402668,6.0,0.8503937007874016,0.1417322834645669,0.1666666666666666,0.1531914893617021,6.0,0.9058823529411764,0.2273622047244094,0.2489224137931034,0.2376543209876543,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,merged,classification,6.0,714.0,254.0,255.0,baseline_fixed,large_resnet,0.8571428571428571,0.1428571428571428,0.1666666666666666,0.1538461538461538,6.0,0.8503937007874016,0.1417322834645669,0.1666666666666666,0.1531914893617021,6.0,0.9098039215686274,0.2274509803921568,0.25,0.2381930184804928,4.0,,,,,,,,,,,,, -Webtask,familiarity_label,merged,classification,6.0,714.0,254.0,255.0,baseline_zoomed,large_resnet,0.9341736694677872,0.9536630597522798,0.7480246402160239,0.8212085436235038,6.0,0.7480314960629921,0.152840909090909,0.1609347442680776,0.1563095032023541,6.0,0.8196078431372549,0.2360869565217391,0.2397629310344827,0.2373033470594446,4.0,,,,,,,,,,,,, -Webtask,relevance_label,2d,classification,6.0,714.0,254.0,255.0,gaf_fixed,large_resnet,0.9985994397759104,0.999641577060932,0.997584541062802,0.9986040506103676,6.0,0.5905511811023622,0.2761651346557007,0.2313245183934839,0.2375912681432578,6.0,0.5137254901960784,0.1625469935390918,0.1649228919071873,0.1575892815505004,6.0,,,,,,,,,,,,, -Webtask,relevance_label,2d,classification,6.0,714.0,254.0,255.0,mtf_fixed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.562992125984252,0.1493643088303282,0.168574481074481,0.157064930349244,6.0,0.5215686274509804,0.1577236890355702,0.1750192012288786,0.1625072730669655,6.0,,,,,,,,,,,,, -Webtask,relevance_label,2d,classification,6.0,714.0,254.0,255.0,heatmap_fixed,large_resnet,0.6876750700280112,0.8026481431525943,0.2780692234721992,0.3276062194360118,6.0,0.6496062992125984,0.1546143250688705,0.1686507936507936,0.14375,6.0,0.596078431372549,0.1038251366120218,0.1583333333333333,0.1254125412541254,6.0,,,,,,,,,,,,, -Webtask,relevance_label,2d,classification,6.0,714.0,254.0,255.0,heatmap_zoomed,large_resnet,0.9551820728291316,0.95823334953324,0.9351651361261396,0.9451851827417864,6.0,0.5236220472440944,0.3244775585089721,0.1932266009852216,0.212293499221011,6.0,0.4901960784313725,0.1778910375893134,0.1767172467458969,0.1742264284524404,6.0,,,,,,,,,,,,, -Webtask,relevance_label,2d,classification,6.0,714.0,254.0,255.0,baseline_fixed,large_resnet,0.6680672268907563,0.6827737809752198,0.2187412846417226,0.2297287206049258,6.0,0.6496062992125984,0.11,0.1636904761904762,0.131578947368421,6.0,0.6196078431372549,0.1049136786188579,0.1645833333333333,0.1281427412814274,6.0,,,,,,,,,,,,, -Webtask,relevance_label,2d,classification,6.0,714.0,254.0,255.0,baseline_zoomed,large_resnet,0.984593837535014,0.996140350877193,0.9606806872253096,0.9776041598691702,6.0,0.5236220472440944,0.1269003354369208,0.1487332112332112,0.1347227022634071,6.0,0.4549019607843137,0.1101529617082435,0.128563596491228,0.1184710351377018,6.0,,,,,,,,,,,,, -Webtask,relevance_label,timeseries,classification,6.0,714.0,254.0,255.0,,,0.6498599439775911,0.1083099906629318,0.1666666666666666,0.1312959818902093,6.0,0.6614173228346457,0.1102362204724409,0.1666666666666666,0.1327014218009478,6.0,0.6274509803921569,0.1045751633986928,0.1666666666666666,0.1285140562248996,6.0,,,,,,,,,,,,, -Webtask,relevance_label,merged,classification,6.0,714.0,254.0,255.0,gaf_fixed,large_resnet,0.9915966386554622,0.9827863577863578,0.995558520343003,0.9889060047933286,6.0,0.4960629921259842,0.2374960085044118,0.2042141287830943,0.2085952621377722,6.0,0.4784313725490196,0.2061851587867268,0.195036597174755,0.1826381101891306,6.0,,,,,,,,,,,,, -Webtask,relevance_label,merged,classification,6.0,714.0,254.0,255.0,mtf_fixed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.6023622047244095,0.2124781367946239,0.1979258768051871,0.1954829503614167,6.0,0.4941176470588235,0.1381944444444444,0.1476496179966044,0.1373564526160894,6.0,,,,,,,,,,,,, -Webtask,relevance_label,merged,classification,6.0,714.0,254.0,255.0,heatmap_fixed,large_resnet,0.7913165266106442,0.8385436982573626,0.618950144565046,0.6544747891938647,6.0,0.5118110236220472,0.1299145299145299,0.1488095238095238,0.1386909850859694,6.0,0.5529411764705883,0.1994363929146538,0.1796742359932088,0.1730431542420643,6.0,,,,,,,,,,,,, -Webtask,relevance_label,merged,classification,6.0,714.0,254.0,255.0,heatmap_zoomed,large_resnet,0.9593837535014006,0.947822870964267,0.9447127809320068,0.9422681761541098,6.0,0.4921259842519685,0.1521541283376037,0.167506105006105,0.1589560175655276,6.0,0.4392156862745098,0.1637496499135845,0.1779797275446681,0.1608461009813013,6.0,,,,,,,,,,,,, -Webtask,relevance_label,merged,classification,6.0,714.0,254.0,255.0,baseline_fixed,large_resnet,0.7717086834733894,0.7617188264301217,0.557936816663007,0.6323578159108125,6.0,0.5433070866141733,0.1257172665623369,0.1487332112332112,0.1350115326493279,6.0,0.5098039215686274,0.1370137866301549,0.1618969298245614,0.1466628134203066,6.0,,,,,,,,,,,,, -Webtask,relevance_label,merged,classification,6.0,714.0,254.0,255.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.5196850393700787,0.1598808598808599,0.1673771630668182,0.1604295264852449,6.0,0.4823529411764706,0.2180280748663101,0.173758971291866,0.1711768958706999,6.0,,,,,,,,,,,,, -Webtask,search_result_label,2d,classification,6.0,2543.0,909.0,909.0,gaf_fixed,large_resnet,0.9189933149823044,0.9542443065412356,0.8300153433782854,0.8846040846022998,6.0,0.506050605060506,0.1836797615821667,0.1776226407654422,0.1751038628657673,6.0,0.4961496149614962,0.1758970381712125,0.1700459332496755,0.1687576015507764,6.0,,,,,,,,,,,,, -Webtask,search_result_label,2d,classification,6.0,2543.0,909.0,909.0,mtf_fixed,large_resnet,0.9941014549744396,0.9936755813752866,0.9904568976019807,0.9920489616004766,6.0,0.4543454345434543,0.160559842831298,0.161893666641697,0.1600187402383731,6.0,0.4653465346534653,0.1714677678746257,0.1687342310284584,0.1689546616683742,6.0,,,,,,,,,,,,, -Webtask,search_result_label,2d,classification,6.0,2543.0,909.0,909.0,heatmap_fixed,large_resnet,0.6582776248525364,0.6931469510183824,0.2299002719409451,0.2448322137497491,6.0,0.5973597359735974,0.1037844036697247,0.1584938704028021,0.1254331254331254,6.0,0.6127612761276128,0.1480657966974956,0.1656454248366013,0.1359540311503012,6.0,,,,,,,,,,,,, -Webtask,search_result_label,2d,classification,6.0,2543.0,909.0,909.0,heatmap_zoomed,large_resnet,0.6374360990955564,0.2728822449514818,0.1675675675675675,0.1315374294478633,6.0,0.6270627062706271,0.1046255506607929,0.1663747810858143,0.1284651791751183,6.0,0.6336633663366337,0.1056105610561056,0.1666666666666666,0.1292929292929293,6.0,,,,,,,,,,,,, -Webtask,search_result_label,2d,classification,6.0,2543.0,909.0,909.0,baseline_fixed,large_resnet,0.6342902084152575,0.3701174452362101,0.1683503551861039,0.1347270457493128,6.0,0.6237623762376238,0.128391933269982,0.1675881911433575,0.1324122810884521,6.0,0.6314631463146315,0.2723082595870206,0.168249591503268,0.1338849719284502,6.0,,,,,,,,,,,,, -Webtask,search_result_label,2d,classification,6.0,2543.0,909.0,909.0,baseline_zoomed,large_resnet,0.9968541093197012,0.9968127507542534,0.9943887279830866,0.9955750970869724,6.0,0.5005500550055005,0.1784085429143195,0.1739006977418522,0.1719737738169033,6.0,0.4873487348734873,0.1842663145030521,0.1795372929248587,0.1793650938446219,6.0,,,,,,,,,,,,, -Webtask,search_result_label,timeseries,classification,6.0,2543.0,909.0,909.0,,,0.6374360990955564,0.2728822449514818,0.1675675675675675,0.1315374294478633,6.0,0.6281628162816282,0.1046938027136046,0.1666666666666666,0.1286036036036036,6.0,0.6336633663366337,0.1056105610561056,0.1666666666666666,0.1292929292929293,6.0,,,,,,,,,,,,, -Webtask,search_result_label,merged,classification,6.0,2543.0,909.0,909.0,gaf_fixed,large_resnet,0.9874164372788046,0.9838216410426424,0.9798563660278636,0.9817915354640018,6.0,0.5104510451045104,0.184986682764629,0.1816924960346785,0.1783133717438454,6.0,0.4917491749174917,0.1690229749496465,0.1666091842850512,0.1644438287363142,6.0,,,,,,,,,,,,, -Webtask,search_result_label,merged,classification,6.0,2543.0,909.0,909.0,mtf_fixed,large_resnet,0.9830908375933936,0.9748107245242488,0.9755861401373322,0.9747017970645794,6.0,0.4631463146314631,0.1578958019022592,0.1578526728381606,0.1550225835789474,6.0,0.4807480748074808,0.1674869424439428,0.1666031104134704,0.1636600194878754,6.0,,,,,,,,,,,,, -Webtask,search_result_label,merged,classification,6.0,2543.0,909.0,909.0,heatmap_fixed,large_resnet,0.657884388517499,0.8332430532430534,0.2201331220576974,0.2316804765530423,6.0,0.6259625962596259,0.2716186252771619,0.1682064688613078,0.1332977726053082,6.0,0.6281628162816282,0.1890063032999629,0.1673815359477124,0.1335754640839386,6.0,,,,,,,,,,,,, -Webtask,search_result_label,merged,classification,6.0,2543.0,909.0,909.0,heatmap_zoomed,large_resnet,0.8969720802202124,0.9335276309872276,0.7843859716035188,0.8452888149713149,6.0,0.5071507150715071,0.1544028882759399,0.1621729952234384,0.1526402794867017,6.0,0.5225522552255225,0.171123445469106,0.1685347401436075,0.1628536211853182,6.0,,,,,,,,,,,,, -Webtask,search_result_label,merged,classification,6.0,2543.0,909.0,909.0,baseline_fixed,large_resnet,0.652379079826976,0.6837888791870913,0.2147758713989039,0.2202411048589652,6.0,0.6127612761276128,0.1455926152293916,0.1668629367023847,0.1359800134744702,6.0,0.6226622662266227,0.2864622523200401,0.1704112200435729,0.1427216743231849,6.0,,,,,,,,,,,,, -Webtask,search_result_label,merged,classification,6.0,2543.0,909.0,909.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.4675467546754675,0.1708061069865221,0.1724637097101387,0.1703456820366655,6.0,0.4554455445544554,0.1535475458645452,0.1552121762695731,0.1525989750881092,6.0,,,,,,,,,,,,, -Webtask_school,condition_label,2d,classification,4.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.9862637362637364,0.9895306639604994,0.9894957983193278,0.9895045142679708,4.0,0.583011583011583,0.6901920995670996,0.6809873949579832,0.6834516294819561,4.0,0.4807692307692308,0.6033953990554353,0.6029411764705883,0.6021891856754231,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,2d,classification,4.0,728.0,259.0,260.0,mtf_fixed,large_resnet,0.9972527472527472,0.9979035547273304,0.9978991596638656,0.997899155027784,4.0,0.6254826254826255,0.6749304237824162,0.713375350140056,0.6914074065681743,4.0,0.5769230769230769,0.670545009185548,0.6764705882352942,0.6721534115601913,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,2d,classification,4.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.8887362637362637,0.9191919191919192,0.9149159663865548,0.9144380538135792,4.0,0.4208494208494208,0.5725187756700328,0.4160364145658263,0.456464206878457,4.0,0.4115384615384615,0.5124508923066082,0.55,0.5262378842991716,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,2d,classification,4.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.8337912087912088,0.874417529925257,0.8728991596638656,0.8725973330679159,4.0,0.4324324324324324,0.3294506627839961,0.3309173669467787,0.3264656179481042,4.0,0.3923076923076923,0.4236544458388811,0.3470588235294117,0.3646054332265672,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,2d,classification,4.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.8434065934065934,0.8932348540675733,0.7289915966386554,0.7687417957082665,4.0,0.4980694980694981,0.6547992960883899,0.5221638655462185,0.5651142244099456,4.0,0.5653846153846154,0.6858505749436445,0.5264705882352941,0.5694116623914534,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,2d,classification,4.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,0.9972527472527472,0.997907949790795,0.9642857142857144,0.9797210127398808,4.0,0.4942084942084942,0.6253157824757346,0.5191176470588236,0.5564668432587787,4.0,0.5076923076923077,0.623917748917749,0.5764705882352941,0.5948811102676637,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,timeseries,classification,4.0,728.0,259.0,260.0,,,0.635989010989011,0.7768058197240988,0.721638655462185,0.6458591363510137,4.0,0.6447876447876448,0.6725225225225224,0.7265406162464986,0.6517850468494246,4.0,0.6269230769230769,0.7523646915480313,0.7147058823529412,0.6384510698764743,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,merged,classification,4.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.9945054945054944,0.9958331144843042,0.9957983193277312,0.9958004383067284,4.0,0.6023166023166023,0.6964098430069702,0.648564425770308,0.669703056661261,4.0,0.5846153846153846,0.6762445887445887,0.6823529411764706,0.6753716013455402,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,merged,classification,4.0,728.0,259.0,260.0,mtf_fixed,large_resnet,0.9986263736263736,0.9989539748953976,0.9989495798319328,0.9989495751958511,4.0,0.5714285714285714,0.6774515417749214,0.6721988795518208,0.6725284519402166,4.0,0.5461538461538461,0.6460472936906161,0.6529411764705882,0.6445632798573975,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,merged,classification,4.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.7129120879120879,0.770959557282533,0.7804621848739496,0.7728026717123048,4.0,0.4324324324324324,0.4884618954794393,0.5189425770308123,0.5014798203025974,4.0,0.4538461538461538,0.5851132194415776,0.5823529411764705,0.5796377517868746,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,merged,classification,4.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.8777472527472527,0.9116905636183482,0.9065126050420168,0.9053808602629072,4.0,0.4247104247104247,0.3200422932330827,0.3245098039215686,0.3188940831845268,4.0,0.3884615384615384,0.5376450000169244,0.3911764705882353,0.4286371056376145,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,merged,classification,4.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.8241758241758241,0.8829327786837669,0.6638655462184874,0.6868383668793006,4.0,0.5135135135135135,0.4124289979128689,0.3925070028011204,0.3925487144010147,4.0,0.5192307692307693,0.3955401411136537,0.3970588235294118,0.3939296277694067,4.0,,,,,,,,,,,,, -Webtask_school,condition_label,merged,classification,4.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,0.9986263736263736,0.9989539748953976,0.9989495798319328,0.9989495751958511,4.0,0.4787644787644787,0.6122152453271028,0.5072478991596638,0.5436210864752802,4.0,0.5115384615384615,0.6289409494684723,0.5794117647058823,0.5973328907508131,4.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,2d,classification,6.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.9972527472527472,0.9994910941475826,0.9933333333333332,0.9963437974578212,6.0,0.8108108108108109,0.2384632616487455,0.2470318402590394,0.2358768340153708,3.0,0.8961538461538462,0.2219607843137255,0.2083748753738784,0.207183854841696,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,2d,classification,6.0,728.0,259.0,260.0,mtf_fixed,large_resnet,0.929945054945055,0.9285979228486646,0.6955179213083906,0.7793495599825668,6.0,0.806949806949807,0.3098729227761486,0.3278467350242849,0.3123827690351295,3.0,0.8615384615384616,0.1806451612903225,0.1898305084745762,0.1851239669421487,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,2d,classification,6.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.9601648351648352,0.992913000977517,0.883921568627451,0.9216919347763856,6.0,0.8301158301158301,0.2099609375,0.2465596330275229,0.2267932489451476,3.0,0.8846153846153846,0.1811023622047244,0.1949152542372881,0.1877551020408163,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,2d,classification,6.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.896978021978022,0.2330119375573921,0.1697447677386421,0.1640123835555307,6.0,0.833976833976834,0.2801556420233463,0.3302752293577982,0.3031578947368421,3.0,0.9,0.1813953488372092,0.1983050847457627,0.1894736842105263,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,2d,classification,6.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.9271978021978022,0.9417378917378918,0.7971365943008136,0.8177233590517723,6.0,0.8301158301158301,0.3919510061242344,0.3370210469508904,0.3202779050236677,3.0,0.8884615384615384,0.1811764705882353,0.1957627118644067,0.1881873727087576,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,2d,classification,6.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,0.9010989010989012,0.283633010603965,0.1797447677386421,0.1821881606765327,6.0,0.8455598455598455,0.6160830090791181,0.3431372549019607,0.3250125313283208,3.0,0.8961538461538462,0.1813229571984435,0.197457627118644,0.1890466531440162,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,timeseries,classification,6.0,728.0,259.0,260.0,,,0.8983516483516484,0.3163686382393397,0.17,0.1642654163114521,6.0,0.8416988416988417,0.2805662805662806,0.3333333333333333,0.3046820405310971,3.0,0.9076923076923076,0.1815384615384615,0.2,0.1903225806451613,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,merged,classification,6.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.9958791208791208,0.9992378048780488,0.99,0.994463389854536,6.0,0.833976833976834,0.3366141732283464,0.2539125742039935,0.2416431261770245,3.0,0.8961538461538462,0.2319607843137254,0.2083748753738784,0.2080496557074968,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,merged,classification,6.0,728.0,259.0,260.0,mtf_fixed,large_resnet,0.9986263736263736,0.9997451580020388,0.9966666666666668,0.9981889798263172,6.0,0.8301158301158301,0.4150793650793651,0.3452959165317503,0.3363156937625022,3.0,0.8884615384615384,0.1811764705882353,0.1957627118644067,0.1881873727087576,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,merged,classification,6.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.9271978021978022,0.961779448621554,0.7290382247845538,0.7559511695248705,6.0,0.803088803088803,0.1670682730923694,0.1908256880733945,0.1781584582441113,3.0,0.8846153846153846,0.1811023622047244,0.1949152542372881,0.1877551020408163,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,merged,classification,6.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.903846153846154,0.7340499306518723,0.5308558788497533,0.5756970104131676,6.0,0.8378378378378378,0.2110894941634241,0.2488532110091743,0.2284210526315789,3.0,0.9,0.1813953488372092,0.1983050847457627,0.1894736842105263,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,merged,classification,6.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.9656593406593408,0.9574359972323128,0.9505257784583973,0.9538615821211334,6.0,0.7876447876447876,0.3391582574452375,0.3367512142471667,0.3324323164714464,3.0,0.8153846153846154,0.1796610169491525,0.1796610169491525,0.1796610169491525,5.0,,,,,,,,,,,,, -Webtask_school,familiarity_label,merged,classification,6.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,0.934065934065934,0.9610157367668096,0.8301369246013873,0.8467614116652579,6.0,0.833976833976834,0.2801556420233463,0.3302752293577982,0.3031578947368421,3.0,0.9,0.1813953488372092,0.1983050847457627,0.1894736842105263,5.0,,,,,,,,,,,,, -Webtask_school,relevance_label,2d,classification,6.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.7445054945054945,0.9410484445945438,0.4736552536463934,0.5597693948395721,6.0,0.6061776061776062,0.1200113378684807,0.1620988791647474,0.1349855220575711,6.0,0.6153846153846154,0.1624103942652329,0.1650928911407953,0.1392050962470572,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,2d,classification,6.0,728.0,259.0,260.0,mtf_fixed,large_resnet,0.956043956043956,0.9894806048652202,0.9287176974914224,0.9558605266373238,6.0,0.5598455598455598,0.1720529849505279,0.1778760660497187,0.1679371057902131,6.0,0.5346153846153846,0.1323593073593073,0.1503831801280382,0.1364360660872288,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,2d,classification,6.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.8695054945054945,0.9356813351992952,0.7823076451099139,0.8371415763171958,6.0,0.5521235521235521,0.1855143935508475,0.1765430677107323,0.1701669247529817,6.0,0.5538461538461539,0.1856318603996622,0.1973731466832221,0.1862257946962301,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,2d,classification,6.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.6991758241758241,0.9198826177842098,0.2742919014725201,0.3235149589652604,6.0,0.61003861003861,0.2916666666666667,0.1859084029742712,0.1786900536900537,6.0,0.6307692307692307,0.1076115485564304,0.1636726546906187,0.1298495645288994,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,2d,classification,6.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.8653846153846154,0.9395176698755924,0.7943000962088704,0.8401702576480873,6.0,0.5366795366795367,0.2084008949140528,0.2027082199237887,0.1945261879231065,6.0,0.5269230769230769,0.1370681605975723,0.1576641588617636,0.1450942090076011,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,2d,classification,6.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.4749034749034749,0.1593680904018173,0.1658194101307873,0.1596998878510396,6.0,0.4884615384615384,0.1591342486651411,0.1710053694172413,0.1639014213877601,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,timeseries,classification,6.0,728.0,259.0,260.0,,,0.6524725274725275,0.1087454212454212,0.1666666666666666,0.1316154059296204,6.0,0.6447876447876448,0.1074646074646074,0.1666666666666666,0.1306729264475743,6.0,0.6423076923076924,0.107051282051282,0.1666666666666666,0.1303669008587041,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,merged,classification,6.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.9574175824175823,0.9641927824792276,0.9439960678134426,0.9513008109429432,6.0,0.5482625482625483,0.1935301172707889,0.1888752215848024,0.1871578099838969,6.0,0.4846153846153846,0.1465641944545548,0.1567992220686831,0.1503461777204794,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,merged,classification,6.0,728.0,259.0,260.0,mtf_fixed,large_resnet,0.9903846153846154,0.997579529737206,0.9859437751004017,0.9914433863685652,6.0,0.4903474903474903,0.1471289386401326,0.1416647474282204,0.1380421161599651,6.0,0.4884615384615384,0.1123584142394821,0.1329948798056061,0.121147544740038,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,merged,classification,6.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.728021978021978,0.8547251728207722,0.4489025170617581,0.5272591581841256,6.0,0.6216216216216216,0.1370673952641165,0.17483215387407,0.1493726444349029,6.0,0.6153846153846154,0.1426002766251729,0.1799068529607451,0.1557516339869281,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,merged,classification,6.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.9024725274725276,0.9463599381052212,0.8504709473156584,0.8864958183249884,6.0,0.4594594594594595,0.1164748659212799,0.1383282386276398,0.125,6.0,0.5153846153846153,0.335978835978836,0.1803621111548734,0.1803732484847035,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,merged,classification,6.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.6703296703296703,0.723022734550112,0.2412445189370337,0.2652271954136579,6.0,0.6216216216216216,0.1073333333333333,0.1606786427145708,0.1286970423661071,6.0,0.6269230769230769,0.1073781291172595,0.1626746506986028,0.1293650793650793,6.0,,,,,,,,,,,,, -Webtask_school,relevance_label,merged,classification,6.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.5096525096525096,0.1551051009012204,0.1639769412224501,0.1570009754367296,6.0,0.4807692307692308,0.1364361702127659,0.1511003633758124,0.1420998719590268,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,2d,classification,6.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.9972527472527472,0.9947089947089948,0.999298245614035,0.9969602105167642,6.0,0.5444015444015444,0.2001984126984127,0.1773188970045257,0.1760188111527069,6.0,0.5307692307692308,0.1584523809523809,0.1605839397691014,0.1513386993883447,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,2d,classification,6.0,728.0,259.0,260.0,mtf_fixed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.5057915057915058,0.1313222376329172,0.1529217206612416,0.1401232639238847,6.0,0.5346153846153846,0.1485215385882546,0.161191130436533,0.1498903228792894,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,2d,classification,6.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.8241758241758241,0.914866414402018,0.6272047538297835,0.7216428013406766,6.0,0.5752895752895753,0.1778515240904621,0.1610533511731116,0.1473427525556895,6.0,0.5846153846153846,0.2376182033096926,0.1782533643345311,0.16987273678878,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,2d,classification,6.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.9203296703296704,0.981863664790494,0.844356545522332,0.8991006859604534,6.0,0.5366795366795367,0.2274038461538461,0.1858989591025519,0.1892923707117255,6.0,0.573076923076923,0.1210170373260502,0.1573663073346015,0.1347535505430242,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,2d,classification,6.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.6510989010989011,0.108665749656121,0.1663157894736842,0.1314475873544093,6.0,0.640926640926641,0.107235142118863,0.1656686626746507,0.1301960784313725,6.0,0.6384615384615384,0.1064102564102564,0.1666666666666666,0.1298904538341158,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,2d,classification,6.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,0.7184065934065934,0.8327216907905761,0.3543415496197938,0.4350453770556785,6.0,0.5868725868725869,0.105997210599721,0.1516966067864271,0.1247947454844006,6.0,0.5884615384615385,0.10625,0.1536144578313253,0.125615763546798,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,timeseries,classification,6.0,728.0,259.0,260.0,,,0.6524725274725275,0.1087454212454212,0.1666666666666666,0.1316154059296204,6.0,0.6447876447876448,0.1074646074646074,0.1666666666666666,0.1306729264475743,6.0,0.6384615384615384,0.1064102564102564,0.1666666666666666,0.1298904538341158,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,merged,classification,6.0,728.0,259.0,260.0,gaf_fixed,large_resnet,0.7335164835164835,0.7915890214586692,0.4713512976433418,0.5199869541694202,6.0,0.5907335907335908,0.1899717514124293,0.1645874916833,0.1487061325771003,6.0,0.5692307692307692,0.1497835497835497,0.1664693863171986,0.1499533308792407,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,merged,classification,6.0,728.0,259.0,260.0,mtf_fixed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.5752895752895753,0.2415873015873015,0.1884063070440316,0.1862319707941827,6.0,0.5807692307692308,0.2186917249417249,0.176810751779046,0.1670392258017982,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,merged,classification,6.0,728.0,259.0,260.0,heatmap_fixed,large_resnet,0.885989010989011,0.8818463804713804,0.8053825149205155,0.8190686739261488,6.0,0.4903474903474903,0.1222339769020541,0.1375710118225088,0.1286581663630844,6.0,0.5307692307692308,0.1943956517792302,0.2071914223309277,0.1958801968174377,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,merged,classification,6.0,728.0,259.0,260.0,heatmap_zoomed,large_resnet,0.7376373626373627,0.7722749791842084,0.4255267832236666,0.5090348396899331,6.0,0.525096525096525,0.1390159456197192,0.148079299276904,0.1377944779494911,6.0,0.5692307692307692,0.1722013366750208,0.1628561866513673,0.1491984708905182,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,merged,classification,6.0,728.0,259.0,260.0,baseline_fixed,large_resnet,0.6689560439560439,0.7153416366905212,0.69129537314334,0.603586137778039,6.0,0.3899613899613899,0.1754807692307692,0.2029037163767702,0.1779349359636115,6.0,0.35,0.1670291148175466,0.1553869613793519,0.1411845303411088,6.0,,,,,,,,,,,,, -Webtask_school,search_result_label,merged,classification,6.0,728.0,259.0,260.0,baseline_zoomed,large_resnet,1.0,1.0,1.0,1.0,6.0,0.528957528957529,0.1591406677613574,0.1708026255181943,0.1631041375722226,6.0,0.55,0.1465919701213819,0.1737687592475163,0.158338985466645,6.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,2d,classification,4.0,1440.0,471.0,479.0,gaf_fixed,large_resnet,0.9652777777777778,0.9744930321937684,0.9536673791013708,0.963075675379948,4.0,0.4033970276008493,0.3575383487480261,0.3306609740670462,0.3152795698924731,4.0,0.3945720250521921,0.3322687325975827,0.3230068401474065,0.3040310547065716,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,2d,classification,4.0,1440.0,471.0,479.0,mtf_fixed,large_resnet,0.8881944444444444,0.91299624452982,0.8641047726157394,0.8822183932108412,4.0,0.3312101910828025,0.2757456140350877,0.2778858317520556,0.2697703134411431,4.0,0.325678496868476,0.2730589599355312,0.2711364465999166,0.2631040112134033,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,2d,classification,4.0,1440.0,471.0,479.0,heatmap_fixed,large_resnet,0.5027777777777778,0.4821406639853505,0.4306987242165906,0.4277913723842023,4.0,0.3673036093418259,0.2863887032085561,0.2968769765970904,0.2789780057193218,4.0,0.3820459290187891,0.3326931974081449,0.3206710210680016,0.3099304300602065,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,2d,classification,4.0,1440.0,471.0,479.0,heatmap_zoomed,large_resnet,0.4354166666666667,0.2556353681975244,0.3264304888801227,0.2624089718107027,4.0,0.386411889596603,0.2446304598679605,0.2946236559139785,0.2376500221076549,4.0,0.3862212943632568,0.193392153688414,0.2969260620915033,0.2333864345753843,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,2d,classification,4.0,1440.0,471.0,479.0,baseline_fixed,large_resnet,0.5138888888888888,0.5284487654284256,0.4239709095007208,0.4064571642262635,4.0,0.3609341825902335,0.2364216027874564,0.2865749525616698,0.2530399783273346,4.0,0.4237995824634655,0.4134118082679375,0.3435718258934779,0.317885623148781,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,2d,classification,4.0,1440.0,471.0,479.0,baseline_zoomed,large_resnet,0.9972222222222222,0.9974657483319572,0.9979358499175632,0.997698523666804,4.0,0.3269639065817409,0.2963754683136715,0.2945683111954459,0.2951312530766077,4.0,0.3215031315240083,0.2876258374438861,0.2882900500625782,0.2877787162879949,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,timeseries,classification,4.0,1440.0,471.0,479.0,,,0.4527777777777778,0.2264359906238575,0.3386088618547648,0.2703555938612099,4.0,0.4331210191082802,0.2160591821183642,0.3290322580645161,0.2604536372479428,4.0,0.4217118997912317,0.2103876618165323,0.3236315359477124,0.2548546939868755,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,merged,classification,4.0,1440.0,471.0,479.0,gaf_fixed,large_resnet,0.9819444444444444,0.9839814351682626,0.9822757630717114,0.983051863663694,4.0,0.3312101910828025,0.2756914861741016,0.2747469955724225,0.2653833921904212,4.0,0.336116910229645,0.2780398866132758,0.2860378858990404,0.2793414804588561,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,merged,classification,4.0,1440.0,471.0,479.0,mtf_fixed,large_resnet,0.8972222222222223,0.913090488716636,0.8749112299222809,0.8901569779460309,4.0,0.3290870488322717,0.2807134549221988,0.2844402277039848,0.2770589935129272,4.0,0.348643006263048,0.2938839183016202,0.295437656445557,0.2872908015468698,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,merged,classification,4.0,1440.0,471.0,479.0,heatmap_fixed,large_resnet,0.4944444444444444,0.549303765347728,0.3843748326082196,0.3433516768680954,4.0,0.375796178343949,0.2905735386891165,0.2907732447817837,0.2494490449998924,4.0,0.4133611691022965,0.2865196078431372,0.3217946043665693,0.2740395148616268,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,merged,classification,4.0,1440.0,471.0,479.0,heatmap_zoomed,large_resnet,0.3770833333333333,0.3691435339227429,0.2853641503618818,0.201850961274201,4.0,0.3651804670912951,0.1964588548816926,0.2774193548387096,0.1903099623687859,4.0,0.3632567849686847,0.3277929283430506,0.2840073529411764,0.2006476227116796,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,merged,classification,4.0,1440.0,471.0,479.0,baseline_fixed,large_resnet,0.5506944444444445,0.6691659790979098,0.4646339745444399,0.4579918356572702,4.0,0.3779193205944798,0.3414332399626517,0.3042141049968374,0.2601225928324115,4.0,0.37160751565762,0.3332690468946934,0.2927693905576415,0.2565631800324225,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_2_label,merged,classification,4.0,1440.0,471.0,479.0,baseline_zoomed,large_resnet,0.8972222222222223,0.9003386494699416,0.8915152702028029,0.8943253617623511,4.0,0.3821656050955414,0.3450754373805116,0.3428684376976597,0.3428905135181415,4.0,0.290187891440501,0.2396579001971158,0.2467011716033931,0.2418204543244089,4.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,2d,classification,3.0,1438.0,478.0,474.0,gaf_fixed,large_resnet,0.6738525730180807,0.6840709090765206,0.6732704050907535,0.6722907726466936,3.0,0.4393305439330544,0.446623596824697,0.4410569105691057,0.4372868494573176,3.0,0.3691983122362869,0.377626067118126,0.3692099567099567,0.3691129376793644,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,2d,classification,3.0,1438.0,478.0,474.0,mtf_fixed,large_resnet,0.8657858136300417,0.8724240066433747,0.8655572490733059,0.86692092546456,3.0,0.3870292887029288,0.3899763742578113,0.3872533789032157,0.3881689721850365,3.0,0.3734177215189873,0.3769098280948692,0.3734577922077922,0.3744696577721931,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,2d,classification,3.0,1438.0,478.0,474.0,heatmap_fixed,large_resnet,0.4485396383866481,0.4904450609296424,0.4483026643880098,0.4050133567821088,3.0,0.4623430962343096,0.4692351640708448,0.4680363523380457,0.4085181078752555,3.0,0.4071729957805907,0.381880110352653,0.4089015151515151,0.359671726835906,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,2d,classification,3.0,1438.0,478.0,474.0,heatmap_zoomed,large_resnet,0.547287899860918,0.552917771651289,0.5476439361130419,0.5431575551967929,3.0,0.4456066945606695,0.443636914396289,0.4463388742167676,0.4432845107478179,3.0,0.4535864978902953,0.4536179299905128,0.4548160173160173,0.451369328570821,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,2d,classification,3.0,1438.0,478.0,474.0,baseline_fixed,large_resnet,0.5514603616133519,0.569135322173906,0.5516009990810251,0.5473002704860876,3.0,0.4393305439330544,0.452828292889208,0.4368883020040391,0.4330781306474356,3.0,0.3924050632911392,0.4031252573698616,0.3916396103896104,0.3889509041682954,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,2d,classification,3.0,1438.0,478.0,474.0,baseline_zoomed,large_resnet,0.9687065368567456,0.9688592697568632,0.9687958638353606,0.9687241749788156,3.0,0.3744769874476987,0.3771341862229547,0.3754207446533064,0.3744877966520112,3.0,0.3818565400843882,0.3806190585416826,0.3826839826839827,0.3811904400874943,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,timeseries,classification,3.0,1438.0,478.0,474.0,,,0.4457579972183588,0.4526315658216793,0.4475576182906891,0.4249633059030882,3.0,0.4707112970711297,0.4609431524547804,0.4721790689244472,0.4451630162894136,3.0,0.4345991561181435,0.4263177026535805,0.4387445887445887,0.4093137254901961,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,merged,classification,3.0,1438.0,478.0,474.0,gaf_fixed,large_resnet,0.6425591098748261,0.6511351396185755,0.6423286152408315,0.6409653917336698,3.0,0.4644351464435146,0.4705031645450084,0.4633628501890114,0.4640056764457197,3.0,0.3987341772151899,0.4097301453512074,0.3986201298701298,0.4002417609520828,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,merged,classification,3.0,1438.0,478.0,474.0,mtf_fixed,large_resnet,0.7983310152990264,0.7979987262394669,0.7986203969428335,0.7977757598524132,3.0,0.4142259414225941,0.4128018245600766,0.4150354720107711,0.41317307390968,3.0,0.379746835443038,0.3785775335775336,0.3804383116883117,0.3791137972400955,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,merged,classification,3.0,1438.0,478.0,474.0,heatmap_fixed,large_resnet,0.4123783031988873,0.4730659330740828,0.4103149761385456,0.3357366531628405,3.0,0.4100418410041841,0.5654521901060643,0.4157733934027239,0.3348681846496282,3.0,0.4071729957805907,0.4300138041977805,0.4071969696969697,0.3302188379779676,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,merged,classification,3.0,1438.0,478.0,474.0,heatmap_zoomed,large_resnet,0.4207232267037552,0.4294644951765066,0.4228047240354342,0.3906128891331614,3.0,0.4351464435146444,0.4245202954476137,0.4370824918440267,0.3948290268402214,3.0,0.3818565400843882,0.3852161461356864,0.3861742424242425,0.3505620677995518,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,merged,classification,3.0,1438.0,478.0,474.0,baseline_fixed,large_resnet,0.6522948539638387,0.6565231240373256,0.6527889026128486,0.6508490851765626,3.0,0.4351464435146444,0.4341288178399456,0.4349981875614934,0.4342894542231292,3.0,0.4240506329113924,0.4216484814347583,0.4251623376623376,0.4201435478031223,3.0,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations,TEXT_TYPE_label,merged,classification,3.0,1438.0,478.0,474.0,baseline_zoomed,large_resnet,0.9290681502086232,0.933397325769394,0.9287347242846304,0.9289271164506038,3.0,0.4393305439330544,0.4498224565630561,0.4381570089586246,0.4365121069449005,3.0,0.3544303797468354,0.3676948951126419,0.3540584415584416,0.3562742847626419,3.0,,,,,,,,,,,,, -Surgical_skills_1_fixations,Performance_label,2d,regression,,897.0,343.0,315.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0613096952438354,248.38795,15.760328,13.200703,-0.0408828258514404,332.00983,18.221136,14.598348,-0.0289613008499145,375.5805,19.3799,16.164108 -Surgical_skills_1_fixations,Performance_label,2d,regression,,897.0,343.0,315.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0149503946304321,230.5401306152344,15.183547973632812,12.551098823547363,-0.036828875541687,330.7167358398437,18.185619354248047,14.29935073852539,0.0307704210281372,353.7778625488281,18.808982849121094,15.395174980163574 -Surgical_skills_1_fixations,Performance_label,2d,regression,,897.0,343.0,315.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.4582698345184326,341.2921447753906,18.47409439086914,15.968826293945312,-0.0910043716430664,347.9970703125,18.654680252075195,15.822360038757324,-0.2345196008682251,450.6112060546875,21.22760391235352,18.59687232971192 -Surgical_skills_1_fixations,Performance_label,2d,regression,,897.0,343.0,315.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.1785471439361572,275.8261108398437,16.608013153076172,14.186814308166504,-0.0032802820205688,320.0157470703125,17.88898468017578,14.72372817993164,-0.0890545845031738,397.5151672363281,19.937782287597656,17.141849517822266 -Surgical_skills_1_fixations,Performance_label,2d,regression,,897.0,343.0,315.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.7910768985748291,419.18206787109375,20.473936080932617,17.935026168823242,-0.2132617235183715,386.9934387207031,19.672149658203125,16.953720092773438,-0.4126713275909424,515.6383056640625,22.707670211791992,20.13595390319824 -Surgical_skills_1_fixations,Performance_label,2d,regression,,897.0,343.0,315.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.8530466556549072,433.6853332519531,20.82511329650879,15.749551773071287,-1.148473024368286,685.2972412109375,26.17818260192871,20.03369331359864,-0.6246508359909058,593.0128173828125,24.35185432434082,17.15886116027832 -Surgical_skills_1_fixations,Performance_label,timeseries,regression,,897.0,343.0,315.0,,,,,,,,,,,,,,,,,,,-3.558572769165039,1066.8841552734375,32.66319274902344,29.710010528564453,-1.7812621593475342,887.1376342773438,29.784854888916016,26.28068923950196,-2.144531011581421,1147.7833251953125,33.87895202636719,30.431615829467773 -Surgical_skills_1_fixations,Performance_label,merged,regression,,897.0,343.0,315.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.2533482313156128,293.3324890136719,17.126951217651367,14.66107177734375,-0.0414919853210449,332.20416259765625,18.226469039916992,15.195980072021484,-0.1222203969955444,409.6209716796875,20.23909568786621,17.535202026367188 -Surgical_skills_1_fixations,Performance_label,merged,regression,,897.0,343.0,315.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0340263247489929,226.0755920410156,15.035810470581056,12.341021537780762,-0.0110656023025512,322.4990539550781,17.95825958251953,13.945772171020508,0.0482291579246521,347.4052734375,18.638811111450195,15.116815567016602 -Surgical_skills_1_fixations,Performance_label,merged,regression,,897.0,343.0,315.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.7309136390686035,405.1014404296875,20.127132415771484,17.5032958984375,-0.2188115119934082,388.763671875,19.717090606689453,16.93584632873535,-0.4166672229766845,517.0968017578125,22.73976325988769,19.970102310180664 -Surgical_skills_1_fixations,Performance_label,merged,regression,,897.0,343.0,315.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0254783630371093,240.00201416015625,15.491998672485352,12.783872604370115,-0.0937936305999755,348.8868103027344,18.678512573242188,14.762843132019045,-0.0310080051422119,376.32757568359375,19.3991641998291,15.776912689208984 -Surgical_skills_1_fixations,Performance_label,merged,regression,,897.0,343.0,315.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0217409133911132,239.12733459472656,15.46374225616455,12.965100288391112,-0.0242269039154052,326.6971130371094,18.074764251708984,14.606012344360352,-0.01797616481781,371.5708312988281,19.276172637939453,16.441312789916992 -Surgical_skills_1_fixations,Performance_label,merged,regression,,897.0,343.0,315.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0711951255798339,250.70152282714844,15.83355712890625,12.656063079833984,-0.2461117506027221,397.47161865234375,19.93668937683105,15.27812385559082,-0.0711762905120849,390.9893798828125,19.77345085144043,15.590133666992188 -Cognitive_load_ready_data_gazes_0.02,effort_label,2d,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0263713598251342,860.4219360351562,29.332950592041016,25.25928497314453,-0.0659737586975097,614.1174926757812,24.781394958496094,21.55082321166992,-0.0333133935928344,738.0279541015625,27.16666984558105,23.611501693725582 -Cognitive_load_ready_data_gazes_0.02,effort_label,2d,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0076767206192016,844.7500610351562,29.064584732055664,25.15736389160156,-0.0036827325820922,578.2310791015625,24.046436309814453,20.771503448486328,-0.0724025964736938,765.94677734375,27.675743103027344,23.78285217285156 -Cognitive_load_ready_data_gazes_0.02,effort_label,2d,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.1510732173919677,964.9612426757812,31.063825607299805,26.33839988708496,-0.5212613344192505,876.4129028320312,29.6042709350586,25.267940521240234,-0.0861560106277465,775.7698974609375,27.85264587402344,23.51157188415528 -Cognitive_load_ready_data_gazes_0.02,effort_label,2d,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.003263235092163,841.0501098632812,29.000864028930664,24.635705947875977,-0.0622036457061767,611.9454956054688,24.737531661987305,21.3476791381836,-0.0215967893600463,729.6595458984375,27.012210845947266,23.373966217041016 -Cognitive_load_ready_data_gazes_0.02,effort_label,2d,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0114898085594177,828.6824340820312,28.78684425354004,24.70956039428711,-0.0271309614181518,591.73974609375,24.32570075988769,21.159433364868164,-0.0567570924758911,754.7722778320312,27.473119735717773,23.75771713256836 -Cognitive_load_ready_data_gazes_0.02,effort_label,2d,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0521868467330932,794.5653686523438,28.18803596496582,23.703149795532227,-0.1750668287277221,676.967041015625,26.018590927124023,22.938446044921875,0.0014007687568664,713.23388671875,26.706439971923828,22.82051086425781 -Cognitive_load_ready_data_gazes_0.02,effort_label,timeseries,regression,,108.0,40.0,40.0,,,,,,,,,,,,,,,,,,,-1.593209981918335,2173.925537109375,46.62537384033203,38.33124923706055,-1.6083147525787354,1502.674560546875,38.764347076416016,31.29840087890625,-2.150301456451416,2250.053466796875,47.43472671508789,40.05484771728516 -Cognitive_load_ready_data_gazes_0.02,effort_label,merged,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0020239949226379,836.6176147460938,28.92434310913086,24.76140213012696,-0.0420402288436889,600.3291625976562,24.501615524291992,21.162616729736328,-0.0306727886199951,736.1419067382812,27.131935119628903,23.47287368774414 -Cognitive_load_ready_data_gazes_0.02,effort_label,merged,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0760879516601562,902.1001586914062,30.03498268127441,25.78983497619629,-1.5647685527801514,1477.587158203125,38.439395904541016,25.692398071289062,-1.483520269393921,1773.815673828125,42.11669158935547,28.40751266479492 -Cognitive_load_ready_data_gazes_0.02,effort_label,merged,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0669807195663452,894.4652709960938,29.907611846923828,25.76169204711914,-0.0362213850021362,596.9768676757812,24.433109283447266,20.848949432373047,-0.2104940414428711,864.5764770507812,29.4036808013916,24.388370513916016 -Cognitive_load_ready_data_gazes_0.02,effort_label,merged,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0041614770889282,834.8257446289062,28.89335060119629,24.56845474243164,-0.1049802303314209,636.5894775390625,25.2307243347168,21.440963745117188,-0.0279362201690673,734.1873779296875,27.09589195251465,23.227649688720703 -Cognitive_load_ready_data_gazes_0.02,effort_label,merged,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0028563737869262,840.708984375,28.99498176574707,24.794265747070312,-0.1407442092895507,657.1934814453125,25.635786056518555,21.98770523071289,-0.0341414213180542,738.6193237304688,27.17755126953125,23.67659568786621 -Cognitive_load_ready_data_gazes_0.02,effort_label,merged,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0362733602523803,807.906005859375,28.42368698120117,24.15462875366211,-0.2465934753417968,718.1741943359375,26.79877281188965,23.043865203857425,0.0159065723419189,702.8733520507812,26.51175880432129,23.09217071533203 -Cognitive_load_ready_data_gazes_0.02,frustration_label,2d,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0085759162902832,583.145263671875,24.148401260375977,18.546464920043945,0.0139476060867309,439.88720703125,20.973487854003903,16.37027359008789,-0.0211042165756225,689.2293701171875,26.253177642822266,19.35701370239257 -Cognitive_load_ready_data_gazes_0.02,frustration_label,2d,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0131882429122924,585.8121948242188,24.20355796813965,17.702850341796875,-0.0393866300582885,463.68011474609375,21.533233642578125,16.086105346679688,-0.1332042217254638,764.8951416015625,27.65673828125,20.02933120727539 -Cognitive_load_ready_data_gazes_0.02,frustration_label,2d,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0208183526992797,590.2237548828125,24.29452133178711,17.859933853149414,-0.0108485221862792,450.9490356445313,21.23556137084961,15.538278579711914,-0.1090836524963378,748.6141357421875,27.36081314086914,19.830951690673828 -Cognitive_load_ready_data_gazes_0.02,frustration_label,2d,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0131213665008544,570.6002197265625,23.88723945617676,18.323925018310547,0.0147714614868164,439.5196838378906,20.96472549438477,16.370647430419922,-0.0312846899032592,696.10107421875,26.38372802734375,19.79990577697754 -Cognitive_load_ready_data_gazes_0.02,frustration_label,2d,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0147454738616943,586.7124633789062,24.222148895263672,18.2492790222168,-0.0367392301559448,462.49908447265625,21.50579261779785,16.683786392211914,-0.1002534627914428,742.6539306640625,27.251678466796875,20.000873565673828 -Cognitive_load_ready_data_gazes_0.02,frustration_label,2d,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0583091974258422,544.4732666015625,23.33395004272461,19.75907325744629,-0.0809633731842041,482.2278747558594,21.959688186645508,18.07632827758789,0.0811482667922973,620.2105712890625,24.904027938842773,19.972877502441406 -Cognitive_load_ready_data_gazes_0.02,frustration_label,timeseries,regression,,108.0,40.0,40.0,,,,,,,,,,,,,,,,,,,-0.2514556646347046,723.5752563476562,26.899354934692383,17.402076721191406,-0.3256536722183227,591.3865356445312,24.31843948364257,16.46062469482422,-0.4059419631958008,948.9888916015624,30.8056640625,21.10701560974121 -Cognitive_load_ready_data_gazes_0.02,frustration_label,merged,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0121862888336181,585.2328491210938,24.191585540771484,18.86313819885254,0.0372165441513061,429.5067443847656,20.724544525146484,16.422718048095703,-0.1187832355499267,755.1612548828125,27.48019790649414,20.42464256286621 -Cognitive_load_ready_data_gazes_0.02,frustration_label,merged,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0356098413467407,598.7759399414062,24.46989822387696,18.48856544494629,-0.1281986236572265,503.2999877929688,22.4343490600586,17.303598403930664,-0.1669161319732666,787.6502075195312,28.06510734558105,20.46098899841309 -Cognitive_load_ready_data_gazes_0.02,frustration_label,merged,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0271950364112854,562.4630126953125,23.7163028717041,19.663175582885746,-0.3247954845428467,591.0037231445312,24.31056785583496,19.47053909301757,-0.0284241437911987,694.1702880859375,26.347110748291016,20.49209213256836 -Cognitive_load_ready_data_gazes_0.02,frustration_label,merged,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0225144624710083,565.1692504882812,23.77328872680664,18.27699089050293,0.0006079077720642,445.8381958007813,21.11488151550293,16.445755004882812,-0.0820926427841186,730.3956298828125,27.02583312988281,20.219970703125 -Cognitive_load_ready_data_gazes_0.02,frustration_label,merged,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0093514919281005,583.5938110351562,24.157686233520508,19.550199508666992,0.0123151540756225,440.615478515625,20.990842819213867,17.169265747070312,-0.0399787425994873,701.9694213867188,26.494705200195312,20.0411434173584 -Cognitive_load_ready_data_gazes_0.02,frustration_label,merged,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0036630630493164,580.3048095703125,24.08951568603516,20.160619735717773,-0.2097667455673217,539.6882934570312,23.23119163513184,19.782962799072266,-0.0100258588790893,681.7516479492188,26.1103744506836,20.400436401367188 -Cognitive_load_ready_data_gazes_0.02,group_task_label,2d,classification,4.0,108.0,40.0,40.0,gaf_fixed,large_resnet,1.0,1.0,1.0,1.0,4.0,0.375,0.354020979020979,0.375,0.3605935127674258,4.0,0.45,0.4606227106227106,0.45,0.4392583120204604,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,2d,classification,4.0,108.0,40.0,40.0,mtf_fixed,large_resnet,0.4166666666666667,0.6137195121951219,0.4166666666666666,0.3863135144671842,4.0,0.275,0.4561781609195402,0.275,0.2334124209124209,4.0,0.4,0.4056451612903226,0.4,0.3267131242740999,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,2d,classification,4.0,108.0,40.0,40.0,heatmap_fixed,large_resnet,0.5277777777777778,0.6835526315789473,0.5277777777777777,0.5294564634364384,4.0,0.35,0.3869565217391304,0.35,0.3172438672438672,4.0,0.275,0.238095238095238,0.275,0.2062246963562753,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,2d,classification,4.0,108.0,40.0,40.0,heatmap_zoomed,large_resnet,0.8518518518518519,0.8735795454545454,0.8518518518518517,0.8533746973365617,4.0,0.35,0.3559523809523809,0.35,0.3406897926634769,4.0,0.375,0.379491341991342,0.375,0.3733002291825821,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,2d,classification,4.0,108.0,40.0,40.0,baseline_fixed,large_resnet,0.7685185185185185,0.8115942028985507,0.7685185185185185,0.768454805088832,4.0,0.325,0.2987373737373737,0.325,0.2922619047619047,4.0,0.35,0.4102564102564102,0.35,0.34282696708326,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,2d,classification,4.0,108.0,40.0,40.0,baseline_zoomed,large_resnet,0.7870370370370371,0.8117424242424242,0.7870370370370371,0.788235787035979,4.0,0.325,0.3541666666666666,0.325,0.2972222222222221,4.0,0.475,0.5221330956625074,0.475,0.4571792729687466,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,timeseries,classification,4.0,108.0,40.0,40.0,,,0.25,0.0625,0.25,0.1,4.0,0.275,0.3157894736842105,0.275,0.1496212121212121,4.0,0.25,0.0625,0.25,0.1,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,merged,classification,4.0,108.0,40.0,40.0,gaf_fixed,large_resnet,0.9074074074074074,0.9083082466703156,0.9074074074074074,0.9067456780692076,4.0,0.325,0.2984126984126983,0.325,0.3070433436532508,4.0,0.375,0.3697802197802197,0.375,0.3579369138959931,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,merged,classification,4.0,108.0,40.0,40.0,mtf_fixed,large_resnet,0.4814814814814814,0.5584273182957393,0.4814814814814814,0.4740504660783602,4.0,0.225,0.1741666666666666,0.2249999999999999,0.1669642857142857,4.0,0.3,0.2901960784313725,0.3,0.2793350168350168,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,merged,classification,4.0,108.0,40.0,40.0,heatmap_fixed,large_resnet,0.3055555555555556,0.6060996563573884,0.3055555555555555,0.2277134526578353,4.0,0.225,0.3071428571428571,0.225,0.1343434343434343,4.0,0.275,0.1907894736842105,0.275,0.1458333333333333,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,merged,classification,4.0,108.0,40.0,40.0,heatmap_zoomed,large_resnet,0.6388888888888888,0.7310606060606061,0.6388888888888888,0.6284235897574904,4.0,0.4,0.4166666666666666,0.4,0.3545224541429475,4.0,0.475,0.5272727272727272,0.475,0.4517361111111111,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,merged,classification,4.0,108.0,40.0,40.0,baseline_fixed,large_resnet,0.8333333333333334,0.8504582843713279,0.8333333333333334,0.8338942307692307,4.0,0.5,0.5067460317460317,0.5,0.4950593395252838,4.0,0.425,0.4294871794871794,0.4249999999999999,0.4244851258581235,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,group_task_label,merged,classification,4.0,108.0,40.0,40.0,baseline_zoomed,large_resnet,0.925925925925926,0.9267732586698104,0.925925925925926,0.9258884895677348,4.0,0.275,0.2568681318681318,0.275,0.2631074168797954,4.0,0.475,0.4849161255411255,0.475,0.4632218271924154,4.0,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02,mean_label,2d,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0026601552963256,398.2572021484375,19.956382751464844,16.416996002197266,-0.0009549856185913,340.625,18.45602798461914,15.135740280151367,-0.1702338457107544,408.748046875,20.217517852783203,15.763705253601074 -Cognitive_load_ready_data_gazes_0.02,mean_label,2d,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0076818466186523,400.2518310546875,20.00629425048828,16.465246200561523,-0.0403234958648681,354.0220642089844,18.815473556518555,15.993654251098633,-0.0787460803985595,376.7925109863281,19.4111442565918,16.048620223999023 -Cognitive_load_ready_data_gazes_0.02,mean_label,2d,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0078117847442626,400.303466796875,20.00758552551269,16.612716674804688,0.0060261487960815,338.2492980957031,18.39155578613281,15.293220520019531,-0.0996301174163818,384.0870361328125,19.5981388092041,15.831438064575195 -Cognitive_load_ready_data_gazes_0.02,mean_label,2d,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0596187114715576,420.8812255859375,20.515390396118164,17.235580444335938,-0.0883779525756836,370.375,19.2451286315918,16.269451141357422,-0.0066124200820922,351.5971069335937,18.75092315673828,15.57421875 -Cognitive_load_ready_data_gazes_0.02,mean_label,2d,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0899974107742309,432.9476623535156,20.80739402770996,16.971773147583008,-0.11933434009552,380.9094848632813,19.516902923583984,16.049922943115234,-0.3775544166564941,481.16253662109375,21.93541717529297,17.09922218322754 -Cognitive_load_ready_data_gazes_0.02,mean_label,2d,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0127386450767517,392.1408386230469,19.80254554748535,16.466232299804688,-0.0610105991363525,361.0619201660156,19.001628875732425,16.156476974487305,-0.0210733413696289,356.64813232421875,18.885129928588867,15.661892890930176 -Cognitive_load_ready_data_gazes_0.02,mean_label,timeseries,regression,,108.0,40.0,40.0,,,,,,,,,,,,,,,,,,,-1.3414018154144287,930.0062866210938,30.49600410461425,24.68107032775879,-1.3971490859985352,815.7498779296875,28.56133460998535,22.86336708068848,-2.0955872535705566,1081.2498779296875,32.882362365722656,27.33408164978028 -Cognitive_load_ready_data_gazes_0.02,mean_label,merged,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0058218836784362,394.8881530761719,19.87179374694824,16.614198684692383,-0.0305694341659545,350.7027587890625,18.727060317993164,16.08001708984375,-0.078029990196228,376.54241943359375,19.40470123291016,15.680776596069336 -Cognitive_load_ready_data_gazes_0.02,mean_label,merged,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0305922627449035,385.0493774414063,19.6226749420166,16.451932907104492,-0.1224439144134521,381.9676513671875,19.54399299621582,16.671058654785156,-0.0293999910354614,359.5565490722656,18.961977005004883,16.063880920410156 -Cognitive_load_ready_data_gazes_0.02,mean_label,merged,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0227246284484863,406.2268981933594,20.15507125854492,16.819019317626953,0.0093459486961364,337.1195678710937,18.360816955566406,15.305185317993164,-0.1085923910140991,387.2174682617188,19.67784118652344,16.55693244934082 -Cognitive_load_ready_data_gazes_0.02,mean_label,merged,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.004948079586029,395.2352294921875,19.880523681640625,16.57575225830078,-0.05792236328125,360.010986328125,18.973955154418945,16.063858032226562,-0.0864719152450561,379.4910583496094,19.48052978515625,16.0949764251709 -Cognitive_load_ready_data_gazes_0.02,mean_label,merged,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0631264448165893,422.27447509765625,20.54931831359864,17.23303985595703,-0.1083834171295166,377.182861328125,19.42119598388672,16.101503372192383,0.0082573890686035,346.4032897949219,18.61191177368164,15.725820541381836 -Cognitive_load_ready_data_gazes_0.02,mean_label,merged,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0738468766212463,367.8685607910156,19.17989921569824,15.948664665222168,-0.0379148721694946,353.20245361328125,18.793682098388672,15.7178373336792,0.0337787866592407,337.4889831542969,18.3708724975586,15.376861572265623 -Cognitive_load_ready_data_gazes_0.02,mental_label,2d,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.1759710311889648,1102.6441650390625,33.206085205078125,28.531753540039062,-0.3262439966201782,980.0943603515624,31.306459426879883,28.34225082397461,-0.1503551006317138,797.1781005859375,28.23434257507324,23.687944412231445 -Cognitive_load_ready_data_gazes_0.02,mental_label,2d,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0122114419937133,949.095703125,30.807397842407227,26.559324264526367,-0.0907273292541503,806.0474853515625,28.39097595214844,25.13316535949707,-0.0518257617950439,728.8988037109375,26.998125076293945,22.867321014404297 -Cognitive_load_ready_data_gazes_0.02,mental_label,2d,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0535030364990234,987.8126220703124,31.429487228393555,27.40965461730957,-0.0023125410079956,740.7089233398438,27.21596908569336,24.607166290283203,-0.0613800287246704,735.519775390625,27.12046813964844,23.697843551635746 -Cognitive_load_ready_data_gazes_0.02,mental_label,2d,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.006591260433197,931.4653930664062,30.51991844177246,26.228025436401367,-0.053623080253601,778.6275024414062,27.903898239135746,25.02156639099121,0.0057309865951538,689.0128784179688,26.249053955078125,22.51037979125977 -Cognitive_load_ready_data_gazes_0.02,mental_label,2d,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0195351839065551,919.32861328125,30.320432662963867,26.14640235900879,-0.0335625410079956,763.8026733398438,27.63698005676269,25.05533790588379,-0.0927265882492065,757.2424926757812,27.51803970336914,23.652286529541016 -Cognitive_load_ready_data_gazes_0.02,mental_label,2d,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0092707872390747,946.3384399414062,30.762615203857425,26.33174705505371,-0.0853066444396972,802.0416259765625,28.32033920288086,25.82698631286621,-0.039270281791687,720.1980590820312,26.83650588989257,23.042028427124023 -Cognitive_load_ready_data_gazes_0.02,mental_label,timeseries,regression,,108.0,40.0,40.0,,,,,,,,,,,,,,,,,,,-1.654002666473389,2488.51416015625,49.885009765625,41.01163864135742,-1.5296695232391355,1869.42578125,43.23685836791992,34.71635437011719,-2.083390474319458,2136.741455078125,46.22489929199219,38.73462677001953 -Cognitive_load_ready_data_gazes_0.02,mental_label,merged,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0171983242034912,953.771728515625,30.88319396972656,26.44593620300293,-0.0738964080810546,793.6094970703125,28.17107582092285,25.46364974975586,-0.0255892276763916,710.7173461914062,26.65928268432617,22.76095962524414 -Cognitive_load_ready_data_gazes_0.02,mental_label,merged,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0535796880722045,887.406982421875,29.78937721252441,25.39269256591797,-0.1459846496582031,846.8826293945312,29.101247787475582,25.972558975219727,0.0007103085517883,692.4921264648438,26.315244674682617,22.603504180908203 -Cognitive_load_ready_data_gazes_0.02,mental_label,merged,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.032327651977539,967.95751953125,31.11201477050781,26.887834548950195,-0.0121774673461914,747.9991455078125,27.349573135375977,25.255863189697266,-0.0596522092819213,734.3224487304688,27.09838485717773,23.38242721557617 -Cognitive_load_ready_data_gazes_0.02,mental_label,merged,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0340080261230468,969.5331420898438,31.137327194213867,26.549203872680664,-0.0915141105651855,806.62890625,28.401212692260746,25.9794979095459,-0.0822207927703857,749.9620971679688,27.38543510437012,23.242919921875 -Cognitive_load_ready_data_gazes_0.02,mental_label,merged,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0100948810577392,928.1802368164062,30.46605110168457,26.010831832885746,-0.0097774267196655,746.2254638671875,27.317127227783203,24.764324188232425,-0.0392074584960937,720.1544799804688,26.835693359375,23.16188240051269 -Cognitive_load_ready_data_gazes_0.02,mental_label,merged,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0345327854156494,970.025146484375,31.145227432250977,26.78832244873047,-0.200939655303955,887.4944458007812,29.79084587097168,27.040847778320312,-0.0072307586669921,697.9952392578125,26.41959953308105,22.787080764770508 -Cognitive_load_ready_data_gazes_0.02,performance_label,2d,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0268930792808532,580.9337158203125,24.10256576538086,19.50691795349121,0.0015516877174377,711.3787841796875,26.67168426513672,22.73200035095215,-0.2510833740234375,677.9112548828125,26.03672981262207,20.96626281738281 -Cognitive_load_ready_data_gazes_0.02,performance_label,2d,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0117411613464355,603.9979248046875,24.57636833190918,20.218713760375977,-0.0818116664886474,770.7738647460938,27.762813568115234,24.01498985290528,-0.3370826244354248,724.5107421875,26.916736602783203,21.578372955322266 -Cognitive_load_ready_data_gazes_0.02,performance_label,2d,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0614798069000244,633.6913452148438,25.173227310180664,19.798837661743164,-0.1987743377685547,854.1080322265625,29.22512626647949,23.781572341918945,-0.4348084926605224,777.4644775390625,27.8830509185791,22.177637100219727 -Cognitive_load_ready_data_gazes_0.02,performance_label,2d,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0242440700531005,611.4620361328125,24.727758407592773,20.957984924316406,0.0029318332672119,710.3955078125,26.65324592590332,23.09202766418457,-0.0567468404769897,572.608154296875,23.92923164367676,19.784875869750977 -Cognitive_load_ready_data_gazes_0.02,performance_label,2d,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0419020652770996,622.003662109375,24.940000534057617,21.47623634338379,-0.002001404762268,713.9103393554688,26.71910095214844,23.38577079772949,0.0117032527923583,535.5178833007812,23.141260147094727,19.250333786010746 -Cognitive_load_ready_data_gazes_0.02,performance_label,2d,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0050102472305297,599.9796142578125,24.49448204040528,20.21750831604004,-0.0957173109054565,780.6815185546875,27.940677642822266,24.21391487121582,-0.1177508831024169,605.6637573242188,24.61023712158203,19.6717472076416 -Cognitive_load_ready_data_gazes_0.02,performance_label,timeseries,regression,,108.0,40.0,40.0,,,,,,,,,,,,,,,,,,,-0.5588858127593994,930.6370239257812,30.50634384155273,22.538131713867188,-0.6152743101119995,1150.857666015625,33.924293518066406,25.453096389770508,-1.364102840423584,1281.0113525390625,35.79121780395508,29.19364356994629 -Cognitive_load_ready_data_gazes_0.02,performance_label,merged,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0246181488037109,611.6852416992188,24.732271194458008,20.521533966064453,-0.0966798067092895,781.3671875,27.95294570922852,24.05105209350586,-0.1247401237487793,609.4509887695312,24.687061309814453,19.793323516845703 -Cognitive_load_ready_data_gazes_0.02,performance_label,merged,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0238915681838989,611.2515869140625,24.72350311279297,19.71540260314941,-0.2943129539489746,922.177734375,30.36738014221192,24.700714111328125,-0.4228616952896118,770.990966796875,27.7667236328125,21.64444351196289 -Cognitive_load_ready_data_gazes_0.02,performance_label,merged,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0181463956832885,586.1553955078125,24.21064567565918,20.16581153869629,-0.0077470541000366,718.0040283203125,26.795597076416016,22.980710983276367,-0.1508166790008545,623.580810546875,24.971599578857425,20.268354415893555 -Cognitive_load_ready_data_gazes_0.02,performance_label,merged,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0078462362289428,601.6727294921875,24.52901840209961,19.69465446472168,-0.0216598510742187,727.9166259765625,26.979930877685547,22.877649307250977,-0.2031513452529907,651.9388427734375,25.533092498779297,20.1504020690918 -Cognitive_load_ready_data_gazes_0.02,performance_label,merged,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0082149505615234,601.8928833007812,24.533504486083984,20.871713638305664,-0.0155777931213378,723.5833129882812,26.899503707885746,23.35395622253418,-0.1018464565277099,597.0457763671875,24.434520721435547,20.265533447265625 -Cognitive_load_ready_data_gazes_0.02,performance_label,merged,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0212740302085876,584.2882690429688,24.17205619812012,20.14471244812012,-0.0086705684661865,718.6620483398438,26.8078727722168,23.625518798828125,-0.0448114871978759,566.1409301757812,23.793716430664062,19.24164772033692 -Cognitive_load_ready_data_gazes_0.02,temporal_label,2d,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0312186479568481,913.0382690429688,30.216522216796875,26.694780349731445,-0.1196582317352294,579.4056396484375,24.070846557617188,21.0717830657959,-0.0578378438949584,773.4778442382812,27.81147003173828,24.423206329345703 -Cognitive_load_ready_data_gazes_0.02,temporal_label,2d,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0128235816955566,874.0433959960938,29.564224243164062,25.995567321777344,-0.0323352813720703,534.2174072265625,23.11314392089844,20.069278717041016,0.0287147760391235,710.1915893554688,26.6494197845459,22.6294059753418 -Cognitive_load_ready_data_gazes_0.02,temporal_label,2d,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.020737886428833,903.7586669921876,30.06258010864257,25.87325096130371,-0.0441324710845947,540.322265625,23.24483299255371,18.253307342529297,-0.0517939329147338,769.0585327148438,27.731904983520508,23.07692527770996 -Cognitive_load_ready_data_gazes_0.02,temporal_label,2d,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0289505720138549,911.0301513671876,30.18327522277832,26.221704483032227,-0.0653040409088134,551.2781982421875,23.47931480407715,19.40580368041992,-0.0145386457443237,741.8179931640625,27.23633575439453,22.788516998291016 -Cognitive_load_ready_data_gazes_0.02,temporal_label,2d,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0139845609664917,897.779296875,29.96296501159668,26.416927337646484,-0.0175921916961669,526.5880737304688,22.947507858276367,19.45440101623535,0.0028713941574096,729.0880126953125,27.001628875732425,23.331512451171875 -Cognitive_load_ready_data_gazes_0.02,temporal_label,2d,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0159708261489868,899.5379638671875,29.992298126220703,25.87734603881836,-0.1026537418365478,570.6060791015625,23.88736152648925,19.439416885375977,-0.0445294380187988,763.746826171875,27.635969161987305,23.08104705810547 -Cognitive_load_ready_data_gazes_0.02,temporal_label,timeseries,regression,,108.0,40.0,40.0,,,,,,,,,,,,,,,,,,,-0.8187434673309326,1610.310791015625,40.12867736816406,29.866804122924805,-1.3592431545257568,1220.8714599609375,34.94097137451172,27.192157745361328,-1.045320987701416,1495.5130615234375,38.6718635559082,30.23786354064941 -Cognitive_load_ready_data_gazes_0.02,temporal_label,merged,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0051671266555786,889.972412109375,29.83240509033203,26.12883758544922,-0.1012402772903442,569.8746337890625,23.872047424316406,20.17741775512696,-0.1442300081253051,836.6466674804688,28.92484474182129,24.34539794921875 -Cognitive_load_ready_data_gazes_0.02,temporal_label,merged,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0090840458869934,877.3544311523438,29.62016868591309,25.96945571899414,0.0173829793930053,508.4889526367188,22.549699783325195,19.30583572387696,-0.0175749063491821,744.0380249023438,27.27705955505371,23.316059112548828 -Cognitive_load_ready_data_gazes_0.02,temporal_label,merged,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0070970058441162,891.68115234375,29.86103057861328,26.48846244812012,-0.2106268405914306,626.48046875,25.02959251403809,21.706308364868164,0.0071583986282348,725.953369140625,26.94352149963379,23.529693603515625 -Cognitive_load_ready_data_gazes_0.02,temporal_label,merged,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0098404288291931,876.6847534179688,29.608861923217773,26.14893913269043,-0.0089415311813354,522.1114501953125,22.84975814819336,19.91097068786621,0.0418839454650878,700.5625,26.468141555786133,23.169538497924805 -Cognitive_load_ready_data_gazes_0.02,temporal_label,merged,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0291070938110351,859.6260375976562,29.319379806518555,25.282140731811523,-0.1272518634796142,583.3352661132812,24.15233421325684,19.838592529296875,-0.0566605329513549,772.616943359375,27.795988082885746,23.38873672485352 -Cognitive_load_ready_data_gazes_0.02,temporal_label,merged,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0171056985855102,900.5426635742188,30.009042739868164,25.83869361877441,-0.3194249868392944,682.7817993164062,26.13009452819824,21.26011657714844,-0.0229922533035278,747.9991455078125,27.349573135375977,23.220230102539062 -Surgical_skills_2_fixations,Performance_label,2d,regression,,37.0,17.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.2303304672241211,69.1555404663086,8.315980911254883,7.30943489074707,-0.7149621248245239,96.13282775878906,9.80473518371582,8.691372871398926,-0.1589735746383667,65.1922607421875,8.074172019958496,7.637682914733887 -Surgical_skills_2_fixations,Performance_label,2d,regression,,37.0,17.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0168736577033996,55.26045989990234,7.433737754821777,7.36892032623291,-2.170290946960449,177.71180725097656,13.330859184265137,9.974214553833008,-0.2202354669570922,68.63824462890625,8.284820556640625,7.752119541168213 -Surgical_skills_2_fixations,Performance_label,2d,regression,,37.0,17.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.4443527460098266,81.18549346923828,9.010299682617188,7.512924671173096,-0.4526165723800659,81.42694854736328,9.023688316345217,7.526280879974365,-0.5118691921234131,85.04264068603516,9.221857070922852,7.782254219055176 -Surgical_skills_2_fixations,Performance_label,2d,regression,,37.0,17.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.901099681854248,106.8587417602539,10.337249755859377,8.770962715148926,-1.0103428363800049,112.69050598144533,10.615578651428224,7.902962207794189,-3.4086742401123047,247.9879150390625,15.747632026672363,12.340980529785156 -Surgical_skills_2_fixations,Performance_label,2d,regression,,37.0,17.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0795964002609252,60.68294525146485,7.789926052093506,7.497583389282227,-0.0924874544143676,61.23978042602539,7.825584888458252,7.468159675598144,-0.232985258102417,69.35542297363281,8.327990531921387,7.590979099273682 -Surgical_skills_2_fixations,Performance_label,2d,regression,,37.0,17.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.1626848578453064,47.064571380615234,6.860362529754639,6.635419845581055,-0.756571888923645,98.46527862548828,9.922966957092283,9.197040557861328,-0.1068453788757324,62.26005172729492,7.890503883361816,7.302325248718262 -Surgical_skills_2_fixations,Performance_label,timeseries,regression,,37.0,17.0,40.0,,,,,,,,,,,,,,,,,,,-11.215777397155762,686.6355590820312,26.203731536865234,25.10824584960937,-10.676873207092283,654.5513916015625,25.58420181274414,24.464174270629883,-11.02717399597168,676.5285034179688,26.010162353515625,24.90538215637207 -Surgical_skills_2_fixations,Performance_label,merged,regression,,37.0,17.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.9472060203552246,109.45033264160156,10.461851119995115,8.344393730163574,-1.6989214420318604,151.28903198242188,12.29996109008789,9.646391868591309,-0.133479356765747,63.75821685791016,7.984874248504639,7.568423271179199 -Surgical_skills_2_fixations,Performance_label,merged,regression,,37.0,17.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.3700296878814697,77.00788879394531,8.775413513183594,8.00351333618164,-7.181601524353027,458.6226806640625,21.415477752685547,12.257566452026367,-0.3705703020095825,77.0945816040039,8.780351638793945,7.929032325744629 -Surgical_skills_2_fixations,Performance_label,merged,regression,,37.0,17.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0117297172546386,56.86822509765625,7.541102409362793,7.133902072906494,-0.0286998748779296,57.66415023803711,7.593691349029541,7.355794906616211,-0.772530198097229,99.70481872558594,9.985230445861816,8.48324966430664 -Surgical_skills_2_fixations,Performance_label,merged,regression,,37.0,17.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.5850296020507812,89.09278869628906,9.438898086547852,7.881454944610596,-20.51034927368164,1205.7705078125,34.724205017089844,16.16790199279785,-12.934714317321776,783.8276977539062,27.99692344665528,18.59052085876465 -Surgical_skills_2_fixations,Performance_label,merged,regression,,37.0,17.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.1173001527786254,62.8022346496582,7.92478609085083,7.294124126434326,-0.4622411727905273,81.96646881103516,9.053533554077148,7.788806915283203,-2.245614767074585,182.5658264160156,13.51169204711914,10.88440227508545 -Surgical_skills_2_fixations,Performance_label,merged,regression,,37.0,17.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.1685560941696167,65.68326568603516,8.104521751403809,7.563407897949219,-3.5381641387939453,254.3884429931641,15.949559211730955,11.623756408691406,-2.0372822284698486,170.84713745117188,13.070850372314451,10.206451416015623 -Cognitive_load_ready_data_gazes_0.02,physical_label,2d,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0100142955780029,534.9334716796875,23.12862968444824,15.532673835754396,-0.0243288278579711,546.6715087890625,23.38100814819336,15.905505180358888,-0.1903449296951294,525.2210693359375,22.917701721191406,16.979345321655273 -Cognitive_load_ready_data_gazes_0.02,physical_label,2d,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0274848341941833,515.0728149414062,22.695215225219727,16.28087043762207,-0.0397682189941406,554.9112548828125,23.556554794311523,17.098281860351562,-0.0757734775543212,474.6682739257813,21.78688240051269,16.410985946655273 -Cognitive_load_ready_data_gazes_0.02,physical_label,2d,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0066889524459838,533.1723022460938,23.09052467346192,16.907573699951172,0.0161787271499633,525.0531005859375,22.914037704467773,16.381826400756836,-0.1246644258499145,496.2406311035156,22.27645874023437,16.995803833007812 -Cognitive_load_ready_data_gazes_0.02,physical_label,2d,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0170907974243164,520.5778198242188,22.81617546081543,14.663166046142578,-0.0641933679580688,567.9466552734375,23.83163070678711,16.068405151367188,-0.2699799537658691,560.3587646484375,23.6718978881836,17.322330474853516 -Cognitive_load_ready_data_gazes_0.02,physical_label,2d,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0176969766616821,520.2567749023438,22.80913734436035,16.262405395507812,0.0140021443367004,526.2147216796875,22.93937110900879,16.427387237548828,-0.119868516921997,494.12445068359375,22.228910446166992,16.662992477416992 -Cognitive_load_ready_data_gazes_0.02,physical_label,2d,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0526889562606811,501.7239990234375,22.39919662475586,16.545455932617188,-0.5730899572372437,839.5384521484375,28.97479057312012,22.095111846923828,-0.2802959680557251,564.9105834960938,23.767847061157227,17.294286727905273 -Cognitive_load_ready_data_gazes_0.02,physical_label,timeseries,regression,,108.0,40.0,40.0,,,,,,,,,,,,,,,,,,,-0.1435222625732422,605.643310546875,24.60982131958008,13.592036247253418,-0.2464519739151001,665.2158203125,25.791778564453125,15.499990463256836,-0.6817222833633423,742.03369140625,27.24029541015625,19.176496505737305 -Cognitive_load_ready_data_gazes_0.02,physical_label,merged,regression,,108.0,40.0,40.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0205606222152709,518.7401123046875,22.775867462158203,15.10533332824707,-0.0367343425750732,553.2921752929688,23.52216339111328,16.2530517578125,-0.2033843994140625,530.9745483398438,23.04288482666016,17.043529510498047 -Cognitive_load_ready_data_gazes_0.02,physical_label,merged,regression,,108.0,40.0,40.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,0.0051742196083068,526.8892211914062,22.95406723022461,16.378385543823242,-0.0290898084640502,549.2123413085938,23.435279846191406,17.222251892089844,-0.180824875831604,521.0205078125,22.82587432861328,17.423809051513672 -Cognitive_load_ready_data_gazes_0.02,physical_label,merged,regression,,108.0,40.0,40.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0305432081222534,545.8062133789062,23.36249542236328,15.800107955932615,-1.0178265571594238,1076.888916015625,32.81598663330078,22.313064575195312,-0.3983469009399414,616.9987182617188,24.83945846557617,18.273317337036133 -Cognitive_load_ready_data_gazes_0.02,physical_label,merged,regression,,108.0,40.0,40.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0224930047988891,517.7166748046875,22.753387451171875,15.220762252807615,-0.1510756015777588,614.3146362304688,24.785371780395508,17.21757698059082,-0.2016733884811401,530.2196044921875,23.026498794555664,16.74722671508789 -Cognitive_load_ready_data_gazes_0.02,physical_label,merged,regression,,108.0,40.0,40.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,0.013322114944458,522.5738525390625,22.8598747253418,16.745140075683594,-0.0326337814331054,551.1036987304688,23.4755973815918,17.258005142211914,-0.1144990921020507,491.75531005859375,22.175556182861328,16.945417404174805 -Cognitive_load_ready_data_gazes_0.02,physical_label,merged,regression,,108.0,40.0,40.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0329953432083129,512.1543579101562,22.63082695007324,16.137094497680664,-0.0763647556304931,574.4424438476562,23.967529296875,17.144969940185547,-0.1212372779846191,494.7284240722656,22.242490768432617,16.601470947265625 -Emotions_ready_data_gazes_0.02,Anger_label,2d,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-1.4441781044006348,29.2939567565918,5.412389278411865,3.708338737487793,-0.3006579875946045,18.92923164367676,4.350773811340332,3.7415616512298575,-0.3162363767623901,17.344419479370117,4.164663314819336,3.451167583465576 -Emotions_ready_data_gazes_0.02,Anger_label,2d,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0147532224655151,12.162016868591309,3.487408399581909,2.909350633621216,-0.0247843265533447,14.914280891418455,3.86190128326416,3.336282253265381,-0.8303037881851196,24.11842918395996,4.9110517501831055,3.541923999786377 -Emotions_ready_data_gazes_0.02,Anger_label,2d,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0726069211959838,12.8554048538208,3.5854434967041016,2.8693575859069824,-0.0641231536865234,15.486801147460938,3.935327291488648,3.170128107070923,-0.1735910177230835,15.464740753173828,3.932523488998413,3.136627197265625 -Emotions_ready_data_gazes_0.02,Anger_label,2d,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0032112598419189,12.023686408996582,3.4675188064575195,3.0271170139312744,-0.0204032659530639,14.850521087646484,3.853637456893921,3.400364398956299,-1.2909362316131592,30.18831443786621,5.494389533996582,3.63263201713562 -Emotions_ready_data_gazes_0.02,Anger_label,2d,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0444754362106323,12.518243789672852,3.5381131172180176,2.834112405776977,-0.0699449777603149,15.57153034210205,3.946077823638916,3.197255849838257,-0.1582862138748169,15.263065338134766,3.906797409057617,3.132490634918213 -Emotions_ready_data_gazes_0.02,Anger_label,2d,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0796949863433837,12.940357208251951,3.5972707271575928,2.9207568168640137,-0.0207774639129638,14.855966567993164,3.854343891143799,3.193323850631714,-0.0481606721878051,13.811909675598145,3.716437816619873,3.0096895694732666 -Emotions_ready_data_gazes_0.02,Anger_label,timeseries,regression,,252.0,90.0,90.0,,,,,,,,,,,,,,,,,,,-0.0008702278137207,11.995628356933594,3.463470458984375,3.0223257541656494,-0.0037660598754882,14.608389854431152,3.822092294692993,3.358011484146118,-0.0282701253890991,13.549805641174316,3.681005954742432,3.169229507446289 -Emotions_ready_data_gazes_0.02,Anger_label,merged,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0254297256469726,12.289977073669434,3.505706310272217,2.932529926300049,-0.0408158302307128,15.14759635925293,3.891991376876831,3.2397475242614746,-3.3813629150390625,57.73445510864258,7.598319053649902,4.458726406097412 -Emotions_ready_data_gazes_0.02,Anger_label,merged,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0187515020370483,12.209938049316406,3.494272232055664,2.9708025455474854,-0.0327199697494506,15.029772758483888,3.8768250942230233,3.377769708633423,-0.1176426410675048,14.727493286132812,3.837641716003418,3.248596429824829 -Emotions_ready_data_gazes_0.02,Anger_label,merged,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-1.5385513305664062,30.425037384033203,5.515889644622803,4.754780292510986,-0.9001049995422363,27.6533317565918,5.258643627166748,4.763415336608887,-0.7343565225601196,22.85410690307617,4.780596733093262,4.198136806488037 -Emotions_ready_data_gazes_0.02,Anger_label,merged,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0007439851760864,11.99411392211914,3.463251829147339,3.08139443397522,-0.0497081279754638,15.27701187133789,3.908581733703613,3.518353223800659,-57.29512023925781,768.1712646484375,27.71590232849121,7.922895431518555 -Emotions_ready_data_gazes_0.02,Anger_label,merged,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.2016092538833618,14.40152359008789,3.794934034347534,3.2757387161254883,-0.0861355066299438,15.807161331176758,3.9758222103118896,3.571756601333618,-0.2783750295639038,16.845508575439453,4.104328155517578,3.472137451171875 -Emotions_ready_data_gazes_0.02,Anger_label,merged,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0327186584472656,12.377336502075195,3.518143892288208,2.8095510005950928,-0.0593789815902709,15.417757034301758,3.9265451431274414,3.191081047058105,-0.1441327333450317,15.076560974121094,3.882854700088501,3.188497304916382 -Emotions_ready_data_gazes_0.02,Disgust_label,2d,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.3310123682022095,18.58512687683105,4.311047077178955,3.542130470275879,-0.3328627347946167,22.71478080749512,4.766002655029297,4.024948596954346,-0.1837515830993652,18.524396896362305,4.303997993469238,3.6663005352020255 -Emotions_ready_data_gazes_0.02,Disgust_label,2d,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0182926654815673,14.21857452392578,3.770752429962158,3.310624122619629,-0.019629955291748,17.376636505126953,4.168529510498047,3.7013235092163086,-0.0238244533538818,16.02171516418457,4.002713680267334,3.522695541381836 -Emotions_ready_data_gazes_0.02,Disgust_label,2d,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0235027074813842,14.291322708129885,3.780386686325073,3.2947049140930176,-0.7383041381835938,29.62435531616211,5.442826271057129,4.323176383972168,-0.1548751592636108,18.07251167297364,4.251177787780762,3.742101430892944 -Emotions_ready_data_gazes_0.02,Disgust_label,2d,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0698931217193603,14.939079284667969,3.865110397338867,3.382266044616699,0.00151127576828,17.016345977783203,4.125087261199951,3.733152151107788,-0.2813338041305542,20.05145072937012,4.477884769439697,3.83428406715393 -Emotions_ready_data_gazes_0.02,Disgust_label,2d,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0142227411270141,14.161745071411133,3.763209342956543,3.240882396697998,-0.0003236532211303,17.04761505126953,4.128875732421875,3.61415433883667,-0.0790071487426757,16.885263442993164,4.10916805267334,3.4825801849365234 -Emotions_ready_data_gazes_0.02,Disgust_label,2d,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0246700048446655,14.307621002197266,3.782541513442993,3.299708366394043,-0.0025886297225952,17.08621597290039,4.133547782897949,3.608253002166748,-0.0498994588851928,16.429759979248047,4.053363800048828,3.5165903568267822 -Emotions_ready_data_gazes_0.02,Disgust_label,timeseries,regression,,252.0,90.0,90.0,,,,,,,,,,,,,,,,,,,2.47955322265625e-05,13.96280574798584,3.73668384552002,3.3093409538269043,-0.0042613744735717,17.11472511291504,4.1369948387146,3.704313039779663,-0.0028944015502929,15.694184303283691,3.9615886211395264,3.535722255706787 -Emotions_ready_data_gazes_0.02,Disgust_label,merged,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.2762817144393921,17.82091522216797,4.221482753753662,3.662860155105591,-0.5645101070404053,26.662538528442383,5.163578033447266,4.140037059783936,-0.1825194358825683,18.505115509033203,4.301757335662842,3.782013177871704 -Emotions_ready_data_gazes_0.02,Disgust_label,merged,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.1529427766799926,16.09871482849121,4.012320518493652,3.3434669971466064,-0.1248272657394409,19.169418334960938,4.378289222717285,3.753961086273194,-0.0708183050155639,16.757116317749023,4.093545913696289,3.496642827987671 -Emotions_ready_data_gazes_0.02,Disgust_label,merged,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.5526143312454224,21.67938995361328,4.656113147735596,4.059380054473877,-5.335413932800293,107.96875762939452,10.390801429748535,6.63599967956543,-1.1922388076782229,34.30609893798828,5.857141017913818,4.637104511260986 -Emotions_ready_data_gazes_0.02,Disgust_label,merged,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0478618144989013,14.631452560424805,3.825108289718628,3.304577112197876,-3.997148036956787,85.16189575195312,9.228320121765137,4.629115581512451,-5.975363254547119,109.15668487548828,10.44780731201172,4.960209369659424 -Emotions_ready_data_gazes_0.02,Disgust_label,merged,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.1441788673400879,15.97634220123291,3.997041702270508,3.5939977169036865,-0.0859441757202148,18.50676918029785,4.301949501037598,3.888428449630737,-0.6240706443786621,25.414899826049805,5.041319370269775,4.235931873321533 -Emotions_ready_data_gazes_0.02,Disgust_label,merged,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0366590023040771,14.475027084350586,3.8046059608459473,3.341099500656128,-0.1595348119735717,19.76090812683105,4.445324420928955,3.868187189102173,-0.0251305103302001,16.04215431213379,4.005265712738037,3.525574445724488 -Emotions_ready_data_gazes_0.02,Sadness_label,2d,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0254645347595214,13.257728576660156,3.641116380691528,3.2447879314422607,-0.0834003686904907,18.25048065185547,4.272058010101318,3.842190980911255,-0.0448273420333862,16.077573776245117,4.009685039520264,3.506594181060791 -Emotions_ready_data_gazes_0.02,Sadness_label,2d,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0333709716796875,13.359945297241213,3.655125856399536,3.313278913497925,-0.0024261474609375,16.886425018310547,4.109309673309326,3.7978577613830566,-0.2722412347793579,19.576967239379883,4.424586772918701,3.764131784439087 -Emotions_ready_data_gazes_0.02,Sadness_label,2d,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.8720663785934448,24.203027725219727,4.919657230377197,4.070489883422852,-0.2342780828475952,20.79209899902344,4.559835433959961,4.197903633117676,-0.3507026433944702,20.784313201904297,4.558981418609619,4.039471626281738 -Emotions_ready_data_gazes_0.02,Sadness_label,2d,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0334819555282592,13.36138153076172,3.655322313308716,3.413205146789551,-0.0089195966720581,16.99580955505371,4.122597217559815,3.904948711395264,-7.398299217224121,129.23117065429688,11.36798858642578,4.978253364562988 -Emotions_ready_data_gazes_0.02,Sadness_label,2d,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0245372056961059,13.245738983154297,3.639469623565674,3.322810649871826,-0.0193535089492797,17.17157745361328,4.143860340118408,3.8681600093841553,-0.0371164083480834,15.958919525146484,3.994861602783203,3.578076124191284 -Emotions_ready_data_gazes_0.02,Sadness_label,2d,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,0.0083836913108825,12.820120811462402,3.580519676208496,3.222747325897217,-0.0229431390762329,17.232046127319336,4.151149749755859,3.801990032196045,-0.0216678380966186,15.721199989318848,3.964996814727783,3.461721420288086 -Emotions_ready_data_gazes_0.02,Sadness_label,timeseries,regression,,252.0,90.0,90.0,,,,,,,,,,,,,,,,,,,4.2438507080078125e-05,12.927961349487305,3.5955474376678467,3.238665819168091,-0.0110354423522949,17.03145408630371,4.126918315887451,3.767017364501953,-0.0315699577331543,15.873571395874023,3.984165191650391,3.477936029434204 -Emotions_ready_data_gazes_0.02,Sadness_label,merged,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0624783039093017,13.736260414123535,3.7062461376190186,3.235189199447632,-0.0363379716873168,17.457687377929688,4.178239822387695,3.709462881088257,-2.158452033996582,48.6015625,6.971482276916504,4.347159385681152 -Emotions_ready_data_gazes_0.02,Sadness_label,merged,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0103746652603149,13.06263828277588,3.614227294921875,3.244194507598877,-0.015321135520935,17.103649139404297,4.135655879974365,3.760642766952514,-0.0821923017501831,16.652536392211914,4.080751895904541,3.56608247756958 -Emotions_ready_data_gazes_0.02,Sadness_label,merged,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.258981704711914,16.276756286621094,4.034446239471436,3.743567943572998,-0.1304908990859985,19.043746948242188,4.363914012908936,4.129310607910156,-0.2444941997528076,19.150001525878903,4.376071453094482,3.9211232662200928 -Emotions_ready_data_gazes_0.02,Sadness_label,merged,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0404543876647949,13.451522827148438,3.6676318645477295,3.1905629634857178,-0.0616978406906127,17.884889602661133,4.229053020477295,3.7093074321746826,-13.083430290222168,216.7127227783203,14.721165657043455,5.644183158874512 -Emotions_ready_data_gazes_0.02,Sadness_label,merged,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0498934984207153,13.57355785369873,3.6842310428619385,3.3258981704711914,-0.013254165649414,17.068828582763672,4.131443977355957,3.838284730911255,-0.7020198106765747,26.190305709838867,5.11764669418335,4.031137466430664 -Emotions_ready_data_gazes_0.02,Sadness_label,merged,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.3337404727935791,17.243276596069336,4.152502536773682,3.150690078735352,-0.5316154956817627,25.800914764404297,5.079460144042969,3.771678924560547,-0.4867118597030639,22.877195358276367,4.783010959625244,3.741574764251709 -Emotions_ready_data_gazes_0.02,Tenderness_label,2d,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.1177111864089965,6.237157344818115,2.4974300861358643,1.87111234664917,-0.6593354940414429,7.354339122772217,2.711888551712036,2.012594699859619,-0.1522294282913208,10.069064140319824,3.1731789112091064,2.340001106262207 -Emotions_ready_data_gazes_0.02,Tenderness_label,2d,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0137183666229248,5.65684700012207,2.37841272354126,1.8650602102279663,-0.0295974016189575,4.563277244567871,2.13618278503418,1.7655375003814695,-0.0533909797668457,9.205337524414062,3.034029960632324,2.248329401016236 -Emotions_ready_data_gazes_0.02,Tenderness_label,2d,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.9566901922225952,10.918906211853027,3.3043768405914307,2.0528764724731445,-0.5338618755340576,6.798227310180664,2.607341051101685,1.907075881958008,-0.0946887731552124,9.566228866577148,3.0929319858551025,2.261162281036377 -Emotions_ready_data_gazes_0.02,Tenderness_label,2d,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0348480939865112,5.774756908416748,2.4030723571777344,1.908133864402771,-0.120318055152893,4.965360164642334,2.228308916091919,1.8779723644256592,-6.000307559967041,61.174049377441406,7.821383953094482,3.379245042800904 -Emotions_ready_data_gazes_0.02,Tenderness_label,2d,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0269850492477417,5.7308783531188965,2.393925189971924,1.869634032249451,0.0118521451950073,4.379569053649902,2.0927419662475586,1.7339284420013428,-0.105100393295288,9.657214164733888,3.1076059341430664,2.264578342437744 -Emotions_ready_data_gazes_0.02,Tenderness_label,2d,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.0249714851379394,5.719642162322998,2.391577243804932,1.8679523468017576,-0.0711020231246948,4.74722957611084,2.1788136959075928,1.7798000574111938,-0.0336174964904785,9.03254222869873,3.0054187774658203,2.226551055908203 -Emotions_ready_data_gazes_0.02,Tenderness_label,timeseries,regression,,252.0,90.0,90.0,,,,,,,,,,,,,,,,,,,-0.0002623796463012,5.581758499145508,2.362574577331543,1.854109168052673,-0.0124962329864501,4.487483501434326,2.118368148803711,1.742252230644226,-0.014882206916809,8.868818283081055,2.978056192398072,2.214252233505249 -Emotions_ready_data_gazes_0.02,Tenderness_label,merged,regression,,252.0,90.0,90.0,gaf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.9934380054473876,11.123970985412598,3.335261821746826,2.2988951206207275,-5.650180339813232,29.47425651550293,5.429019927978516,2.499440193176269,-0.0144436359405517,8.864985466003418,2.977412462234497,2.402995347976685 -Emotions_ready_data_gazes_0.02,Tenderness_label,merged,regression,,252.0,90.0,90.0,mtf_fixed,large_resnet,,,,,,,,,,,,,,,,,-0.0430421829223632,5.82048225402832,2.412567615509033,1.895702600479126,-0.0964205265045166,4.85944414138794,2.2044146060943604,1.791837215423584,-0.0819443464279174,9.454858779907228,3.0748753547668457,2.2402071952819824 -Emotions_ready_data_gazes_0.02,Tenderness_label,merged,regression,,252.0,90.0,90.0,heatmap_fixed,large_resnet,,,,,,,,,,,,,,,,,-1.3491206169128418,13.108783721923828,3.62060546875,2.78350043296814,-0.691455602645874,7.496697902679443,2.7380099296569824,2.3397650718688965,-0.1588118076324463,10.12658405303955,3.182229518890381,2.5876381397247314 -Emotions_ready_data_gazes_0.02,Tenderness_label,merged,regression,,252.0,90.0,90.0,heatmap_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.2541340589523315,6.998437881469727,2.645456075668335,1.651056170463562,-0.0922759771347045,4.8410749435424805,2.200244188308716,1.477078914642334,-93.55393981933594,826.2847290039062,28.74516868591309,6.119339942932129 -Emotions_ready_data_gazes_0.02,Tenderness_label,merged,regression,,252.0,90.0,90.0,baseline_fixed,large_resnet,,,,,,,,,,,,,,,,,-2.936365842819214,21.966079711914062,4.686798572540283,3.420225143432617,-3.3908519744873047,19.46068954467773,4.411427021026611,3.1905691623687744,-3.107966423034668,35.898555755615234,5.991540431976318,3.9880995750427246 -Emotions_ready_data_gazes_0.02,Tenderness_label,merged,regression,,252.0,90.0,90.0,baseline_zoomed,large_resnet,,,,,,,,,,,,,,,,,-0.31613755226135254,7.3444342613220215,2.71006178855896,1.7653416395187378,-0.6432070732116699,7.282855987548828,2.698676824569702,1.7724543809890747,-0.42667174339294434,12.467350006103516,3.5309135913848877,2.234222412109375 diff --git a/experiments/collection_experiments/results/flaml_results_all_batteries.csv b/experiments/collection_experiments/results/flaml_results_all_batteries.csv deleted file mode 100644 index c9933ff..0000000 --- a/experiments/collection_experiments/results/flaml_results_all_batteries.csv +++ /dev/null @@ -1,263 +0,0 @@ -dataset,label,feature_battery,task_type,best_model,n_features,n_train,n_val,n_test,timestamp,train_best_loss,train_best_model,train_accuracy,train_precision,train_recall,train_f1,train_roc_auc,train_n_classes,train_class_distribution,val_accuracy,val_precision,val_recall,val_f1,val_roc_auc,val_n_classes,val_class_distribution,test_accuracy,test_precision,test_recall,test_f1,test_roc_auc,test_n_classes,test_class_distribution,train_r2,train_mse,train_rmse,train_mae,train_mean_target,train_std_target,val_r2,val_mse,val_rmse,val_mae,val_mean_target,val_std_target,test_r2,test_mse,test_rmse,test_mae,test_mean_target,test_std_target,error -3D_condition_label,condition_label,all_features,classification,LGBMClassifier,471.0,1079.0,360.0,360.0,2026-02-11T01:59:49.020359,0.6677222867657826,LGBMClassifier,0.98887859128823,0.9889393647569532,0.9888785433478172,0.9888886031004614,,6.0,"{1: 180, 2: 180, 3: 180, 4: 179, 5: 180, 6: 180}",0.9888888888888888,0.989247311827957,0.9888888888888888,0.9888614546280892,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",0.2916666666666667,0.2752590547672515,0.2916666666666666,0.2794200621829488,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",,,,,,,,,,,,,,,,,,, -3D_condition_label,condition_label,complex_features,classification,LGBMClassifier,372.0,1079.0,360.0,360.0,2026-02-11T01:49:46.938435,0.6873528686617774,LGBMClassifier,0.7655236329935126,0.7707419100314344,0.7655855576246636,0.764848325391362,,6.0,"{1: 180, 2: 180, 3: 180, 4: 179, 5: 180, 6: 180}",0.8055555555555556,0.8151663520157966,0.8055555555555555,0.805172781225432,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",0.3194444444444444,0.3191072317224138,0.3194444444444445,0.3109512112165036,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",,,,,,,,,,,,,,,,,,, -3D_condition_label,condition_label,distance_features,classification,XGBClassifier,24.0,1079.0,360.0,360.0,2026-02-11T01:54:47.440804,0.8061468242378148,XGBClassifier,0.458758109360519,0.4600801866664143,0.4587006000413822,0.4582993071953534,,6.0,"{1: 180, 2: 180, 3: 180, 4: 179, 5: 180, 6: 180}",0.4138888888888888,0.41618680332381,0.4138888888888889,0.4111521059362786,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",0.1472222222222222,0.1505104670246946,0.1472222222222222,0.1470954067716578,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",,,,,,,,,,,,,,,,,,, -3D_condition_label,condition_label,extended_features,classification,XGBClassifier,62.0,1079.0,360.0,360.0,2026-02-11T01:44:45.186361,0.6558154479846319,XGBClassifier,0.6561631139944393,0.6750504946476051,0.6562538795779019,0.655590374196574,,6.0,"{1: 180, 2: 180, 3: 180, 4: 179, 5: 180, 6: 180}",0.725,0.7387657027776036,0.725,0.7232298729108546,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",0.2833333333333333,0.2585967150535196,0.2833333333333334,0.2545532670559325,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",,,,,,,,,,,,,,,,,,, -3D_condition_label,condition_label,simple_features,classification,XGBClassifier,12.0,1079.0,360.0,360.0,2026-02-11T01:39:44.397871,0.673851133116399,XGBClassifier,0.3697868396663577,0.3743138523863501,0.3698530933167804,0.3606032753305439,,6.0,"{1: 180, 2: 180, 3: 180, 4: 179, 5: 180, 6: 180}",0.4638888888888889,0.4902932981495746,0.4638888888888888,0.4611698178766803,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",0.3166666666666666,0.3253204154133198,0.3166666666666666,0.2831079209691285,,6.0,"{1: 60, 2: 60, 3: 60, 4: 60, 5: 60, 6: 60}",,,,,,,,,,,,,,,,,,, -AFC_mod_label,mod_label,all_features,classification,XGBClassifier,472.0,1532.0,512.0,510.0,2026-02-11T02:24:54.002763,0.8027167067158884,XGBClassifier,0.5052219321148825,0.5057833276475359,0.5047812499179408,0.5049396169697818,,6.0,"{-60.0: 244, -20.0: 255, 0.0: 265, 20.0: 256, 60.0: 261, 100.0: 251}",0.5390625,0.5452102872360723,0.539191500407543,0.5403073994456594,,6.0,"{-60.0: 86, -20.0: 84, 0.0: 84, 20.0: 86, 60.0: 89, 100.0: 83}",0.1588235294117647,0.1592280810264159,0.1591460666127959,0.1576678732528399,,6.0,"{-60.0: 85, -20.0: 84, 0.0: 87, 20.0: 85, 60.0: 87, 100.0: 82}",,,,,,,,,,,,,,,,,,, -AFC_mod_label,mod_label,complex_features,classification,LGBMClassifier,373.0,1532.0,512.0,510.0,2026-02-11T02:14:51.245403,0.8004132385660286,LGBMClassifier,0.4275456919060052,0.4324975094607167,0.4275517278415144,0.4278711611742343,,6.0,"{-60.0: 244, -20.0: 255, 0.0: 265, 20.0: 256, 60.0: 261, 100.0: 251}",0.4296875,0.4285983950391747,0.4315400389868106,0.4277813073064964,,6.0,"{-60.0: 86, -20.0: 84, 0.0: 84, 20.0: 86, 60.0: 89, 100.0: 83}",0.1607843137254902,0.1596198392949494,0.1604360583594245,0.1598505513004071,,6.0,"{-60.0: 85, -20.0: 84, 0.0: 87, 20.0: 85, 60.0: 87, 100.0: 82}",,,,,,,,,,,,,,,,,,, -AFC_mod_label,mod_label,distance_features,classification,LGBMClassifier,25.0,1532.0,512.0,510.0,2026-02-11T02:19:51.606927,0.7931177649324376,LGBMClassifier,0.79177545691906,0.7942739822808434,0.7916527566464304,0.7922726655008999,,6.0,"{-60.0: 244, -20.0: 255, 0.0: 265, 20.0: 256, 60.0: 261, 100.0: 251}",1.0,1.0,1.0,1.0,,6.0,"{-60.0: 86, -20.0: 84, 0.0: 84, 20.0: 86, 60.0: 89, 100.0: 83}",0.1647058823529411,0.1644215755688755,0.1652486534282903,0.1634211671770968,,6.0,"{-60.0: 85, -20.0: 84, 0.0: 87, 20.0: 85, 60.0: 87, 100.0: 82}",,,,,,,,,,,,,,,,,,, -AFC_mod_label,mod_label,extended_features,classification,LGBMClassifier,63.0,1532.0,512.0,510.0,2026-02-11T02:09:49.836253,0.7936311642770945,LGBMClassifier,0.5359007832898173,0.5376531073951507,0.5355390442579689,0.5361189534689793,,6.0,"{-60.0: 244, -20.0: 255, 0.0: 265, 20.0: 256, 60.0: 261, 100.0: 251}",0.537109375,0.5396746018904677,0.5372218214503216,0.5364679952047038,,6.0,"{-60.0: 86, -20.0: 84, 0.0: 84, 20.0: 86, 60.0: 89, 100.0: 83}",0.1529411764705882,0.1518498591079236,0.1528514966401475,0.152092173261654,,6.0,"{-60.0: 85, -20.0: 84, 0.0: 87, 20.0: 85, 60.0: 87, 100.0: 82}",,,,,,,,,,,,,,,,,,, -AFC_mod_label,mod_label,simple_features,classification,XGBClassifier,13.0,1532.0,512.0,510.0,2026-02-11T02:04:49.366618,0.799870169198366,XGBClassifier,0.3498694516971279,0.3544613517863252,0.3495250094011246,0.3456644706093108,,6.0,"{-60.0: 244, -20.0: 255, 0.0: 265, 20.0: 256, 60.0: 261, 100.0: 251}",0.3828125,0.3900611523397514,0.3828393819657541,0.3800193365059765,,6.0,"{-60.0: 86, -20.0: 84, 0.0: 84, 20.0: 86, 60.0: 89, 100.0: 83}",0.1764705882352941,0.1733963159258034,0.1769148646282174,0.1736502804581267,,6.0,"{-60.0: 85, -20.0: 84, 0.0: 87, 20.0: 85, 60.0: 87, 100.0: 82}",,,,,,,,,,,,,,,,,,, -AFC_scr_label,scr_label,all_features,classification,ExtraTreesClassifier,472.0,1532.0,512.0,510.0,2026-02-11T02:49:58.685749,0.7425440098953376,ExtraTreesClassifier,0.3590078328981723,0.3632442252103381,0.3592018377000842,0.348862105559944,,5.0,"{0.0: 305, 25.0: 307, 50.0: 301, 75.0: 314, 100.0: 305}",0.38671875,0.399116819133209,0.3854697661494236,0.3830346675604229,,5.0,"{0.0: 103, 25.0: 97, 50.0: 101, 75.0: 109, 100.0: 102}",0.2627450980392157,0.2507277623459034,0.2619862728031045,0.243552805875473,,5.0,"{0.0: 96, 25.0: 104, 50.0: 101, 75.0: 104, 100.0: 105}",,,,,,,,,,,,,,,,,,, -AFC_scr_label,scr_label,complex_features,classification,ExtraTreesClassifier,373.0,1532.0,512.0,510.0,2026-02-11T02:39:56.691193,0.7382607706765572,ExtraTreesClassifier,0.4255874673629243,0.4399208170473451,0.4255502142569956,0.4206594995184126,,5.0,"{0.0: 305, 25.0: 307, 50.0: 301, 75.0: 314, 100.0: 305}",0.501953125,0.5065587592835299,0.5014057876406124,0.500111683474364,,5.0,"{0.0: 103, 25.0: 97, 50.0: 101, 75.0: 109, 100.0: 102}",0.2411764705882353,0.2347274749721913,0.2421779004823559,0.2298933400124503,,5.0,"{0.0: 96, 25.0: 104, 50.0: 101, 75.0: 104, 100.0: 105}",,,,,,,,,,,,,,,,,,, -AFC_scr_label,scr_label,distance_features,classification,LGBMClassifier,25.0,1532.0,512.0,510.0,2026-02-11T02:44:57.242621,0.7618195527817988,LGBMClassifier,0.5672323759791122,0.5968093991044263,0.5664351495014125,0.5712789796860129,,5.0,"{0.0: 305, 25.0: 307, 50.0: 301, 75.0: 314, 100.0: 305}",0.806640625,0.8071618666809084,0.8064077844106242,0.8060561995082542,,5.0,"{0.0: 103, 25.0: 97, 50.0: 101, 75.0: 109, 100.0: 102}",0.1941176470588235,0.1949898878470307,0.1945930801871395,0.192245769684456,,5.0,"{0.0: 96, 25.0: 104, 50.0: 101, 75.0: 104, 100.0: 105}",,,,,,,,,,,,,,,,,,, -AFC_scr_label,scr_label,extended_features,classification,RandomForestClassifier,63.0,1532.0,512.0,510.0,2026-02-11T02:34:54.864672,0.7477505616392259,RandomForestClassifier,0.5078328981723238,0.5132394274462914,0.5077772693141107,0.5063058963866236,,5.0,"{0.0: 305, 25.0: 307, 50.0: 301, 75.0: 314, 100.0: 305}",0.53125,0.5472656045934772,0.5307207149938423,0.5329021511904386,,5.0,"{0.0: 103, 25.0: 97, 50.0: 101, 75.0: 109, 100.0: 102}",0.1980392156862745,0.1940964335962761,0.1978536067892503,0.1949460767812502,,5.0,"{0.0: 96, 25.0: 104, 50.0: 101, 75.0: 104, 100.0: 105}",,,,,,,,,,,,,,,,,,, -AFC_scr_label,scr_label,simple_features,classification,LGBMClassifier,13.0,1532.0,512.0,510.0,2026-02-11T02:29:54.292476,0.7520798150512905,LGBMClassifier,0.5593994778067886,0.5600321168093496,0.5592225791878651,0.5591145617330135,,5.0,"{0.0: 305, 25.0: 307, 50.0: 301, 75.0: 314, 100.0: 305}",0.595703125,0.6030398872861453,0.5953479844041649,0.5967979801501747,,5.0,"{0.0: 103, 25.0: 97, 50.0: 101, 75.0: 109, 100.0: 102}",0.2333333333333333,0.2363807768508433,0.2332120190040982,0.2315461836325542,,5.0,"{0.0: 96, 25.0: 104, 50.0: 101, 75.0: 104, 100.0: 105}",,,,,,,,,,,,,,,,,,, -APP_known_label,known_label,all_features,classification,ExtraTreesClassifier,476.0,2666.0,941.0,939.0,2026-02-11T03:15:04.612767,0.3500525210084033,ExtraTreesClassifier,0.9797449362340586,0.9860471967047612,0.946370918122442,0.9647743822230574,0.946370918122442,2.0,"{0.0: 2177, 1.0: 489}",0.9723698193411264,0.9802903540270732,0.9494745655060916,0.9635440880210756,0.9494745655060916,2.0,"{0.0: 690, 1.0: 251}",0.77209797657082,0.6969306011400933,0.6099434626419462,0.6225940951093081,0.6099434626419461,2.0,"{0.0: 703, 1.0: 236}",,,,,,,,,,,,,,,,,,, -APP_known_label,known_label,complex_features,classification,LGBMClassifier,377.0,2666.0,941.0,939.0,2026-02-11T03:05:01.995788,0.3522821335286888,LGBMClassifier,0.885596399099775,0.8257770410277663,0.7658355196969996,0.7903410911916855,0.7658355196969996,2.0,"{0.0: 2177, 1.0: 489}",0.873538788522848,0.8624624499332443,0.800970032911831,0.8243403291412867,0.8009700329118309,2.0,"{0.0: 690, 1.0: 251}",0.7603833865814696,0.6700094796188195,0.623230947271982,0.6352428520374779,0.623230947271982,2.0,"{0.0: 703, 1.0: 236}",,,,,,,,,,,,,,,,,,, -APP_known_label,known_label,distance_features,classification,LGBMClassifier,29.0,2666.0,941.0,939.0,2026-02-11T03:10:02.426766,0.3443177452446929,LGBMClassifier,0.9028507126781696,0.857545590795685,0.7993923271081853,0.823913360030051,0.7993923271081853,2.0,"{0.0: 2177, 1.0: 489}",0.8894792773645058,0.8808087938684953,0.8270483284254287,0.848592115848753,0.8270483284254287,2.0,"{0.0: 690, 1.0: 251}",0.7752928647497338,0.6989870214973515,0.6317808665043276,0.6470585091696134,0.6317808665043277,2.0,"{0.0: 703, 1.0: 236}",,,,,,,,,,,,,,,,,,, -APP_known_label,known_label,extended_features,classification,XGBClassifier,67.0,2666.0,941.0,939.0,2026-02-11T02:59:59.945444,0.3348291338652632,XGBClassifier,0.8270817704426107,0.7118087557603687,0.714149976562933,0.7129647729515308,0.714149976562933,2.0,"{0.0: 2177, 1.0: 489}",0.8342189160467588,0.7901573142064975,0.7779606212829839,0.7836322473380735,0.7779606212829839,2.0,"{0.0: 690, 1.0: 251}",0.7763578274760383,0.698763263298433,0.6704920799479229,0.6812070771737866,0.670492079947923,2.0,"{0.0: 703, 1.0: 236}",,,,,,,,,,,,,,,,,,, -APP_known_label,known_label,simple_features,classification,XGBClassifier,17.0,2666.0,941.0,939.0,2026-02-11T02:54:59.322256,0.3297092933283865,XGBClassifier,0.8304576144036009,0.715725539880802,0.6210785184016202,0.6437615885268854,0.6210785184016202,2.0,"{0.0: 2177, 1.0: 489}",0.7725823591923485,0.7215682322112478,0.6269357353195912,0.6415046642455315,0.6269357353195912,2.0,"{0.0: 690, 1.0: 251}",0.7497337593184239,0.6381059470264867,0.5499704655592256,0.540056069117172,0.5499704655592256,2.0,"{0.0: 703, 1.0: 236}",,,,,,,,,,,,,,,,,,, -APP_meta_certainty_label,meta_certainty_label,all_features,classification,LGBMClassifier,476.0,2669.0,937.0,940.0,2026-02-11T03:40:09.327832,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{0.0: 732, 1.0: 79, 2.0: 55, 3.0: 147, 4.0: 361, 5.0: 1295}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 126, 1.0: 40, 2.0: 35, 3.0: 62, 4.0: 154, 5.0: 520}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 441, 1.0: 12, 2.0: 6, 3.0: 19, 4.0: 70, 5.0: 392}",,,,,,,,,,,,,,,,,,, -APP_meta_certainty_label,meta_certainty_label,complex_features,classification,XGBClassifier,377.0,2669.0,937.0,940.0,2026-02-11T03:30:07.229989,0.0,XGBClassifier,1.0,1.0,1.0,1.0,,6.0,"{0.0: 732, 1.0: 79, 2.0: 55, 3.0: 147, 4.0: 361, 5.0: 1295}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 126, 1.0: 40, 2.0: 35, 3.0: 62, 4.0: 154, 5.0: 520}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 441, 1.0: 12, 2.0: 6, 3.0: 19, 4.0: 70, 5.0: 392}",,,,,,,,,,,,,,,,,,, -APP_meta_certainty_label,meta_certainty_label,distance_features,classification,LGBMClassifier,29.0,2669.0,937.0,940.0,2026-02-11T03:35:07.506695,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{0.0: 732, 1.0: 79, 2.0: 55, 3.0: 147, 4.0: 361, 5.0: 1295}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 126, 1.0: 40, 2.0: 35, 3.0: 62, 4.0: 154, 5.0: 520}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 441, 1.0: 12, 2.0: 6, 3.0: 19, 4.0: 70, 5.0: 392}",,,,,,,,,,,,,,,,,,, -APP_meta_certainty_label,meta_certainty_label,extended_features,classification,LGBMClassifier,67.0,2669.0,937.0,940.0,2026-02-11T03:25:05.438737,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{0.0: 732, 1.0: 79, 2.0: 55, 3.0: 147, 4.0: 361, 5.0: 1295}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 126, 1.0: 40, 2.0: 35, 3.0: 62, 4.0: 154, 5.0: 520}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 441, 1.0: 12, 2.0: 6, 3.0: 19, 4.0: 70, 5.0: 392}",,,,,,,,,,,,,,,,,,, -APP_meta_certainty_label,meta_certainty_label,simple_features,classification,LGBMClassifier,17.0,2669.0,937.0,940.0,2026-02-11T03:20:04.972995,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{0.0: 732, 1.0: 79, 2.0: 55, 3.0: 147, 4.0: 361, 5.0: 1295}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 126, 1.0: 40, 2.0: 35, 3.0: 62, 4.0: 154, 5.0: 520}",1.0,1.0,1.0,1.0,,6.0,"{0.0: 441, 1.0: 12, 2.0: 6, 3.0: 19, 4.0: 70, 5.0: 392}",,,,,,,,,,,,,,,,,,, -APP_mod_label,mod_label,all_features,classification,LGBMClassifier,476.0,2669.0,937.0,940.0,2026-02-11T04:05:31.875773,0.5673984296134066,LGBMClassifier,0.9610340951667292,0.9739259847197306,0.9341792769834226,0.952914361122828,,4.0,"{1.0: 384, 2.0: 384, 3.0: 383, 9.0: 1518}",0.9573105656350054,0.9712570271164022,0.9255113322277502,0.946777104233345,,4.0,"{1.0: 134, 2.0: 134, 3.0: 135, 9.0: 534}",0.6670212765957447,0.5128108466845734,0.4812911041883004,0.4920221592968401,,4.0,"{1.0: 135, 2.0: 135, 3.0: 135, 9.0: 535}",,,,,,,,,,,,,,,,,,, -APP_mod_label,mod_label,complex_features,classification,LGBMClassifier,377.0,2669.0,937.0,940.0,2026-02-11T03:55:22.733251,0.5800698907006384,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{1.0: 384, 2.0: 384, 3.0: 383, 9.0: 1518}",1.0,1.0,1.0,1.0,,4.0,"{1.0: 134, 2.0: 134, 3.0: 135, 9.0: 534}",0.6659574468085107,0.5230635250152522,0.478054690204223,0.4930470630446289,,4.0,"{1.0: 135, 2.0: 135, 3.0: 135, 9.0: 535}",,,,,,,,,,,,,,,,,,, -APP_mod_label,mod_label,distance_features,classification,ExtraTreesClassifier,29.0,2669.0,937.0,940.0,2026-02-11T04:00:23.203810,0.6193101304344322,ExtraTreesClassifier,0.7339827650805545,0.8207147124352656,0.5554052455714198,0.6226944310689361,,4.0,"{1.0: 384, 2.0: 384, 3.0: 383, 9.0: 1518}",0.7097118463180363,0.8633391289948666,0.4964379103235383,0.5616651342811372,,4.0,"{1.0: 134, 2.0: 134, 3.0: 135, 9.0: 534}",0.5702127659574469,0.3479452663745572,0.3252336448598131,0.3203438918770084,,4.0,"{1.0: 135, 2.0: 135, 3.0: 135, 9.0: 535}",,,,,,,,,,,,,,,,,,, -APP_mod_label,mod_label,extended_features,classification,LGBMClassifier,67.0,2669.0,937.0,940.0,2026-02-11T03:50:14.618312,0.5836959460684834,LGBMClassifier,0.9988759835144247,0.9995069033530573,0.9980451751523064,0.9987745204241816,,4.0,"{1.0: 384, 2.0: 384, 3.0: 383, 9.0: 1518}",0.992529348986126,0.9967652495378928,0.9869679380873412,0.991782213005571,,4.0,"{1.0: 134, 2.0: 134, 3.0: 135, 9.0: 534}",0.6212765957446809,0.434043706413985,0.414122533748702,0.4194355784395121,,4.0,"{1.0: 135, 2.0: 135, 3.0: 135, 9.0: 535}",,,,,,,,,,,,,,,,,,, -APP_mod_label,mod_label,simple_features,classification,ExtraTreesClassifier,17.0,2669.0,937.0,940.0,2026-02-11T03:45:09.731752,0.6225065549815081,ExtraTreesClassifier,0.8714874484825778,0.9382526113140052,0.7780106748285156,0.8384932448415607,,4.0,"{1.0: 384, 2.0: 384, 3.0: 383, 9.0: 1518}",0.887940234791889,0.9509119035306424,0.8058474792082038,0.8615766057869467,,4.0,"{1.0: 134, 2.0: 134, 3.0: 135, 9.0: 534}",0.5765957446808511,0.3625906047695457,0.3418830044998269,0.3400987716943043,,4.0,"{1.0: 135, 2.0: 135, 3.0: 135, 9.0: 535}",,,,,,,,,,,,,,,,,,, -ASD_ready_data_fixations_ASD_label,ASD_label,all_features,classification,CatBoostClassifier,462.0,4555.0,1528.0,1515.0,2026-02-11T04:30:41.777111,0.3195578944125826,CatBoostClassifier,0.766410537870472,0.7664515444425151,0.7662869357446074,0.7663213260647102,0.7662869357446074,2.0,"{0: 2251, 1: 2304}",0.7611256544502618,0.7611609476074197,0.7611085983703734,0.7611083626208175,0.7611085983703735,2.0,"{0: 762, 1: 766}",0.6871287128712872,0.6871037340927232,0.6871291719247851,0.6871056741099129,0.6871291719247851,2.0,"{0: 748, 1: 767}",,,,,,,,,,,,,,,,,,, -ASD_ready_data_fixations_ASD_label,ASD_label,complex_features,classification,LGBMClassifier,372.0,4555.0,1528.0,1515.0,2026-02-11T04:20:36.439263,0.379635926208461,LGBMClassifier,0.6425905598243689,0.6428184065143658,0.6422304785835925,0.6420622278857386,0.6422304785835925,2.0,"{0: 2251, 1: 2304}",0.6145287958115183,0.6146256992248275,0.6144833233965858,0.6143898972682709,0.6144833233965858,2.0,"{0: 762, 1: 766}",0.6105610561056105,0.6105213532807228,0.6105329117542477,0.6105228758169935,0.6105329117542477,2.0,"{0: 748, 1: 767}",,,,,,,,,,,,,,,,,,, -ASD_ready_data_fixations_ASD_label,ASD_label,distance_features,classification,RandomForestClassifier,24.0,4555.0,1528.0,1515.0,2026-02-11T04:25:37.204150,0.4083358083529949,RandomForestClassifier,0.6603732162458836,0.6720679844302297,0.6587764620045411,0.6530899191012398,0.6587764620045412,2.0,"{0: 2251, 1: 2304}",0.6668848167539267,0.6817109309999907,0.6665073360607991,0.6596353260643617,0.6665073360607993,2.0,"{0: 762, 1: 766}",0.6290429042904291,0.6382585796934633,0.6272955608698381,0.6208276478782415,0.6272955608698381,2.0,"{0: 748, 1: 767}",,,,,,,,,,,,,,,,,,, -ASD_ready_data_fixations_ASD_label,ASD_label,extended_features,classification,RandomForestClassifier,53.0,4555.0,1528.0,1515.0,2026-02-11T04:15:34.003494,0.3213595412481653,RandomForestClassifier,0.6974753018660812,0.6975167269990268,0.6975365308319759,0.6974728376753723,0.697536530831976,2.0,"{0: 2251, 1: 2304}",0.68782722513089,0.6878249815397636,0.6878233726006182,0.6878238824649567,0.6878233726006181,2.0,"{0: 762, 1: 766}",0.695049504950495,0.6956787429070275,0.6953492668846607,0.6949792042170292,0.6953492668846608,2.0,"{0: 748, 1: 767}",,,,,,,,,,,,,,,,,,, -ASD_ready_data_fixations_ASD_label,ASD_label,simple_features,classification,CatBoostClassifier,12.0,4555.0,1528.0,1515.0,2026-02-11T04:10:32.838461,0.3136042967554568,CatBoostClassifier,0.7187705817782657,0.7187772315403895,0.7188065913606299,0.7187627741608137,0.7188065913606299,2.0,"{0: 2251, 1: 2304}",0.7172774869109948,0.7172824023628901,0.7172824023628901,0.7172774869109948,0.71728240236289,2.0,"{0: 762, 1: 766}",0.7049504950495049,0.7052048823016566,0.705127624120645,0.7049422676666255,0.705127624120645,2.0,"{0: 748, 1: 767}",,,,,,,,,,,,,,,,,,, -Age_study_group_category_label,group_category_label,all_features,classification,LGBMClassifier,478.0,4365.0,1519.0,1507.0,2026-02-11T04:55:53.452930,0.5544904170482106,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{7.0: 1102, 8.0: 1102, 10.0: 1097, 11.0: 1064}",0.999341672152732,0.9993351063829788,0.9993386243386244,0.999335984691493,,4.0,"{7.0: 376, 8.0: 375, 10.0: 378, 11.0: 390}",0.4412740544127405,0.441240833991075,0.4415849063414986,0.4413078359802652,,4.0,"{7.0: 377, 8.0: 378, 10.0: 378, 11.0: 374}",,,,,,,,,,,,,,,,,,, -Age_study_group_category_label,group_category_label,complex_features,classification,LGBMClassifier,379.0,4365.0,1519.0,1507.0,2026-02-11T04:45:45.425775,0.5612909219576218,LGBMClassifier,0.5072164948453608,0.5065788411916647,0.5079592674910172,0.5065796636252677,,4.0,"{7.0: 1102, 8.0: 1102, 10.0: 1097, 11.0: 1064}",0.5082290980908493,0.5012251782844765,0.5071406164757228,0.5020729913594373,,4.0,"{7.0: 376, 8.0: 375, 10.0: 378, 11.0: 390}",0.424684804246848,0.4213977489522275,0.4250044523878195,0.4224953969646386,,4.0,"{7.0: 377, 8.0: 378, 10.0: 378, 11.0: 374}",,,,,,,,,,,,,,,,,,, -Age_study_group_category_label,group_category_label,distance_features,classification,LGBMClassifier,31.0,4365.0,1519.0,1507.0,2026-02-11T04:50:45.819623,0.6742153807113854,LGBMClassifier,0.3706758304696449,0.383594336476681,0.3706359239460673,0.3735038985500029,,4.0,"{7.0: 1102, 8.0: 1102, 10.0: 1097, 11.0: 1064}",0.402238314680711,0.4140921474577994,0.4021306622849175,0.4046636041804236,,4.0,"{7.0: 376, 8.0: 375, 10.0: 378, 11.0: 390}",0.3045786330457863,0.3163739759802752,0.3046644400599776,0.3079028744995216,,4.0,"{7.0: 377, 8.0: 378, 10.0: 378, 11.0: 374}",,,,,,,,,,,,,,,,,,, -Age_study_group_category_label,group_category_label,extended_features,classification,LGBMClassifier,69.0,4365.0,1519.0,1507.0,2026-02-11T04:40:43.282964,0.5749806021672714,LGBMClassifier,0.4815578465063001,0.4808720517508299,0.4822054734091067,0.4796206858724252,,4.0,"{7.0: 1102, 8.0: 1102, 10.0: 1097, 11.0: 1064}",0.4845292955892034,0.4793429702108279,0.4833928636375444,0.4803735724971354,,4.0,"{7.0: 376, 8.0: 375, 10.0: 378, 11.0: 390}",0.4100862641008626,0.4067844764289762,0.4103607027035019,0.4065006280774559,,4.0,"{7.0: 377, 8.0: 378, 10.0: 378, 11.0: 374}",,,,,,,,,,,,,,,,,,, -Age_study_group_category_label,group_category_label,simple_features,classification,LGBMClassifier,19.0,4365.0,1519.0,1507.0,2026-02-11T04:35:42.325402,0.5833847051673172,LGBMClassifier,0.4600229095074455,0.4598963946105568,0.4608461329115704,0.4586520353243362,,4.0,"{7.0: 1102, 8.0: 1102, 10.0: 1097, 11.0: 1064}",0.4621461487820935,0.4564748856805949,0.4609357372336096,0.4569170515509144,,4.0,"{7.0: 376, 8.0: 375, 10.0: 378, 11.0: 390}",0.4001327140013271,0.3981230699374014,0.4003923636276577,0.3968290382510436,,4.0,"{7.0: 377, 8.0: 378, 10.0: 378, 11.0: 374}",,,,,,,,,,,,,,,,,,, -Age_study_meta_age_label,meta_age_label,all_features,classification,LGBMClassifier,477.0,4327.0,1532.0,1532.0,2026-02-11T05:23:11.299338,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0.0: 1266, 1.0: 1657, 2.0: 1404}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 508, 1.0: 640, 2.0: 384}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 510, 1.0: 640, 2.0: 382}",,,,,,,,,,,,,,,,,,, -Age_study_meta_age_label,meta_age_label,complex_features,classification,LGBMClassifier,378.0,4327.0,1532.0,1532.0,2026-02-11T05:11:25.001993,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0.0: 1266, 1.0: 1657, 2.0: 1404}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 508, 1.0: 640, 2.0: 384}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 510, 1.0: 640, 2.0: 382}",,,,,,,,,,,,,,,,,,, -Age_study_meta_age_label,meta_age_label,distance_features,classification,LGBMClassifier,30.0,4327.0,1532.0,1532.0,2026-02-11T05:16:25.398076,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0.0: 1266, 1.0: 1657, 2.0: 1404}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 508, 1.0: 640, 2.0: 384}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 510, 1.0: 640, 2.0: 382}",,,,,,,,,,,,,,,,,,, -Age_study_meta_age_label,meta_age_label,extended_features,classification,LGBMClassifier,68.0,4327.0,1532.0,1532.0,2026-02-11T05:05:54.734766,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0.0: 1266, 1.0: 1657, 2.0: 1404}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 508, 1.0: 640, 2.0: 384}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 510, 1.0: 640, 2.0: 382}",,,,,,,,,,,,,,,,,,, -Age_study_meta_age_label,meta_age_label,simple_features,classification,LGBMClassifier,18.0,4327.0,1532.0,1532.0,2026-02-11T05:00:54.052618,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0.0: 1266, 1.0: 1657, 2.0: 1404}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 508, 1.0: 640, 2.0: 384}",1.0,1.0,1.0,1.0,,3.0,"{0.0: 510, 1.0: 640, 2.0: 382}",,,,,,,,,,,,,,,,,,, -Baseline_group_category_label,group_category_label,all_features,classification,LGBMClassifier,471.0,7269.0,2445.0,2486.0,2026-02-11T05:49:03.148593,0.5544159838096276,LGBMClassifier,0.7128903563076077,0.7151016470749623,0.7129724654477544,0.7120254985148218,,4.0,"{7.0: 1822, 8.0: 1824, 10.0: 1818, 11.0: 1805}",0.7419222903885481,0.7422758696971732,0.7427730275342634,0.7413503670012794,,4.0,"{7.0: 624, 8.0: 624, 10.0: 623, 11.0: 574}",0.4609814963797264,0.4578906732352542,0.4611129466945269,0.4579999859124037,,4.0,"{7.0: 622, 8.0: 623, 10.0: 622, 11.0: 619}",,,,,,,,,,,,,,,,,,, -Baseline_group_category_label,group_category_label,complex_features,classification,LGBMClassifier,372.0,7269.0,2445.0,2486.0,2026-02-11T05:38:50.951958,0.5687974146893153,LGBMClassifier,0.8803136607511349,0.8815460367358583,0.8803458779224509,0.8804581704480625,,4.0,"{7.0: 1822, 8.0: 1824, 10.0: 1818, 11.0: 1805}",0.8940695296523518,0.8941185263797947,0.8945429156916894,0.8940202762566971,,4.0,"{7.0: 624, 8.0: 624, 10.0: 623, 11.0: 574}",0.4356395816572808,0.4331407842250866,0.4357543169877188,0.4333079532160587,,4.0,"{7.0: 622, 8.0: 623, 10.0: 622, 11.0: 619}",,,,,,,,,,,,,,,,,,, -Baseline_group_category_label,group_category_label,distance_features,classification,XGBClassifier,24.0,7269.0,2445.0,2486.0,2026-02-11T05:43:51.675868,0.7381487813132475,XGBClassifier,0.3319576282844958,0.3327835217600762,0.3318932019167911,0.3313351842713423,,4.0,"{7.0: 1822, 8.0: 1824, 10.0: 1818, 11.0: 1805}",0.3398773006134969,0.3391648648063781,0.339335419935413,0.3387516739766202,,4.0,"{7.0: 624, 8.0: 624, 10.0: 623, 11.0: 574}",0.2662912308930008,0.266285872311677,0.2662623194611309,0.2659539456326708,,4.0,"{7.0: 622, 8.0: 623, 10.0: 622, 11.0: 619}",,,,,,,,,,,,,,,,,,, -Baseline_group_category_label,group_category_label,extended_features,classification,LGBMClassifier,62.0,7269.0,2445.0,2486.0,2026-02-11T05:33:14.661490,0.5883600132742232,LGBMClassifier,0.4191773283807951,0.4160015213697811,0.4193238124335663,0.4151417174125354,,4.0,"{7.0: 1822, 8.0: 1824, 10.0: 1818, 11.0: 1805}",0.4462167689161554,0.441654106046416,0.4481151912511532,0.4417870357873892,,4.0,"{7.0: 624, 8.0: 624, 10.0: 623, 11.0: 574}",0.414320193081255,0.4087325249389041,0.4144170654229778,0.4085986686358337,,4.0,"{7.0: 622, 8.0: 623, 10.0: 622, 11.0: 619}",,,,,,,,,,,,,,,,,,, -Baseline_group_category_label,group_category_label,simple_features,classification,LGBMClassifier,12.0,7269.0,2445.0,2486.0,2026-02-11T05:28:11.999963,0.593241575553664,LGBMClassifier,0.4355482184619617,0.4330620977862528,0.4356528052413484,0.4314653479637174,,4.0,"{7.0: 1822, 8.0: 1824, 10.0: 1818, 11.0: 1805}",0.4453987730061349,0.4420986432272803,0.4472505419468628,0.4426371366183302,,4.0,"{7.0: 624, 8.0: 624, 10.0: 623, 11.0: 574}",0.415124698310539,0.409798440367784,0.4152241497003825,0.409625557069598,,4.0,"{7.0: 622, 8.0: 623, 10.0: 622, 11.0: 619}",,,,,,,,,,,,,,,,,,, -Bias_group_category_label,group_category_label,all_features,classification,CatBoostClassifier,472.0,6034.0,2075.0,2082.0,2026-02-11T06:15:42.200362,0.5367210468374772,CatBoostClassifier,0.7298641034139874,0.7334556694543026,0.7301443758415547,0.7290255177881729,,4.0,"{7.0: 1516, 8.0: 1521, 10.0: 1512, 11.0: 1485}",0.7518072289156627,0.7537869576468251,0.7516758065321584,0.7514954234672679,,4.0,"{7.0: 513, 8.0: 526, 10.0: 519, 11.0: 517}",0.4779058597502401,0.470082458244167,0.4780349012905934,0.4719029607341846,,4.0,"{7.0: 524, 8.0: 519, 10.0: 520, 11.0: 519}",,,,,,,,,,,,,,,,,,, -Bias_group_category_label,group_category_label,complex_features,classification,XGBClassifier,373.0,6034.0,2075.0,2082.0,2026-02-11T06:04:26.233958,0.5597689473959004,XGBClassifier,0.8400729201193239,0.8425537734931908,0.8402822101129894,0.8400875970031673,,4.0,"{7.0: 1516, 8.0: 1521, 10.0: 1512, 11.0: 1485}",0.8559036144578314,0.8570126820392633,0.8558785127882809,0.855981131211801,,4.0,"{7.0: 513, 8.0: 526, 10.0: 519, 11.0: 517}",0.4490874159462055,0.4399168575497177,0.4491939165498491,0.4424543051419698,,4.0,"{7.0: 524, 8.0: 519, 10.0: 520, 11.0: 519}",,,,,,,,,,,,,,,,,,, -Bias_group_category_label,group_category_label,distance_features,classification,LGBMClassifier,25.0,6034.0,2075.0,2082.0,2026-02-11T06:09:26.699690,0.7326436912956332,LGBMClassifier,0.5561816373881339,0.5573316186112991,0.5559739297942058,0.5560082956080025,,4.0,"{7.0: 1516, 8.0: 1521, 10.0: 1512, 11.0: 1485}",0.5542168674698795,0.5562586606902247,0.554298570948879,0.5546885986286076,,4.0,"{7.0: 513, 8.0: 526, 10.0: 519, 11.0: 517}",0.2310278578290105,0.2308413717350214,0.2309942601008986,0.2306166212955031,,4.0,"{7.0: 524, 8.0: 519, 10.0: 520, 11.0: 519}",,,,,,,,,,,,,,,,,,, -Bias_group_category_label,group_category_label,extended_features,classification,CatBoostClassifier,63.0,6034.0,2075.0,2082.0,2026-02-11T05:59:09.659685,0.5636542503300421,CatBoostClassifier,0.5162412993039444,0.5151136062839146,0.516762651611444,0.507941423625602,,4.0,"{7.0: 1516, 8.0: 1521, 10.0: 1512, 11.0: 1485}",0.5474698795180722,0.5454504570451921,0.5470583689147037,0.5408301558214528,,4.0,"{7.0: 513, 8.0: 526, 10.0: 519, 11.0: 517}",0.4365994236311239,0.428690908249573,0.4368069014557785,0.4293066846679606,,4.0,"{7.0: 524, 8.0: 519, 10.0: 520, 11.0: 519}",,,,,,,,,,,,,,,,,,, -Bias_group_category_label,group_category_label,simple_features,classification,CatBoostClassifier,13.0,6034.0,2075.0,2082.0,2026-02-11T05:54:06.693374,0.5837457543261916,CatBoostClassifier,0.4655286708650978,0.4595127919311279,0.4660607903098262,0.4488715502488125,,4.0,"{7.0: 1516, 8.0: 1521, 10.0: 1512, 11.0: 1485}",0.5089156626506024,0.5036851391151693,0.508506064824978,0.4949783523225494,,4.0,"{7.0: 513, 8.0: 526, 10.0: 519, 11.0: 517}",0.4212295869356388,0.4057120895374898,0.4214573101191708,0.4039991473869153,,4.0,"{7.0: 524, 8.0: 519, 10.0: 520, 11.0: 519}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-20T21:56:05.109964,0.1686513710885866,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9873382837843916,10.614499942373287,3.257990169164617,2.6335169848638094,48.98148148148148,28.95366076818761,0.978103557784438,12.61474563953093,3.5517243191907406,2.8596416232542787,42.875,24.00227853767221,0.3444097767691082,468.2450733454265,21.638971171139964,14.349535580150018,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-20T21:46:04.725342,0.191791039952985,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.97615715931409,19.98779839771062,4.470771566263548,3.5389795104113064,48.98148148148148,28.95366076818761,0.9547421912492288,26.073447913276382,5.106216594825995,4.300860653123355,42.875,24.00227853767221,0.4486869734346186,393.7667149582836,19.843556005874643,13.90112039169068,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T21:51:04.869159,0.1537917256355285,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9772279858589172,19.09012780762708,4.369225080907033,3.5782015632700035,48.98148148148148,28.95366076818761,0.9780023694038392,12.673049586022556,3.559922693826729,2.8422309160232544,42.875,24.00227853767221,0.5113548040390015,349.0071762575397,18.681733759411618,12.390221071243284,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T21:41:04.532553,0.1598542396895192,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8884275506067315,93.53279898939628,9.671235649563933,8.029139242961442,48.98148148148148,28.95366076818761,0.8912452093318948,62.6546544800579,7.915469315211695,6.507418312943673,42.875,24.00227853767221,0.5253008802060174,339.04642913910527,18.41321343869954,11.99541820768734,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-20T21:36:04.292709,0.157782393220657,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8486517143034837,126.8774581935104,11.263989443954143,9.38125722917899,48.98148148148148,28.95366076818761,0.8444738497172233,89.60007323556654,9.46573152141801,7.424330942570727,42.875,24.00227853767221,0.5461569366003101,324.1503167353629,18.00417498069164,11.310670158338514,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-20T22:21:06.185407,0.5448203093056677,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9987818576874103,0.7043139273078951,0.8392341314007046,0.5834170016744749,24.12962962962963,24.04551725088952,0.9988730245825248,0.5027542991301713,0.7090516900270186,0.4939024265179743,24.125,21.12130145137841,-0.0343848038782281,698.1935803552435,26.4233529355236,19.26657799804594,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-20T22:11:05.588266,0.5700529869114802,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7458128303062255,146.9676916301495,12.12302320504871,9.470292633442698,24.12962962962963,24.04551725088952,0.7233588076151427,123.41222943406346,11.109105699112934,8.111557055031653,24.125,21.12130145137841,0.3859381843232502,414.48213086593614,20.358834221682148,17.158177464406627,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T22:16:05.737407,0.5350009799003601,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7169783711433411,163.63937861678463,12.79216082672449,9.779330015182495,24.12962962962963,24.04551725088952,0.7277029156684875,121.47427627404257,11.021536928851736,7.581571936607361,24.125,21.12130145137841,0.545852780342102,306.5422503479854,17.508348018816207,13.22263524532318,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-20T22:06:05.436225,0.5918396590332067,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6752077318400647,187.79063462680853,13.703672304415653,11.200182894893818,24.12962962962963,24.04551725088952,0.6196403155003176,169.68202112735054,13.026205169862424,9.19887694320236,24.125,21.12130145137841,0.4439059285357323,375.3548092685141,19.37407570101124,15.435995313612516,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-20T22:01:05.303089,0.5452481275446477,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6359864285677868,210.46787837438663,14.507511101990811,11.714493331039831,24.12962962962963,24.04551725088952,0.6237238855761418,167.86030223305588,12.956091317718316,9.202560022052698,24.125,21.12130145137841,0.4682831334253597,358.9005768618419,18.9446714635499,15.871772834640144,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,all_features,classification,LGBMClassifier,187.0,108.0,40.0,40.0,2026-02-11T11:05:39.287672,0.2683397934591045,LGBMClassifier,0.9907407407407408,0.9910714285714286,0.9907407407407408,0.99073756432247,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",1.0,1.0,1.0,1.0,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.625,0.6423160173160173,0.625,0.6261459129106188,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,complex_features,classification,LGBMClassifier,97.0,108.0,40.0,40.0,2026-02-11T10:55:38.311259,0.3914258291921104,LGBMClassifier,0.7777777777777778,0.7813172043010753,0.7777777777777777,0.7775710766582977,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.825,0.83125,0.825,0.823989898989899,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.55,0.5666666666666667,0.55,0.54,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,distance_features,classification,XGBClassifier,31.0,108.0,40.0,40.0,2026-02-11T11:00:38.837889,0.2537325423309851,XGBClassifier,0.9722222222222222,0.97255291005291,0.972222222222222,0.9722190458039514,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.925,0.9267676767676768,0.925,0.924812030075188,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.7,0.7132936507936508,0.7,0.6984942302279764,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,extended_features,classification,RandomForestClassifier,60.0,108.0,40.0,40.0,2026-02-11T10:50:37.998370,0.4384520010350181,RandomForestClassifier,0.9722222222222222,0.972883597883598,0.972222222222222,0.9723873959723016,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",1.0,1.0,1.0,1.0,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.625,0.6461038961038961,0.625,0.6288515406162465,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,simple_features,classification,ExtraTreesClassifier,19.0,108.0,40.0,40.0,2026-02-11T10:45:37.636112,0.4254592789075548,ExtraTreesClassifier,0.6851851851851852,0.7037685006435006,0.6851851851851851,0.6793351391825229,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.625,0.6186147186147186,0.625,0.616131907308378,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.575,0.593956043956044,0.575,0.5774936061381074,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,all_features,regression,XGBRegressor,186.0,108.0,40.0,40.0,2026-02-20T22:46:09.817100,0.0810095495205942,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9876033107751672,4.90596768603322,2.2149419148215195,1.808633340729608,35.645370370370365,19.89342150830948,0.9915929923649226,2.8517915019404283,1.6887248153386116,1.3648541450500489,34.5,18.417817460274712,0.95229679027661,16.638496733260464,4.079031347423118,3.123564908504486,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-20T22:36:06.716656,0.065148129316834,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9977820206448312,0.8777613802683375,0.9368892038380726,0.7230982577359233,35.645370370370365,19.89342150830948,0.99675364725646,1.1012147922526654,1.0493878178503242,0.798543102741242,34.5,18.417817460274712,0.9451902482267242,19.11720157026065,4.372322217113082,3.496572475433349,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,distance_features,regression,LGBMRegressor,30.0,108.0,40.0,40.0,2026-02-20T22:41:06.835348,0.058389430549108,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9961789267948836,1.512182916767586,1.22970846820195,0.9403239938635656,35.645370370370365,19.89342150830948,0.9958563041562029,1.4056079293495491,1.185583370897867,0.8927446885644468,34.5,18.417817460274712,0.948980710019357,17.79511891544616,4.218426118287027,3.3211266834179027,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-20T22:31:06.467451,0.0708151845089987,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9922727384443988,3.0580500007507023,1.7487281094414595,1.4166566122534197,35.645370370370365,19.89342150830948,0.9882757983194232,3.977036797278517,1.9942509363865213,1.5810075977049558,34.5,18.417817460274712,0.966536443174824,11.671820075577866,3.416404553851588,2.54661966964499,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T22:26:06.321340,0.0371423996173758,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9934232754500786,2.6027270295058176,1.6132969439956857,1.3420228551935265,35.645370370370365,19.89342150830948,0.9920948445839096,2.6815551996244986,1.637545480169787,1.398327114582062,34.5,18.417817460274712,0.9517748241087582,16.820554343828583,4.101286913132094,3.307139031887054,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,all_features,regression,XGBRegressor,186.0,108.0,40.0,40.0,2026-02-20T23:11:18.148934,0.212999939918518,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9966772794723512,3.115534137609328,1.765087572221086,1.3922805079707392,51.75925925925926,30.621001740626504,0.995389759540558,3.406946441116139,1.845791548663104,1.5109129071235656,46.0,27.184554438136374,0.4225517511367798,400.1625933435442,20.00406442060073,14.54746334552765,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-20T23:01:13.822434,0.1779035273282639,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8515683000989192,139.17635222120637,11.797302751951667,9.766122385755365,51.75925925925926,30.621001740626504,0.8372750830901953,120.25371359634568,10.966025423841844,8.542704329462518,46.0,27.184554438136374,0.6544565158697038,239.4562353853558,15.474373505423598,11.35536642760121,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T23:06:13.931024,0.1622998714447021,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9385568499565125,57.61188974742643,7.590249649874925,6.179684215121799,51.75925925925926,30.621001740626504,0.9313459992408752,50.73529912825518,7.122871550733958,4.976245665550232,46.0,27.184554438136374,0.5680768489837646,299.3160138203773,17.300751828183,14.175375509262086,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T22:56:10.209574,0.1478141704889463,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8674952560461532,124.24250970507862,11.14641241409444,8.941992282979806,51.75925925925926,30.621001740626504,0.819469707777213,133.4118859526396,11.550406311149388,9.358114985689564,46.0,27.184554438136374,0.6801014761392234,221.68467862108287,14.889079173040988,11.35772979461546,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T22:51:09.976388,0.1417980194091797,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8992705941200256,94.44849125764614,9.718461362666734,8.159694459703234,51.75925925925926,30.621001740626504,0.882409930229187,86.8990623870565,9.321966658761257,7.489233374595642,46.0,27.184554438136374,0.6076064705848694,271.9225833305395,16.49007529790387,12.452408576011658,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T00:43:34.400759,0.5720462839914776,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.831663282130845,100.49510109056416,10.024724489509133,8.33332094711245,29.953703703703702,24.433350105822367,0.8981707035127799,72.55178266438664,8.517733422946895,7.030389448815609,32.625,26.69240294540752,0.36579881334337,343.64785862601985,18.537741465076586,13.07158964732538,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T00:33:33.951959,0.5631489753723145,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.6629157066345215,201.23548124356628,14.185749230955912,11.542547526182952,29.953703703703702,24.433350105822367,0.7796233892440796,157.01491899231434,12.530559404604183,10.440303564071655,32.625,26.69240294540752,0.2538679838180542,404.2986486383069,20.107179032333374,14.734852623939512,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,distance_features,regression,RandomForestRegressor,30.0,108.0,40.0,40.0,2026-02-21T00:38:34.148949,0.6053275770697337,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.5464405842913549,270.76979941860554,16.45508430299297,12.97320923619099,29.953703703703702,24.433350105822367,0.5333838074324659,332.4567463263592,18.233396456128496,15.311884291242851,32.625,26.69240294540752,0.3128029016386791,372.3641902198789,19.29674040401329,14.047696926714304,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,extended_features,regression,RandomForestRegressor,59.0,108.0,40.0,40.0,2026-02-21T00:28:33.725516,0.56435429602622,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.5611646170557836,261.9797197505905,16.185787585118945,13.09117393041963,29.953703703703702,24.433350105822367,0.669379437306618,235.56198497274264,15.348028699893112,12.486907775753076,32.625,26.69240294540752,0.3157356575195966,370.7750489512173,19.25551996055202,13.56902081967733,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T00:23:33.500336,0.5643302202224731,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7398673295974731,155.29623701858392,12.461791083892551,9.972702220634178,29.953703703703702,24.433350105822367,0.8260729908943176,123.9202835201967,11.131948774594532,9.380861186981202,32.625,26.69240294540752,0.2116053700447082,427.1989716292695,20.668792215058662,15.63014359474182,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T11:32:43.295612,0.7120860722124058,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9851069523692396,7.887799300736127,2.808522618875648,2.184011796652298,20.0,23.013683530231088,0.9862785835034314,7.322948466512415,2.706094689125348,2.0337501122566684,22.75,23.101677428273472,0.4551218900703705,240.41895228598136,15.505449115907007,11.786909100284808,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T11:22:42.851947,0.7356837941206334,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.808316951163004,101.52102216181645,10.075764098162304,7.301547212358777,20.0,23.013683530231088,0.837122767495704,86.92554302213648,9.323386885790832,7.135584110528979,22.75,23.101677428273472,0.1936207947597705,355.8022246371694,18.86272049936513,14.711318541825184,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T11:27:43.052965,0.6767702224956421,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5275712479702964,250.21226496388005,15.81809928417065,11.679688528584377,20.0,23.013683530231088,0.6179949368474001,203.87132714125315,14.278351695530306,10.465550864847764,22.75,23.101677428273472,0.2047137086110759,350.9076497270598,18.73252918660637,13.96036553382991,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,extended_features,regression,XGBRegressor,59.0,108.0,40.0,40.0,2026-02-21T11:17:42.608141,0.7570765614509583,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.2722945809364319,385.4143481055319,19.63197259843065,14.502570240585891,20.0,23.013683530231088,0.3404079079627991,352.0160379780094,18.762090447975392,15.25197777748108,22.75,23.101677428273472,-0.6855566501617432,743.7255531050448,27.271332074268848,21.67328687906265,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T00:48:34.541460,0.7106660008430481,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8820297122001648,62.48055011149631,7.904463935745188,5.385430331583376,20.0,23.013683530231088,0.9197852611541748,42.809594239293446,6.542904113564056,5.171665108203888,22.75,23.101677428273472,0.046057105064392,420.9124071372422,20.51614991018642,15.19031970500946,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T11:57:44.397725,0.5630851827288744,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6359635267410666,322.316938389502,17.95318741587415,14.790478281583912,39.02777777777778,29.755627644921383,0.6242868558327721,194.42568158866283,13.9436609822766,11.276196781336347,38.625,22.74828290223242,0.5309148525110762,342.98919627955746,18.519967502119368,15.126676784637016,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-21T11:47:43.865575,0.5049643084192409,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7469159116155926,224.0799879003842,14.969301516783748,12.446417162276989,39.02777777777778,29.755627644921383,0.6739740051517031,168.71335817782412,12.988970635805751,10.33542334749882,38.625,22.74828290223242,0.5175837149137502,352.7367574515023,18.781287427956112,14.439615499261446,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T11:52:44.077885,0.5796870509165042,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8169688923810039,162.05526251165702,12.730092792735528,10.698723935059268,39.02777777777778,29.755627644921383,0.7024754304629242,153.9643159140377,12.408235809898104,9.74511244328358,38.625,22.74828290223242,0.6028531887722737,290.3887840345731,17.040797634928158,14.455335341215289,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T11:42:43.611464,0.4626431840552822,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9277591179095294,63.96188748207008,7.99761761289386,6.6829065775222585,39.02777777777778,29.755627644921383,0.9124545653550858,45.30339453132677,6.7307796377037015,4.943846478463678,38.625,22.74828290223242,0.3619957431223399,466.5007375757341,21.59862814105873,16.619956509551606,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T11:37:43.497323,0.4584267941081605,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7189401601794414,248.8496448287773,15.774968932735726,12.839758202824468,39.02777777777778,29.755627644921383,0.6482470099237532,182.0266762239878,13.491726213646192,10.568016082868288,38.625,22.74828290223242,0.5260339973377683,346.55801657159054,18.61606877328268,15.094781370544633,39.75,27.040478915877213, -Crossmodal_condition_label,condition_label,all_features,classification,XGBClassifier,471.0,1361.0,453.0,485.0,2026-02-12T00:05:59.752624,0.59237021133199,XGBClassifier,0.5481263776634827,0.6525615379656905,0.5822072645886688,0.5869971482919306,,5.0,"{1: 341, 2: 408, 3: 403, 4: 114, 5: 95}",0.5231788079470199,0.6277910757618461,0.5470762306411029,0.5626387966287838,,5.0,"{1: 105, 2: 140, 3: 139, 4: 40, 5: 29}",0.3896907216494845,0.4306065626165445,0.3801102330293819,0.3764798933938367,,5.0,"{1: 125, 2: 141, 3: 150, 4: 48, 5: 21}",,,,,,,,,,,,,,,,,,, -Crossmodal_condition_label,condition_label,complex_features,classification,CatBoostClassifier,372.0,1361.0,453.0,485.0,2026-02-11T23:55:22.767053,0.6375192392541753,CatBoostClassifier,0.7244673034533431,0.7713535166292372,0.664102824835872,0.6962537159030635,,5.0,"{1: 341, 2: 408, 3: 403, 4: 114, 5: 95}",0.7593818984547461,0.8103433010520652,0.7184335684162031,0.7519262722621198,,5.0,"{1: 105, 2: 140, 3: 139, 4: 40, 5: 29}",0.3587628865979381,0.3833860733647742,0.3412533941236069,0.3526432008109686,,5.0,"{1: 125, 2: 141, 3: 150, 4: 48, 5: 21}",,,,,,,,,,,,,,,,,,, -Crossmodal_condition_label,condition_label,distance_features,classification,LGBMClassifier,24.0,1361.0,453.0,485.0,2026-02-12T00:00:28.238259,0.7650344579593327,LGBMClassifier,0.46730345334313,0.4784844930533063,0.3831738821117628,0.4006003243905741,,5.0,"{1: 341, 2: 408, 3: 403, 4: 114, 5: 95}",0.4392935982339956,0.4359378380530594,0.3696541092249353,0.3799157645176026,,5.0,"{1: 105, 2: 140, 3: 139, 4: 40, 5: 29}",0.2742268041237113,0.2088934353196648,0.2013862208713272,0.1953164967829036,,5.0,"{1: 125, 2: 141, 3: 150, 4: 48, 5: 21}",,,,,,,,,,,,,,,,,,, -Crossmodal_condition_label,condition_label,extended_features,classification,XGBClassifier,62.0,1361.0,453.0,485.0,2026-02-11T23:50:14.482665,0.5906554924776386,XGBClassifier,0.7612049963262307,0.8241459860857139,0.7772641545012462,0.7893551536379253,,5.0,"{1: 341, 2: 408, 3: 403, 4: 114, 5: 95}",0.8013245033112583,0.8627577295534412,0.8041170807196607,0.8247188042830805,,5.0,"{1: 105, 2: 140, 3: 139, 4: 40, 5: 29}",0.3773195876288659,0.4600301857585139,0.4148813576494428,0.427815604395682,,5.0,"{1: 125, 2: 141, 3: 150, 4: 48, 5: 21}",,,,,,,,,,,,,,,,,,, -Crossmodal_condition_label,condition_label,simple_features,classification,RandomForestClassifier,12.0,1361.0,453.0,485.0,2026-02-11T23:45:13.184438,0.5977427041746848,RandomForestClassifier,0.4041146216017634,0.4985432547342819,0.4057312102658152,0.3735035835532326,,5.0,"{1: 341, 2: 408, 3: 403, 4: 114, 5: 95}",0.4370860927152318,0.5710014472023206,0.4291757923710292,0.3957143629980326,,5.0,"{1: 105, 2: 140, 3: 139, 4: 40, 5: 29}",0.3752577319587629,0.4003978502349509,0.3622348530901722,0.341121211953219,,5.0,"{1: 125, 2: 141, 3: 150, 4: 48, 5: 21}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_Dyslexia_label,Dyslexia_label,all_features,classification,ExtraTreesClassifier,472.0,360.0,120.0,120.0,2026-02-12T00:31:13.060167,0.117975237988666,ExtraTreesClassifier,0.9833333333333332,0.9828571428571428,0.9828571428571428,0.9828571428571428,0.9828571428571428,2.0,"{1: 150, 3: 210}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 60, 3: 60}",0.5166666666666667,0.5166852057842046,0.5166666666666666,0.5165323701028064,0.5166666666666666,2.0,"{1: 60, 3: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_Dyslexia_label,Dyslexia_label,complex_features,classification,CatBoostClassifier,382.0,360.0,120.0,120.0,2026-02-12T00:21:10.631119,0.0708666997377932,CatBoostClassifier,0.9972222222222222,0.9976303317535544,0.9966666666666666,0.9971401107412674,0.9966666666666666,2.0,"{1: 150, 3: 210}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 60, 3: 60}",0.5,0.5,0.5,0.5,0.5,2.0,"{1: 60, 3: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_Dyslexia_label,Dyslexia_label,distance_features,classification,LGBMClassifier,34.0,360.0,120.0,120.0,2026-02-12T00:26:11.476513,0.0592592592592592,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{1: 150, 3: 210}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 60, 3: 60}",0.5,0.5,0.5,0.5,0.5,2.0,"{1: 60, 3: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_Dyslexia_label,Dyslexia_label,extended_features,classification,CatBoostClassifier,63.0,360.0,120.0,120.0,2026-02-12T00:16:02.729259,0.0421614784625115,CatBoostClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{1: 150, 3: 210}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 60, 3: 60}",0.5,0.5,0.5,0.5,0.5,2.0,"{1: 60, 3: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_Dyslexia_label,Dyslexia_label,simple_features,classification,CatBoostClassifier,22.0,360.0,120.0,120.0,2026-02-12T00:11:01.292084,0.0339889850511407,CatBoostClassifier,0.9861111111111112,0.9883720930232558,0.9833333333333334,0.9856430707876372,0.9833333333333334,2.0,"{1: 150, 3: 210}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 60, 3: 60}",0.5,0.5,0.5,0.5,0.5,2.0,"{1: 60, 3: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Age_label,meta_Age_label,all_features,classification,LGBMClassifier,472.0,360.0,120.0,120.0,2026-02-12T00:57:39.008749,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{7: 90, 8: 60, 9: 90, 10: 120}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Age_label,meta_Age_label,complex_features,classification,LGBMClassifier,382.0,360.0,120.0,120.0,2026-02-12T00:47:35.489148,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{7: 90, 8: 60, 9: 90, 10: 120}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Age_label,meta_Age_label,distance_features,classification,LGBMClassifier,34.0,360.0,120.0,120.0,2026-02-12T00:52:35.943706,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{7: 90, 8: 60, 9: 90, 10: 120}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Age_label,meta_Age_label,extended_features,classification,LGBMClassifier,63.0,360.0,120.0,120.0,2026-02-12T00:41:15.731786,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{7: 90, 8: 60, 9: 90, 10: 120}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Age_label,meta_Age_label,simple_features,classification,LGBMClassifier,22.0,360.0,120.0,120.0,2026-02-12T00:36:13.696036,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{7: 90, 8: 60, 9: 90, 10: 120}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",1.0,1.0,1.0,1.0,,4.0,"{7: 30, 8: 30, 9: 30, 10: 30}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Sex_label,meta_Sex_label,all_features,classification,LGBMClassifier,472.0,360.0,120.0,120.0,2026-02-12T01:26:22.791756,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0: 210, 1: 150}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 90, 1: 30}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 60, 1: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Sex_label,meta_Sex_label,complex_features,classification,LGBMClassifier,382.0,360.0,120.0,120.0,2026-02-12T01:14:55.288860,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0: 210, 1: 150}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 90, 1: 30}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 60, 1: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Sex_label,meta_Sex_label,distance_features,classification,LGBMClassifier,34.0,360.0,120.0,120.0,2026-02-12T01:20:50.352492,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0: 210, 1: 150}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 90, 1: 30}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 60, 1: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Sex_label,meta_Sex_label,extended_features,classification,LGBMClassifier,63.0,360.0,120.0,120.0,2026-02-12T01:08:07.625600,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0: 210, 1: 150}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 90, 1: 30}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 60, 1: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_1_ready_data_fixations_meta_Sex_label,meta_Sex_label,simple_features,classification,LGBMClassifier,22.0,360.0,120.0,120.0,2026-02-12T01:02:54.376659,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0: 210, 1: 150}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 90, 1: 30}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 60, 1: 60}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_Dyslexia_label,Dyslexia_label,all_features,classification,LGBMClassifier,467.0,2546.0,911.0,841.0,2026-02-12T01:51:32.047469,0.1192832079083456,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{1: 1672, 2: 874}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 604, 2: 307}",0.8145065398335315,0.8066906902444461,0.7623125317742756,0.7769746504923026,0.7623125317742756,2.0,"{1: 560, 2: 281}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_Dyslexia_label,Dyslexia_label,complex_features,classification,LGBMClassifier,377.0,2546.0,911.0,841.0,2026-02-12T01:41:29.606399,0.2269058204615016,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{1: 1672, 2: 874}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 604, 2: 307}",0.760998810939358,0.7379389962328351,0.6990849008642603,0.7102371193927769,0.6990849008642603,2.0,"{1: 560, 2: 281}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_Dyslexia_label,Dyslexia_label,distance_features,classification,ExtraTreesClassifier,29.0,2546.0,911.0,841.0,2026-02-12T01:46:30.089138,0.2644639671693725,ExtraTreesClassifier,0.7827965435978005,0.7753609276123834,0.723775223632203,0.7375632984005009,0.723775223632203,2.0,"{1: 1672, 2: 874}",0.756311745334797,0.7276320341328413,0.7129155251634058,0.7187301816887148,0.7129155251634056,2.0,"{1: 604, 2: 307}",0.6777645659928656,0.6216060937413125,0.5833947635993899,0.58233350498555,0.5833947635993899,2.0,"{1: 560, 2: 281}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_Dyslexia_label,Dyslexia_label,extended_features,classification,ExtraTreesClassifier,58.0,2546.0,911.0,841.0,2026-02-12T01:36:25.983114,0.1226782535049975,ExtraTreesClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{1: 1672, 2: 874}",1.0,1.0,1.0,1.0,1.0,2.0,"{1: 604, 2: 307}",0.7871581450653984,0.7805238903710889,0.7205007625826131,0.7360729056542907,0.7205007625826131,2.0,"{1: 560, 2: 281}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_Dyslexia_label,Dyslexia_label,simple_features,classification,CatBoostClassifier,17.0,2546.0,911.0,841.0,2026-02-12T01:31:24.048455,0.1208848372368421,CatBoostClassifier,0.95758051846033,0.9529592261285624,0.9529592261285624,0.9529592261285624,0.9529592261285624,2.0,"{1: 1672, 2: 874}",0.9538968166849616,0.9511470697532078,0.9452105399400306,0.94807679781136,0.9452105399400306,2.0,"{1: 604, 2: 307}",0.8145065398335315,0.8132851368159204,0.7561070157600407,0.7731742738589211,0.7561070157600407,2.0,"{1: 560, 2: 281}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_meta_Age_label,meta_Age_label,all_features,classification,XGBClassifier,467.0,2516.0,899.0,883.0,2026-02-12T02:38:45.828518,0.0,XGBClassifier,1.0,1.0,1.0,1.0,,8.0,"{7: 486, 8: 571, 9: 500, 10: 628, 11: 250, 12: 71, 13: 3, 14: 7}",1.0,1.0,1.0,1.0,,7.0,"{6: 25, 7: 215, 8: 168, 9: 240, 10: 81, 11: 147, 12: 23}",1.0,1.0,1.0,1.0,,6.0,"{7: 242, 8: 202, 9: 195, 10: 207, 11: 11, 12: 26}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_meta_Age_label,meta_Age_label,complex_features,classification,LGBMClassifier,377.0,2516.0,899.0,883.0,2026-02-12T02:16:19.317461,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,8.0,"{7: 486, 8: 571, 9: 500, 10: 628, 11: 250, 12: 71, 13: 3, 14: 7}",1.0,1.0,1.0,1.0,,7.0,"{6: 25, 7: 215, 8: 168, 9: 240, 10: 81, 11: 147, 12: 23}",1.0,1.0,1.0,1.0,,6.0,"{7: 242, 8: 202, 9: 195, 10: 207, 11: 11, 12: 26}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_meta_Age_label,meta_Age_label,distance_features,classification,LGBMClassifier,29.0,2516.0,899.0,883.0,2026-02-12T02:21:19.999698,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,8.0,"{7: 486, 8: 571, 9: 500, 10: 628, 11: 250, 12: 71, 13: 3, 14: 7}",1.0,1.0,1.0,1.0,,7.0,"{6: 25, 7: 215, 8: 168, 9: 240, 10: 81, 11: 147, 12: 23}",1.0,1.0,1.0,1.0,,6.0,"{7: 242, 8: 202, 9: 195, 10: 207, 11: 11, 12: 26}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_meta_Age_label,meta_Age_label,extended_features,classification,XGBClassifier,58.0,2516.0,899.0,883.0,2026-02-12T02:01:33.079314,0.0,XGBClassifier,1.0,1.0,1.0,1.0,,8.0,"{7: 486, 8: 571, 9: 500, 10: 628, 11: 250, 12: 71, 13: 3, 14: 7}",1.0,1.0,1.0,1.0,,7.0,"{6: 25, 7: 215, 8: 168, 9: 240, 10: 81, 11: 147, 12: 23}",1.0,1.0,1.0,1.0,,6.0,"{7: 242, 8: 202, 9: 195, 10: 207, 11: 11, 12: 26}",,,,,,,,,,,,,,,,,,, -Dyslexia_2_ready_data_fixations_meta_Age_label,meta_Age_label,simple_features,classification,XGBClassifier,17.0,2516.0,899.0,883.0,2026-02-12T01:56:32.556275,0.0,XGBClassifier,1.0,1.0,1.0,1.0,,8.0,"{7: 486, 8: 571, 9: 500, 10: 628, 11: 250, 12: 71, 13: 3, 14: 7}",1.0,1.0,1.0,1.0,,7.0,"{6: 25, 7: 215, 8: 168, 9: 240, 10: 81, 11: 147, 12: 23}",1.0,1.0,1.0,1.0,,6.0,"{7: 242, 8: 202, 9: 195, 10: 207, 11: 11, 12: 26}",,,,,,,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations_Dyslexia_label,Dyslexia_label,all_features,classification,ExtraTreesClassifier,462.0,126.0,42.0,42.0,2026-02-12T03:03:51.337826,0.1428931451612902,ExtraTreesClassifier,0.873015873015873,0.8764302059496567,0.873015873015873,0.8727272727272728,0.8730158730158729,2.0,"{0: 63, 1: 63}",0.8571428571428571,0.8571428571428571,0.8571428571428571,0.8571428571428571,0.8571428571428572,2.0,"{0: 21, 1: 21}",0.7380952380952381,0.7386363636363636,0.7380952380952381,0.7379466817923993,0.7380952380952381,2.0,"{0: 21, 1: 21}",,,,,,,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations_Dyslexia_label,Dyslexia_label,complex_features,classification,RandomForestClassifier,372.0,126.0,42.0,42.0,2026-02-12T02:53:49.822795,0.1831048208757186,RandomForestClassifier,0.8412698412698413,0.8468629961587708,0.8412698412698413,0.8406273716164938,0.8412698412698412,2.0,"{0: 63, 1: 63}",0.8571428571428571,0.8604118993135011,0.8571428571428572,0.8568181818181818,0.8571428571428571,2.0,"{0: 21, 1: 21}",0.6904761904761905,0.6909090909090909,0.6904761904761905,0.690300623936472,0.6904761904761905,2.0,"{0: 21, 1: 21}",,,,,,,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations_Dyslexia_label,Dyslexia_label,distance_features,classification,ExtraTreesClassifier,24.0,126.0,42.0,42.0,2026-02-12T02:58:50.179032,0.2313390313390313,ExtraTreesClassifier,0.7698412698412699,0.8035714285714286,0.7698412698412698,0.763265306122449,0.76984126984127,2.0,"{0: 63, 1: 63}",0.8095238095238095,0.8620689655172413,0.8095238095238095,0.8023529411764705,0.8095238095238095,2.0,"{0: 21, 1: 21}",0.7857142857142857,0.8028846153846154,0.7857142857142857,0.7826336975273145,0.7857142857142858,2.0,"{0: 21, 1: 21}",,,,,,,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations_Dyslexia_label,Dyslexia_label,extended_features,classification,RandomForestClassifier,53.0,126.0,42.0,42.0,2026-02-12T02:48:48.886687,0.1746471774193547,RandomForestClassifier,0.8492063492063492,0.8492943548387097,0.8492063492063492,0.8491968503937009,0.8492063492063492,2.0,"{0: 63, 1: 63}",0.8571428571428571,0.8604118993135011,0.8571428571428572,0.8568181818181818,0.8571428571428572,2.0,"{0: 21, 1: 21}",0.7619047619047619,0.7643020594965675,0.7619047619047619,0.7613636363636364,0.761904761904762,2.0,"{0: 21, 1: 21}",,,,,,,,,,,,,,,,,,, -Dyslexia_Czech_ready_data_fixations_Dyslexia_label,Dyslexia_label,simple_features,classification,XGBClassifier,12.0,126.0,42.0,42.0,2026-02-12T02:43:48.528199,0.1434353655451556,XGBClassifier,0.9206349206349206,0.9223374652162916,0.9206349206349206,0.9205548549810844,0.9206349206349206,2.0,"{0: 63, 1: 63}",0.8809523809523809,0.8818181818181818,0.8809523809523809,0.8808848553601816,0.880952380952381,2.0,"{0: 21, 1: 21}",0.8095238095238095,0.8095238095238095,0.8095238095238095,0.8095238095238095,0.8095238095238095,2.0,"{0: 21, 1: 21}",,,,,,,,,,,,,,,,,,, -Emotions_ready_data_gazes_0.02_Anger_label,Anger_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T03:17:15.534508,0.4111066704969655,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7319828106688218,3.212239023328836,1.7922720282727274,1.3834331925510883,2.7063492063492065,3.461964439854464,0.6029213505214293,5.778915989522448,2.403937601004329,1.7099679461992452,3.0444444444444443,3.814915496693679,0.665082402076018,4.41330428790298,2.1007865879005845,1.5837267236396584,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.02_Anger_label,Anger_label,extended_features,regression,XGBRegressor,56.0,252.0,90.0,90.0,2026-02-22T03:12:15.225104,0.3968443870544433,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7657746076583862,2.8072378458841363,1.675481377361186,1.2110452581906603,2.7063492063492065,3.461964439854464,0.6625591516494751,4.910973274876585,2.216071586135381,1.6199372058113417,3.0444444444444443,3.814915496693679,0.4921141862869262,6.692555825033268,2.586997453619402,1.818337163080772,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.02_Anger_label,Anger_label,simple_features,regression,LGBMRegressor,15.0,252.0,90.0,90.0,2026-02-22T03:07:14.945842,0.3852492111615551,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7654219254282285,2.811464619255037,1.6767422638124911,1.2288210332830287,2.7063492063492065,3.461964439854464,0.6465695435085976,5.143678510250922,2.2679679253135223,1.578788947326942,3.0444444444444443,3.814915496693679,0.630332498488794,4.871213634728405,2.207082607137396,1.6269860196823942,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T03:42:17.211437,0.6142018628878253,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4836875083573246,7.209349762840552,2.6850232332031228,2.1915200836056115,2.9285714285714284,3.736730111666835,0.5119388744279657,8.317585905566565,2.8840225216815774,2.373471380461172,3.188888888888889,4.128207694076462,0.453436423416407,8.55311268067036,2.924570512172746,2.426890589287276,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,complex_features,regression,XGBRegressor,93.0,252.0,90.0,90.0,2026-02-22T03:32:16.470870,0.5811445116996765,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.6212551593780518,5.288471520178004,2.299667697772442,1.759897566030896,2.9285714285714284,3.736730111666835,0.6578422784805298,5.831086877588968,2.4147643523932034,1.8480531310869588,3.188888888888889,4.128207694076462,0.4268766641616821,8.9687434806622,2.994786049229928,2.2912181420458686,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T03:37:16.653663,0.5874419440815403,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5590635132015112,6.156863155517901,2.4813027133983274,1.962746669337151,2.9285714285714284,3.736730111666835,0.5567016629573834,7.554734042432077,2.748587645033732,2.050395172886204,3.188888888888889,4.128207694076462,0.4752206264045712,8.212214108575576,2.8656960949437007,2.166195806443596,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T03:27:15.973821,0.598096341304008,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.461119036187222,7.524476768521843,2.743077973467368,2.2408675641905584,2.9285714285714284,3.736730111666835,0.4838264151952643,8.796681212349446,2.9659199605433466,2.435938793133732,3.188888888888889,4.128207694076462,0.4631442720926234,8.401195635386102,2.8984816085989062,2.362667318459028,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T03:22:15.716449,0.5762415975567409,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4730456233342275,7.357944020212382,2.7125530446817776,2.275580209504713,2.9285714285714284,3.736730111666835,0.4840274288857084,8.793255517183693,2.9653423945952166,2.4926199648125102,3.188888888888889,4.128207694076462,0.4157263831339089,9.143232911046695,3.0237779202591413,2.5621735977194726,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T04:07:18.403478,0.4278815930075748,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6573880952440614,4.429460902423197,2.104628447594301,1.6571352167560889,3.007936507936508,3.595623512050894,0.5854516203189473,6.98329776038271,2.6425929993819914,2.1271181788310263,3.433333333333333,4.104333752944021,0.5967939737490773,6.2044447306100325,2.4908722830787675,1.9374602575736024,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,complex_features,regression,LGBMRegressor,93.0,252.0,90.0,90.0,2026-02-22T03:57:17.867024,0.4079904817757505,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6838124866595381,4.087832934975425,2.021838998282362,1.4880847887889428,3.007936507936508,3.595623512050894,0.6615570983668735,5.701258701844256,2.387730868804995,1.8435936422467032,3.433333333333333,4.104333752944021,0.6321990393859618,5.659639448382017,2.378999673892793,1.77386118413748,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,distance_features,regression,XGBRegressor,27.0,252.0,90.0,90.0,2026-02-22T04:02:17.974077,0.402812659740448,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7003557085990906,3.873953943962766,1.9682362520700525,1.410479164549283,3.007936507936508,3.595623512050894,0.6529492139816284,5.846264260243695,2.417904932011119,1.810790576868587,3.433333333333333,4.104333752944021,0.5943440198898315,6.242143102434553,2.498428126329544,1.7992949234114752,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T03:52:17.670478,0.4173922405860948,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6024444825248771,5.139799863209964,2.267112671044376,1.7474718505081173,3.007936507936508,3.595623512050894,0.571920203416737,7.211241995554278,2.6853755781183155,2.156999860777637,3.433333333333333,4.104333752944021,0.6176373230536204,5.883711903367124,2.4256363914171315,1.8560645090155448,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T03:47:17.395561,0.4147648915779923,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6209255503796902,4.900867221461164,2.2137902388124227,1.5782778679311071,3.007936507936508,3.595623512050894,0.5543773698555745,7.506760772910704,2.739846852090588,2.04725674287056,3.433333333333333,4.104333752944021,0.6161078300709584,5.907247401496997,2.4304829564300583,1.8255400203073595,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,all_features,regression,LGBMRegressor,183.0,252.0,90.0,90.0,2026-02-22T04:32:20.128729,0.7665489768832906,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.5662609990148408,2.420391211862432,1.555760653784004,1.0502444231910173,1.3134920634920637,2.362264624189872,0.5320741100368349,2.0738937592194606,1.4401019961167545,1.028426582596521,1.1111111111111112,2.1052550357218247,0.1439408353216973,7.480900236122095,2.735123440746705,1.7378516400877957,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T04:22:19.363317,0.7544084455184842,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3535855987522123,3.607182504796232,1.8992584091682283,1.2984822043608224,1.3134920634920637,2.362264624189872,0.3137945190699692,3.04133046486273,1.7439410726463007,1.213927015015872,1.1111111111111112,2.1052550357218247,0.2395098753240591,6.645744812970592,2.577934214244148,1.5619077758764723,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T04:27:19.778794,0.7498231077416062,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3252545799289662,3.7652779235322553,1.9404324063291287,1.3286619053283515,1.3134920634920637,2.362264624189872,0.2941886300335659,3.128225701456172,1.7686790837956363,1.2098334860720572,1.1111111111111112,2.1052550357218247,0.2582316848793896,6.4821393108021335,2.546004577922462,1.5427031852795636,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,extended_features,regression,LGBMRegressor,56.0,252.0,90.0,90.0,2026-02-22T04:17:18.990539,0.7641447875140869,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.4591445308803683,3.0181326128652217,1.737277356343892,1.1765584398598166,1.3134920634920637,2.362264624189872,0.3969051607822392,2.6729758923355087,1.634923818511281,1.1529860696866452,1.1111111111111112,2.1052550357218247,0.1889868189158976,7.08725395183421,2.6621896911817178,1.6664686073861286,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T04:12:18.580435,0.7659388552838962,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2540360162618662,4.162698458069826,2.040269212155549,1.4237278632647274,1.3134920634920637,2.362264624189872,0.2765702611535009,3.2063120524184354,1.7906177851284837,1.2302163765780258,1.1111111111111112,2.1052550357218247,0.2515763986487531,6.540298296055142,2.5574006913378167,1.571664592948746,1.711111111111111,2.956140293033936, -Filtered_group_category_label,group_category_label,all_features,classification,CatBoostClassifier,480.0,3427.0,1127.0,1079.0,2026-02-12T22:34:30.043324,0.3675793959061423,CatBoostClassifier,0.8313393638751094,0.833124784180101,0.8297055192104992,0.8304256761423514,,6.0,"{7.0: 593, 8.0: 548, 24.0: 596, 25.0: 549, 26.0: 595, 27.0: 546}",0.8243123336291038,0.8258645785678311,0.8199421204653143,0.8215730957286476,,6.0,"{7.0: 204, 8.0: 173, 24.0: 203, 25.0: 172, 26.0: 203, 27.0: 172}",0.6515291936978684,0.6441595088208979,0.6398282814794948,0.6407089942380837,,6.0,"{7.0: 205, 8.0: 156, 24.0: 203, 25.0: 156, 26.0: 202, 27.0: 157}",,,,,,,,,,,,,,,,,,, -Filtered_group_category_label,group_category_label,complex_features,classification,RandomForestClassifier,381.0,3427.0,1127.0,1079.0,2026-02-12T22:24:09.008641,0.3683378830135557,RandomForestClassifier,0.7315436241610739,0.7375460192180646,0.727766910271494,0.7271270641545549,,6.0,"{7.0: 593, 8.0: 548, 24.0: 596, 25.0: 549, 26.0: 595, 27.0: 546}",0.7204968944099379,0.7219024338152901,0.7124852396949497,0.7132074548088809,,6.0,"{7.0: 204, 8.0: 173, 24.0: 203, 25.0: 172, 26.0: 203, 27.0: 172}",0.6478220574606117,0.640323608711405,0.6311306897460728,0.6312821322632475,,6.0,"{7.0: 205, 8.0: 156, 24.0: 203, 25.0: 156, 26.0: 202, 27.0: 157}",,,,,,,,,,,,,,,,,,, -Filtered_group_category_label,group_category_label,distance_features,classification,XGBClassifier,33.0,3427.0,1127.0,1079.0,2026-02-12T22:29:09.744298,0.4776058934117845,XGBClassifier,0.803034724248614,0.8045019132979044,0.8013244797379654,0.8019062394194721,,6.0,"{7.0: 593, 8.0: 548, 24.0: 596, 25.0: 549, 26.0: 595, 27.0: 546}",0.7950310559006211,0.7940912076236856,0.7925001540048616,0.7930795739246085,,6.0,"{7.0: 204, 8.0: 173, 24.0: 203, 25.0: 172, 26.0: 203, 27.0: 172}",0.4856348470806302,0.4761250583711492,0.4760943700374437,0.4757995549900555,,6.0,"{7.0: 205, 8.0: 156, 24.0: 203, 25.0: 156, 26.0: 202, 27.0: 157}",,,,,,,,,,,,,,,,,,, -Filtered_group_category_label,group_category_label,extended_features,classification,CatBoostClassifier,71.0,3427.0,1127.0,1079.0,2026-02-12T22:19:02.381260,0.3871494974240955,CatBoostClassifier,0.7855266997373797,0.7879568709552903,0.7836381007984118,0.784182877312322,,6.0,"{7.0: 593, 8.0: 548, 24.0: 596, 25.0: 549, 26.0: 595, 27.0: 546}",0.8003549245785271,0.8023835178789679,0.7957864725418995,0.7972029968103053,,6.0,"{7.0: 204, 8.0: 173, 24.0: 203, 25.0: 172, 26.0: 203, 27.0: 172}",0.6163113994439295,0.6082748037370619,0.6072431017683672,0.6072360134145092,,6.0,"{7.0: 205, 8.0: 156, 24.0: 203, 25.0: 156, 26.0: 202, 27.0: 157}",,,,,,,,,,,,,,,,,,, -Filtered_group_category_label,group_category_label,simple_features,classification,LGBMClassifier,21.0,3427.0,1127.0,1079.0,2026-02-12T22:13:53.383486,0.390224968677639,LGBMClassifier,0.7248322147651006,0.7259348376085986,0.7228243652448136,0.7229656329069262,,6.0,"{7.0: 593, 8.0: 548, 24.0: 596, 25.0: 549, 26.0: 595, 27.0: 546}",0.7630878438331854,0.7632793169005866,0.7583946402092612,0.7594606648956664,,6.0,"{7.0: 204, 8.0: 173, 24.0: 203, 25.0: 172, 26.0: 203, 27.0: 172}",0.6126042632066728,0.6049046537935736,0.6050147375469657,0.6039483990527647,,6.0,"{7.0: 205, 8.0: 156, 24.0: 203, 25.0: 156, 26.0: 202, 27.0: 157}",,,,,,,,,,,,,,,,,,, -Filtered_meta_delay_label,meta_delay_label,all_features,classification,LGBMClassifier,479.0,3237.0,1200.0,1196.0,2026-02-12T23:03:55.034035,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 1618, 1.0: 1619}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 600, 1.0: 600}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 599, 1.0: 597}",,,,,,,,,,,,,,,,,,, -Filtered_meta_delay_label,meta_delay_label,complex_features,classification,LGBMClassifier,380.0,3237.0,1200.0,1196.0,2026-02-12T22:51:41.704272,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 1618, 1.0: 1619}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 600, 1.0: 600}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 599, 1.0: 597}",,,,,,,,,,,,,,,,,,, -Filtered_meta_delay_label,meta_delay_label,distance_features,classification,LGBMClassifier,32.0,3237.0,1200.0,1196.0,2026-02-12T22:56:42.927207,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 1618, 1.0: 1619}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 600, 1.0: 600}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 599, 1.0: 597}",,,,,,,,,,,,,,,,,,, -Filtered_meta_delay_label,meta_delay_label,extended_features,classification,LGBMClassifier,70.0,3237.0,1200.0,1196.0,2026-02-12T22:45:12.448743,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 1618, 1.0: 1619}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 600, 1.0: 600}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 599, 1.0: 597}",,,,,,,,,,,,,,,,,,, -Filtered_meta_delay_label,meta_delay_label,simple_features,classification,LGBMClassifier,20.0,3237.0,1200.0,1196.0,2026-02-12T22:39:31.396953,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 1618, 1.0: 1619}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 600, 1.0: 600}",1.0,1.0,1.0,1.0,1.0,2.0,"{0.0: 599, 1.0: 597}",,,,,,,,,,,,,,,,,,, -Filtered_meta_spatial_filter_label,meta_spatial_filter_label,all_features,classification,LGBMClassifier,479.0,3237.0,1198.0,1198.0,2026-02-12T23:33:08.192664,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{1.0: 1079, 2.0: 1079, 3.0: 1079}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",,,,,,,,,,,,,,,,,,, -Filtered_meta_spatial_filter_label,meta_spatial_filter_label,complex_features,classification,LGBMClassifier,380.0,3237.0,1198.0,1198.0,2026-02-12T23:20:13.415141,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{1.0: 1079, 2.0: 1079, 3.0: 1079}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",,,,,,,,,,,,,,,,,,, -Filtered_meta_spatial_filter_label,meta_spatial_filter_label,distance_features,classification,LGBMClassifier,32.0,3237.0,1198.0,1198.0,2026-02-12T23:25:13.918260,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{1.0: 1079, 2.0: 1079, 3.0: 1079}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",,,,,,,,,,,,,,,,,,, -Filtered_meta_spatial_filter_label,meta_spatial_filter_label,extended_features,classification,LGBMClassifier,70.0,3237.0,1198.0,1198.0,2026-02-12T23:13:57.754439,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{1.0: 1079, 2.0: 1079, 3.0: 1079}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",,,,,,,,,,,,,,,,,,, -Filtered_meta_spatial_filter_label,meta_spatial_filter_label,simple_features,classification,LGBMClassifier,20.0,3237.0,1198.0,1198.0,2026-02-12T23:08:56.943508,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{1.0: 1079, 2.0: 1079, 3.0: 1079}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 400, 2.0: 400, 3.0: 398}",,,,,,,,,,,,,,,,,,, -Gap_gap_label,gap_label,all_features,classification,LGBMClassifier,471.0,1680.0,600.0,600.0,2026-02-12T23:58:27.011243,0.6307072352574341,LGBMClassifier,0.7327380952380952,0.7389192133983411,0.7327380952380952,0.731479836224114,,4.0,"{0.0: 420, 300.0: 420, 600.0: 420, 900.0: 420}",0.7233333333333334,0.7326819248213168,0.7233333333333333,0.72119803254182,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",0.3283333333333333,0.320757651528063,0.3283333333333333,0.3195614744908653,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",,,,,,,,,,,,,,,,,,, -Gap_gap_label,gap_label,complex_features,classification,LGBMClassifier,372.0,1680.0,600.0,600.0,2026-02-12T23:48:20.401117,0.6758728104568811,LGBMClassifier,0.3851190476190476,0.3852445192763825,0.3851190476190476,0.3834339501890983,,4.0,"{0.0: 420, 300.0: 420, 600.0: 420, 900.0: 420}",0.385,0.3943306666608805,0.385,0.380284447907016,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",0.2533333333333333,0.2449834170765444,0.2533333333333333,0.2335376601766418,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",,,,,,,,,,,,,,,,,,, -Gap_gap_label,gap_label,distance_features,classification,LGBMClassifier,24.0,1680.0,600.0,600.0,2026-02-12T23:53:24.867327,0.6988504808245535,LGBMClassifier,0.8226190476190476,0.8226932011953564,0.8226190476190477,0.8225460267235025,,4.0,"{0.0: 420, 300.0: 420, 600.0: 420, 900.0: 420}",0.855,0.8578191081693678,0.855,0.8551030155660991,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",0.25,0.2524877697478572,0.25,0.2488994442908588,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",,,,,,,,,,,,,,,,,,, -Gap_gap_label,gap_label,extended_features,classification,CatBoostClassifier,62.0,1680.0,600.0,600.0,2026-02-12T23:43:17.641072,0.6377942085390136,CatBoostClassifier,0.5446428571428571,0.5711029231954734,0.5446428571428571,0.531083277404482,,4.0,"{0.0: 420, 300.0: 420, 600.0: 420, 900.0: 420}",0.5183333333333333,0.5313458523225449,0.5183333333333333,0.5022111938587013,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",0.3833333333333333,0.3766406765152036,0.3833333333333333,0.3711733305069917,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",,,,,,,,,,,,,,,,,,, -Gap_gap_label,gap_label,simple_features,classification,XGBClassifier,12.0,1680.0,600.0,600.0,2026-02-12T23:38:13.823896,0.6337821083501072,XGBClassifier,0.4089285714285714,0.4375273730846692,0.4089285714285714,0.4056848781769885,,4.0,"{0.0: 420, 300.0: 420, 600.0: 420, 900.0: 420}",0.3783333333333333,0.3965662176604004,0.3783333333333333,0.3743663788282069,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",0.3433333333333333,0.3510104386467572,0.3433333333333333,0.3452147270926333,,4.0,"{0.0: 150, 300.0: 150, 600.0: 150, 900.0: 150}",,,,,,,,,,,,,,,,,,, -Gap_group_category_label,group_category_label,all_features,classification,RandomForestClassifier,472.0,1680.0,600.0,600.0,2026-02-13T00:23:36.145974,0.2920054372931941,RandomForestClassifier,0.8964285714285715,0.897635183850036,0.8937088815789473,0.8951986106789003,0.8937088815789472,2.0,"{7.0: 912, 8.0: 768}",0.88,0.883621663128416,0.8780715811965812,0.8791608391608392,0.8780715811965812,2.0,"{7.0: 312, 8.0: 288}",0.69,0.6895089285714286,0.688969017094017,0.6891157068996256,0.688969017094017,2.0,"{7.0: 312, 8.0: 288}",,,,,,,,,,,,,,,,,,, -Gap_group_category_label,group_category_label,complex_features,classification,LGBMClassifier,373.0,1680.0,600.0,600.0,2026-02-13T00:13:30.434374,0.3111647449204207,LGBMClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{7.0: 912, 8.0: 768}",1.0,1.0,1.0,1.0,1.0,2.0,"{7.0: 312, 8.0: 288}",0.67,0.6697635135135135,0.6700053418803418,0.6697651663405089,0.670005341880342,2.0,"{7.0: 312, 8.0: 288}",,,,,,,,,,,,,,,,,,, -Gap_group_category_label,group_category_label,distance_features,classification,ExtraTreesClassifier,25.0,1680.0,600.0,600.0,2026-02-13T00:18:30.949729,0.4405500479692996,ExtraTreesClassifier,0.6017857142857143,0.6183108629803409,0.5767886513157895,0.5493632699309683,0.5767886513157895,2.0,"{7.0: 912, 8.0: 768}",0.59,0.6246081504702194,0.577857905982906,0.5410219413901189,0.577857905982906,2.0,"{7.0: 312, 8.0: 288}",0.5583333333333333,0.5695205648545895,0.5470085470085471,0.5130332515596718,0.547008547008547,2.0,"{7.0: 312, 8.0: 288}",,,,,,,,,,,,,,,,,,, -Gap_group_category_label,group_category_label,extended_features,classification,LGBMClassifier,63.0,1680.0,600.0,600.0,2026-02-13T00:08:28.610480,0.3207421801542029,LGBMClassifier,0.7202380952380952,0.7194176686872702,0.7143640350877194,0.7154467442869519,0.7143640350877194,2.0,"{7.0: 912, 8.0: 768}",0.7233333333333334,0.7249422004623962,0.7208867521367521,0.7210740330006384,0.7208867521367521,2.0,"{7.0: 312, 8.0: 288}",0.6666666666666666,0.6671426628586972,0.6641292735042734,0.6639446180730584,0.6641292735042735,2.0,"{7.0: 312, 8.0: 288}",,,,,,,,,,,,,,,,,,, -Gap_group_category_label,group_category_label,simple_features,classification,CatBoostClassifier,13.0,1680.0,600.0,600.0,2026-02-13T00:03:27.780181,0.3371810351766884,CatBoostClassifier,0.7708333333333334,0.7696322686193058,0.7675438596491229,0.7683194383501536,0.7675438596491228,2.0,"{7.0: 912, 8.0: 768}",0.7833333333333333,0.7909722222222222,0.779780982905983,0.780167748917749,0.779780982905983,2.0,"{7.0: 312, 8.0: 288}",0.7,0.6995535714285714,0.6989850427350428,0.6991442324835087,0.6989850427350428,2.0,"{7.0: 312, 8.0: 288}",,,,,,,,,,,,,,,,,,, -Memory_1_group_category_label,group_category_label,all_features,classification,XGBClassifier,471.0,6740.0,2248.0,1796.0,2026-02-13T00:49:13.543114,0.5275703724659824,XGBClassifier,0.7388724035608308,0.733752884097041,0.732660895268021,0.7325286212539843,,4.0,"{7.0: 1350, 8.0: 1799, 10.0: 1574, 11.0: 2017}",0.6743772241992882,0.6560771676337537,0.7117938097593143,0.6575464654151773,,4.0,"{7.0: 900, 8.0: 450, 10.0: 674, 11.0: 224}",0.4181514476614699,0.3985719272716022,0.4181185648442747,0.4028609668842849,,4.0,"{7.0: 450, 8.0: 449, 10.0: 448, 11.0: 449}",,,,,,,,,,,,,,,,,,, -Memory_1_group_category_label,group_category_label,complex_features,classification,LGBMClassifier,372.0,6740.0,2248.0,1796.0,2026-02-13T00:38:47.533682,0.5397861335400993,LGBMClassifier,0.6682492581602374,0.6623709390965798,0.6605474127103994,0.660364639089407,,4.0,"{7.0: 1350, 8.0: 1799, 10.0: 1574, 11.0: 2017}",0.5854092526690391,0.5759120230402616,0.6252027695351138,0.5713791224049379,,4.0,"{7.0: 900, 8.0: 450, 10.0: 674, 11.0: 224}",0.4170378619153674,0.3985753626440722,0.416970290018383,0.4028154555538927,,4.0,"{7.0: 450, 8.0: 449, 10.0: 448, 11.0: 449}",,,,,,,,,,,,,,,,,,, -Memory_1_group_category_label,group_category_label,distance_features,classification,XGBClassifier,24.0,6740.0,2248.0,1796.0,2026-02-13T00:44:01.141610,0.735226976630669,XGBClassifier,0.3621661721068249,0.3582074397665891,0.3585219507442546,0.3577164510224733,,4.0,"{7.0: 1350, 8.0: 1799, 10.0: 1574, 11.0: 2017}",0.3305160142348754,0.3358885575730039,0.3412424491309877,0.3169361341196651,,4.0,"{7.0: 900, 8.0: 450, 10.0: 674, 11.0: 224}",0.2633630289532294,0.2622687847490812,0.2633623605808322,0.2621633893184519,,4.0,"{7.0: 450, 8.0: 449, 10.0: 448, 11.0: 449}",,,,,,,,,,,,,,,,,,, -Memory_1_group_category_label,group_category_label,extended_features,classification,LGBMClassifier,62.0,6740.0,2248.0,1796.0,2026-02-13T00:33:40.983071,0.5897756939504124,LGBMClassifier,0.5850148367952522,0.5729324779647846,0.5717876928425599,0.5716721196620156,,4.0,"{7.0: 1350, 8.0: 1799, 10.0: 1574, 11.0: 2017}",0.5382562277580071,0.5357198421368179,0.5871059417832415,0.5290869399940247,,4.0,"{7.0: 900, 8.0: 450, 10.0: 674, 11.0: 224}",0.3858574610244988,0.3692967633054251,0.3858741371919963,0.3740235527792785,,4.0,"{7.0: 450, 8.0: 449, 10.0: 448, 11.0: 449}",,,,,,,,,,,,,,,,,,, -Memory_1_group_category_label,group_category_label,simple_features,classification,XGBClassifier,12.0,6740.0,2248.0,1796.0,2026-02-13T00:28:36.790042,0.6180833668106406,XGBClassifier,0.4491097922848664,0.4256626026826586,0.428038453937429,0.4213689809938871,,4.0,"{7.0: 1350, 8.0: 1799, 10.0: 1574, 11.0: 2017}",0.3678825622775801,0.3868435460033718,0.4323735192642833,0.3637250809565437,,4.0,"{7.0: 900, 8.0: 450, 10.0: 674, 11.0: 224}",0.3780623608017817,0.355169289797425,0.3780268707798635,0.3577982325064075,,4.0,"{7.0: 450, 8.0: 449, 10.0: 448, 11.0: 449}",,,,,,,,,,,,,,,,,,, -Memory_1_group_iteration_label,group_iteration_label,all_features,classification,LGBMClassifier,471.0,6468.0,2158.0,2158.0,2026-02-13T01:15:07.019335,0.646520989813096,LGBMClassifier,0.5909090909090909,0.6005617304243268,0.5908541031398498,0.5864580366093775,,5.0,"{1.0: 1295, 2.0: 1293, 3.0: 1294, 4.0: 1292, 5.0: 1294}",0.6190917516218721,0.626083874244577,0.619037337801839,0.6147409827289477,,5.0,"{1.0: 431, 2.0: 432, 3.0: 432, 4.0: 431, 5.0: 432}",0.3989805375347544,0.3881277070306392,0.3987683031869078,0.3874616903123113,,5.0,"{1.0: 432, 2.0: 432, 3.0: 432, 4.0: 430, 5.0: 432}",,,,,,,,,,,,,,,,,,, -Memory_1_group_iteration_label,group_iteration_label,complex_features,classification,CatBoostClassifier,372.0,6468.0,2158.0,2158.0,2026-02-13T01:04:35.089169,0.7513405092282289,CatBoostClassifier,0.4395485466914038,0.4500559217764743,0.4394865439316225,0.4359859588035187,,5.0,"{1.0: 1295, 2.0: 1293, 3.0: 1294, 4.0: 1292, 5.0: 1294}",0.4531974050046339,0.466229837560373,0.45328907794105,0.4481806955678821,,5.0,"{1.0: 431, 2.0: 432, 3.0: 432, 4.0: 431, 5.0: 432}",0.2497683039851714,0.2387182956406721,0.2497071490094745,0.237351862770582,,5.0,"{1.0: 432, 2.0: 432, 3.0: 432, 4.0: 430, 5.0: 432}",,,,,,,,,,,,,,,,,,, -Memory_1_group_iteration_label,group_iteration_label,distance_features,classification,LGBMClassifier,24.0,6468.0,2158.0,2158.0,2026-02-13T01:09:38.708945,0.6311594263826972,LGBMClassifier,0.8664192949907236,0.8672563344386306,0.8664135299955221,0.8662994966834047,,5.0,"{1.0: 1295, 2.0: 1293, 3.0: 1294, 4.0: 1292, 5.0: 1294}",0.8521779425393883,0.8546620707892936,0.8521461716937354,0.8523180876156499,,5.0,"{1.0: 431, 2.0: 432, 3.0: 432, 4.0: 431, 5.0: 432}",0.4017608897126969,0.3940340549783211,0.4016106804478898,0.3953207022103288,,5.0,"{1.0: 432, 2.0: 432, 3.0: 432, 4.0: 430, 5.0: 432}",,,,,,,,,,,,,,,,,,, -Memory_1_group_iteration_label,group_iteration_label,extended_features,classification,XGBClassifier,62.0,6468.0,2158.0,2158.0,2026-02-13T00:59:26.747132,0.7423713789455181,XGBClassifier,0.33426097711812,0.331764415541547,0.3341917922375932,0.3252671682358882,,5.0,"{1.0: 1295, 2.0: 1293, 3.0: 1294, 4.0: 1292, 5.0: 1294}",0.3257645968489342,0.3256664367017533,0.3258217324052591,0.3135860035807639,,5.0,"{1.0: 431, 2.0: 432, 3.0: 432, 4.0: 431, 5.0: 432}",0.2520852641334569,0.2433799755283118,0.2520004306632213,0.2384793745143618,,5.0,"{1.0: 432, 2.0: 432, 3.0: 432, 4.0: 430, 5.0: 432}",,,,,,,,,,,,,,,,,,, -Memory_1_group_iteration_label,group_iteration_label,simple_features,classification,XGBClassifier,12.0,6468.0,2158.0,2158.0,2026-02-13T00:54:25.783476,0.7347306925858434,XGBClassifier,0.3033395176252319,0.2975526553416406,0.3032705468598742,0.2938577781940789,,5.0,"{1.0: 1295, 2.0: 1293, 3.0: 1294, 4.0: 1292, 5.0: 1294}",0.3002780352177943,0.2958666937604167,0.3003265446420899,0.2861077635418694,,5.0,"{1.0: 431, 2.0: 432, 3.0: 432, 4.0: 431, 5.0: 432}",0.2567191844300278,0.2458390758156375,0.2566322136089578,0.2408445548414455,,5.0,"{1.0: 432, 2.0: 432, 3.0: 432, 4.0: 430, 5.0: 432}",,,,,,,,,,,,,,,,,,, -Memory_2_condition_label,condition_label,all_features,classification,LGBMClassifier,471.0,3597.0,1259.0,1259.0,2026-02-13T01:40:44.774494,0.4899671967342028,LGBMClassifier,0.9997219905476786,0.9997224535109632,0.9997217584863662,0.9997219901125632,,3.0,"{1.0: 1199, 2.0: 1198, 3.0: 1200}",1.0,1.0,1.0,1.0,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",0.5401111993645751,0.5410589366940476,0.540163654960791,0.538817472210635,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",,,,,,,,,,,,,,,,,,, -Memory_2_condition_label,condition_label,complex_features,classification,XGBClassifier,372.0,3597.0,1259.0,1259.0,2026-02-13T01:30:15.889302,0.4989497099343932,XGBClassifier,0.9405059772032248,0.940589043648484,0.9405038638982064,0.9405129197516556,,3.0,"{1.0: 1199, 2.0: 1198, 3.0: 1200}",0.932486100079428,0.9345374955670191,0.9324695988180476,0.932633538741222,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",0.5242255758538522,0.5277878573653222,0.5242849566238588,0.523418127650408,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",,,,,,,,,,,,,,,,,,, -Memory_2_condition_label,condition_label,distance_features,classification,RandomForestClassifier,24.0,3597.0,1259.0,1259.0,2026-02-13T01:35:16.350807,0.6412713051930325,RandomForestClassifier,0.4859605226577703,0.4885016634825792,0.4859839473134184,0.4848915508819987,,3.0,"{1.0: 1199, 2.0: 1198, 3.0: 1200}",0.4646544876886417,0.4648590096706412,0.4645982498011137,0.4626364390227546,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",0.3216838760921366,0.3234546031313338,0.3216634466037807,0.3213218421163237,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",,,,,,,,,,,,,,,,,,, -Memory_2_condition_label,condition_label,extended_features,classification,LGBMClassifier,62.0,3597.0,1259.0,1259.0,2026-02-13T01:25:09.387742,0.5291640151594921,LGBMClassifier,0.5190436474840144,0.5175609095627677,0.5189961186198416,0.5166067821554109,,3.0,"{1.0: 1199, 2.0: 1198, 3.0: 1200}",0.505957108816521,0.5067649556813644,0.5059722695760881,0.5026334625789572,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",0.4821286735504368,0.4810252155603199,0.4821494866840929,0.4806871808530763,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",,,,,,,,,,,,,,,,,,, -Memory_2_condition_label,condition_label,simple_features,classification,CatBoostClassifier,12.0,3597.0,1259.0,1259.0,2026-02-13T01:20:07.789116,0.548562911204189,CatBoostClassifier,0.5287739783152627,0.5274416367110634,0.5287153252053085,0.5251505347775598,,3.0,"{1.0: 1199, 2.0: 1198, 3.0: 1200}",0.5178713264495631,0.5174561229772788,0.517895973027238,0.5120244370941718,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",0.47736298649722,0.4709524611562592,0.4774084176232147,0.466587236856633,,3.0,"{1.0: 419, 2.0: 420, 3.0: 420}",,,,,,,,,,,,,,,,,,, -Memory_2_group_iteration_label,group_iteration_label,all_features,classification,LGBMClassifier,472.0,3597.0,1258.0,1260.0,2026-02-13T02:06:09.986951,0.6596466294417986,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{1.0: 600, 2.0: 600, 3.0: 600, 4.0: 599, 5.0: 600, 6.0: 598}",1.0,1.0,1.0,1.0,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 208}",0.3642857142857142,0.3623908677764715,0.3642857142857142,0.3614251054613336,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 210}",,,,,,,,,,,,,,,,,,, -Memory_2_group_iteration_label,group_iteration_label,complex_features,classification,LGBMClassifier,373.0,3597.0,1258.0,1260.0,2026-02-13T01:55:57.294352,0.6971377663741805,LGBMClassifier,0.5537948290241869,0.5641441795089261,0.5538691731357043,0.5458957532692331,,6.0,"{1.0: 600, 2.0: 600, 3.0: 600, 4.0: 599, 5.0: 600, 6.0: 598}",0.5906200317965024,0.5953829978378854,0.5908043345543345,0.5882363882006049,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 208}",0.2873015873015873,0.27387361125483,0.2873015873015873,0.2729912453204936,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 210}",,,,,,,,,,,,,,,,,,, -Memory_2_group_iteration_label,group_iteration_label,distance_features,classification,LGBMClassifier,25.0,3597.0,1258.0,1260.0,2026-02-13T02:00:57.887800,0.7058817491768399,LGBMClassifier,0.5087572977481234,0.5104814807633352,0.5087548769812688,0.5081966022591496,,6.0,"{1.0: 600, 2.0: 600, 3.0: 600, 4.0: 599, 5.0: 600, 6.0: 598}",0.4976152623211446,0.5013233092136558,0.4977335164835164,0.49646082137845,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 208}",0.3238095238095238,0.3240347454092819,0.3238095238095238,0.3209178167869229,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 210}",,,,,,,,,,,,,,,,,,, -Memory_2_group_iteration_label,group_iteration_label,extended_features,classification,XGBClassifier,63.0,3597.0,1258.0,1260.0,2026-02-13T01:50:55.244629,0.7411005754139444,XGBClassifier,0.5401723658604393,0.5418307503814804,0.5402138923475208,0.5368931632430556,,6.0,"{1.0: 600, 2.0: 600, 3.0: 600, 4.0: 599, 5.0: 600, 6.0: 598}",0.5659777424483307,0.5704927306541806,0.5660943223443224,0.5652839138621566,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 208}",0.2634920634920635,0.2659491540113836,0.2634920634920635,0.2627229941973992,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 210}",,,,,,,,,,,,,,,,,,, -Memory_2_group_iteration_label,group_iteration_label,simple_features,classification,LGBMClassifier,13.0,3597.0,1258.0,1260.0,2026-02-13T01:45:54.100077,0.7473894889911111,LGBMClassifier,0.3547400611620795,0.352425157410036,0.3547913064571262,0.3448640626422474,,6.0,"{1.0: 600, 2.0: 600, 3.0: 600, 4.0: 599, 5.0: 600, 6.0: 598}",0.3863275039745628,0.3778828140100782,0.3865613553113553,0.3785898244239322,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 208}",0.2650793650793651,0.2533548069898194,0.2650793650793651,0.2548262721953727,,6.0,"{1.0: 210, 2.0: 210, 3.0: 210, 4.0: 210, 5.0: 210, 6.0: 210}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_2_label,TEXT_TYPE_2_label,all_features,classification,LGBMClassifier,463.0,1440.0,471.0,479.0,2026-02-13T02:31:45.696886,0.2192461197339246,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{0: 487, 1: 256, 2: 220, 3: 477}",1.0,1.0,1.0,1.0,,4.0,"{0: 155, 1: 93, 2: 68, 3: 155}",0.8434237995824635,0.7582757175780432,0.7558362884160756,0.7439009338873576,,4.0,"{0: 160, 1: 94, 2: 72, 3: 153}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_2_label,TEXT_TYPE_2_label,complex_features,classification,RandomForestClassifier,373.0,1440.0,471.0,479.0,2026-02-13T02:21:41.274107,0.2245802362329843,RandomForestClassifier,0.8472222222222222,0.634453781512605,0.75,0.674863387978142,,4.0,"{0: 487, 1: 256, 2: 220, 3: 477}",0.8556263269639066,0.6444099378881988,0.75,0.6830708661417323,,4.0,"{0: 155, 1: 93, 2: 68, 3: 155}",0.8496868475991649,0.641566265060241,0.75,0.6807692307692308,,4.0,"{0: 160, 1: 94, 2: 72, 3: 153}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_2_label,TEXT_TYPE_2_label,distance_features,classification,ExtraTreesClassifier,25.0,1440.0,471.0,479.0,2026-02-13T02:26:43.925152,0.2201028594391316,ExtraTreesClassifier,0.8958333333333334,0.8918099113434643,0.8309836647727272,0.8209160345551503,,4.0,"{0: 487, 1: 256, 2: 220, 3: 477}",0.902335456475584,0.9063728343396464,0.8338472485768501,0.8304912035494788,,4.0,"{0: 155, 1: 93, 2: 68, 3: 155}",0.8475991649269311,0.7671341684822077,0.7587174940898346,0.7401863354037268,,4.0,"{0: 160, 1: 94, 2: 72, 3: 153}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_2_label,TEXT_TYPE_2_label,extended_features,classification,LGBMClassifier,54.0,1440.0,471.0,479.0,2026-02-13T02:16:39.843041,0.2144828770289367,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{0: 487, 1: 256, 2: 220, 3: 477}",1.0,1.0,1.0,1.0,,4.0,"{0: 155, 1: 93, 2: 68, 3: 155}",0.826722338204593,0.74152411773771,0.7418735224586288,0.7409663470577176,,4.0,"{0: 160, 1: 94, 2: 72, 3: 153}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_2_label,TEXT_TYPE_2_label,simple_features,classification,LGBMClassifier,13.0,1440.0,471.0,479.0,2026-02-13T02:11:11.251589,0.2109138287593073,LGBMClassifier,0.9777777777777776,0.9666833131197832,0.9657137784090908,0.9661228048324824,,4.0,"{0: 487, 1: 256, 2: 220, 3: 477}",0.9766454352441614,0.9642410015649452,0.9664769133459836,0.965188504933758,,4.0,"{0: 155, 1: 93, 2: 68, 3: 155}",0.8475991649269311,0.7713759213759214,0.769281914893617,0.7672748223545228,,4.0,"{0: 160, 1: 94, 2: 72, 3: 153}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_label,TEXT_TYPE_label,all_features,classification,LGBMClassifier,463.0,1438.0,478.0,474.0,2026-02-13T03:01:50.481698,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0: 478, 1: 486, 2: 474}",1.0,1.0,1.0,1.0,,3.0,"{0: 164, 1: 157, 2: 157}",1.0,1.0,1.0,1.0,,3.0,"{0: 160, 1: 160, 2: 154}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_label,TEXT_TYPE_label,complex_features,classification,LGBMClassifier,373.0,1438.0,478.0,474.0,2026-02-13T02:51:05.662949,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0: 478, 1: 486, 2: 474}",1.0,1.0,1.0,1.0,,3.0,"{0: 164, 1: 157, 2: 157}",1.0,1.0,1.0,1.0,,3.0,"{0: 160, 1: 160, 2: 154}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_label,TEXT_TYPE_label,distance_features,classification,LGBMClassifier,25.0,1438.0,478.0,474.0,2026-02-13T02:56:05.991239,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0: 478, 1: 486, 2: 474}",1.0,1.0,1.0,1.0,,3.0,"{0: 164, 1: 157, 2: 157}",1.0,1.0,1.0,1.0,,3.0,"{0: 160, 1: 160, 2: 154}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_label,TEXT_TYPE_label,extended_features,classification,LGBMClassifier,54.0,1438.0,478.0,474.0,2026-02-13T02:41:49.865908,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0: 478, 1: 486, 2: 474}",1.0,1.0,1.0,1.0,,3.0,"{0: 164, 1: 157, 2: 157}",1.0,1.0,1.0,1.0,,3.0,"{0: 160, 1: 160, 2: 154}",,,,,,,,,,,,,,,,,,, -Paris_experiment_ready_data_fixations_TEXT_TYPE_label,TEXT_TYPE_label,simple_features,classification,LGBMClassifier,13.0,1438.0,478.0,474.0,2026-02-13T02:36:46.264654,0.0,LGBMClassifier,1.0,1.0,1.0,1.0,,3.0,"{0: 478, 1: 486, 2: 474}",1.0,1.0,1.0,1.0,,3.0,"{0: 164, 1: 157, 2: 157}",1.0,1.0,1.0,1.0,,3.0,"{0: 160, 1: 160, 2: 154}",,,,,,,,,,,,,,,,,,, -Patch_scr_label,scr_label,all_features,classification,ExtraTreesClassifier,471.0,2687.0,896.0,894.0,2026-02-13T03:27:50.327584,0.711014130846928,ExtraTreesClassifier,0.3963528098250837,0.399865334171623,0.3963317190774753,0.385484750793411,,5.0,"{0.0: 534, 25.0: 536, 50.0: 539, 75.0: 538, 100.0: 540}",0.3716517857142857,0.3780064541802265,0.3720172298728338,0.3567024354432591,,5.0,"{0.0: 182, 25.0: 179, 50.0: 180, 75.0: 178, 100.0: 177}",0.2472035794183445,0.2380960526520893,0.2473182962637485,0.2378621731546335,,5.0,"{0.0: 178, 25.0: 180, 50.0: 178, 75.0: 179, 100.0: 179}",,,,,,,,,,,,,,,,,,, -Patch_scr_label,scr_label,complex_features,classification,XGBClassifier,372.0,2687.0,896.0,894.0,2026-02-13T03:17:47.577454,0.7154643112649934,XGBClassifier,0.6285820617789356,0.6321453129035594,0.6286154179195762,0.6276645462802658,,5.0,"{0.0: 534, 25.0: 536, 50.0: 539, 75.0: 538, 100.0: 540}",0.6372767857142857,0.6540155588111659,0.6376578560214453,0.6376251903901918,,5.0,"{0.0: 182, 25.0: 179, 50.0: 180, 75.0: 178, 100.0: 177}",0.2460850111856823,0.234984680749157,0.2461445539444409,0.2365637138409335,,5.0,"{0.0: 178, 25.0: 180, 50.0: 178, 75.0: 179, 100.0: 179}",,,,,,,,,,,,,,,,,,, -Patch_scr_label,scr_label,distance_features,classification,LGBMClassifier,24.0,2687.0,896.0,894.0,2026-02-13T03:22:48.273588,0.7734500414595529,LGBMClassifier,0.6445850390770376,0.6795716271511376,0.6444685524001947,0.6494835882373042,,5.0,"{0.0: 534, 25.0: 536, 50.0: 539, 75.0: 538, 100.0: 540}",0.8292410714285714,0.8306540452591568,0.8292649261374665,0.8296770269115527,,5.0,"{0.0: 182, 25.0: 179, 50.0: 180, 75.0: 178, 100.0: 177}",0.1868008948545861,0.1879227991954394,0.1867272055182418,0.1858238516669665,,5.0,"{0.0: 178, 25.0: 180, 50.0: 178, 75.0: 179, 100.0: 179}",,,,,,,,,,,,,,,,,,, -Patch_scr_label,scr_label,extended_features,classification,XGBClassifier,62.0,2687.0,896.0,894.0,2026-02-13T03:12:45.146702,0.7224208571963842,XGBClassifier,0.3483438779307778,0.3493853908017438,0.3484627224654641,0.3387385807395655,,5.0,"{0.0: 534, 25.0: 536, 50.0: 539, 75.0: 538, 100.0: 540}",0.3091517857142857,0.3108763118930299,0.3095288044715288,0.2943864778535426,,5.0,"{0.0: 182, 25.0: 179, 50.0: 180, 75.0: 178, 100.0: 177}",0.2651006711409396,0.2537853516609276,0.2650698498385398,0.2467581510685309,,5.0,"{0.0: 178, 25.0: 180, 50.0: 178, 75.0: 179, 100.0: 179}",,,,,,,,,,,,,,,,,,, -Patch_scr_label,scr_label,simple_features,classification,XGBClassifier,12.0,2687.0,896.0,894.0,2026-02-13T03:07:40.508844,0.7222717399689138,XGBClassifier,0.5106066244882769,0.5109755183915514,0.5106213225358825,0.510173298917614,,5.0,"{0.0: 534, 25.0: 536, 50.0: 539, 75.0: 538, 100.0: 540}",0.5066964285714286,0.5110912808311519,0.507349018715207,0.5031108263981532,,5.0,"{0.0: 182, 25.0: 179, 50.0: 180, 75.0: 178, 100.0: 177}",0.2505592841163311,0.2534138444799331,0.2504392554000237,0.2443356144077593,,5.0,"{0.0: 178, 25.0: 180, 50.0: 178, 75.0: 179, 100.0: 179}",,,,,,,,,,,,,,,,,,, -Surgical_skills_1_fixations_Performance_label,Performance_label,all_features,regression,LGBMRegressor,192.0,897.0,343.0,315.0,2026-02-22T09:57:36.180062,0.4970387659255615,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9036202709592296,22.55662501756344,4.749381540533824,3.678482079369508,79.53623188405797,15.298336502268548,0.9102273167755934,28.634744291191048,5.351144203924152,4.103449903352757,74.5597667638484,17.859716123273348,0.5462767893268763,165.6132199064003,12.869079994560618,9.599170132298728,78.7015873015873,19.10521820236133, -Surgical_skills_1_fixations_Performance_label,Performance_label,complex_features,regression,LGBMRegressor,93.0,897.0,343.0,315.0,2026-02-22T09:47:35.500304,0.5601417913796818,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7337015478208949,62.32425000925904,7.894570919895459,6.320814242293902,79.53623188405797,15.298336502268548,0.7299865465822513,86.12604543045019,9.280411921377748,7.184718324461174,74.5597667638484,17.859716123273348,0.3617929453139867,232.95155021213384,15.262750414395626,11.499939066226544,78.7015873015873,19.10521820236133, -Surgical_skills_1_fixations_Performance_label,Performance_label,distance_features,regression,XGBRegressor,27.0,897.0,343.0,315.0,2026-02-22T09:52:35.675085,0.9033190608024596,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.1537216901779174,198.06220957465845,14.073457626847016,11.380428046287102,79.53623188405797,15.298336502268548,0.2247909903526306,247.26798785000523,15.724757163466952,12.62440877753166,74.5597667638484,17.859716123273348,-0.1661434173583984,425.6533164341117,20.631367294343622,16.91343083457341,78.7015873015873,19.10521820236133, -Surgical_skills_1_fixations_Performance_label,Performance_label,extended_features,regression,LGBMRegressor,65.0,897.0,343.0,315.0,2026-02-22T09:42:35.273791,0.507733655298161,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.5619203584852764,102.52776491305688,10.125599484132133,7.848180238479562,79.53623188405797,15.298336502268548,0.5678436176578912,137.8446879129057,11.740727742048431,8.977195952797757,74.5597667638484,17.859716123273348,0.5652311696602275,158.69469362320706,12.597408210548988,9.506430022617222,78.7015873015873,19.10521820236133, -Surgical_skills_1_fixations_Performance_label,Performance_label,simple_features,regression,LGBMRegressor,15.0,897.0,343.0,315.0,2026-02-22T09:37:35.067534,0.4947092609533704,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6130304758725289,90.5659990523102,9.51661699619724,7.280563001963485,79.53623188405797,15.298336502268548,0.6085494725807359,124.86076334916844,11.174111300196024,8.519448406691616,74.5597667638484,17.859716123273348,0.5064716839603145,180.14245604287623,13.421715838255414,10.338984578880318,78.7015873015873,19.10521820236133, -Surgical_skills_2_fixations_Performance_label,Performance_label,all_features,regression,ExtraTreesRegressor,193.0,37.0,17.0,40.0,2026-02-22T10:22:37.289137,0.781910397295013,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,1.0,0.0,0.0,0.0,29.054054054054053,6.661490564252021,1.0,0.0,0.0,0.0,25.0,0.0,0.0,0.2995562130177512,0.5473172873368346,0.2019230769230768,25.0,0.0, -Surgical_skills_2_fixations_Performance_label,Performance_label,complex_features,regression,ExtraTreesRegressor,94.0,37.0,17.0,40.0,2026-02-22T10:12:36.821993,0.1938095238095238,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,1.0,0.0,0.0,0.0,29.054054054054053,6.661490564252021,1.0,0.0,0.0,0.0,25.0,0.0,1.0,0.0,0.0,0.0,25.0,0.0, -Surgical_skills_2_fixations_Performance_label,Performance_label,distance_features,regression,ExtraTreesRegressor,28.0,37.0,17.0,40.0,2026-02-22T10:17:36.986792,0.0,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,1.0,0.0,0.0,0.0,29.054054054054053,6.661490564252021,1.0,0.0,0.0,0.0,25.0,0.0,1.0,0.0,0.0,0.0,25.0,0.0, -Surgical_skills_2_fixations_Performance_label,Performance_label,extended_features,regression,ExtraTreesRegressor,66.0,37.0,17.0,40.0,2026-02-22T10:07:36.579016,0.2084920634920635,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.9957975308641976,0.1864864864864865,0.4318408115110087,0.2054054054054054,29.054054054054053,6.661490564252021,1.0,0.0,0.0,0.0,25.0,0.0,0.0,0.3514999999999999,0.5928743543112655,0.2349999999999999,25.0,0.0, -Surgical_skills_2_fixations_Performance_label,Performance_label,simple_features,regression,ExtraTreesRegressor,16.0,37.0,17.0,40.0,2026-02-22T10:02:36.383855,0.0,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,1.0,0.0,0.0,0.0,29.054054054054053,6.661490564252021,1.0,0.0,0.0,0.0,25.0,0.0,1.0,0.0,0.0,0.0,25.0,0.0, -Visual_search_ready_data_saccades_Participant_score_label,Participant_score_label,distance_features,,,,,,,2026-02-22T10:32:37.528073,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,continuous is not supported -Visual_search_ready_data_saccades_Participant_score_label,Participant_score_label,extended_features,,,,,,,2026-02-22T10:27:37.440185,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,continuous is not supported -Visual_search_ready_data_saccades_correct_or_not_label,correct_or_not_label,distance_features,classification,XGBClassifier,26.0,12.0,4.0,5.0,2026-02-22T10:42:37.832857,0.0,XGBClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0: 1, 1: 11}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 1, 1: 3}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 1, 1: 4}",,,,,,,,,,,,,,,,,,, -Visual_search_ready_data_saccades_correct_or_not_label,correct_or_not_label,extended_features,classification,ExtraTreesClassifier,55.0,12.0,4.0,5.0,2026-02-22T10:37:37.745957,0.0,ExtraTreesClassifier,1.0,1.0,1.0,1.0,1.0,2.0,"{0: 1, 1: 11}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 1, 1: 3}",1.0,1.0,1.0,1.0,1.0,2.0,"{0: 1, 1: 4}",,,,,,,,,,,,,,,,,,, -Webtask_condition_label,condition_label,all_features,classification,LGBMClassifier,474.0,2543.0,908.0,910.0,2026-02-13T05:08:11.062856,0.0221169932737218,LGBMClassifier,0.9893826189539914,0.9921267482243092,0.991936196724864,0.9919386434960672,,4.0,"{1.0: 838, 2.0: 840, 3.0: 837, 100.0: 28}",0.986784140969163,0.990353697749196,0.9899665551839464,0.9899625132882,,4.0,"{1.0: 299, 2.0: 300, 3.0: 299, 100.0: 10}",0.9505494505494504,0.9635463772485178,0.9625,0.9624540061575432,,4.0,"{1.0: 300, 2.0: 300, 3.0: 300, 100.0: 10}",,,,,,,,,,,,,,,,,,, -Webtask_condition_label,condition_label,complex_features,classification,ExtraTreesClassifier,375.0,2543.0,908.0,910.0,2026-02-13T04:58:07.704560,0.0601776804396312,ExtraTreesClassifier,0.9359024773889107,0.9559454741152996,0.9513209895552648,0.9510663862591222,,4.0,"{1.0: 838, 2.0: 840, 3.0: 837, 100.0: 28}",0.8975770925110133,0.9319293478260868,0.9222408026755852,0.9211915781239814,,4.0,"{1.0: 299, 2.0: 300, 3.0: 299, 100.0: 10}",0.8758241758241758,0.92162471395881,0.9058333333333334,0.9036162390999634,,4.0,"{1.0: 300, 2.0: 300, 3.0: 300, 100.0: 10}",,,,,,,,,,,,,,,,,,, -Webtask_condition_label,condition_label,distance_features,classification,ExtraTreesClassifier,27.0,2543.0,908.0,910.0,2026-02-13T05:03:08.270319,0.2511505035147767,ExtraTreesClassifier,0.7188360204482894,0.7774720959555901,0.743436372290595,0.7579617100841048,,4.0,"{1.0: 838, 2.0: 840, 3.0: 837, 100.0: 28}",0.6905286343612335,0.7661696655078455,0.740886287625418,0.7494394483689756,,4.0,"{1.0: 299, 2.0: 300, 3.0: 299, 100.0: 10}",0.689010989010989,0.7652043670792892,0.7158333333333333,0.7360402535794083,,4.0,"{1.0: 300, 2.0: 300, 3.0: 300, 100.0: 10}",,,,,,,,,,,,,,,,,,, -Webtask_condition_label,condition_label,extended_features,classification,ExtraTreesClassifier,65.0,2543.0,908.0,910.0,2026-02-13T04:52:56.784730,0.0221084722448152,ExtraTreesClassifier,0.9956744003145892,0.9967608951707893,0.9967144563918756,0.9967162493704288,,4.0,"{1.0: 838, 2.0: 840, 3.0: 837, 100.0: 28}",0.9944933920704846,0.9958881578947368,0.995819397993311,0.9958191057081092,,4.0,"{1.0: 299, 2.0: 300, 3.0: 299, 100.0: 10}",0.9516483516483516,0.9642857142857144,0.9633333333333334,0.9632925472747498,,4.0,"{1.0: 300, 2.0: 300, 3.0: 300, 100.0: 10}",,,,,,,,,,,,,,,,,,, -Webtask_condition_label,condition_label,simple_features,classification,LGBMClassifier,15.0,2543.0,908.0,910.0,2026-02-13T04:47:56.038787,0.0215174551880261,LGBMClassifier,0.9862367282736924,0.9898445618783333,0.9895470668913582,0.9895488862544456,,4.0,"{1.0: 838, 2.0: 840, 3.0: 837, 100.0: 28}",0.9768722466960352,0.9831953047849896,0.9824414715719064,0.9824272700558332,,4.0,"{1.0: 299, 2.0: 300, 3.0: 299, 100.0: 10}",0.956043956043956,0.9680622651637144,0.9666666666666668,0.966613247863248,,4.0,"{1.0: 300, 2.0: 300, 3.0: 300, 100.0: 10}",,,,,,,,,,,,,,,,,,, -Webtask_familiarity_label,familiarity_label,all_features,classification,LGBMClassifier,474.0,2543.0,909.0,909.0,2026-02-13T05:33:54.890312,0.6595343508943243,LGBMClassifier,0.9189933149823044,0.9624775447808632,0.8240814576007426,0.8730663254962141,,6.0,"{-2147483600.0: 8, 1.0: 2117, 2.0: 296, 3.0: 63, 4.0: 46, 5.0: 13}",0.9493949394939494,0.968312928123948,0.8208390025489068,0.8707081206629581,,5.0,"{-2147483600.0: 4, 1.0: 802, 2.0: 67, 3.0: 9, 4.0: 27}",0.8107810781078107,0.1817302145555369,0.1757772440222378,0.1738468223565859,,6.0,"{-2147483600.0: 2, 1.0: 764, 2.0: 97, 3.0: 26, 4.0: 16, 5.0: 4}",,,,,,,,,,,,,,,,,,, -Webtask_familiarity_label,familiarity_label,complex_features,classification,LGBMClassifier,375.0,2543.0,909.0,909.0,2026-02-13T05:23:39.056443,0.6704301480530886,LGBMClassifier,0.9150609516319308,0.9801571500100534,0.8231361020505833,0.8735696991162749,,6.0,"{-2147483600.0: 8, 1.0: 2117, 2.0: 296, 3.0: 63, 4.0: 46, 5.0: 13}",0.9482948294829484,0.976015779092702,0.7941944475461429,0.8579918649524669,,5.0,"{-2147483600.0: 4, 1.0: 802, 2.0: 67, 3.0: 9, 4.0: 27}",0.8096809680968097,0.1723194805465952,0.1710589050215001,0.1667675757659153,,6.0,"{-2147483600.0: 2, 1.0: 764, 2.0: 97, 3.0: 26, 4.0: 16, 5.0: 4}",,,,,,,,,,,,,,,,,,, -Webtask_familiarity_label,familiarity_label,distance_features,classification,LGBMClassifier,27.0,2543.0,909.0,909.0,2026-02-13T05:28:41.704556,0.7041435750507681,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{-2147483600.0: 8, 1.0: 2117, 2.0: 296, 3.0: 63, 4.0: 46, 5.0: 13}",1.0,1.0,1.0,1.0,,5.0,"{-2147483600.0: 4, 1.0: 802, 2.0: 67, 3.0: 9, 4.0: 27}",0.8261826182618262,0.1827651515151515,0.1728310933592415,0.1675832646303781,,6.0,"{-2147483600.0: 2, 1.0: 764, 2.0: 97, 3.0: 26, 4.0: 16, 5.0: 4}",,,,,,,,,,,,,,,,,,, -Webtask_familiarity_label,familiarity_label,extended_features,classification,LGBMClassifier,65.0,2543.0,909.0,909.0,2026-02-13T05:18:12.088578,0.6499898069093306,LGBMClassifier,0.7782147070389304,0.3994941669967307,0.4742041533581551,0.4202633057057114,,6.0,"{-2147483600.0: 8, 1.0: 2117, 2.0: 296, 3.0: 63, 4.0: 46, 5.0: 13}",0.7975797579757976,0.2991778192758585,0.3643935122576827,0.3205094445837015,,5.0,"{-2147483600.0: 4, 1.0: 802, 2.0: 67, 3.0: 9, 4.0: 27}",0.6897689768976898,0.1753771067120581,0.1726715462395146,0.1720205053538387,,6.0,"{-2147483600.0: 2, 1.0: 764, 2.0: 97, 3.0: 26, 4.0: 16, 5.0: 4}",,,,,,,,,,,,,,,,,,, -Webtask_familiarity_label,familiarity_label,simple_features,classification,XGBClassifier,15.0,2543.0,909.0,909.0,2026-02-13T05:13:11.460216,0.6569906460943413,XGBClassifier,0.8497837200157294,0.6614645314728897,0.5450583248315376,0.5533796964814294,,6.0,"{-2147483600.0: 8, 1.0: 2117, 2.0: 296, 3.0: 63, 4.0: 46, 5.0: 13}",0.9042904290429042,0.601703489746968,0.4705335771498102,0.5043342962493248,,5.0,"{-2147483600.0: 4, 1.0: 802, 2.0: 67, 3.0: 9, 4.0: 27}",0.7744774477447744,0.1687567421790723,0.164078102229179,0.1630921962681743,,6.0,"{-2147483600.0: 2, 1.0: 764, 2.0: 97, 3.0: 26, 4.0: 16, 5.0: 4}",,,,,,,,,,,,,,,,,,, -Webtask_relevance_label,relevance_label,all_features,classification,ExtraTreesClassifier,474.0,2543.0,909.0,909.0,2026-02-13T05:59:01.193169,0.5965865649315976,ExtraTreesClassifier,0.8360204482894219,0.5480107302118172,0.499342909848229,0.4909426408941955,,6.0,"{-2147483600.0: 1703, 1.0: 67, 2.0: 176, 3.0: 235, 4.0: 252, 5.0: 110}",0.8118811881188119,0.4850821249552453,0.453612591990201,0.4479520557689571,,6.0,"{-2147483600.0: 609, 1.0: 24, 2.0: 68, 3.0: 93, 4.0: 70, 5.0: 45}",0.7568756875687569,0.3348453749315818,0.3420720487608533,0.3211561834066371,,6.0,"{-2147483600.0: 609, 1.0: 23, 2.0: 85, 3.0: 86, 4.0: 62, 5.0: 44}",,,,,,,,,,,,,,,,,,, -Webtask_relevance_label,relevance_label,complex_features,classification,LGBMClassifier,375.0,2543.0,909.0,909.0,2026-02-13T05:48:58.799815,0.6022018528438833,LGBMClassifier,0.8399528116397955,0.7020231327421668,0.5339606454464345,0.5546690715017123,,6.0,"{-2147483600.0: 1703, 1.0: 67, 2.0: 176, 3.0: 235, 4.0: 252, 5.0: 110}",0.8140814081408141,0.559888673039728,0.4732998755057578,0.4752703723291958,,6.0,"{-2147483600.0: 609, 1.0: 24, 2.0: 68, 3.0: 93, 4.0: 70, 5.0: 45}",0.7678767876787679,0.3684495665878645,0.3651383899218236,0.3547298436368036,,6.0,"{-2147483600.0: 609, 1.0: 23, 2.0: 85, 3.0: 86, 4.0: 62, 5.0: 44}",,,,,,,,,,,,,,,,,,, -Webtask_relevance_label,relevance_label,distance_features,classification,LGBMClassifier,27.0,2543.0,909.0,909.0,2026-02-13T05:53:59.175101,0.6289653767607299,LGBMClassifier,0.8871411718442784,0.72895010462905,0.6978645426882962,0.7088877802878083,,6.0,"{-2147483600.0: 1703, 1.0: 67, 2.0: 176, 3.0: 235, 4.0: 252, 5.0: 110}",0.8833883388338833,0.7079565772669221,0.6817505496822386,0.6870589639201938,,6.0,"{-2147483600.0: 609, 1.0: 24, 2.0: 68, 3.0: 93, 4.0: 70, 5.0: 45}",0.7513751375137514,0.3428484152242392,0.3337042816853945,0.3331418359353759,,6.0,"{-2147483600.0: 609, 1.0: 23, 2.0: 85, 3.0: 86, 4.0: 62, 5.0: 44}",,,,,,,,,,,,,,,,,,, -Webtask_relevance_label,relevance_label,extended_features,classification,ExtraTreesClassifier,65.0,2543.0,909.0,909.0,2026-02-13T05:43:57.028560,0.5938602481920963,ExtraTreesClassifier,0.987809673613842,0.9797540041657689,0.940315647591767,0.9564860725911984,,6.0,"{-2147483600.0: 1703, 1.0: 67, 2.0: 176, 3.0: 235, 4.0: 252, 5.0: 110}",0.99009900990099,0.9852941176470588,0.9484749455337692,0.9634757218090552,,6.0,"{-2147483600.0: 609, 1.0: 24, 2.0: 68, 3.0: 93, 4.0: 70, 5.0: 45}",0.7535753575357536,0.3205369754859924,0.3345905995215381,0.3206260958648604,,6.0,"{-2147483600.0: 609, 1.0: 23, 2.0: 85, 3.0: 86, 4.0: 62, 5.0: 44}",,,,,,,,,,,,,,,,,,, -Webtask_relevance_label,relevance_label,simple_features,classification,LGBMClassifier,15.0,2543.0,909.0,909.0,2026-02-13T05:38:56.537799,0.5863522210919472,LGBMClassifier,0.8619740464018876,0.7140002256599058,0.6075347535831023,0.6236367946894262,,6.0,"{-2147483600.0: 1703, 1.0: 67, 2.0: 176, 3.0: 235, 4.0: 252, 5.0: 110}",0.8525852585258525,0.6482327278962093,0.5773839643384236,0.5880653652913642,,6.0,"{-2147483600.0: 609, 1.0: 24, 2.0: 68, 3.0: 93, 4.0: 70, 5.0: 45}",0.7557755775577558,0.3328691571729698,0.3459856942845337,0.333400658912707,,6.0,"{-2147483600.0: 609, 1.0: 23, 2.0: 85, 3.0: 86, 4.0: 62, 5.0: 44}",,,,,,,,,,,,,,,,,,, -Webtask_school_condition_label,condition_label,all_features,classification,XGBClassifier,474.0,728.0,259.0,260.0,2026-02-22T10:57:39.326179,0.0262866079672721,XGBClassifier,0.9656593406593408,0.9748868778280544,0.9737394957983192,0.973705957478777,,4.0,"{1.0: 238, 2.0: 238, 3.0: 238, 100.0: 14}",0.9613899613899614,0.9705634987384356,0.9703781512605042,0.9704048753152144,,4.0,"{1.0: 85, 2.0: 85, 3.0: 84, 100.0: 5}",0.9730769230769232,0.9794435215946844,0.9794117647058824,0.979411052285546,,4.0,"{1.0: 85, 2.0: 85, 3.0: 85, 100.0: 5}",,,,,,,,,,,,,,,,,,, -Webtask_school_condition_label,condition_label,complex_features,classification,LGBMClassifier,375.0,714.0,254.0,255.0,2026-02-13T06:04:03.108602,0.0506212446161754,LGBMClassifier,0.9523809523809524,0.956588417137613,0.9516737891737892,0.9519327129563352,,3.0,"{1.0: 240, 2.0: 240, 3.0: 234}",0.9488188976377953,0.9553051643192488,0.947474193843062,0.9487498703184976,,3.0,"{1.0: 89, 2.0: 83, 3.0: 82}",0.9098039215686274,0.9201997122789202,0.9163957656080688,0.9141674745389916,,3.0,"{1.0: 86, 2.0: 76, 3.0: 93}",,,,,,,,,,,,,,,,,,, -Webtask_school_condition_label,condition_label,distance_features,classification,LGBMClassifier,27.0,714.0,254.0,255.0,2026-02-13T06:09:03.448947,0.2801911892820984,LGBMClassifier,0.8823529411764706,0.8819444444444445,0.8819444444444445,0.8818565400843882,,3.0,"{1.0: 240, 2.0: 240, 3.0: 234}",0.8779527559055118,0.8789247900693683,0.8790992966109435,0.8789933230611197,,3.0,"{1.0: 89, 2.0: 83, 3.0: 82}",0.611764705882353,0.6305381727158949,0.6305743102442277,0.630546955624355,,3.0,"{1.0: 86, 2.0: 76, 3.0: 93}",,,,,,,,,,,,,,,,,,, -Webtask_school_condition_label,condition_label,extended_features,classification,LGBMClassifier,65.0,728.0,259.0,260.0,2026-02-22T10:52:38.260423,0.0210265924551639,LGBMClassifier,0.9876373626373628,0.9905844442482564,0.990546218487395,0.9905458429515333,,4.0,"{1.0: 238, 2.0: 238, 3.0: 238, 100.0: 14}",0.9884169884169884,0.9914772727272728,0.9910714285714286,0.9911192853389386,,4.0,"{1.0: 85, 2.0: 85, 3.0: 84, 100.0: 5}",0.9769230769230768,0.9824816507408948,0.9823529411764708,0.9823504983388704,,4.0,"{1.0: 85, 2.0: 85, 3.0: 85, 100.0: 5}",,,,,,,,,,,,,,,,,,, -Webtask_school_condition_label,condition_label,simple_features,classification,LGBMClassifier,15.0,728.0,259.0,260.0,2026-02-22T10:47:38.064439,0.0220807506925085,LGBMClassifier,0.9656593406593408,0.9748868778280544,0.9737394957983192,0.973705957478777,,4.0,"{1.0: 238, 2.0: 238, 3.0: 238, 100.0: 14}",0.9652509652509652,0.9734169235079854,0.9733543417366948,0.9733690513709424,,4.0,"{1.0: 85, 2.0: 85, 3.0: 84, 100.0: 5}",0.9769230769230768,0.9824816507408948,0.9823529411764708,0.9823504983388704,,4.0,"{1.0: 85, 2.0: 85, 3.0: 85, 100.0: 5}",,,,,,,,,,,,,,,,,,, -Webtask_school_familiarity_label,familiarity_label,all_features,classification,XGBClassifier,474.0,728.0,259.0,260.0,2026-02-22T11:12:42.607197,0.3500846917104873,XGBClassifier,0.9835164835164836,0.9970014992503748,0.9583333333333334,0.9746776168863917,,6.0,"{-2147483600.0: 4, 1.0: 655, 2.0: 48, 3.0: 17, 4.0: 1, 5.0: 3}",0.9884169884169884,0.9954954954954954,0.9696969696969696,0.981859410430839,,3.0,"{1.0: 219, 2.0: 33, 3.0: 7}",0.8884615384615384,0.1826086956521739,0.1941176470588235,0.1881873727087576,,5.0,"{-2147483600.0: 2, 1.0: 238, 2.0: 16, 3.0: 2, 5.0: 2}",,,,,,,,,,,,,,,,,,, -Webtask_school_familiarity_label,familiarity_label,complex_features,classification,LGBMClassifier,375.0,714.0,254.0,255.0,2026-02-13T06:14:06.193908,0.3491901366811244,LGBMClassifier,1.0,1.0,1.0,1.0,,5.0,"{-2147483600.0: 3, 1.0: 636, 2.0: 58, 3.0: 8, 4.0: 9}",1.0,1.0,1.0,1.0,,6.0,"{-2147483600.0: 1, 1.0: 214, 2.0: 23, 3.0: 7, 4.0: 8, 5.0: 1}",0.9019607843137256,0.1551956815114709,0.1610644257703081,0.1580756013745704,,6.0,"{-2147483600.0: 1, 1.0: 238, 2.0: 10, 3.0: 4, 4.0: 1, 5.0: 1}",,,,,,,,,,,,,,,,,,, -Webtask_school_familiarity_label,familiarity_label,distance_features,classification,LGBMClassifier,27.0,714.0,254.0,255.0,2026-02-13T06:19:17.753911,0.3661740186778981,LGBMClassifier,0.9327731092436976,0.7443057326109475,0.8383864671437866,0.7328571428571429,,5.0,"{-2147483600.0: 3, 1.0: 636, 2.0: 58, 3.0: 8, 4.0: 9}",0.9133858267716536,0.7457336821126059,0.8657981172964919,0.7695702117612874,,6.0,"{-2147483600.0: 1, 1.0: 214, 2.0: 23, 3.0: 7, 4.0: 8, 5.0: 1}",0.8431372549019608,0.1551226551226551,0.1505602240896358,0.1528073916133617,,6.0,"{-2147483600.0: 1, 1.0: 238, 2.0: 10, 3.0: 4, 4.0: 1, 5.0: 1}",,,,,,,,,,,,,,,,,,, -Webtask_school_familiarity_label,familiarity_label,extended_features,classification,XGBClassifier,65.0,728.0,259.0,260.0,2026-02-22T11:07:39.760206,0.3457227612780763,XGBClassifier,0.9972527472527472,0.9994926433282596,0.9930555555555556,0.9961998356685694,,6.0,"{-2147483600.0: 4, 1.0: 655, 2.0: 48, 3.0: 17, 4.0: 1, 5.0: 3}",0.9922779922779924,0.9969834087481146,0.9797979797979798,0.988068181818182,,3.0,"{1.0: 219, 2.0: 33, 3.0: 7}",0.8769230769230769,0.2170731707317073,0.2149159663865546,0.2153482880755607,,5.0,"{-2147483600.0: 2, 1.0: 238, 2.0: 16, 3.0: 2, 5.0: 2}",,,,,,,,,,,,,,,,,,, -Webtask_school_familiarity_label,familiarity_label,simple_features,classification,LGBMClassifier,15.0,728.0,259.0,260.0,2026-02-22T11:02:39.497193,0.3534653012290768,LGBMClassifier,0.9684065934065934,0.9475925925925928,0.9043615601456868,0.9145695089667925,,6.0,"{-2147483600.0: 4, 1.0: 655, 2.0: 48, 3.0: 17, 4.0: 1, 5.0: 3}",0.942084942084942,0.9786324786324788,0.735930735930736,0.8239793074230161,,3.0,"{1.0: 219, 2.0: 33, 3.0: 7}",0.8884615384615384,0.1826086956521739,0.1941176470588235,0.1881873727087576,,5.0,"{-2147483600.0: 2, 1.0: 238, 2.0: 16, 3.0: 2, 5.0: 2}",,,,,,,,,,,,,,,,,,, -Webtask_school_relevance_label,relevance_label,all_features,classification,LGBMClassifier,474.0,728.0,259.0,260.0,2026-02-22T11:29:41.524603,0.5596635865129245,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{-2147483600.0: 485, 1.0: 15, 2.0: 26, 3.0: 55, 4.0: 77, 5.0: 70}",1.0,1.0,1.0,1.0,,6.0,"{-2147483600.0: 171, 1.0: 4, 2.0: 7, 3.0: 16, 4.0: 27, 5.0: 34}",0.75,0.2920217930736865,0.3276143790849673,0.2982060909470171,,6.0,"{-2147483600.0: 174, 1.0: 17, 2.0: 3, 3.0: 8, 4.0: 24, 5.0: 34}",,,,,,,,,,,,,,,,,,, -Webtask_school_relevance_label,relevance_label,complex_features,classification,ExtraTreesClassifier,375.0,714.0,254.0,255.0,2026-02-13T06:24:19.939514,0.6026115508230205,ExtraTreesClassifier,1.0,1.0,1.0,1.0,,6.0,"{-2147483600.0: 474, 1.0: 29, 2.0: 58, 3.0: 65, 4.0: 60, 5.0: 28}",0.9921259842519684,0.998073217726397,0.9458333333333332,0.9694013781223084,,6.0,"{-2147483600.0: 171, 1.0: 8, 2.0: 12, 3.0: 26, 4.0: 32, 5.0: 5}",0.7764705882352941,0.3533454202883094,0.3290720674234606,0.3338032315267087,,6.0,"{-2147483600.0: 179, 1.0: 2, 2.0: 8, 3.0: 17, 4.0: 30, 5.0: 19}",,,,,,,,,,,,,,,,,,, -Webtask_school_relevance_label,relevance_label,distance_features,classification,RandomForestClassifier,27.0,714.0,254.0,255.0,2026-02-13T06:29:20.242005,0.5781691122001953,RandomForestClassifier,0.8109243697478992,0.671612309501651,0.4999715801439939,0.5435383843772933,,6.0,"{-2147483600.0: 474, 1.0: 29, 2.0: 58, 3.0: 65, 4.0: 60, 5.0: 28}",0.8267716535433071,0.5219485200284198,0.4829861111111111,0.4984352528501968,,6.0,"{-2147483600.0: 171, 1.0: 8, 2.0: 12, 3.0: 26, 4.0: 32, 5.0: 5}",0.7529411764705882,0.2678331678069595,0.2643790849673202,0.2594125809435708,,6.0,"{-2147483600.0: 179, 1.0: 2, 2.0: 8, 3.0: 17, 4.0: 30, 5.0: 19}",,,,,,,,,,,,,,,,,,, -Webtask_school_relevance_label,relevance_label,extended_features,classification,LGBMClassifier,65.0,728.0,259.0,260.0,2026-02-22T11:22:43.040893,0.5333864873238414,LGBMClassifier,0.9821428571428572,0.9704116036085796,0.9666666666666668,0.9682504574855894,,6.0,"{-2147483600.0: 485, 1.0: 15, 2.0: 26, 3.0: 55, 4.0: 77, 5.0: 70}",0.9922779922779924,0.9836309523809524,0.9846813725490196,0.9840654681139754,,6.0,"{-2147483600.0: 171, 1.0: 4, 2.0: 7, 3.0: 16, 4.0: 27, 5.0: 34}",0.7730769230769231,0.3634168755221387,0.3602941176470588,0.3505704654071149,,6.0,"{-2147483600.0: 174, 1.0: 17, 2.0: 3, 3.0: 8, 4.0: 24, 5.0: 34}",,,,,,,,,,,,,,,,,,, -Webtask_school_relevance_label,relevance_label,simple_features,classification,LGBMClassifier,15.0,728.0,259.0,260.0,2026-02-22T11:17:42.810775,0.5394525440502451,LGBMClassifier,0.896978021978022,0.7855099400977621,0.7471972471972471,0.7525079619778646,,6.0,"{-2147483600.0: 485, 1.0: 15, 2.0: 26, 3.0: 55, 4.0: 77, 5.0: 70}",0.915057915057915,0.7896467207572684,0.7808966179064218,0.7734867212326227,,6.0,"{-2147483600.0: 171, 1.0: 4, 2.0: 7, 3.0: 16, 4.0: 27, 5.0: 34}",0.7769230769230769,0.3155067155067155,0.3402777777777778,0.326913320064005,,6.0,"{-2147483600.0: 174, 1.0: 17, 2.0: 3, 3.0: 8, 4.0: 24, 5.0: 34}",,,,,,,,,,,,,,,,,,, -Webtask_school_search_result_label,search_result_label,all_features,classification,LGBMClassifier,474.0,728.0,259.0,260.0,2026-02-22T11:45:37.232045,0.6145223820587897,LGBMClassifier,1.0,1.0,1.0,1.0,,6.0,"{-2147483600.0: 485, 1.0: 58, 2.0: 65, 3.0: 57, 4.0: 32, 5.0: 31}",1.0,1.0,1.0,1.0,,6.0,"{-2147483600.0: 171, 1.0: 19, 2.0: 23, 3.0: 22, 4.0: 9, 5.0: 15}",0.7769230769230769,0.4385000292441308,0.4265873015873016,0.4202025980684518,,6.0,"{-2147483600.0: 174, 1.0: 19, 2.0: 18, 3.0: 19, 4.0: 14, 5.0: 16}",,,,,,,,,,,,,,,,,,, -Webtask_school_search_result_label,search_result_label,complex_features,classification,CatBoostClassifier,375.0,714.0,254.0,255.0,2026-02-13T06:34:42.755288,0.6279073556231209,CatBoostClassifier,0.9257703081232492,0.8337244816426926,0.8075295691962358,0.8117886731228214,,6.0,"{-2147483600.0: 474, 1.0: 44, 2.0: 40, 3.0: 54, 4.0: 50, 5.0: 52}",0.937007874015748,0.843073593073593,0.8364042755490123,0.8378955624181564,,6.0,"{-2147483600.0: 171, 1.0: 13, 2.0: 16, 3.0: 13, 4.0: 19, 5.0: 22}",0.7529411764705882,0.3074494949494949,0.3055583670715249,0.3004834437514976,,6.0,"{-2147483600.0: 179, 1.0: 16, 2.0: 13, 3.0: 15, 4.0: 13, 5.0: 19}",,,,,,,,,,,,,,,,,,, -Webtask_school_search_result_label,search_result_label,distance_features,classification,RandomForestClassifier,27.0,714.0,254.0,255.0,2026-02-13T06:39:43.129019,0.5978909270131612,RandomForestClassifier,0.7843137254901961,0.5118055555555555,0.4498329448329448,0.4285933596405573,,6.0,"{-2147483600.0: 474, 1.0: 44, 2.0: 40, 3.0: 54, 4.0: 50, 5.0: 52}",0.8307086614173228,0.6306471306471306,0.526894706171022,0.5164089994972348,,6.0,"{-2147483600.0: 171, 1.0: 13, 2.0: 16, 3.0: 13, 4.0: 19, 5.0: 22}",0.7607843137254902,0.3285714285714285,0.3295546558704453,0.3157756117706055,,6.0,"{-2147483600.0: 179, 1.0: 16, 2.0: 13, 3.0: 15, 4.0: 13, 5.0: 19}",,,,,,,,,,,,,,,,,,, -Webtask_school_search_result_label,search_result_label,extended_features,classification,RandomForestClassifier,65.0,728.0,259.0,260.0,2026-02-22T11:39:42.116408,0.6164602924932625,RandomForestClassifier,0.8392857142857143,0.660345399447594,0.5467876412888414,0.5569672888151572,,6.0,"{-2147483600.0: 485, 1.0: 58, 2.0: 65, 3.0: 57, 4.0: 32, 5.0: 31}",0.8571428571428571,0.743216539489359,0.5943223231552751,0.5981088759985572,,6.0,"{-2147483600.0: 171, 1.0: 19, 2.0: 23, 3.0: 22, 4.0: 9, 5.0: 15}",0.7576923076923077,0.400278944060824,0.3769145084934559,0.3469900535676031,,6.0,"{-2147483600.0: 174, 1.0: 19, 2.0: 18, 3.0: 19, 4.0: 14, 5.0: 16}",,,,,,,,,,,,,,,,,,, -Webtask_school_search_result_label,search_result_label,simple_features,classification,ExtraTreesClassifier,15.0,728.0,259.0,260.0,2026-02-22T11:34:41.766262,0.6132497223630229,ExtraTreesClassifier,0.896978021978022,0.8165232843500037,0.705010390412299,0.7296041419784437,,6.0,"{-2147483600.0: 485, 1.0: 58, 2.0: 65, 3.0: 57, 4.0: 32, 5.0: 31}",0.8764478764478765,0.7373807494012098,0.6631212968741573,0.6776907001044932,,6.0,"{-2147483600.0: 171, 1.0: 19, 2.0: 23, 3.0: 22, 4.0: 9, 5.0: 15}",0.7461538461538462,0.4006802721088435,0.351756126427179,0.3273948166832881,,6.0,"{-2147483600.0: 174, 1.0: 19, 2.0: 18, 3.0: 19, 4.0: 14, 5.0: 16}",,,,,,,,,,,,,,,,,,, -Webtask_search_result_label,search_result_label,all_features,classification,LGBMClassifier,474.0,2543.0,909.0,909.0,2026-02-13T07:04:56.047224,0.6267521491396972,LGBMClassifier,0.9980338183248132,0.9950630252100842,0.9950396825396824,0.995039612237908,,6.0,"{-2147483600.0: 1703, 1.0: 168, 2.0: 168, 3.0: 168, 4.0: 168, 5.0: 168}",0.9988998899889988,0.9972677595628416,0.9972222222222222,0.9972220293075909,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",0.7326732673267327,0.3211634064160323,0.325,0.3223324615222671,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",,,,,,,,,,,,,,,,,,, -Webtask_search_result_label,search_result_label,complex_features,classification,LGBMClassifier,375.0,2543.0,909.0,909.0,2026-02-13T06:54:52.857980,0.6373604279847669,LGBMClassifier,0.8368069209594966,0.5906074176845255,0.5882936507936508,0.5885867821779857,,6.0,"{-2147483600.0: 1703, 1.0: 168, 2.0: 168, 3.0: 168, 4.0: 168, 5.0: 168}",0.8371837183718371,0.5906674212202377,0.5888888888888889,0.5884043907369714,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",0.7447744774477447,0.3638521004250903,0.3555555555555555,0.3584234359746403,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",,,,,,,,,,,,,,,,,,, -Webtask_search_result_label,search_result_label,distance_features,classification,RandomForestClassifier,27.0,2543.0,909.0,909.0,2026-02-13T06:59:53.431453,0.6269818520260766,RandomForestClassifier,0.8430987023200944,0.6063131011845807,0.6041666666666666,0.6008703043397426,,6.0,"{-2147483600.0: 1703, 1.0: 168, 2.0: 168, 3.0: 168, 4.0: 168, 5.0: 168}",0.8327832783278328,0.5807678537001846,0.5777777777777777,0.5748452031169248,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",0.746974697469747,0.3624924095958275,0.3611111111111111,0.361210729513668,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",,,,,,,,,,,,,,,,,,, -Webtask_search_result_label,search_result_label,extended_features,classification,LGBMClassifier,65.0,2543.0,909.0,909.0,2026-02-13T06:49:50.864194,0.6350270565133056,LGBMClassifier,0.8328745576091231,0.5795874074127846,0.5783730158730159,0.5782299744606615,,6.0,"{-2147483600.0: 1703, 1.0: 168, 2.0: 168, 3.0: 168, 4.0: 168, 5.0: 168}",0.8151815181518152,0.5341854426929883,0.5333333333333333,0.5328181353456086,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",0.7436743674367436,0.3482683313254295,0.3527777777777778,0.3484264835008758,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",,,,,,,,,,,,,,,,,,, -Webtask_search_result_label,search_result_label,simple_features,classification,XGBClassifier,15.0,2543.0,909.0,909.0,2026-02-13T06:44:50.297054,0.6396198641072484,XGBClassifier,0.7762485253637436,0.4668829657769421,0.435515873015873,0.4269660266342954,,6.0,"{-2147483600.0: 1703, 1.0: 168, 2.0: 168, 3.0: 168, 4.0: 168, 5.0: 168}",0.768976897689769,0.4399094280858269,0.4166666666666667,0.4107046757782438,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",0.7348734873487349,0.3305754649258586,0.3305555555555555,0.3212092613081457,,6.0,"{-2147483600.0: 609, 1.0: 60, 2.0: 60, 3.0: 60, 4.0: 60, 5.0: 60}",,,,,,,,,,,,,,,,,,, diff --git a/experiments/collection_experiments/results/flaml_results_all_batteries_additional.csv b/experiments/collection_experiments/results/flaml_results_all_batteries_additional.csv deleted file mode 100644 index 6dd5e83..0000000 --- a/experiments/collection_experiments/results/flaml_results_all_batteries_additional.csv +++ /dev/null @@ -1,297 +0,0 @@ -dataset,label,feature_battery,task_type,best_model,n_features,n_train,n_val,n_test,timestamp,train_best_loss,train_best_model,train_accuracy,train_precision,train_recall,train_f1,train_roc_auc,train_n_classes,train_class_distribution,val_accuracy,val_precision,val_recall,val_f1,val_roc_auc,val_n_classes,val_class_distribution,test_accuracy,test_precision,test_recall,test_f1,test_roc_auc,test_n_classes,test_class_distribution,train_r2,train_mse,train_rmse,train_mae,train_mean_target,train_std_target,val_r2,val_mse,val_rmse,val_mae,val_mean_target,val_std_target,test_r2,test_mse,test_rmse,test_mae,test_mean_target,test_std_target,error -Cognitive_load_ready_data_gazes_0.01_effort_label,effort_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-20T17:42:46.334552,0.1585544550295829,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8220777247250762,149.15481823265878,12.212895571184534,10.324832650468691,48.98148148148148,28.95366076818761,0.8706387064096446,74.52625399953115,8.632858970209762,7.000663957848532,42.875,24.00227853767221,0.525291778825502,339.0529296579294,18.413389955625483,12.061619879858402,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.01_effort_label,effort_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-20T17:32:45.836896,0.1758254606154673,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.857020632788243,119.86167271375864,10.948135581630265,9.25571910622861,48.98148148148148,28.95366076818761,0.8372535102947936,93.75977846751046,9.682963310242917,7.7463458296415,42.875,24.00227853767221,0.5483519074091406,322.5825931315745,17.96058443179326,11.674636998235238,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.01_effort_label,effort_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-20T17:37:46.038739,0.15683214520815,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8789465200406541,101.48088412126889,10.073772090000292,8.26639528935549,48.98148148148148,28.95366076818761,0.8871992153642142,64.98558953603217,8.061363999723135,6.554401477596349,42.875,24.00227853767221,0.5331230434754185,333.45957124523665,18.26087542384638,11.843008199325658,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.01_effort_label,effort_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T17:27:45.620811,0.1622944450886523,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8789076797228704,101.51344452175928,10.07538805812259,8.209156486274203,48.98148148148148,28.95366076818761,0.8933771149056412,61.42644369240786,7.837502388669994,6.5290957710879125,42.875,24.00227853767221,0.5322413418318117,334.0893128675946,18.278110210511223,11.605012853591973,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.01_effort_label,effort_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T17:22:45.355571,0.1392117738723755,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9141116738319396,72.00143774002429,8.485366093459037,6.9326802447990135,48.98148148148148,28.95366076818761,0.9249129891395568,43.2583195878628,6.577105715119896,5.157193994522094,42.875,24.00227853767221,0.5307134985923767,335.18053358377165,18.30793635513767,12.31841275691986,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.01_frustration_label,frustration_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-20T18:07:47.465836,0.5664417224881766,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7421744125640319,149.07137710491426,12.20947898580911,9.88894868804027,24.12962962962963,24.04551725088952,0.6853650445625938,140.36160332333412,11.84743024133648,8.70428042077219,24.125,21.12130145137841,0.4762560749407848,353.5189659161412,18.80210004005248,15.279537959265015,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.01_frustration_label,frustration_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-20T17:57:46.999475,0.5314803001629188,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6015335462345826,230.38808360196063,15.178540232906478,11.975168321523654,24.12962962962963,24.04551725088952,0.5751858065703241,189.5135943220418,13.766393657092689,9.84609778541436,24.125,21.12130145137841,0.4721220168240816,356.3093905502578,18.87615931672165,15.074537862506617,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.01_frustration_label,frustration_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T18:02:47.117938,0.5130847692489624,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7384296655654907,151.2364950250109,12.29782480868104,9.435953899666115,24.12962962962963,24.04551725088952,0.6983827352523804,134.5543015123229,11.599754372930612,8.810206317901612,24.125,21.12130145137841,0.3096895217895508,465.9488032294457,21.58584729005201,16.154022932052612,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.01_frustration_label,frustration_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T17:52:46.764464,0.5927121456813895,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7582914283629014,139.75272970512574,11.82170587119836,9.368074054110066,24.12962962962963,24.04551725088952,0.7282221195887786,121.2426603690747,11.0110244922566,7.726377078987198,24.125,21.12130145137841,0.5797251379254873,283.6789651055762,16.842771894957675,13.750269561554529,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.01_frustration_label,frustration_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-20T17:47:46.531020,0.5421798676997659,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4936475768541519,292.76633777672754,17.11041606088898,13.464521404567222,24.12962962962963,24.04551725088952,0.5085262701274487,219.25103846236271,14.807127961301704,10.395600114905989,24.125,21.12130145137841,0.4157354430364417,394.3694468166992,19.85873729159785,16.105079668252607,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.01_group_task_label,group_task_label,all_features,classification,ExtraTreesClassifier,187.0,108.0,40.0,40.0,2026-02-11T07:31:26.805462,0.2893980335888008,ExtraTreesClassifier,0.7777777777777778,0.7781593406593408,0.7777777777777778,0.7777015437392796,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.775,0.7873626373626373,0.775,0.7721227621483376,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.8,0.803030303030303,0.8,0.7994987468671679,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.01_group_task_label,group_task_label,complex_features,classification,LGBMClassifier,97.0,108.0,40.0,40.0,2026-02-11T07:21:25.654364,0.4528739802812672,LGBMClassifier,0.7962962962962963,0.7967521367521367,0.7962962962962963,0.795573082440014,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.825,0.8267676767676768,0.8250000000000001,0.824812030075188,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.575,0.5782828282828283,0.575,0.575187969924812,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.01_group_task_label,group_task_label,distance_features,classification,ExtraTreesClassifier,31.0,108.0,40.0,40.0,2026-02-11T07:26:25.939821,0.2585236676597153,ExtraTreesClassifier,0.8240740740740741,0.8332828637001147,0.8240740740740741,0.8227846229081931,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.725,0.7262626262626262,0.7249999999999999,0.7246867167919799,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.775,0.7825126262626263,0.775,0.773676615781879,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.01_group_task_label,group_task_label,extended_features,classification,RandomForestClassifier,60.0,108.0,40.0,40.0,2026-02-11T07:16:25.313555,0.4478674877463731,RandomForestClassifier,0.6944444444444444,0.6992193707293819,0.6944444444444444,0.6920699898047662,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.75,0.7596590909090909,0.75,0.7515873015873016,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.7,0.7395833333333333,0.7,0.6923232323232323,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.01_group_task_label,group_task_label,simple_features,classification,ExtraTreesClassifier,19.0,108.0,40.0,40.0,2026-02-11T07:11:24.958189,0.4257798086147942,ExtraTreesClassifier,0.8148148148148148,0.8180068207654414,0.8148148148148149,0.8156956251295874,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.75,0.7690476190476191,0.75,0.74375,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.7,0.7055555555555555,0.7,0.6892763157894737,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.01_mean_label,mean_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-20T18:32:48.438620,0.087735778083019,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9970818326067816,1.154859549506672,1.0746439175404436,0.872725067835598,35.645370370370365,19.89342150830948,0.99690517396918,1.049814506870593,1.024604561218909,0.8190350469358073,34.5,18.417817460274712,0.9446484088656169,19.306190791153988,4.393881062472445,3.448069656388582,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.01_mean_label,mean_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-20T18:22:47.982797,0.0678725279573253,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9971243028548078,1.1380520244768324,1.0667952120612618,0.916105994387956,35.645370370370365,19.89342150830948,0.9975147421108456,0.843039240127464,0.9181716833618122,0.7407045665325357,34.5,18.417817460274712,0.9452056411731428,19.11183263407828,4.371708205504832,3.408078853911538,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.01_mean_label,mean_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T18:27:48.145783,0.0448229627704028,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9924424174464676,2.9908998378281386,1.7294218218318336,1.4081447415881687,35.645370370370365,19.89342150830948,0.9933586196965078,2.2528624610294115,1.500953850399609,1.1281230497360235,34.5,18.417817460274712,0.9645114500895304,12.378121413158762,3.518255450242174,2.742453026771545,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.01_mean_label,mean_label,extended_features,regression,XGBRegressor,59.0,108.0,40.0,40.0,2026-02-20T18:17:47.775661,0.0631578765471946,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9950971597762518,1.940290288096409,1.392943031174071,1.1019260892161615,35.645370370370365,19.89342150830948,0.995029629321778,1.6860292599837785,1.2984718941832274,1.018449151515961,34.5,18.417817460274712,0.9368377952944166,22.030470124614737,4.69366276213095,3.626507835388183,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.01_mean_label,mean_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T18:12:47.578945,0.0534542492227552,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9953992373003356,1.8207436458474224,1.3493493416633893,1.0778957472907171,35.645370370370365,19.89342150830948,0.9942321748702088,1.956538569227226,1.3987632284369025,1.133372466564179,34.5,18.417817460274712,0.95922195718456,14.22305409023185,3.771346455873797,2.7877927684783934,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.01_mental_label,mental_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-20T18:57:49.510166,0.1877464152273414,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8709422565517052,121.01044433907454,11.000474732441075,9.043011588664529,51.75925925925926,30.621001740626504,0.8640217680551155,100.48791340726964,10.024365985301497,7.658095559940949,46.0,27.184554438136374,0.5743962650463783,294.9367382645012,17.173722318254164,12.248919883606636,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.01_mental_label,mental_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-20T18:47:49.041876,0.1776085981757954,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8642801796149339,127.25711244901856,11.280829422033584,9.207563408383518,51.75925925925926,30.621001740626504,0.8516436601313084,109.63533516296306,10.470689335615065,8.21887330209315,46.0,27.184554438136374,0.6254878175427997,259.5310906899889,16.109968674395024,11.634893987295996,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.01_mental_label,mental_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T18:52:49.161035,0.1566636562347412,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.946479082107544,50.18369173798973,7.084044871257503,5.532461554915817,51.75925925925926,30.621001740626504,0.9450045824050904,40.641608259457165,6.375077117922352,4.773859333992005,46.0,27.184554438136374,0.562254011631012,303.3511374009064,17.416978423392113,14.016846084594729,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.01_mental_label,mental_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T18:42:48.811051,0.1546647398942217,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8327753129540802,156.7975167022557,12.521881516060423,9.848615339603748,51.75925925925926,30.621001740626504,0.8030854446747465,145.51985638536237,12.06316112738955,8.939612346288268,46.0,27.184554438136374,0.6532149890367044,240.3165940817676,15.502148047343876,11.563858764843996,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.01_mental_label,mental_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-20T18:37:48.635939,0.1527720352946799,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8675544127120584,124.18704170885046,11.143923981652534,9.130890178944796,51.75925925925926,30.621001740626504,0.8579459055947505,104.97797576547934,10.245876036995536,8.21586672313016,46.0,27.184554438136374,0.6302274529180133,256.24659743176863,16.007704314853164,11.68600239855382,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.01_performance_label,performance_label,all_features,regression,RandomForestRegressor,186.0,108.0,40.0,40.0,2026-02-20T20:41:01.806994,0.5790706687715554,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.6995037795430616,179.39281717269262,13.39376038208436,10.683241344727742,29.953703703703702,24.433350105822367,0.7479278074990148,179.59749852894416,13.401399125798177,11.137588363123712,32.625,26.69240294540752,0.3339478503629592,360.9066015197333,18.99754198626057,14.53011951661171,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.01_performance_label,performance_label,complex_features,regression,RandomForestRegressor,96.0,108.0,40.0,40.0,2026-02-20T20:31:01.388975,0.582493850441463,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.6991900184881001,179.58012894481087,13.400751058982136,9.94683698932896,29.953703703703702,24.433350105822367,0.7428141799190655,183.2408782792271,13.536649448043896,10.227126183120095,32.625,26.69240294540752,0.1794824008209089,444.6051534676828,21.085662272446715,16.599569138641908,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.01_performance_label,performance_label,distance_features,regression,LGBMRegressor,30.0,108.0,40.0,40.0,2026-02-20T20:36:01.478985,0.5996819341673403,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.675517984503663,193.71206331063584,13.91804811425208,11.285778678914836,29.953703703703702,24.433350105822367,0.8140210899567073,132.50706748537664,11.511171421075122,8.874338228639491,32.625,26.69240294540752,0.2446345362782306,409.3018580688631,20.23121000011772,15.0701198891866,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.01_performance_label,performance_label,extended_features,regression,RandomForestRegressor,59.0,108.0,40.0,40.0,2026-02-20T19:07:49.865629,0.5745567216255906,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.7987917130620422,120.11905300307852,10.959883804269028,8.647170459725402,29.953703703703702,24.433350105822367,0.8050662338767081,138.88726252274984,11.785044018702257,9.416739350363486,32.625,26.69240294540752,0.2632426319692336,399.218886967796,19.98046263147568,15.70176126137618,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.01_performance_label,performance_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T19:02:49.634952,0.5733857154846191,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8890179395675659,66.25504286975065,8.139720073181303,6.4658629850105,29.953703703703702,24.433350105822367,0.9228615164756776,54.959961288049705,7.413498586231045,6.063407695293426,32.625,26.69240294540752,0.3826385140419006,334.5231346061088,18.289973608677208,13.823303663730622,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.01_physical_label,physical_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-20T21:06:02.891003,0.7961443821442756,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9756825580143048,12.879237792423666,3.588765496995264,2.2759292397467155,20.0,23.013683530231088,0.9788921673064146,11.264986460657848,3.356335272385321,2.16557785406462,22.75,23.101677428273472,0.0216824602000808,431.66732822515496,20.77660531042439,15.36300151166015,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.01_physical_label,physical_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-20T20:56:02.467800,0.7383912801742554,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8051042556762695,103.22256205431522,10.15985049369897,7.384391833786611,20.0,23.013683530231088,0.8419672250747681,84.34011878403021,9.183687646257914,7.401365792751312,22.75,23.101677428273472,0.0173134803771972,433.59509753081295,20.82294641809398,16.11469112634659,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.01_physical_label,physical_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-20T21:01:02.660910,0.7669768855397998,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5755363045230766,224.8085498266668,14.993616969452928,10.987881885218176,20.0,23.013683530231088,0.6793327729024923,171.1360907616012,13.081899356041584,10.10589444830975,22.75,23.101677428273472,0.1049015857448809,394.9481893773485,19.87330343393741,14.865949245306524,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.01_physical_label,physical_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-20T20:51:02.068219,0.6913134120976638,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9362909657004804,33.742192240115905,5.808802995464376,3.9246254345131057,20.0,23.013683530231088,0.9438361282410042,29.973956309379115,5.47484760604157,3.9079531724052905,22.75,23.101677428273472,0.2482466368211301,331.69942535637665,18.212617202268778,12.301249471915623,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.01_physical_label,physical_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T20:46:01.900855,0.6576079726219177,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.4912401437759399,269.4543225580361,16.415063891378434,10.849166048897636,20.0,23.013683530231088,0.6909476518630981,164.9374027867997,12.842795754305202,9.559242966771128,22.75,23.101677428273472,-0.1171234846115112,492.9132391497293,22.2016494691212,16.488402450084685,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.01_temporal_label,temporal_label,all_features,regression,XGBRegressor,186.0,108.0,40.0,40.0,2026-02-20T21:31:04.070551,0.5286507606506348,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8883799910545349,98.82808951442948,9.941231790599668,8.418091323640612,39.02777777777778,29.755627644921383,0.8454590439796448,79.972528935327,8.94273609894237,7.060893964767456,38.625,22.74828290223242,0.5294503569602966,344.0600010601951,18.548854440643904,15.547189617156985,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.01_temporal_label,temporal_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-20T21:21:03.474659,0.515035092830658,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8370537161827087,144.2722158997758,12.01133697386664,9.95980120588232,39.02777777777778,29.755627644921383,0.742263674736023,133.3745187264306,11.548788625930886,9.374019575119018,38.625,22.74828290223242,0.4379470348358154,410.966091953096,20.27229863515965,16.163909721374512,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.01_temporal_label,temporal_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-20T21:26:03.710858,0.553157372730781,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8914408038691127,96.11802745392733,9.803980184288791,8.307568364341108,39.02777777777778,29.755627644921383,0.765752561220149,121.21938945234196,11.0099677316667,8.876492950206446,38.625,22.74828290223242,0.5429844031057924,334.1640917540834,18.280155681888584,14.572283734480672,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.01_temporal_label,temporal_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T21:16:03.274278,0.4826240572589136,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7277808289040395,241.0221399331305,15.52488775911538,12.948803078733537,39.02777777777778,29.755627644921383,0.640996991097041,185.7784476852672,13.630056774836529,10.94236477496058,38.625,22.74828290223242,0.4904494983218587,372.576957445786,19.30225265210737,15.26192932496436,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.01_temporal_label,temporal_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-20T21:11:03.092374,0.4346774402526736,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8386044732641534,142.899175957728,11.9540443347734,9.841694841214824,39.02777777777778,29.755627644921383,0.7878690201298781,109.77446753622762,10.47733112659076,7.987141610403471,38.625,22.74828290223242,0.5482030814066103,330.34825941400413,18.175485121833866,14.836832431324336,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-20T21:56:05.109964,0.1686513710885866,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9873382837843916,10.614499942373287,3.257990169164617,2.6335169848638094,48.98148148148148,28.95366076818761,0.978103557784438,12.61474563953093,3.5517243191907406,2.8596416232542787,42.875,24.00227853767221,0.3444097767691082,468.2450733454265,21.638971171139964,14.349535580150018,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-20T21:46:04.725342,0.191791039952985,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.97615715931409,19.98779839771062,4.470771566263548,3.5389795104113064,48.98148148148148,28.95366076818761,0.9547421912492288,26.073447913276382,5.106216594825995,4.300860653123355,42.875,24.00227853767221,0.4486869734346186,393.7667149582836,19.843556005874643,13.90112039169068,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T21:51:04.869159,0.1537917256355285,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9772279858589172,19.09012780762708,4.369225080907033,3.5782015632700035,48.98148148148148,28.95366076818761,0.9780023694038392,12.673049586022556,3.559922693826729,2.8422309160232544,42.875,24.00227853767221,0.5113548040390015,349.0071762575397,18.681733759411618,12.390221071243284,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T21:41:04.532553,0.1598542396895192,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8884275506067315,93.53279898939628,9.671235649563933,8.029139242961442,48.98148148148148,28.95366076818761,0.8912452093318948,62.6546544800579,7.915469315211695,6.507418312943673,42.875,24.00227853767221,0.5253008802060174,339.04642913910527,18.41321343869954,11.99541820768734,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_effort_label,effort_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-20T21:36:04.292709,0.157782393220657,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8486517143034837,126.8774581935104,11.263989443954143,9.38125722917899,48.98148148148148,28.95366076818761,0.8444738497172233,89.60007323556654,9.46573152141801,7.424330942570727,42.875,24.00227853767221,0.5461569366003101,324.1503167353629,18.00417498069164,11.310670158338514,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-20T22:21:06.185407,0.5448203093056677,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9987818576874103,0.7043139273078951,0.8392341314007046,0.5834170016744749,24.12962962962963,24.04551725088952,0.9988730245825248,0.5027542991301713,0.7090516900270186,0.4939024265179743,24.125,21.12130145137841,-0.0343848038782281,698.1935803552435,26.4233529355236,19.26657799804594,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-20T22:11:05.588266,0.5700529869114802,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7458128303062255,146.9676916301495,12.12302320504871,9.470292633442698,24.12962962962963,24.04551725088952,0.7233588076151427,123.41222943406346,11.109105699112934,8.111557055031653,24.125,21.12130145137841,0.3859381843232502,414.48213086593614,20.358834221682148,17.158177464406627,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T22:16:05.737407,0.5350009799003601,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7169783711433411,163.63937861678463,12.79216082672449,9.779330015182495,24.12962962962963,24.04551725088952,0.7277029156684875,121.47427627404257,11.021536928851736,7.581571936607361,24.125,21.12130145137841,0.545852780342102,306.5422503479854,17.508348018816207,13.22263524532318,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-20T22:06:05.436225,0.5918396590332067,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6752077318400647,187.79063462680853,13.703672304415653,11.200182894893818,24.12962962962963,24.04551725088952,0.6196403155003176,169.68202112735054,13.026205169862424,9.19887694320236,24.125,21.12130145137841,0.4439059285357323,375.3548092685141,19.37407570101124,15.435995313612516,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_frustration_label,frustration_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-20T22:01:05.303089,0.5452481275446477,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6359864285677868,210.46787837438663,14.507511101990811,11.714493331039831,24.12962962962963,24.04551725088952,0.6237238855761418,167.86030223305588,12.956091317718316,9.202560022052698,24.125,21.12130145137841,0.4682831334253597,358.9005768618419,18.9446714635499,15.871772834640144,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,all_features,classification,LGBMClassifier,187.0,108.0,40.0,40.0,2026-02-11T11:05:39.287672,0.2683397934591045,LGBMClassifier,0.9907407407407408,0.9910714285714286,0.9907407407407408,0.99073756432247,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",1.0,1.0,1.0,1.0,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.625,0.6423160173160173,0.625,0.6261459129106188,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,complex_features,classification,LGBMClassifier,97.0,108.0,40.0,40.0,2026-02-11T10:55:38.311259,0.3914258291921104,LGBMClassifier,0.7777777777777778,0.7813172043010753,0.7777777777777777,0.7775710766582977,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.825,0.83125,0.825,0.823989898989899,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.55,0.5666666666666667,0.55,0.54,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,distance_features,classification,XGBClassifier,31.0,108.0,40.0,40.0,2026-02-11T11:00:38.837889,0.2537325423309851,XGBClassifier,0.9722222222222222,0.97255291005291,0.972222222222222,0.9722190458039514,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.925,0.9267676767676768,0.925,0.924812030075188,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.7,0.7132936507936508,0.7,0.6984942302279764,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,extended_features,classification,RandomForestClassifier,60.0,108.0,40.0,40.0,2026-02-11T10:50:37.998370,0.4384520010350181,RandomForestClassifier,0.9722222222222222,0.972883597883598,0.972222222222222,0.9723873959723016,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",1.0,1.0,1.0,1.0,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.625,0.6461038961038961,0.625,0.6288515406162465,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_group_task_label,group_task_label,simple_features,classification,ExtraTreesClassifier,19.0,108.0,40.0,40.0,2026-02-11T10:45:37.636112,0.4254592789075548,ExtraTreesClassifier,0.6851851851851852,0.7037685006435006,0.6851851851851851,0.6793351391825229,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.625,0.6186147186147186,0.625,0.616131907308378,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.575,0.593956043956044,0.575,0.5774936061381074,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,all_features,regression,XGBRegressor,186.0,108.0,40.0,40.0,2026-02-20T22:46:09.817100,0.0810095495205942,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9876033107751672,4.90596768603322,2.2149419148215195,1.808633340729608,35.645370370370365,19.89342150830948,0.9915929923649226,2.8517915019404283,1.6887248153386116,1.3648541450500489,34.5,18.417817460274712,0.95229679027661,16.638496733260464,4.079031347423118,3.123564908504486,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-20T22:36:06.716656,0.065148129316834,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9977820206448312,0.8777613802683375,0.9368892038380726,0.7230982577359233,35.645370370370365,19.89342150830948,0.99675364725646,1.1012147922526654,1.0493878178503242,0.798543102741242,34.5,18.417817460274712,0.9451902482267242,19.11720157026065,4.372322217113082,3.496572475433349,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,distance_features,regression,LGBMRegressor,30.0,108.0,40.0,40.0,2026-02-20T22:41:06.835348,0.058389430549108,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9961789267948836,1.512182916767586,1.22970846820195,0.9403239938635656,35.645370370370365,19.89342150830948,0.9958563041562029,1.4056079293495491,1.185583370897867,0.8927446885644468,34.5,18.417817460274712,0.948980710019357,17.79511891544616,4.218426118287027,3.3211266834179027,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-20T22:31:06.467451,0.0708151845089987,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9922727384443988,3.0580500007507023,1.7487281094414595,1.4166566122534197,35.645370370370365,19.89342150830948,0.9882757983194232,3.977036797278517,1.9942509363865213,1.5810075977049558,34.5,18.417817460274712,0.966536443174824,11.671820075577866,3.416404553851588,2.54661966964499,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mean_label,mean_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T22:26:06.321340,0.0371423996173758,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9934232754500786,2.6027270295058176,1.6132969439956857,1.3420228551935265,35.645370370370365,19.89342150830948,0.9920948445839096,2.6815551996244986,1.637545480169787,1.398327114582062,34.5,18.417817460274712,0.9517748241087582,16.820554343828583,4.101286913132094,3.307139031887054,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,all_features,regression,XGBRegressor,186.0,108.0,40.0,40.0,2026-02-20T23:11:18.148934,0.212999939918518,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9966772794723512,3.115534137609328,1.765087572221086,1.3922805079707392,51.75925925925926,30.621001740626504,0.995389759540558,3.406946441116139,1.845791548663104,1.5109129071235656,46.0,27.184554438136374,0.4225517511367798,400.1625933435442,20.00406442060073,14.54746334552765,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-20T23:01:13.822434,0.1779035273282639,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8515683000989192,139.17635222120637,11.797302751951667,9.766122385755365,51.75925925925926,30.621001740626504,0.8372750830901953,120.25371359634568,10.966025423841844,8.542704329462518,46.0,27.184554438136374,0.6544565158697038,239.4562353853558,15.474373505423598,11.35536642760121,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-20T23:06:13.931024,0.1622998714447021,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9385568499565125,57.61188974742643,7.590249649874925,6.179684215121799,51.75925925925926,30.621001740626504,0.9313459992408752,50.73529912825518,7.122871550733958,4.976245665550232,46.0,27.184554438136374,0.5680768489837646,299.3160138203773,17.300751828183,14.175375509262086,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-20T22:56:10.209574,0.1478141704889463,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8674952560461532,124.24250970507862,11.14641241409444,8.941992282979806,51.75925925925926,30.621001740626504,0.819469707777213,133.4118859526396,11.550406311149388,9.358114985689564,46.0,27.184554438136374,0.6801014761392234,221.68467862108287,14.889079173040988,11.35772979461546,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_mental_label,mental_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-20T22:51:09.976388,0.1417980194091797,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8992705941200256,94.44849125764614,9.718461362666734,8.159694459703234,51.75925925925926,30.621001740626504,0.882409930229187,86.8990623870565,9.321966658761257,7.489233374595642,46.0,27.184554438136374,0.6076064705848694,271.9225833305395,16.49007529790387,12.452408576011658,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T00:43:34.400759,0.5720462839914776,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.831663282130845,100.49510109056416,10.024724489509133,8.33332094711245,29.953703703703702,24.433350105822367,0.8981707035127799,72.55178266438664,8.517733422946895,7.030389448815609,32.625,26.69240294540752,0.36579881334337,343.64785862601985,18.537741465076586,13.07158964732538,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T00:33:33.951959,0.5631489753723145,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.6629157066345215,201.23548124356628,14.185749230955912,11.542547526182952,29.953703703703702,24.433350105822367,0.7796233892440796,157.01491899231434,12.530559404604183,10.440303564071655,32.625,26.69240294540752,0.2538679838180542,404.2986486383069,20.107179032333374,14.734852623939512,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,distance_features,regression,RandomForestRegressor,30.0,108.0,40.0,40.0,2026-02-21T00:38:34.148949,0.6053275770697337,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.5464405842913549,270.76979941860554,16.45508430299297,12.97320923619099,29.953703703703702,24.433350105822367,0.5333838074324659,332.4567463263592,18.233396456128496,15.311884291242851,32.625,26.69240294540752,0.3128029016386791,372.3641902198789,19.29674040401329,14.047696926714304,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,extended_features,regression,RandomForestRegressor,59.0,108.0,40.0,40.0,2026-02-21T00:28:33.725516,0.56435429602622,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.5611646170557836,261.9797197505905,16.185787585118945,13.09117393041963,29.953703703703702,24.433350105822367,0.669379437306618,235.56198497274264,15.348028699893112,12.486907775753076,32.625,26.69240294540752,0.3157356575195966,370.7750489512173,19.25551996055202,13.56902081967733,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_performance_label,performance_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T00:23:33.500336,0.5643302202224731,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7398673295974731,155.29623701858392,12.461791083892551,9.972702220634178,29.953703703703702,24.433350105822367,0.8260729908943176,123.9202835201967,11.131948774594532,9.380861186981202,32.625,26.69240294540752,0.2116053700447082,427.1989716292695,20.668792215058662,15.63014359474182,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T11:32:43.295612,0.7120860722124058,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9851069523692396,7.887799300736127,2.808522618875648,2.184011796652298,20.0,23.013683530231088,0.9862785835034314,7.322948466512415,2.706094689125348,2.0337501122566684,22.75,23.101677428273472,0.4551218900703705,240.41895228598136,15.505449115907007,11.786909100284808,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T11:22:42.851947,0.7356837941206334,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.808316951163004,101.52102216181645,10.075764098162304,7.301547212358777,20.0,23.013683530231088,0.837122767495704,86.92554302213648,9.323386885790832,7.135584110528979,22.75,23.101677428273472,0.1936207947597705,355.8022246371694,18.86272049936513,14.711318541825184,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T11:27:43.052965,0.6767702224956421,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5275712479702964,250.21226496388005,15.81809928417065,11.679688528584377,20.0,23.013683530231088,0.6179949368474001,203.87132714125315,14.278351695530306,10.465550864847764,22.75,23.101677428273472,0.2047137086110759,350.9076497270598,18.73252918660637,13.96036553382991,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,extended_features,regression,XGBRegressor,59.0,108.0,40.0,40.0,2026-02-21T11:17:42.608141,0.7570765614509583,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.2722945809364319,385.4143481055319,19.63197259843065,14.502570240585891,20.0,23.013683530231088,0.3404079079627991,352.0160379780094,18.762090447975392,15.25197777748108,22.75,23.101677428273472,-0.6855566501617432,743.7255531050448,27.271332074268848,21.67328687906265,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_physical_label,physical_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T00:48:34.541460,0.7106660008430481,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8820297122001648,62.48055011149631,7.904463935745188,5.385430331583376,20.0,23.013683530231088,0.9197852611541748,42.809594239293446,6.542904113564056,5.171665108203888,22.75,23.101677428273472,0.046057105064392,420.9124071372422,20.51614991018642,15.19031970500946,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T11:57:44.397725,0.5630851827288744,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6359635267410666,322.316938389502,17.95318741587415,14.790478281583912,39.02777777777778,29.755627644921383,0.6242868558327721,194.42568158866283,13.9436609822766,11.276196781336347,38.625,22.74828290223242,0.5309148525110762,342.98919627955746,18.519967502119368,15.126676784637016,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-21T11:47:43.865575,0.5049643084192409,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7469159116155926,224.0799879003842,14.969301516783748,12.446417162276989,39.02777777777778,29.755627644921383,0.6739740051517031,168.71335817782412,12.988970635805751,10.33542334749882,38.625,22.74828290223242,0.5175837149137502,352.7367574515023,18.781287427956112,14.439615499261446,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T11:52:44.077885,0.5796870509165042,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8169688923810039,162.05526251165702,12.730092792735528,10.698723935059268,39.02777777777778,29.755627644921383,0.7024754304629242,153.9643159140377,12.408235809898104,9.74511244328358,38.625,22.74828290223242,0.6028531887722737,290.3887840345731,17.040797634928158,14.455335341215289,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T11:42:43.611464,0.4626431840552822,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9277591179095294,63.96188748207008,7.99761761289386,6.6829065775222585,39.02777777777778,29.755627644921383,0.9124545653550858,45.30339453132677,6.7307796377037015,4.943846478463678,38.625,22.74828290223242,0.3619957431223399,466.5007375757341,21.59862814105873,16.619956509551606,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.02_temporal_label,temporal_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T11:37:43.497323,0.4584267941081605,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7189401601794414,248.8496448287773,15.774968932735726,12.839758202824468,39.02777777777778,29.755627644921383,0.6482470099237532,182.0266762239878,13.491726213646192,10.568016082868288,38.625,22.74828290223242,0.5260339973377683,346.55801657159054,18.61606877328268,15.094781370544633,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.03_effort_label,effort_label,all_features,regression,XGBRegressor,186.0,108.0,40.0,40.0,2026-02-21T12:22:48.300877,0.2046132683753967,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9781895875930786,18.283972802585435,4.275976239712452,3.515319894861292,48.98148148148148,28.95366076818761,0.9797170162200928,11.685212870287938,3.418364063450225,2.728917324542999,42.875,24.00227853767221,0.5620884895324707,312.77150292833284,17.685347124903508,12.411332821846008,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.03_effort_label,effort_label,complex_features,regression,RandomForestRegressor,96.0,108.0,40.0,40.0,2026-02-21T12:12:47.746965,0.1995572033482717,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.857211016186087,119.70207155614052,10.940844188459158,8.972769393880013,48.98148148148148,28.95366076818761,0.8590150067267238,81.22277635904634,9.012367966247623,6.987273169933881,42.875,24.00227853767221,0.5589118805510813,315.0402973145238,17.74937456122113,11.644702404966036,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.03_effort_label,effort_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T12:17:47.917530,0.1558239459991455,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9720462560653688,23.434019181218545,4.8408696719926825,3.8052414523230658,48.98148148148148,28.95366076818761,0.9681054353713988,18.37476409029794,4.286579532715792,3.1010971665382385,42.875,24.00227853767221,0.5182207822799683,344.10326331538,18.55002057452713,11.655267119407654,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.03_effort_label,effort_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T12:07:44.768758,0.165429071024566,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8694479322100707,109.44368776206343,10.461533719396188,8.599836519889305,48.98148148148148,28.95366076818761,0.8983403589786151,58.56707225155441,7.652912664571209,6.421518840837862,42.875,24.00227853767221,0.553943164774351,318.58912492186937,17.849065099378997,11.319297429750538,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.03_effort_label,effort_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T12:02:44.525514,0.1500551104545593,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8927043080329895,89.94752215243322,9.484066751791302,7.745967379322758,48.98148148148148,28.95366076818761,0.8819847106933594,67.98969997172635,8.245586696635137,6.189774084091186,42.875,24.00227853767221,0.5164978504180908,345.3338570835258,18.58316057842492,12.301795196533202,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.03_frustration_label,frustration_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T12:47:49.304971,0.6527610930162654,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6950083735593098,176.34216297586372,13.279388652188162,10.527067350375912,24.12962962962963,24.04551725088952,0.742830011577083,114.72594280410476,10.711019690211794,7.827802845425005,24.125,21.12130145137841,0.2415855497432534,511.9179036975187,22.62560283611287,18.69395834447872,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.03_frustration_label,frustration_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-21T12:37:48.913172,0.587053253520277,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6007739734176574,230.82725865419872,15.19300031771864,12.274154865785476,24.12962962962963,24.04551725088952,0.5438425804178801,203.49610135139227,14.26520596946964,10.184548670573736,24.125,21.12130145137841,0.5118029759251153,329.52536317204607,18.1528334750266,14.912297532644988,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.03_frustration_label,frustration_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T12:42:49.036656,0.5145506858825684,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7276504039764404,157.46893417632748,12.548662644932625,9.253205025637593,24.12962962962963,24.04551725088952,0.8302954435348511,75.7067862254114,8.700964672116042,7.08378381729126,24.125,21.12130145137841,0.4060376286506653,400.9152797485745,20.022868919027925,14.612930488586423,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.03_frustration_label,frustration_label,extended_features,regression,XGBRegressor,59.0,108.0,40.0,40.0,2026-02-21T12:32:48.651547,0.6201722621917725,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8589532375335693,81.55138310506479,9.030580441204474,6.797710182490172,24.12962962962963,24.04551725088952,0.821263313293457,79.73610573396414,8.929507586309793,6.3008955955505375,24.125,21.12130145137841,0.3670748472213745,427.21458407429566,20.669169893208,17.124277877807618,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.03_frustration_label,frustration_label,simple_features,regression,RandomForestRegressor,18.0,108.0,40.0,40.0,2026-02-21T12:27:48.494367,0.542170991775984,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.7742966331122942,130.49872998940452,11.423604071806958,8.628201903668524,24.12962962962963,24.04551725088952,0.7490056676178198,111.97092474755668,10.5816314785366,7.827492967331762,24.125,21.12130145137841,0.5643635668176806,294.04778557879706,17.147821598640366,14.050312253996992,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.03_group_task_label,group_task_label,all_features,classification,ExtraTreesClassifier,187.0,108.0,40.0,40.0,2026-02-11T14:32:00.852127,0.1769668319305123,ExtraTreesClassifier,0.8333333333333334,0.8321886446886447,0.8333333333333334,0.8326186392224129,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.85,0.8568181818181818,0.85,0.8523182957393484,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.825,0.8553391053391054,0.8250000000000001,0.8206453634085213,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.03_group_task_label,group_task_label,complex_features,classification,RandomForestClassifier,97.0,108.0,40.0,40.0,2026-02-11T14:21:57.959133,0.4837174635936246,RandomForestClassifier,0.7407407407407407,0.7404704393834828,0.7407407407407407,0.7389083820662768,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.675,0.7261029411764706,0.6749999999999999,0.6694444444444444,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.575,0.6770833333333334,0.575,0.5420274170274171,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.03_group_task_label,group_task_label,distance_features,classification,CatBoostClassifier,31.0,108.0,40.0,40.0,2026-02-11T14:27:00.226349,0.1804681151095168,CatBoostClassifier,0.9907407407407408,0.9910714285714286,0.9907407407407408,0.99073756432247,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",1.0,1.0,1.0,1.0,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.9,0.906818181818182,0.9,0.8996031746031745,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.03_group_task_label,group_task_label,extended_features,classification,LGBMClassifier,60.0,108.0,40.0,40.0,2026-02-11T14:16:57.513774,0.4733635676492819,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.975,0.9772727272727272,0.975,0.974937343358396,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.625,0.625,0.625,0.625,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.03_group_task_label,group_task_label,simple_features,classification,LGBMClassifier,19.0,108.0,40.0,40.0,2026-02-11T14:11:52.917885,0.4066336704173194,LGBMClassifier,0.9351851851851852,0.9391941391941392,0.9351851851851852,0.9355769860530654,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.925,0.9267676767676768,0.925,0.924812030075188,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.65,0.675,0.6499999999999999,0.6541666666666667,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.03_mean_label,mean_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T13:12:50.327465,0.0822335938026159,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9923154657843822,3.041140732036512,1.7438866740807764,1.419256050066757,35.645370370370365,19.89342150830948,0.9941346867987328,1.9896080828810656,1.4105346797867344,1.120577078263863,34.5,18.417817460274712,0.9565286492172282,15.162458295440755,3.893900139377069,3.1837836973418523,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.03_mean_label,mean_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T13:02:49.888194,0.0617340547369477,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.992279792945593,3.05525819446498,1.7479296880781503,1.458503031730651,35.645370370370365,19.89342150830948,0.9945537236312392,1.847464084705629,1.3592145101880089,1.0695807361602785,34.5,18.417817460274712,0.9468764718341222,18.52906030794465,4.304539500102729,3.3097262668609617,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.03_mean_label,mean_label,distance_features,regression,LGBMRegressor,30.0,108.0,40.0,40.0,2026-02-21T13:07:50.015340,0.0567939001031959,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9978162154712,0.8642288386233601,0.9296390905202728,0.7455711110346827,35.645370370370365,19.89342150830948,0.9978543802584104,0.7278285462630858,0.8531286809521093,0.6357291735628221,34.5,18.417817460274712,0.9408916259750796,20.61652651519069,4.540542535335474,3.58567797491027,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.03_mean_label,mean_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T12:57:49.651939,0.071931661218802,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9943102594401544,2.251704694879256,1.500568124038111,1.2405004271220077,35.645370370370365,19.89342150830948,0.993436357936188,2.226492406318001,1.4921435608941926,1.1903293933437349,34.5,18.417817460274712,0.9678087489731796,11.22805002336547,3.3508282593062675,2.6193468329159453,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.03_mean_label,mean_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T12:52:49.472206,0.0392169276377711,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9980907707385432,0.7555740804708407,0.8692376432661213,0.683604735798306,35.645370370370365,19.89342150830948,0.9986868937046492,0.4454266650837272,0.6674029255882291,0.5211664104461672,34.5,18.417817460274712,0.9656057307165726,11.996445112048466,3.4635884732526274,2.669306201934814,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.03_mental_label,mental_label,all_features,regression,RandomForestRegressor,186.0,108.0,40.0,40.0,2026-02-21T16:16:42.652738,0.1880590691431081,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.8933382085689361,100.01097516667672,10.000548743277877,7.86688138602941,51.75925925925926,30.621001740626504,0.8834133566103668,86.15752946493893,9.282108029156896,7.293830061124763,46.0,27.184554438136374,0.6049796892473362,273.7429031592404,16.54517764060696,12.916996841117989,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.03_mental_label,mental_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T16:06:42.137869,0.1696586608886718,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9189701676368712,75.97727882563116,8.716494640945474,7.0067684032298905,51.75925925925926,30.621001740626504,0.9147549271583556,62.99611336284674,7.937009094290288,6.383474540710449,46.0,27.184554438136374,0.5912752151489258,283.23987670041487,16.829731925981914,12.755712080001832,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.03_mental_label,mental_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T16:11:42.338090,0.1325536206175849,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.9569188016303816,40.39490245276106,6.35569842367942,5.1219089863682585,51.75925925925926,30.621001740626504,0.9571263016417696,31.68366308673219,5.628824307680262,4.402838128166837,46.0,27.184554438136374,0.5876026469871324,285.78492192927644,16.905174412861776,12.741626816433072,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.03_mental_label,mental_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T16:01:41.878139,0.1726348919070913,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8657377248246894,125.89045138115742,11.220091415900203,9.110743660508296,51.75925925925926,30.621001740626504,0.8460765403226946,113.74943670152864,10.665338095978424,8.321817912371685,46.0,27.184554438136374,0.6614851613111024,234.5854939170516,15.31618405207549,11.45694978336417,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.03_mental_label,mental_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T15:56:41.636075,0.1454618265917985,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8540218544680296,136.8757874005059,11.699392608187226,9.667652873829526,51.75925925925926,30.621001740626504,0.8178650191156118,134.5977508735629,11.601627078714555,9.54428177051924,46.0,27.184554438136374,0.652369977633706,240.90217378074232,15.521023606088043,11.339328370206536,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.03_performance_label,performance_label,all_features,regression,RandomForestRegressor,186.0,108.0,40.0,40.0,2026-02-21T16:41:45.114308,0.5973574051064671,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.7752105967395175,134.19671056143994,11.584330388997024,9.311751236947297,29.953703703703702,24.433350105822367,0.8496179556019291,107.1448569141818,10.351079987816815,8.2073103636579,32.625,26.69240294540752,0.3153616970135829,370.9776829572805,19.260780953982124,14.540135869822493,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.03_performance_label,performance_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T16:31:43.227125,0.5459130502503746,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9790490752178312,12.507463199807631,3.53658920427686,2.778305076794982,29.953703703703702,24.433350105822367,0.9888500309171444,7.9441787532676305,2.8185419552079813,2.247686277152507,32.625,26.69240294540752,0.2118474075645828,427.0678711416848,20.66562051189572,15.501239802785232,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.03_performance_label,performance_label,distance_features,regression,RandomForestRegressor,30.0,108.0,40.0,40.0,2026-02-21T16:36:43.417621,0.6086759686807901,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.5210076057936043,285.9529975795216,16.910144812494114,13.626735335776845,29.953703703703702,24.433350105822367,0.5524949129006238,318.84038229131954,17.856102102399603,14.713758008430997,32.625,26.69240294540752,0.2520274550180665,405.29593574106985,20.13196303744545,14.047166605255512,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.03_performance_label,performance_label,extended_features,regression,RandomForestRegressor,59.0,108.0,40.0,40.0,2026-02-21T16:26:43.078817,0.5875883821078364,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.7635837059426087,141.13783179033615,11.880144434742204,9.479051165893082,29.953703703703702,24.433350105822367,0.8160986031669657,131.02687178421138,11.446696981409588,9.005128749934855,32.625,26.69240294540752,0.3506995506781183,351.829535656774,18.75711959914885,14.026578183808272,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.03_performance_label,performance_label,simple_features,regression,RandomForestRegressor,18.0,108.0,40.0,40.0,2026-02-21T16:21:42.885379,0.6134335746114632,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.6383616966894048,215.893943457226,14.693329896835026,12.078835223914757,29.953703703703702,24.433350105822367,0.7346889059212318,189.0300090452773,13.74881845997238,11.799885010784111,32.625,26.69240294540752,0.4532277065015362,296.2736932223942,17.21260274398948,12.793379150271898,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.03_physical_label,physical_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T17:06:46.092879,0.7480535014844669,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.8331918957229236,88.34651448748858,9.399282658133467,7.256513859942735,20.0,23.013683530231088,0.8115454894545691,100.57581659671465,10.028749503139196,7.000705764528398,22.75,23.101677428273472,0.3131541317187735,303.06000741239933,17.408618768081496,13.15899113885384,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.03_physical_label,physical_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T16:56:45.586795,0.7463306314734509,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9938933449030092,3.2342654772950787,1.7984063715676384,1.421368120958726,20.0,23.013683530231088,0.9944035156775216,2.98677372685262,1.7282284938203685,1.3675439391055026,22.75,23.101677428273472,-0.2163763164885166,536.7070437706128,23.16693859297367,17.98033789851317,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.03_physical_label,physical_label,distance_features,regression,LGBMRegressor,30.0,108.0,40.0,40.0,2026-02-21T17:01:45.737505,0.6802682747609663,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9999987700121622,0.0006514380030097,0.025523283546789,0.014345671927399,20.0,23.013683530231088,0.999999658848163,0.0001820684710171,0.0134932750293288,0.0102941243669039,22.75,23.101677428273472,-0.0895915692191666,480.7652550496882,21.92635982213391,16.131269843004983,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.03_physical_label,physical_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T16:51:45.403341,0.7938062165933302,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.5687220669565136,228.417571945254,15.113489734182968,10.950130894526758,20.0,23.013683530231088,0.5939329977262171,216.7128832759895,14.7211712603308,10.659455268472907,22.75,23.101677428273472,0.2691360254715327,322.48230901108417,17.95779243145115,13.692373234693449,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.03_physical_label,physical_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T16:46:45.236201,0.670488178730011,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9172863960266112,43.80757926591296,6.618729429876474,3.711987765850844,20.0,23.013683530231088,0.939050793647766,32.527825871283554,5.703317093699381,3.7762399077415454,22.75,23.101677428273472,0.0567154288291931,416.2095330752235,20.401214009838323,17.51004760712385,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.03_temporal_label,temporal_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T17:31:47.211390,0.5775403668939046,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8643121501949518,120.13766624617875,10.960732924680665,9.230645801910123,39.02777777777778,29.755627644921383,0.7327340084607874,138.30597459042468,11.760356057127892,8.910358253103146,38.625,22.74828290223242,0.6439580815562669,260.3334002420771,16.134850487131175,13.412684179415717,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.03_temporal_label,temporal_label,complex_features,regression,ExtraTreesRegressor,96.0,108.0,40.0,40.0,2026-02-21T17:21:46.722642,0.5062335380454276,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7938802507045579,182.49788527992848,13.509177816578198,11.28690491766498,39.02777777777778,29.755627644921383,0.7303921699802995,139.51783941285092,11.81176698944112,9.43395344910469,38.625,22.74828290223242,0.4268408900526683,419.0867767046146,20.471609040439752,16.22589755731023,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.03_temporal_label,temporal_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T17:26:46.889819,0.5472560648767061,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6378632337978307,320.6349427452424,17.90628221449786,14.428336268398278,39.02777777777778,29.755627644921383,0.5150559679764544,250.9509593216845,15.84143173206527,12.764559423115523,38.625,22.74828290223242,0.5516074110835008,327.8590561083828,18.10687869590954,14.780741788946376,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.03_temporal_label,temporal_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T17:16:46.501514,0.5129894278381579,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7179721387988727,249.70672841957057,15.802111517755169,13.484234138951464,39.02777777777778,29.755627644921383,0.7153278597358455,147.31338458450833,12.13727253482051,9.870312225009968,38.625,22.74828290223242,0.4698573074089305,387.63371003893263,19.688415630490248,16.00784401644541,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.03_temporal_label,temporal_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T17:11:46.293340,0.4896839544550078,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6796339723644107,283.6512404021201,16.8419488302904,13.542487535792132,39.02777777777778,29.755627644921383,0.6114152726902151,201.0865247464495,14.180498042962014,10.849131704793889,38.625,22.74828290223242,0.51342648777318,355.7764699713479,18.86203780007208,15.634814484729336,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.04_effort_label,effort_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T17:56:48.459996,0.1797917873787703,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8481562074047324,127.29284879764973,11.282413252387528,9.310388960392702,48.98148148148148,28.95366076818761,0.8755716723689264,71.68432606383305,8.466659675682793,7.068697932320779,42.875,24.00227853767221,0.5390235697693229,329.2452125355388,18.14511539052697,12.096432459136183,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.04_effort_label,effort_label,complex_features,regression,RandomForestRegressor,96.0,108.0,40.0,40.0,2026-02-21T17:46:47.897003,0.1960816527356325,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.8946808106432785,88.29060060433457,9.39630781766618,7.328270604917191,48.98148148148148,28.95366076818761,0.8825468089542253,67.66588448513687,8.225927575972017,6.340141634694822,42.875,24.00227853767221,0.6243110803726019,268.3299407045,16.380779612231525,10.87940813849218,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.04_effort_label,effort_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T17:51:48.015580,0.1593183279037475,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9142932295799256,71.84924080695127,8.47639314844181,6.764562873928635,48.98148148148148,28.95366076818761,0.9275304675102234,41.75036862952534,6.461452517006168,5.346322679519654,42.875,24.00227853767221,0.5498361587524414,321.52252444150446,17.931049172915245,11.689376139640808,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.04_effort_label,effort_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T17:41:47.672831,0.1677585075101041,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.892260896691063,90.31924949117938,9.503644011176943,7.991751567598526,48.98148148148148,28.95366076818761,0.9008942978191052,57.09572414237141,7.556171262112275,6.362162393524249,42.875,24.00227853767221,0.5832990868468235,297.6221162678883,17.25172792122251,11.016032530521372,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.04_effort_label,effort_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T17:36:47.331170,0.1572077274322509,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9044755697250366,80.07953870578575,8.948717154195105,7.411792401914243,48.98148148148148,28.95366076818761,0.9061465859413148,54.06984155141713,7.353219808452426,6.030008459091187,42.875,24.00227853767221,0.5513575673103333,320.43583096602697,17.9007215208222,11.564897203445437,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.04_frustration_label,frustration_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T18:21:49.389286,0.5399685920289576,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.906217879571939,54.223593472862746,7.363667121269317,5.731426988107673,24.12962962962963,24.04551725088952,0.888956612702543,49.5374961051515,7.038287867454094,4.954954884242072,24.125,21.12130145137841,0.393613323815176,409.3015316329408,20.23120193248392,16.012651190332736,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.04_frustration_label,frustration_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T18:11:48.957767,0.5144034624099731,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.713129460811615,165.86475301638112,12.878849056355197,9.534344330981924,24.12962962962963,24.04551725088952,0.7088308334350586,129.8933043153203,11.39707437526492,8.438460683822631,24.125,21.12130145137841,0.4877033233642578,345.7922371279395,18.595489698524734,15.59125319123268,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.04_frustration_label,frustration_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T18:16:49.115601,0.5655543804168701,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8081328868865967,110.93503293810338,10.532570101266993,7.115114803667422,24.12962962962963,24.04551725088952,0.7993722558021545,89.50192110639435,9.460545497295298,6.699651449918747,24.125,21.12130145137841,0.3668622374534607,427.3581161169535,20.67264173048412,15.690071076154709,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.04_frustration_label,frustration_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T18:06:48.720688,0.5834589944997456,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7222430729153597,160.5954165864931,12.672624692086998,9.484109508237506,24.12962962962963,24.04551725088952,0.6720488247643192,146.30209381490505,12.095540244854922,9.020488102649772,24.125,21.12130145137841,0.0762643025320294,623.5071624206072,24.97012539857593,19.409413277519214,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.04_frustration_label,frustration_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T18:01:48.575591,0.4887195825576782,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9402378797531128,34.55365196810647,5.878235446807696,4.170848142217706,24.12962962962963,24.04551725088952,0.9515955448150636,21.593691607668013,4.646901290932272,3.4727888464927674,24.125,21.12130145137841,0.2558757662773132,502.27220794108814,22.411430296638542,18.27135909795761,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.04_group_task_label,group_task_label,all_features,classification,ExtraTreesClassifier,187.0,108.0,40.0,40.0,2026-02-11T17:59:19.237430,0.2879310344827586,ExtraTreesClassifier,0.7685185185185185,0.771992190234682,0.7685185185185185,0.7670571481683109,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.8,0.8041666666666667,0.8,0.7992822966507178,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.7,0.7130681818181819,0.7,0.7019062808536493,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.04_group_task_label,group_task_label,complex_features,classification,RandomForestClassifier,97.0,108.0,40.0,40.0,2026-02-11T17:49:18.336460,0.4321114369501466,RandomForestClassifier,0.7037037037037037,0.7180799122631262,0.7037037037037037,0.7004313972046234,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.65,0.6687062937062936,0.6499999999999999,0.6521739130434783,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.475,0.4866300366300366,0.475,0.4569309462915601,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.04_group_task_label,group_task_label,distance_features,classification,XGBClassifier,31.0,108.0,40.0,40.0,2026-02-11T17:54:18.596871,0.2577295068970984,XGBClassifier,0.9444444444444444,0.9455172413793104,0.9444444444444444,0.9443681318681318,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.9,0.906818181818182,0.9,0.8996031746031745,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.7,0.6937500000000001,0.7000000000000001,0.6934343434343434,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.04_group_task_label,group_task_label,extended_features,classification,RandomForestClassifier,60.0,108.0,40.0,40.0,2026-02-11T17:44:17.666788,0.3810344827586207,RandomForestClassifier,0.7407407407407407,0.7444814524555904,0.7407407407407407,0.7378401360544218,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.575,0.5727813852813852,0.575,0.5684046345811051,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.525,0.5479166666666666,0.525,0.5177350427350428,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.04_group_task_label,group_task_label,simple_features,classification,LGBMClassifier,19.0,108.0,40.0,40.0,2026-02-11T17:39:17.319832,0.3663521927571882,LGBMClassifier,0.8055555555555556,0.8110671936758893,0.8055555555555555,0.802298603651987,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.7,0.6979166666666666,0.7,0.6957070707070707,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.575,0.5850694444444444,0.575,0.5572874493927126,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.04_mean_label,mean_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T18:46:52.643802,0.0809113170110655,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9826644014515804,6.860532256162754,2.619261776944556,2.0991377895016616,35.645370370370365,19.89342150830948,0.9816824816673352,6.213595298733241,2.4927084263373525,1.9660034161527435,34.5,18.417817460274712,0.9554608316699632,15.534904486691016,3.941434318454516,2.87104526746652,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.04_mean_label,mean_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T18:36:51.796913,0.0752538837954993,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9955272835887172,1.770069555231614,1.3304396097649882,1.0558877151721184,35.645370370370365,19.89342150830948,0.9954036306099974,1.5591620389991303,1.2486641017499984,0.9578412580347994,34.5,18.417817460274712,0.9464599140157364,18.67435233212116,4.321383150349105,3.474355969637184,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.04_mean_label,mean_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T18:41:51.938413,0.0560165702902621,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9937398021774592,2.4774621407817787,1.5739955974467588,1.2481408534226592,35.645370370370365,19.89342150830948,0.9936679909344504,2.1479187871794894,1.4655779703514549,1.115798697471619,34.5,18.417817460274712,0.9439641740126128,19.544846416897144,4.42095537377354,3.311213021278381,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.04_mean_label,mean_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T18:31:49.696825,0.0821112740394878,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.995520326481935,1.7728228178521388,1.331473926839027,1.0868423423620155,35.645370370370365,19.89342150830948,0.9929065016864284,2.406228123936477,1.5512021544390908,1.29702138283263,34.5,18.417817460274712,0.9302101775097098,24.342130021287733,4.933774419375873,4.00701371543601,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.04_mean_label,mean_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T18:26:49.526446,0.0410989690307747,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.992743342061931,2.8718094571127644,1.694641394842214,1.28851138220893,35.645370370370365,19.89342150830948,0.9931007749366396,2.3403275290928134,1.5298129065649868,1.196081440448761,34.5,18.417817460274712,0.964560346405937,12.36106677038907,3.5158308790937416,2.6612652540206905,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.04_mental_label,mental_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T19:11:53.896595,0.1846629967960587,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.9005626960584856,93.2369651935152,9.655929017630315,7.822252641802789,51.75925925925926,30.621001740626504,0.894127032535325,78.24012295639484,8.84534470534613,6.988441767202756,46.0,27.184554438136374,0.5947130648416635,280.8575134563653,16.758804058057525,12.343347679073691,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.04_mental_label,mental_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T19:01:53.304502,0.1577833294868469,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.976908802986145,21.65139056712085,4.653105475606678,3.625931600729624,51.75925925925926,30.621001740626504,0.9800128936767578,14.770486404766938,3.843239051212784,3.056142210960388,46.0,27.184554438136374,0.530423641204834,325.4090434331206,18.03909763356029,14.155217289924622,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.04_mental_label,mental_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T19:06:53.575323,0.1462981280291455,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.9085171783194204,85.77847872719437,9.261667167804854,7.492530860421208,51.75925925925926,30.621001740626504,0.9082806499768374,67.78059966711717,8.232897404141337,6.21280434546442,46.0,27.184554438136374,0.5894959370348574,284.47290150886,16.86632448131068,12.744306189968142,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.04_mental_label,mental_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T18:56:53.089037,0.1619051591544253,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8813472118971251,111.25428220547946,10.54771454891909,8.686386907159688,51.75925925925926,30.621001740626504,0.8646165471647096,100.04837164527962,10.002418289857689,7.766427971764196,46.0,27.184554438136374,0.6199000249471528,263.4033436495129,16.229705593433078,11.919091860657131,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.04_mental_label,mental_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T18:51:52.862266,0.1555088707557996,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8522251405024113,138.56046861002042,11.771171080653804,9.70646844525244,51.75925925925926,30.621001740626504,0.8253232979126743,129.0860828425337,11.361605645441744,9.378796084534564,46.0,27.184554438136374,0.6448863295874534,246.08822494479463,15.68719939775085,11.73819117886134,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.04_performance_label,performance_label,all_features,regression,RandomForestRegressor,186.0,108.0,40.0,40.0,2026-02-21T19:36:55.304368,0.5900683387646632,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.7062429827054375,175.36958972923475,13.242718366303604,10.584252450753658,29.953703703703702,24.433350105822367,0.7812423162934629,155.86143155209976,12.484447586981965,10.136026948376449,32.625,26.69240294540752,0.5117186740332915,264.5798141124919,16.265909569172326,11.618077037617152,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.04_performance_label,performance_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T19:26:54.614101,0.5428290422420945,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9524390649850084,28.393335885332235,5.328539751689222,4.28399511742002,29.953703703703702,24.433350105822367,0.9727945839472228,19.383433852977937,4.402662132503235,3.482007410045534,32.625,26.69240294540752,0.2733187483687374,393.7590488331337,19.84336284083758,14.849534616050343,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.04_performance_label,performance_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T19:31:54.782456,0.5972164273262024,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7915055155754089,124.4688170858134,11.156559374906468,9.363492530805091,29.953703703703702,24.433350105822367,0.8416650295257568,112.81121486361243,10.621262395008063,8.484697702527047,32.625,26.69240294540752,0.1526262164115905,459.157399246213,21.42795835459396,16.915027582645415,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.04_performance_label,performance_label,extended_features,regression,RandomForestRegressor,59.0,108.0,40.0,40.0,2026-02-21T19:21:54.286364,0.5673089667247403,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.5472421549323623,270.2912708859186,16.440537426918823,13.721141509806646,29.953703703703702,24.433350105822367,0.6588069121546662,243.09474394780275,15.591495885507674,13.081212643603797,32.625,26.69240294540752,0.2960974689867144,381.416185515777,19.529879301106217,14.05373224988324,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.04_performance_label,performance_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T19:16:54.020874,0.5723457932472229,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.6108335256576538,232.32793209501045,15.242307308770888,11.424003824039742,29.953703703703702,24.433350105822367,0.4468092322349548,394.1397773508268,19.852953869659466,15.300108313560486,32.625,26.69240294540752,0.0091546773910522,536.8988302322786,23.17107745082819,19.58851993083954,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.04_physical_label,physical_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T20:01:56.306759,0.7983949255562033,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9479421855193992,27.571361002688583,5.250843837202606,3.1250256505740137,20.0,23.013683530231088,0.9407593401454526,31.615999656123773,5.622810654479108,3.1688807816390026,22.75,23.101677428273472,0.4768279096921918,230.8415102844093,15.193469330090783,11.655871410655523,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.04_physical_label,physical_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T19:51:55.778232,0.741210374706464,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6451426712120821,187.94295561730465,13.709228848381832,10.10603390042026,20.0,23.013683530231088,0.6956130337202119,162.4475190664444,12.745490146182862,9.942051803102256,22.75,23.101677428273472,0.2251804407157422,341.8770239785649,18.489916819135907,13.882329582407127,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.04_physical_label,physical_label,distance_features,regression,RandomForestRegressor,30.0,108.0,40.0,40.0,2026-02-21T19:56:56.013106,0.729859110192482,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.6624946644844305,178.75282584713497,13.369847637394187,9.723154450436985,20.0,23.013683530231088,0.6606034613769294,181.1316902064,13.458517385150564,10.164688422833214,22.75,23.101677428273472,-0.3248691337939033,584.5778042063444,24.178043845736244,17.791118311720865,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.04_physical_label,physical_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T19:46:55.574809,0.7870188420410175,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.8232710621086661,93.60088192022504,9.674754876492996,7.435463915646004,20.0,23.013683530231088,0.8039315323842093,104.6392903107023,10.22933479316726,8.369182600318013,22.75,23.101677428273472,-0.4580528671393833,643.3430455492038,25.364207962189628,17.704546005383726,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.04_physical_label,physical_label,simple_features,regression,LGBMRegressor,18.0,108.0,40.0,40.0,2026-02-21T19:41:55.391558,0.609972327426037,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.973202240365394,14.192887510180212,3.7673448886689695,2.949062750803278,20.0,23.013683530231088,0.9702217476234248,15.892281065223496,3.986512393712516,3.045274797497498,22.75,23.101677428273472,-0.2202392237364365,538.4114912358317,23.20369563745896,17.259518065671895,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.04_temporal_label,temporal_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T20:26:57.639493,0.5957368365764658,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5998579132325763,354.2847538684023,18.82245344976053,15.281035091268874,39.02777777777778,29.755627644921383,0.4804307014591275,268.86899372461187,16.397225183689216,12.959903213415904,38.625,22.74828290223242,0.5228651201249865,348.87505997861143,18.67819744993107,15.667139636432712,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.04_temporal_label,temporal_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T20:16:57.099881,0.5544729235347547,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9998830658458152,0.1035331933435345,0.321765742961451,0.2412509683207013,39.02777777777778,29.755627644921383,0.9999229888303368,0.0398520770012204,0.1996298499754494,0.1411997858808605,38.625,22.74828290223242,0.5475143096503539,330.8518807125319,18.1893342569906,14.71182462602411,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.04_temporal_label,temporal_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T20:21:57.345945,0.5784682154860814,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7537816517680083,218.001079581408,14.764859619427744,12.397613169060277,39.02777777777778,29.755627644921383,0.6488221516219437,181.7290493817632,13.480691724899106,10.65885228202402,38.625,22.74828290223242,0.4749100428536827,383.9392130409228,19.5943668701217,16.525950562040883,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.04_temporal_label,temporal_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T20:11:56.851176,0.5569275311321868,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8405062179797013,141.21537617572707,11.883407599494644,10.221591863987806,39.02777777777778,29.755627644921383,0.786607517115078,110.42727563540204,10.508438306209063,8.494511890034387,38.625,22.74828290223242,0.4138635909043048,428.5756156256586,20.7020679069908,17.27512661807928,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.04_temporal_label,temporal_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T20:06:56.526674,0.4913634691582538,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6770808150740106,285.9117991689426,16.908926611968678,13.68786265132012,39.02777777777778,29.755627644921383,0.6220511180210476,195.5826409728269,13.985086377024167,11.133447554821627,38.625,22.74828290223242,0.5003791573612333,365.3165148769332,19.11325495243898,15.829593015915444,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.05_effort_label,effort_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T20:52:02.242494,0.1781441167613191,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8692305265985589,109.62594203246144,10.47024078197161,8.786186842992505,48.98148148148148,28.95366076818761,0.8679573252512458,76.07102282283303,8.721870374113172,7.050006637180026,42.875,24.00227853767221,0.5461241418875071,324.17373984656496,18.004825460041676,11.747192749211628,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.05_effort_label,effort_label,complex_features,regression,RandomForestRegressor,96.0,108.0,40.0,40.0,2026-02-21T20:41:58.332318,0.1867166469511182,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.8691901680752316,109.65977516663042,10.471856338139403,8.598702255444575,48.98148148148148,28.95366076818761,0.8682873234215676,75.88090778317783,8.710964802085808,7.114800286739038,42.875,24.00227853767221,0.6265186240938679,266.75323709445627,16.332582070648115,11.588953964108184,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.05_effort_label,effort_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T20:47:01.851882,0.1619365215301513,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9117027521133424,74.02087409049915,8.603538463359081,6.697665956285265,48.98148148148148,28.95366076818761,0.9321472644805908,39.09057923516243,6.252245935274973,5.133813858032227,42.875,24.00227853767221,0.5104925632476807,349.6230311119146,18.698209302281185,12.568162178993225,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.05_effort_label,effort_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T20:36:58.106489,0.1622386098548192,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.883530819878484,97.63779922378215,9.88118410028789,8.289988999904152,48.98148148148148,28.95366076818761,0.9060445723167057,54.12860272048041,7.357214331557863,6.347157084329486,42.875,24.00227853767221,0.5299092237505377,335.75499176779954,18.323618413615787,12.147686745079328,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.05_effort_label,effort_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T20:31:57.834132,0.1530617555674798,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8440063434989552,130.7717397661922,11.435547200120867,9.386993869092292,48.98148148148148,28.95366076818761,0.8310283735251596,97.3461381211538,9.866414653822014,7.631011989171341,42.875,24.00227853767221,0.5491116740855534,322.03994165430106,17.945471341101662,11.298089957472934,51.625,26.725163703895248, -Cognitive_load_ready_data_gazes_0.05_frustration_label,frustration_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T21:17:03.399459,0.5542712728441179,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7893577452472869,121.79059225558672,11.035877502744706,8.216600347460153,24.12962962962963,24.04551725088952,0.8070252603548435,86.08784049388849,9.27835332879108,6.826122345513961,24.125,21.12130145137841,0.3211278381909511,458.2281018435797,21.40626314524746,16.709601703923116,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.05_frustration_label,frustration_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T21:07:02.982129,0.5422412157058716,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7375466823577881,151.74702722652867,12.318564333010915,9.834267342532122,24.12962962962963,24.04551725088952,0.8099570274353027,84.77997173492506,9.207604017057044,6.682310283184052,24.125,21.12130145137841,0.4709588289260864,357.09454964161233,18.89694551089176,15.278441894054414,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.05_frustration_label,frustration_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T21:12:03.184490,0.5887567984316594,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4458312498826313,320.41311163121827,17.900086916862115,14.046643965581117,24.12962962962963,24.04551725088952,0.4633404523350548,239.4088553965913,15.472842511852544,11.23189893980156,24.125,21.12130145137841,0.4185937459629441,392.4401370022935,19.810101892779183,15.324628076597838,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.05_frustration_label,frustration_label,extended_features,regression,XGBRegressor,59.0,108.0,40.0,40.0,2026-02-21T21:02:02.707476,0.5246286392211914,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.814315915107727,107.360074498798,10.361470672583016,7.734849629578767,24.12962962962963,24.04551725088952,0.7801194190979004,98.090783952046,9.90407915719811,7.151012706756592,24.125,21.12130145137841,0.2289654612541198,520.436299207274,22.81307298912784,17.452334380149843,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.05_frustration_label,frustration_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T20:57:02.408444,0.5082202553749084,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9914036393165588,4.970303580264141,2.2294177671006707,1.2274227738380432,24.12962962962963,24.04551725088952,0.9872872233390808,5.671297100460919,2.3814485298785946,1.1043540120124815,24.125,21.12130145137841,0.3031895756721496,470.3361076429122,21.687233748058148,16.942469254136086,28.625,25.98046140852776, -Cognitive_load_ready_data_gazes_0.05_group_task_label,group_task_label,all_features,classification,LGBMClassifier,187.0,108.0,40.0,40.0,2026-02-11T21:29:30.950326,0.295543804566361,LGBMClassifier,1.0,1.0,1.0,1.0,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",1.0,1.0,1.0,1.0,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.725,0.7543290043290043,0.725,0.7203947368421053,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.05_group_task_label,group_task_label,complex_features,classification,XGBClassifier,97.0,108.0,40.0,40.0,2026-02-11T21:19:29.315521,0.4244034278929592,XGBClassifier,0.9629629629629628,0.9629375254375254,0.9629629629629628,0.9627850835398004,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.925,0.9356060606060608,0.925,0.9244322928533456,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.5,0.5042735042735043,0.5,0.4792756347390214,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.05_group_task_label,group_task_label,distance_features,classification,RandomForestClassifier,31.0,108.0,40.0,40.0,2026-02-11T21:24:29.609535,0.2648188795534494,RandomForestClassifier,0.8611111111111112,0.863095238095238,0.861111111111111,0.8611408199643493,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.825,0.8319444444444444,0.8250000000000001,0.8255980861244019,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.7,0.7181186868686869,0.7,0.7044125465178097,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.05_group_task_label,group_task_label,extended_features,classification,RandomForestClassifier,60.0,108.0,40.0,40.0,2026-02-11T21:14:28.833610,0.3835797326363365,RandomForestClassifier,0.6851851851851852,0.6814044590607922,0.6851851851851851,0.6809899583175445,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.7,0.7008547008547008,0.7000000000000001,0.6866808820470147,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.45,0.4424679487179487,0.45,0.4427154843630815,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.05_group_task_label,group_task_label,simple_features,classification,ExtraTreesClassifier,19.0,108.0,40.0,40.0,2026-02-11T21:09:28.498993,0.3620310723758999,ExtraTreesClassifier,0.5648148148148148,0.5797903605015674,0.5648148148148148,0.5612716383983214,,4.0,"{1: 27, 2: 27, 3: 27, 4: 27}",0.65,0.6842948717948718,0.6499999999999999,0.6490036231884058,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",0.45,0.4479166666666667,0.45,0.4444444444444444,,4.0,"{1: 10, 2: 10, 3: 10, 4: 10}",,,,,,,,,,,,,,,,,,, -Cognitive_load_ready_data_gazes_0.05_mean_label,mean_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T21:42:09.523632,0.0775778703884775,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9780606203159904,8.68247044265286,2.946603204140805,2.3878971763067405,35.645370370370365,19.89342150830948,0.9737573270782044,8.901934537839837,2.983610989696853,2.290747450612102,34.5,18.417817460274712,0.9151861605956636,29.58238655317132,5.438969254663177,4.083708425857774,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.05_mean_label,mean_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T21:32:04.074612,0.0827570062772908,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9768541571211288,9.159926103679082,3.026536982043848,2.3088762327476786,35.645370370370365,19.89342150830948,0.9794649873785648,6.965804841392749,2.6392811220847143,2.095301110744477,34.5,18.417817460274712,0.9085202187855852,31.90741356234368,5.648664759245647,4.512690167427063,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.05_mean_label,mean_label,distance_features,regression,XGBRegressor,30.0,108.0,40.0,40.0,2026-02-21T21:37:04.247010,0.051286988760378,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9945948779238118,2.1390674367898663,1.4625551055566646,1.1812083535724218,35.645370370370365,19.89342150830948,0.9958400115578456,1.4111346393938555,1.1879118819987684,0.9629579615592958,34.5,18.417817460274712,0.9656199101878896,11.991499426243328,3.4628744456366487,2.6082850408554075,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.05_mean_label,mean_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T21:27:03.796442,0.0753214525535184,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9962500463770476,1.4840374687682194,1.2182107653309502,0.9899702196572896,35.645370370370365,19.89342150830948,0.9961539002157762,1.3046585844052658,1.1422165225583396,0.9594424759145734,34.5,18.417817460274712,0.9549806209663304,15.702398126427198,3.962625155932264,3.209446784659715,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.05_mean_label,mean_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T21:22:03.597169,0.0524924136498481,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.9971902957199664,1.1119354656033278,1.054483506558224,0.8360299066261007,35.645370370370365,19.89342150830948,0.9962799325914202,1.2619063860688065,1.1233460669218576,0.9440920901298526,34.5,18.417817460274712,0.9631148487065352,12.865244767821364,3.586815407547671,2.739422035217285,39.645,18.67597320088032, -Cognitive_load_ready_data_gazes_0.05_mental_label,mental_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T22:07:10.846667,0.17421511277248,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8729259969934966,119.15039854948782,10.915603444129315,8.877538765243624,51.75925925925926,30.621001740626504,0.8449332044038868,114.59436194552768,10.704875615602813,8.474685995793354,46.0,27.184554438136374,0.685724550866033,217.78797569594644,14.757641264644782,11.364917385763809,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.05_mental_label,mental_label,complex_features,regression,RandomForestRegressor,96.0,108.0,40.0,40.0,2026-02-21T21:57:10.280893,0.1981792152644378,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.8551531361914115,135.81504590323982,11.653971250318056,9.449950117263429,51.75925925925926,30.621001740626504,0.801675831643688,146.56156041531457,12.106261207132222,9.404530668696015,46.0,27.184554438136374,0.6498607655231388,242.6410185669262,15.576938677639012,12.441279635303506,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.05_mental_label,mental_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T22:02:10.514707,0.1622100680988714,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8711685173045387,120.79829190633156,10.990827626085832,9.029922677395378,51.75925925925926,30.621001740626504,0.8715009940971196,94.96076536222864,9.74478144250699,7.589405148930496,46.0,27.184554438136374,0.6274948328898289,258.14026041411245,16.06674392694775,12.348046620843633,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.05_mental_label,mental_label,extended_features,regression,ExtraTreesRegressor,59.0,108.0,40.0,40.0,2026-02-21T21:52:10.049696,0.148858611480056,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.8928967208949075,100.42493420684724,10.021224187036593,8.198111557282838,51.75925925925926,30.621001740626504,0.8782246891370381,89.99195472772881,9.486408947949103,7.548310888822803,46.0,27.184554438136374,0.6372062984232864,251.41036654107543,15.855925281770077,11.48783974849594,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.05_mental_label,mental_label,simple_features,regression,ExtraTreesRegressor,18.0,108.0,40.0,40.0,2026-02-21T21:47:09.736615,0.145453900348087,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.9261556714846668,69.23982061673907,8.321046846205054,6.617216303156604,51.75925925925926,30.621001740626504,0.9255746699575372,55.000318901379934,7.416219987391146,6.072593202407688,46.0,27.184554438136374,0.6268430305054524,258.5919492820732,16.08079442322652,11.509410138942489,50.375,26.32459638816899, -Cognitive_load_ready_data_gazes_0.05_performance_label,performance_label,all_features,regression,RandomForestRegressor,186.0,108.0,40.0,40.0,2026-02-21T22:32:11.985544,0.5725052600689405,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.7734687852428762,135.23655216374405,11.62912516760156,9.24702012105644,29.953703703703702,24.433350105822367,0.7634436427190391,168.5427083696021,12.98239994645066,10.055412067081075,32.625,26.69240294540752,0.3345112907588278,360.60129605897833,18.989504892413027,13.673851727882328,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.05_performance_label,performance_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T22:22:11.465851,0.5995656217031877,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9008890050148136,59.16813388249944,7.692082545221381,5.733794471939229,29.953703703703702,24.433350105822367,0.9424519829048424,41.00206299253264,6.4032853280587645,5.475097029945324,32.625,26.69240294540752,0.0376535778728374,521.4564308273104,22.835420530993304,17.024710779441325,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.05_performance_label,performance_label,distance_features,regression,RandomForestRegressor,30.0,108.0,40.0,40.0,2026-02-21T22:27:11.667293,0.6198415159839239,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.539857587948672,274.69977317187164,16.574069300321863,13.276908036522254,29.953703703703702,24.433350105822367,0.5302656543353075,334.6783816869424,18.294217165184804,15.215484578223036,32.625,26.69240294540752,0.2197192102994228,422.8024610316612,20.562160903748936,14.25410482900541,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.05_performance_label,performance_label,extended_features,regression,RandomForestRegressor,59.0,108.0,40.0,40.0,2026-02-21T22:17:11.300842,0.5834303470884293,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.6812733116972618,190.27619860178748,13.794063890013977,11.533096874082414,29.953703703703702,24.433350105822367,0.716752625952233,201.80932826881445,14.205961011801154,11.939277360399371,32.625,26.69240294540752,0.3492012146319901,352.6414230902689,18.778749241902904,13.03981608206137,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.05_performance_label,performance_label,simple_features,regression,RandomForestRegressor,18.0,108.0,40.0,40.0,2026-02-21T22:12:11.025559,0.5710402110874021,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.6033404253659567,236.8012431035552,15.38834764045689,12.47030854722633,29.953703703703702,24.433350105822367,0.6593176002859493,242.7308866337656,15.579823061696356,13.129953531893808,32.625,26.69240294540752,0.2410388993839379,411.2501876291315,20.279304416797228,15.066328676929665,38.875,23.277873077237963, -Cognitive_load_ready_data_gazes_0.05_physical_label,physical_label,all_features,regression,LGBMRegressor,186.0,108.0,40.0,40.0,2026-02-21T22:57:13.037861,0.7598808977842446,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.93101993979248,36.53388373953845,6.044326574527426,4.613117443849202,20.0,23.013683530231088,0.9222668472768538,41.4852119439341,6.440901485346139,4.836368375658208,22.75,23.101677428273472,-0.2857616039752146,567.3222177290014,23.81852677494982,16.49381370492646,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.05_physical_label,physical_label,complex_features,regression,XGBRegressor,96.0,108.0,40.0,40.0,2026-02-21T22:47:12.561861,0.6798113584518433,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8041386008262634,103.73401045108292,10.18498946740167,8.121457214708682,20.0,23.013683530231088,0.7946829795837402,109.57511481854016,10.467813277783485,8.091369247436523,22.75,23.101677428273472,0.124903917312622,386.1224441864685,19.649998579808308,14.50271189212799,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.05_physical_label,physical_label,distance_features,regression,LGBMRegressor,30.0,108.0,40.0,40.0,2026-02-21T22:52:12.728356,0.6787871541583664,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9999911554641454,0.0046843282489246,0.0684421525737224,0.0254510824201322,20.0,23.013683530231088,0.9999889079734542,0.0059196759171581,0.0769394301847768,0.0221173792242059,22.75,23.101677428273472,-0.0337039364041176,456.10571031431056,21.35663153014329,15.463345104272872,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.05_physical_label,physical_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T22:42:12.299027,0.704337278548613,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9278829294117636,38.19533738562153,6.180237647989075,4.848912778169808,20.0,23.013683530231088,0.951117100124243,26.08819262744306,5.107660191070179,4.226361152640092,22.75,23.101677428273472,0.289706442166224,313.4059340573125,17.703274670447627,13.10734645389822,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.05_physical_label,physical_label,simple_features,regression,LGBMRegressor,18.0,108.0,40.0,40.0,2026-02-21T22:37:12.095309,0.6117560451906182,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.99367737562153,3.3486492078563934,1.829931476273468,0.8810593809539862,20.0,23.013683530231088,0.9935678271113064,3.4327702685345733,1.8527736689986107,0.9342413970398404,22.75,23.101677428273472,0.2045570690154372,350.9767645011417,18.7343738753432,13.909980193464335,28.625,21.005579615902057, -Cognitive_load_ready_data_gazes_0.05_temporal_label,temporal_label,all_features,regression,ExtraTreesRegressor,186.0,108.0,40.0,40.0,2026-02-21T23:22:14.139984,0.5474915742808433,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6430842675894972,316.01225312325744,17.776733477308408,14.437889257092325,39.02777777777778,29.755627644921383,0.5383975862378186,238.87203658421384,15.455485646986762,12.45714825884607,38.625,22.74828290223242,0.5353520397935898,339.74478040342456,18.43216700237453,15.5144138609197,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.05_temporal_label,temporal_label,complex_features,regression,LGBMRegressor,96.0,108.0,40.0,40.0,2026-02-21T23:12:13.623375,0.568800737071121,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6373898384787037,321.05408571886534,17.91798218881985,14.736730222873438,39.02777777777778,29.755627644921383,0.593941817679015,210.128764692011,14.495818869315766,11.488653789761791,38.625,22.74828290223242,0.4582148160934406,396.14655415767743,19.90343071326341,16.34633908851235,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.05_temporal_label,temporal_label,distance_features,regression,ExtraTreesRegressor,30.0,108.0,40.0,40.0,2026-02-21T23:17:13.840422,0.5247992206866071,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5102808027293867,433.59609250624766,20.82297030940225,17.173401611017326,39.02777777777778,29.755627644921383,0.4449660339645076,287.22140501764795,16.94760764879952,13.741235106585185,38.625,22.74828290223242,0.4587723640729232,395.7388820444295,19.893186824750565,16.608382681316947,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.05_temporal_label,temporal_label,extended_features,regression,LGBMRegressor,59.0,108.0,40.0,40.0,2026-02-21T23:07:13.408200,0.5507673014179776,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.818041652041936,161.10544392220638,12.69273193296882,10.583974752407768,39.02777777777778,29.755627644921383,0.7416389671242349,133.6977976220697,11.562776380353885,9.30310928223264,38.625,22.74828290223242,0.5014094565125581,364.5631730162239,19.093537467327103,15.014989715040045,39.75,27.040478915877213, -Cognitive_load_ready_data_gazes_0.05_temporal_label,temporal_label,simple_features,regression,XGBRegressor,18.0,108.0,40.0,40.0,2026-02-21T23:02:13.195020,0.514171838760376,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7030646800994873,262.9057830760144,16.21436964781593,12.860327976721305,39.02777777777778,29.755627644921383,0.7057547569274902,152.26729329902025,12.33966341919504,9.771715903282166,38.625,22.74828290223242,0.5273740887641907,345.57815636463454,18.58973255226213,15.06966495513916,39.75,27.040478915877213, -Emotions_ready_data_gazes_0.01_Anger_label,Anger_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T03:02:14.827926,0.3983030875368269,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7988173688554064,2.4112136247354394,1.5528083026360464,1.2017858206342726,2.7063492063492065,3.461964439854464,0.6302055808066636,5.38183275459102,2.319877745613122,1.6095756896336164,3.0444444444444443,3.814915496693679,0.6522735875939533,4.582089673403926,2.1405816203555346,1.629449432882225,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.01_Anger_label,Anger_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T02:39:23.735658,0.4479897243341966,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6561964368183244,4.120553703169545,2.029914703422177,1.597162615083347,2.7063492063492065,3.461964439854464,0.5279499158280223,6.870018780559186,2.6210720670289067,1.9423576979943524,3.0444444444444443,3.814915496693679,0.6473043870772626,4.647570239619913,2.155822404471183,1.730421541784514,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.01_Anger_label,Anger_label,simple_features,regression,LGBMRegressor,15.0,252.0,90.0,90.0,2026-02-22T02:34:23.435894,0.3842006675173938,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7154153237846353,3.410803630400034,1.8468361135737068,1.2857798247219077,2.7063492063492065,3.461964439854464,0.5461216096739121,6.605555575950685,2.5701275407945587,1.7211620304470332,3.0444444444444443,3.814915496693679,0.562825624811917,5.760770877787065,2.400160594165954,1.8388060806758573,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.01_Disgust_label,Disgust_label,all_features,regression,ExtraTreesRegressor,182.0,252.0,90.0,90.0,2026-02-21T23:47:15.752594,0.6215639596551784,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4536631155360896,7.628584921332526,2.7619893050720754,2.201597708592866,2.9285714285714284,3.736730111666835,0.4504126867094424,9.366121273326154,3.0604119450371634,2.4694452099810564,3.188888888888889,4.128207694076462,0.3873373601350971,9.587489577619213,3.096367158077222,2.502984993090054,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.01_Disgust_label,Disgust_label,complex_features,regression,ExtraTreesRegressor,92.0,252.0,90.0,90.0,2026-02-21T23:37:15.133812,0.6378041708206236,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4288122564672538,7.97558124203802,2.8241071583844017,2.243172895985639,2.9285714285714284,3.736730111666835,0.4204517868185297,9.876717888368312,3.1427245963285286,2.4825866143938584,3.188888888888889,4.128207694076462,0.3999121981606506,9.390707334561553,3.0644261019906405,2.496774331182059,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.01_Disgust_label,Disgust_label,distance_features,regression,ExtraTreesRegressor,26.0,252.0,90.0,90.0,2026-02-21T23:42:15.372578,0.5965776887166062,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4624009451042794,7.506577279555834,2.7398133658254595,2.171309723558532,2.9285714285714284,3.736730111666835,0.4735073250551621,8.972540165686464,2.9954198646744774,2.3433227051341725,3.188888888888889,4.128207694076462,0.4191573210488173,9.08954254483162,3.0148868212308764,2.4224723034045588,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.01_Disgust_label,Disgust_label,extended_features,regression,ExtraTreesRegressor,55.0,252.0,90.0,90.0,2026-02-21T23:32:14.844597,0.6408903716574574,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4233044604011923,8.05248743529378,2.837690510836899,2.271771263800923,2.9285714285714284,3.736730111666835,0.4104181856227598,10.047711510919582,3.1698125356114644,2.54268081248166,3.188888888888889,4.128207694076462,0.4069265389867812,9.280940694344638,3.046463637456492,2.4673144177356225,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.01_Disgust_label,Disgust_label,simple_features,regression,ExtraTreesRegressor,14.0,252.0,90.0,90.0,2026-02-21T23:27:14.540677,0.626846410406795,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3641930928624253,8.877868440876192,2.979575211481696,2.392887588591468,2.9285714285714284,3.736730111666835,0.3701023142633848,10.734778572440504,3.276397193937344,2.684630951050163,3.188888888888889,4.128207694076462,0.3777616029119538,9.737339538431158,3.120471044318655,2.536551027248059,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.01_Sadness_label,Sadness_label,all_features,regression,ExtraTreesRegressor,182.0,252.0,90.0,90.0,2026-02-22T00:12:16.853293,0.6371202187088346,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4278795574264173,7.396663970745501,2.719680858252582,2.2030387763175674,3.007936507936508,3.595623512050894,0.3175268997122906,11.496638526068846,3.39066933304751,2.892985448149042,3.433333333333333,4.104333752944021,0.3326046296855452,10.269731648316538,3.204642202854562,2.5848721250546847,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.01_Sadness_label,Sadness_label,complex_features,regression,LGBMRegressor,92.0,252.0,90.0,90.0,2026-02-22T00:02:16.336183,0.6426750834036229,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.8010085458729775,2.572662694251307,1.6039522107130584,1.2387217245771978,3.007936507936508,3.595623512050894,0.8130922735145241,3.148564490273668,1.7744194797943549,1.432309776800676,3.433333333333333,4.104333752944021,0.3923599392990978,9.350230222940882,3.057814615528692,2.3626670468656465,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.01_Sadness_label,Sadness_label,distance_features,regression,XGBRegressor,26.0,252.0,90.0,90.0,2026-02-22T00:07:16.494143,0.5886518955230713,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.6046411991119385,5.111400110441139,2.2608405760780963,1.7514856913171353,3.007936507936508,3.595623512050894,0.5096363425254822,8.260448062119169,2.874099521957994,2.366778813343909,3.433333333333333,4.104333752944021,0.3952413201332092,9.305891824504505,3.0505559861285128,2.4537790999230413,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.01_Sadness_label,Sadness_label,extended_features,regression,LGBMRegressor,55.0,252.0,90.0,90.0,2026-02-21T23:57:16.110985,0.6119528282301921,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.5855276040477377,5.358509869387105,2.314845538991124,1.826508908121533,3.007936507936508,3.595623512050894,0.5630598309231862,7.360499892637303,2.713024123121153,2.195636339657772,3.433333333333333,4.104333752944021,0.3250316692803195,10.38626268015206,3.222772514489979,2.50040094657307,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.01_Sadness_label,Sadness_label,simple_features,regression,XGBRegressor,14.0,252.0,90.0,90.0,2026-02-21T23:52:15.914334,0.6115139126777649,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.5399380922317505,5.947913418995123,2.43883443861922,1.876022632041621,3.007936507936508,3.595623512050894,0.4908273220062256,8.577297454181831,2.928702349878156,2.3448668976624805,3.433333333333333,4.104333752944021,0.3928946256637573,9.342001551311052,3.0564688042430688,2.337860708766513,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.01_Tenderness_label,Tenderness_label,all_features,regression,LGBMRegressor,182.0,252.0,90.0,90.0,2026-02-22T00:47:32.498833,0.7592554970349122,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.4951918445825712,2.8169779989202204,1.678385533457739,1.2265736956310052,1.3134920634920637,2.362264624189872,0.5359631899711788,2.056656972843789,1.4341049378772075,1.0892854058707653,1.1111111111111112,2.1052550357218247,0.1489007412612709,7.437556781550888,2.727188438951531,1.742943938486821,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.01_Tenderness_label,Tenderness_label,complex_features,regression,LGBMRegressor,92.0,252.0,90.0,90.0,2026-02-22T00:37:32.012405,0.7655264229546986,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.4612967801656774,3.006122428758956,1.733817299705755,1.1462778085496033,1.3134920634920637,2.362264624189872,0.4156810417333757,2.589759333552076,1.6092729207788454,1.1269676549164032,1.1111111111111112,2.1052550357218247,0.2061311655207875,6.937433528367477,2.6339008197666587,1.6135034158499255,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.01_Tenderness_label,Tenderness_label,distance_features,regression,ExtraTreesRegressor,26.0,252.0,90.0,90.0,2026-02-22T00:42:32.177751,0.7242073380928785,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4547328320410867,3.0427511901103568,1.7443483568686493,1.1744499395684302,1.3134920634920637,2.362264624189872,0.3114858181691311,3.051562855275087,1.746872306516732,1.1829450391839889,1.1111111111111112,2.1052550357218247,0.2295815987017267,6.732505693518144,2.5947072462068133,1.5469437645958692,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.01_Tenderness_label,Tenderness_label,extended_features,regression,ExtraTreesRegressor,55.0,252.0,90.0,90.0,2026-02-22T00:32:31.885972,0.7839278000233311,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2858510504055611,3.985161209006219,1.9962868553908328,1.3771025310387426,1.3134920634920637,2.362264624189872,0.247887141495764,3.333438471642232,1.825770651435232,1.2824479643455056,1.1111111111111112,2.1052550357218247,0.2396343052490563,6.644657449043307,2.577723307308856,1.5994400776810274,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.01_Tenderness_label,Tenderness_label,simple_features,regression,ExtraTreesRegressor,14.0,252.0,90.0,90.0,2026-02-22T00:26:29.886220,0.7434045962571323,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2928853917329063,3.9459075152150778,1.98643084833454,1.3539586992131871,1.3134920634920637,2.362264624189872,0.2389033550466737,3.373255500472151,1.8366424530844727,1.2540712991906384,1.1111111111111112,2.1052550357218247,0.2544588737847139,6.515109021978124,2.552471159871963,1.539202093922616,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Anger_label,Anger_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T03:17:15.534508,0.4111066704969655,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7319828106688218,3.212239023328836,1.7922720282727274,1.3834331925510883,2.7063492063492065,3.461964439854464,0.6029213505214293,5.778915989522448,2.403937601004329,1.7099679461992452,3.0444444444444443,3.814915496693679,0.665082402076018,4.41330428790298,2.1007865879005845,1.5837267236396584,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.02_Anger_label,Anger_label,extended_features,regression,XGBRegressor,56.0,252.0,90.0,90.0,2026-02-22T03:12:15.225104,0.3968443870544433,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7657746076583862,2.8072378458841363,1.675481377361186,1.2110452581906603,2.7063492063492065,3.461964439854464,0.6625591516494751,4.910973274876585,2.216071586135381,1.6199372058113417,3.0444444444444443,3.814915496693679,0.4921141862869262,6.692555825033268,2.586997453619402,1.818337163080772,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.02_Anger_label,Anger_label,simple_features,regression,LGBMRegressor,15.0,252.0,90.0,90.0,2026-02-22T03:07:14.945842,0.3852492111615551,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7654219254282285,2.811464619255037,1.6767422638124911,1.2288210332830287,2.7063492063492065,3.461964439854464,0.6465695435085976,5.143678510250922,2.2679679253135223,1.578788947326942,3.0444444444444443,3.814915496693679,0.630332498488794,4.871213634728405,2.207082607137396,1.6269860196823942,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T03:42:17.211437,0.6142018628878253,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4836875083573246,7.209349762840552,2.6850232332031228,2.1915200836056115,2.9285714285714284,3.736730111666835,0.5119388744279657,8.317585905566565,2.8840225216815774,2.373471380461172,3.188888888888889,4.128207694076462,0.453436423416407,8.55311268067036,2.924570512172746,2.426890589287276,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,complex_features,regression,XGBRegressor,93.0,252.0,90.0,90.0,2026-02-22T03:32:16.470870,0.5811445116996765,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.6212551593780518,5.288471520178004,2.299667697772442,1.759897566030896,2.9285714285714284,3.736730111666835,0.6578422784805298,5.831086877588968,2.4147643523932034,1.8480531310869588,3.188888888888889,4.128207694076462,0.4268766641616821,8.9687434806622,2.994786049229928,2.2912181420458686,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T03:37:16.653663,0.5874419440815403,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5590635132015112,6.156863155517901,2.4813027133983274,1.962746669337151,2.9285714285714284,3.736730111666835,0.5567016629573834,7.554734042432077,2.748587645033732,2.050395172886204,3.188888888888889,4.128207694076462,0.4752206264045712,8.212214108575576,2.8656960949437007,2.166195806443596,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T03:27:15.973821,0.598096341304008,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.461119036187222,7.524476768521843,2.743077973467368,2.2408675641905584,2.9285714285714284,3.736730111666835,0.4838264151952643,8.796681212349446,2.9659199605433466,2.435938793133732,3.188888888888889,4.128207694076462,0.4631442720926234,8.401195635386102,2.8984816085989062,2.362667318459028,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Disgust_label,Disgust_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T03:22:15.716449,0.5762415975567409,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4730456233342275,7.357944020212382,2.7125530446817776,2.275580209504713,2.9285714285714284,3.736730111666835,0.4840274288857084,8.793255517183693,2.9653423945952166,2.4926199648125102,3.188888888888889,4.128207694076462,0.4157263831339089,9.143232911046695,3.0237779202591413,2.5621735977194726,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T04:07:18.403478,0.4278815930075748,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6573880952440614,4.429460902423197,2.104628447594301,1.6571352167560889,3.007936507936508,3.595623512050894,0.5854516203189473,6.98329776038271,2.6425929993819914,2.1271181788310263,3.433333333333333,4.104333752944021,0.5967939737490773,6.2044447306100325,2.4908722830787675,1.9374602575736024,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,complex_features,regression,LGBMRegressor,93.0,252.0,90.0,90.0,2026-02-22T03:57:17.867024,0.4079904817757505,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6838124866595381,4.087832934975425,2.021838998282362,1.4880847887889428,3.007936507936508,3.595623512050894,0.6615570983668735,5.701258701844256,2.387730868804995,1.8435936422467032,3.433333333333333,4.104333752944021,0.6321990393859618,5.659639448382017,2.378999673892793,1.77386118413748,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,distance_features,regression,XGBRegressor,27.0,252.0,90.0,90.0,2026-02-22T04:02:17.974077,0.402812659740448,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7003557085990906,3.873953943962766,1.9682362520700525,1.410479164549283,3.007936507936508,3.595623512050894,0.6529492139816284,5.846264260243695,2.417904932011119,1.810790576868587,3.433333333333333,4.104333752944021,0.5943440198898315,6.242143102434553,2.498428126329544,1.7992949234114752,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T03:52:17.670478,0.4173922405860948,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6024444825248771,5.139799863209964,2.267112671044376,1.7474718505081173,3.007936507936508,3.595623512050894,0.571920203416737,7.211241995554278,2.6853755781183155,2.156999860777637,3.433333333333333,4.104333752944021,0.6176373230536204,5.883711903367124,2.4256363914171315,1.8560645090155448,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Sadness_label,Sadness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T03:47:17.395561,0.4147648915779923,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6209255503796902,4.900867221461164,2.2137902388124227,1.5782778679311071,3.007936507936508,3.595623512050894,0.5543773698555745,7.506760772910704,2.739846852090588,2.04725674287056,3.433333333333333,4.104333752944021,0.6161078300709584,5.907247401496997,2.4304829564300583,1.8255400203073595,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,all_features,regression,LGBMRegressor,183.0,252.0,90.0,90.0,2026-02-22T04:32:20.128729,0.7665489768832906,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.5662609990148408,2.420391211862432,1.555760653784004,1.0502444231910173,1.3134920634920637,2.362264624189872,0.5320741100368349,2.0738937592194606,1.4401019961167545,1.028426582596521,1.1111111111111112,2.1052550357218247,0.1439408353216973,7.480900236122095,2.735123440746705,1.7378516400877957,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T04:22:19.363317,0.7544084455184842,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3535855987522123,3.607182504796232,1.8992584091682283,1.2984822043608224,1.3134920634920637,2.362264624189872,0.3137945190699692,3.04133046486273,1.7439410726463007,1.213927015015872,1.1111111111111112,2.1052550357218247,0.2395098753240591,6.645744812970592,2.577934214244148,1.5619077758764723,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T04:27:19.778794,0.7498231077416062,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3252545799289662,3.7652779235322553,1.9404324063291287,1.3286619053283515,1.3134920634920637,2.362264624189872,0.2941886300335659,3.128225701456172,1.7686790837956363,1.2098334860720572,1.1111111111111112,2.1052550357218247,0.2582316848793896,6.4821393108021335,2.546004577922462,1.5427031852795636,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,extended_features,regression,LGBMRegressor,56.0,252.0,90.0,90.0,2026-02-22T04:17:18.990539,0.7641447875140869,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.4591445308803683,3.0181326128652217,1.737277356343892,1.1765584398598166,1.3134920634920637,2.362264624189872,0.3969051607822392,2.6729758923355087,1.634923818511281,1.1529860696866452,1.1111111111111112,2.1052550357218247,0.1889868189158976,7.08725395183421,2.6621896911817178,1.6664686073861286,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.02_Tenderness_label,Tenderness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T04:12:18.580435,0.7659388552838962,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2540360162618662,4.162698458069826,2.040269212155549,1.4237278632647274,1.3134920634920637,2.362264624189872,0.2765702611535009,3.2063120524184354,1.7906177851284837,1.2302163765780258,1.1111111111111112,2.1052550357218247,0.2515763986487531,6.540298296055142,2.5574006913378167,1.571664592948746,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.03_Anger_label,Anger_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T04:57:21.388744,0.4148641302797426,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7492750638467391,3.004987948880954,1.7334901063695038,1.3572303764561755,2.7063492063492065,3.461964439854464,0.6228247461702386,5.48925032376143,2.342914920299376,1.7152463658375805,3.0444444444444443,3.814915496693679,0.6302817618667689,4.871882205603526,2.2072340622606217,1.7098565055199149,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.03_Anger_label,Anger_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T04:47:20.958635,0.3775059196611925,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.874998751945554,1.4981646810314837,1.2239953762296178,0.9532403006730052,2.7063492063492065,3.461964439854464,0.7437061477717511,3.72999314519443,1.931319016940089,1.2836834233637824,3.0444444444444443,3.814915496693679,0.6650155978312209,4.414184586405779,2.1009960938578107,1.5362835258988838,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.03_Anger_label,Anger_label,distance_features,regression,LGBMRegressor,27.0,252.0,90.0,90.0,2026-02-22T04:52:21.028761,0.3561073583135532,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6536725455092163,4.150803039691538,2.037351967552867,1.3459283306779604,2.7063492063492065,3.461964439854464,0.6309867270390817,5.370464280212949,2.317426218936204,1.692975738705622,3.0444444444444443,3.814915496693679,0.4566916411829652,7.159328516875928,2.6756921565972287,1.9948438282011045,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.03_Anger_label,Anger_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T04:42:20.730225,0.3906693024008085,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6885950333372843,3.73225011600413,1.931903236708332,1.4768519135856042,2.7063492063492065,3.461964439854464,0.5588375760737622,6.42049273853341,2.5338691241919755,1.8547475987237232,3.0444444444444443,3.814915496693679,0.577503911973243,5.567350919953571,2.3595234518761563,1.8193551448824352,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.03_Anger_label,Anger_label,simple_features,regression,LGBMRegressor,15.0,252.0,90.0,90.0,2026-02-22T04:37:20.496214,0.3873066634761672,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9140779304236656,1.0297929977813187,1.0147871687114096,0.8137993767841414,2.7063492063492065,3.461964439854464,0.8694850070235166,1.8994604237086128,1.3782091364189302,1.0590222628506918,3.0444444444444443,3.814915496693679,0.5263539979810828,6.241367860677919,2.498272975612937,1.8248291772822376,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.03_Disgust_label,Disgust_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T05:22:22.548587,0.5989309328683519,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.439871369334335,7.821161168892286,2.796633899689461,2.2508947821548464,2.9285714285714284,3.736730111666835,0.4663040798942784,9.095298581149864,3.0158412725390344,2.4300163427430754,3.188888888888889,4.128207694076462,0.4463922746584325,8.663345781900706,2.943356210502002,2.3877436221626382,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.03_Disgust_label,Disgust_label,complex_features,regression,RandomForestRegressor,93.0,252.0,90.0,90.0,2026-02-22T05:12:22.042562,0.5621642034692533,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.4720958540792108,7.3712057926161885,2.714996462726276,2.177065214662284,2.9285714285714284,3.736730111666835,0.510089190302814,8.349108405112254,2.8894823766744544,2.311722976342905,3.188888888888889,4.128207694076462,0.4175663278147461,9.114439821174576,3.0190130541576954,2.372139250456944,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.03_Disgust_label,Disgust_label,distance_features,regression,XGBRegressor,27.0,252.0,90.0,90.0,2026-02-22T05:17:22.200816,0.5948573350906372,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.8357949256896973,2.292819859635055,1.514206016245826,1.1656256980273785,2.9285714285714284,3.736730111666835,0.8687804937362671,2.2362560924219697,1.4954116799135848,1.1141289555157223,3.188888888888889,4.128207694076462,0.3803911209106445,9.696189292867738,3.113870468222424,2.321661383353381,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.03_Disgust_label,Disgust_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T05:07:21.709608,0.5922430831727802,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4941252284433345,7.06360629150353,2.657744587334067,2.170296921639056,2.9285714285714284,3.736730111666835,0.4990216314673883,8.537722835877808,2.9219381985041726,2.369069305085931,3.188888888888889,4.128207694076462,0.4712258946982987,8.274727221187957,2.876582559424978,2.360643499779406,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.03_Disgust_label,Disgust_label,simple_features,regression,LGBMRegressor,15.0,252.0,90.0,90.0,2026-02-22T05:02:21.466683,0.5589769890775922,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.5345066660156119,6.499754143633481,2.549461539940048,1.943483072271013,2.9285714285714284,3.736730111666835,0.5326340729678143,7.96489628808024,2.822214784186392,1.9700504628991249,3.188888888888889,4.128207694076462,0.4255908747169663,8.98886457831805,2.9981435219678945,2.244073068304653,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.03_Sadness_label,Sadness_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T05:47:23.680840,0.4134639863367737,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6315389733856633,4.7636514925467655,2.1825790919338446,1.6064764591979812,3.007936507936508,3.595623512050894,0.5851479871002854,6.988412630636192,2.6435605971182485,1.9956546437183804,3.433333333333333,4.104333752944021,0.5807109731863116,6.451926369269747,2.5400642451067545,1.89071483075289,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.03_Sadness_label,Sadness_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T05:37:23.176157,0.4151270318815196,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6736751270577198,4.218893874151036,2.053994613953756,1.5021990386039952,3.007936507936508,3.595623512050894,0.6224645703917016,6.359794053657124,2.5218632107346988,1.9246487954445337,3.433333333333333,4.104333752944021,0.6187184651657315,5.867075528799761,2.4222046835062807,1.8164568103371468,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.03_Sadness_label,Sadness_label,distance_features,regression,LGBMRegressor,27.0,252.0,90.0,90.0,2026-02-22T05:42:23.269559,0.3679826866474913,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7518567322042479,3.208122332129096,1.791123204061936,1.2532623091279744,3.007936507936508,3.595623512050894,0.7961738749594323,3.433564313044497,1.8529879419587427,1.324148461845038,3.433333333333333,4.104333752944021,0.6188587510897239,5.864916840176016,2.421759038421456,1.7290951308525309,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.03_Sadness_label,Sadness_label,extended_features,regression,LGBMRegressor,56.0,252.0,90.0,90.0,2026-02-22T05:32:22.835177,0.4327712534969528,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6508247666444318,4.514314951620713,2.124691730962568,1.5980850246081664,3.007936507936508,3.595623512050894,0.6284325919814888,6.259259414409607,2.501851197495488,1.9307135984445976,3.433333333333333,4.104333752944021,0.5762970205727957,6.51984729120817,2.553399164096396,1.9635624678534669,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.03_Sadness_label,Sadness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T05:27:22.699944,0.4098917811998039,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6161241949933838,4.962941585098451,2.22776605259584,1.621465922562954,3.007936507936508,3.595623512050894,0.5631737256586569,7.358581272543448,2.7126705057089864,2.122386874584534,3.433333333333333,4.104333752944021,0.6156720228418804,5.913953506291998,2.431862147880097,1.878775925701928,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.03_Tenderness_label,Tenderness_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T06:12:24.873769,0.7697640541217136,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3745444781724538,3.490225792478417,1.868214600220868,1.2501358057575345,1.3134920634920637,2.362264624189872,0.2840305877396553,3.173247148166221,1.7813610381296152,1.1877502550391723,1.1111111111111112,2.1052550357218247,0.2427572615167895,6.617366666764885,2.5724242781401525,1.5212288608992328,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.03_Tenderness_label,Tenderness_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T06:02:24.381771,0.7490226107877547,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3868865857023437,3.421353201972708,1.8496900286190403,1.2559296793675108,1.3134920634920637,2.362264624189872,0.3703854983477597,2.790513655471041,1.6704830605160417,1.1461275062497325,1.1111111111111112,2.1052550357218247,0.2544938847255467,6.51480306957863,2.552411226581373,1.5422039940407868,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.03_Tenderness_label,Tenderness_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T06:07:24.535597,0.7302596745587745,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4347374747294525,3.154331165637585,1.7760436834823587,1.1805570371438037,1.3134920634920637,2.362264624189872,0.333737944315845,2.952939234451996,1.718411834937131,1.130396845635434,1.1111111111111112,2.1052550357218247,0.2702201607232125,6.377374832514582,2.5253464777163908,1.515804995574788,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.03_Tenderness_label,Tenderness_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T05:57:24.077283,0.7831464204464121,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2894639459487105,3.965000189125245,1.9912308226635216,1.4018154357902712,1.3134920634920637,2.362264624189872,0.2738888581191062,3.218196295496802,1.7939331914808874,1.257532958667256,1.1111111111111112,2.1052550357218247,0.2233012385237935,6.787388287942196,2.6052616544105884,1.6253513278740026,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.03_Tenderness_label,Tenderness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T05:52:23.842088,0.7586135529651228,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2730175877955162,4.0567757053936,2.014143913774187,1.3754698494196826,1.3134920634920637,2.362264624189872,0.2781175399893514,3.199454359800283,1.7887018644257862,1.2218350138100966,1.1111111111111112,2.1052550357218247,0.2513856516878591,6.541965189003281,2.5577265665045745,1.5295427447764778,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.04_Anger_label,Anger_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T06:37:26.064929,0.4198905629606848,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7242977018865775,3.304346572066496,1.8177861733621192,1.4543801079097538,2.7063492063492065,3.461964439854464,0.6050294952929847,5.748234935417506,2.397547692000621,1.7671151618196408,3.0444444444444443,3.814915496693679,0.6173304281129577,5.0425456080167095,2.245561312459918,1.7612227629764854,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.04_Anger_label,Anger_label,complex_features,regression,LGBMRegressor,93.0,252.0,90.0,90.0,2026-02-22T06:27:25.504147,0.3958298014023551,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.8548051240562065,1.7401893052379187,1.319162349840958,1.0392481184165854,2.7063492063492065,3.461964439854464,0.7778207116773733,3.2335041018054964,1.7981946785054994,1.3108596049480008,3.0444444444444443,3.814915496693679,0.5343725341096381,6.135705333243663,2.477035593858849,1.9022950651369392,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.04_Anger_label,Anger_label,distance_features,regression,XGBRegressor,27.0,252.0,90.0,90.0,2026-02-22T06:32:25.643349,0.3702034950256347,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.6905540227890015,3.708771249113861,1.925817034173772,1.4391939143339794,2.7063492063492065,3.461964439854464,0.6782364845275879,4.682812305719655,2.163980662048452,1.5809236579471164,3.0444444444444443,3.814915496693679,0.539379358291626,6.069729669232037,2.46368213640316,1.7267038603623708,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.04_Anger_label,Anger_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T06:22:25.388172,0.4163635026717629,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6867397582096275,3.754485955350637,1.937649595605624,1.4950775519913817,2.7063492063492065,3.461964439854464,0.552204643030026,6.517025661857829,2.552846580164548,1.8541385255403893,3.0444444444444443,3.814915496693679,0.6489437226435355,4.62596824937279,2.1508064183865527,1.6941967274306815,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.04_Anger_label,Anger_label,simple_features,regression,LGBMRegressor,15.0,252.0,90.0,90.0,2026-02-22T06:17:25.143379,0.3994799696656042,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.8280334270761764,2.0610533885252185,1.4356369278216614,1.0518321750004656,2.7063492063492065,3.461964439854464,0.7191038719008747,4.088044341337937,2.021891278317886,1.3736580292233798,3.0444444444444443,3.814915496693679,0.5375946082531449,6.093247147344732,2.4684503534291977,1.7854114497379858,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.04_Disgust_label,Disgust_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T07:02:27.584860,0.5972801995706872,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4794407446195106,7.268647970111584,2.69604302081988,2.1868770127483,2.9285714285714284,3.736730111666835,0.5072138282159854,8.398110609782366,2.897949380127673,2.412198839020514,3.188888888888889,4.128207694076462,0.4358690193621231,8.828023034782065,2.9711989221157955,2.439621875031459,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.04_Disgust_label,Disgust_label,complex_features,regression,RandomForestRegressor,93.0,252.0,90.0,90.0,2026-02-22T06:52:26.731646,0.5873376903122522,RandomForestRegressor,,,,,,,,,,,,,,,,,,,,,,0.4783362276637338,7.284070508171525,2.69890172258486,2.120138218390211,2.9285714285714284,3.736730111666835,0.5204475825008952,8.172579662221471,2.8587724047607344,2.214842285249884,3.188888888888889,4.128207694076462,0.4457352794830228,8.673627026401231,2.9451022098394533,2.259794896425787,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.04_Disgust_label,Disgust_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T06:57:26.884899,0.5820516599780007,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.5043870793780143,6.920318507845878,2.630649826154344,2.059471022500266,2.9285714285714284,3.736730111666835,0.5518862152183701,7.636799378400119,2.7634759594395097,2.1790805482176854,3.188888888888889,4.128207694076462,0.4815698508978365,8.112855799949857,2.848307532544521,2.218733893427262,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.04_Disgust_label,Disgust_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T06:47:26.472896,0.5926477885588214,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4920070971293842,7.093182080842481,2.6633028518819413,2.1226925798842013,2.9285714285714284,3.736730111666835,0.5044710346117756,8.444853569278505,2.906003022930036,2.313386033401477,3.188888888888889,4.128207694076462,0.4853075396630596,8.054365123761633,2.838021339553604,2.2283289094305827,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.04_Disgust_label,Disgust_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T06:42:26.233736,0.5760246176764063,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4715084808918021,7.379407373670079,2.716506464868081,2.128408446888568,2.9285714285714284,3.736730111666835,0.4916779965986996,8.662873786607273,2.943276029632164,2.3163843997864992,3.188888888888889,4.128207694076462,0.4662376211939442,8.352788159004989,2.8901190561990675,2.2612929332886846,3.1333333333333333,3.955867653105813, -Emotions_ready_data_gazes_0.04_Sadness_label,Sadness_label,all_features,regression,LGBMRegressor,183.0,252.0,90.0,90.0,2026-02-22T07:27:28.521168,0.4576755198148072,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.7631550263625791,3.062052240740838,1.7498720641066414,1.2971340232893454,3.007936507936508,3.595623512050894,0.7715258383663508,3.848774182808618,1.961829295022536,1.526919088810333,3.433333333333333,4.104333752944021,0.6073554461155378,6.041927140828797,2.4580331854612534,1.9061857402998752,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.04_Sadness_label,Sadness_label,complex_features,regression,LGBMRegressor,93.0,252.0,90.0,90.0,2026-02-22T07:17:28.117092,0.4295651423364183,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.8414506763126687,2.049806269513468,1.4317144511086934,1.0611234714784163,3.007936507936508,3.595623512050894,0.8461330118644363,2.5919748968036456,1.609961147606875,1.158946359755641,3.433333333333333,4.104333752944021,0.5530862592770349,6.877009328080381,2.622405256263872,1.847845096854356,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.04_Sadness_label,Sadness_label,distance_features,regression,XGBRegressor,27.0,252.0,90.0,90.0,2026-02-22T07:22:28.251140,0.4256182909011841,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.7269564867019653,3.530045384237676,1.87884150056296,1.3556778737240367,3.007936507936508,3.595623512050894,0.72201007604599,4.682895280422559,2.163999833739032,1.6132762823926492,3.433333333333333,4.104333752944021,0.5301869511604309,7.229378583687162,2.688750375859976,2.0361988933549986,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.04_Sadness_label,Sadness_label,extended_features,regression,LGBMRegressor,56.0,252.0,90.0,90.0,2026-02-22T07:12:27.902030,0.435855444318686,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.640598686340836,4.646522917138094,2.15557948522853,1.6894776588271243,3.007936507936508,3.595623512050894,0.6106469572642899,6.558868312129002,2.561028760504068,2.112915480434577,3.433333333333333,4.104333752944021,0.5744171357067478,6.548774541774723,2.559057354139356,2.009903062013122,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.04_Sadness_label,Sadness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T07:07:27.754193,0.402180189876014,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6161241949933838,4.962941585098451,2.22776605259584,1.621465922562954,3.007936507936508,3.595623512050894,0.5631737256586569,7.358581272543448,2.7126705057089864,2.122386874584534,3.433333333333333,4.104333752944021,0.6156720228418804,5.913953506291998,2.431862147880097,1.878775925701928,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.04_Tenderness_label,Tenderness_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T07:52:29.718835,0.7782190975291827,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3432887881092701,3.664641737039082,1.914325399987965,1.3277291348540514,1.3134920634920637,2.362264624189872,0.2942918816258402,3.127768080201524,1.768549710978327,1.2309660718782012,1.1111111111111112,2.1052550357218247,0.2338948562181362,6.694813147834005,2.587433699215113,1.5620988683089605,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.04_Tenderness_label,Tenderness_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T07:42:29.221817,0.745145127989544,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2977003342426603,3.9190387196726864,1.9796562124956665,1.363887334025424,1.3134920634920637,2.362264624189872,0.2933620566169831,3.131889156475348,1.7697144279446184,1.2321209818062309,1.1111111111111112,2.1052550357218247,0.2433039718748552,6.6125890931864495,2.5714954974073843,1.5737065444452074,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.04_Tenderness_label,Tenderness_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T07:47:29.382523,0.7541000750485388,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3276536818626682,3.751890229035092,1.9369796666550456,1.311185445956632,1.3134920634920637,2.362264624189872,0.2902394570406251,3.1457288262026624,1.7736202598647384,1.2163429180427163,1.1111111111111112,2.1052550357218247,0.2586158441792854,6.478782232791786,2.5453452089631745,1.5429605522692151,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.04_Tenderness_label,Tenderness_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T07:37:28.951498,0.776532834040787,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3340697506227993,3.7160866780367856,1.927715403797144,1.3246030500752597,1.3134920634920637,2.362264624189872,0.3284232947638669,2.976494286170023,1.7252519486063544,1.2165983582018778,1.1111111111111112,2.1052550357218247,0.2307185927836623,6.722569768938424,2.592791886931619,1.5912229138010756,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.04_Tenderness_label,Tenderness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T07:32:28.730957,0.7684614072072995,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.286955305394709,3.97899914134498,1.994742875998052,1.3558275680648495,1.3134920634920637,2.362264624189872,0.2697829067156866,3.2363942776428223,1.7989981316396142,1.2408527905206388,1.1111111111111112,2.1052550357218247,0.2484015407993083,6.568042634081698,2.562819274564966,1.5459367473292325,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.05_Anger_label,Anger_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T08:17:31.286902,0.4150938788409319,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7506968282599972,2.9879478211874857,1.7285681418988046,1.3400088320649166,2.7063492063492065,3.461964439854464,0.6576511087689494,4.982402060972983,2.2321294901893536,1.629539203318645,3.0444444444444443,3.814915496693679,0.5713253956804658,5.648766983537011,2.3767134836864563,1.8077902549648848,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.05_Anger_label,Anger_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T08:07:30.714192,0.4132557273053077,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7335857951234419,3.1930269375974336,1.7869042888743183,1.3523781951664833,2.7063492063492065,3.461964439854464,0.5754938731643113,6.17808398220967,2.4855751813633944,1.741238788878425,3.0444444444444443,3.814915496693679,0.6491271217465628,4.623551547315909,2.1502445319814,1.6434023585744126,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.05_Anger_label,Anger_label,distance_features,regression,ExtraTreesRegressor,27.0,252.0,90.0,90.0,2026-02-22T08:12:30.866082,0.3883637204156991,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6420176188787595,4.290489640501781,2.071349714679243,1.5699860831513222,2.7063492063492065,3.461964439854464,0.542472287290509,6.658666282104399,2.5804391645811764,1.84463370961469,3.0444444444444443,3.814915496693679,0.6440508699686357,4.690442758398482,2.1657430037745664,1.6823397084861644,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.05_Anger_label,Anger_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T08:02:30.272448,0.4149898334497267,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.7035326013103198,3.553220409453028,1.88499878234789,1.4507402211690974,2.7063492063492065,3.461964439854464,0.5638945889882929,6.346895095272107,2.51930448641527,1.8254955023994663,3.0444444444444443,3.814915496693679,0.5979766275855654,5.297576133089765,2.30164639618899,1.790527944776033,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.05_Anger_label,Anger_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T07:57:30.044620,0.380519315806068,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.764251045171582,2.82549785071094,1.6809217265271277,1.28648614677048,2.7063492063492065,3.461964439854464,0.6360004888880604,5.297496094804924,2.3016290089423457,1.6213190426752455,3.0444444444444443,3.814915496693679,0.5594364561880747,5.805430915099957,2.4094461843128925,1.804575110338992,3.422222222222222,3.6300528853747136, -Emotions_ready_data_gazes_0.05_Disgust_label,Disgust_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T08:42:32.378537,0.585376104605203,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.4784741312385259,7.421264494543944,2.724199789762848,2.1715757785508165,2.873015873015873,3.772254866459294,0.4092379533754428,9.897379354955426,3.1460100691122124,2.529252873834583,3.1555555555555554,4.093113759341851,0.3820085426194708,9.322439282206108,3.0532669850843552,2.360996922036029,3.3222222222222224,3.8839492437974856, -Emotions_ready_data_gazes_0.05_Disgust_label,Disgust_label,complex_features,regression,LGBMRegressor,93.0,252.0,90.0,90.0,2026-02-22T08:32:31.847641,0.58363592211651,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.6680813148727152,4.7231719470802105,2.173285979129348,1.6283529017035816,2.873015873015873,3.772254866459294,0.5733994573877689,7.147086424030893,2.673403528095019,1.9906304729412847,3.1555555555555554,4.093113759341851,0.4028669793074545,9.007788477210054,3.001297798821379,2.1830933745003214,3.3222222222222224,3.8839492437974856, -Emotions_ready_data_gazes_0.05_Disgust_label,Disgust_label,distance_features,regression,XGBRegressor,27.0,252.0,90.0,90.0,2026-02-22T08:37:31.974191,0.5631942749023438,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.5832734704017639,5.929979905614082,2.435155006486052,1.835720659366676,2.873015873015873,3.772254866459294,0.5983641147613525,6.728839634802004,2.5940007006171,2.0702927394045725,3.1555555555555554,4.093113759341851,0.3475751280784607,9.84186794846877,3.137175154254026,2.270846424334579,3.3222222222222224,3.8839492437974856, -Emotions_ready_data_gazes_0.05_Disgust_label,Disgust_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T08:27:31.660650,0.5806740087803909,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.534008335102054,6.631017950601824,2.575076299957309,2.013222314547138,2.873015873015873,3.772254866459294,0.410760778911347,9.871866575137604,3.1419526691434427,2.502094645884344,3.1555555555555554,4.093113759341851,0.4145384318573464,8.831723895034902,2.9718216458991784,2.231560316098846,3.3222222222222224,3.8839492437974856, -Emotions_ready_data_gazes_0.05_Disgust_label,Disgust_label,simple_features,regression,LGBMRegressor,15.0,252.0,90.0,90.0,2026-02-22T08:22:31.381008,0.5704987072850001,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.5403384799419713,6.540940579641566,2.5575262617696746,2.0283375273332744,2.873015873015873,3.772254866459294,0.4533469562183458,9.15839563621551,3.026284130119892,2.3995033159303083,3.1555555555555554,4.093113759341851,0.3874268373541284,9.24070397167116,3.0398526233472505,2.3058599123365675,3.3222222222222224,3.8839492437974856, -Emotions_ready_data_gazes_0.05_Sadness_label,Sadness_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T09:07:33.445766,0.4256177971343464,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6345704494993479,4.724459028024083,2.1735820729901327,1.650944928201809,3.007936507936508,3.595623512050894,0.5587023053600453,7.433904831595947,2.72651881189108,2.1487519460392592,3.433333333333333,4.104333752944021,0.6040997076719818,6.092025720500804,2.4682029334114333,1.8956603030592551,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.05_Sadness_label,Sadness_label,complex_features,regression,LGBMRegressor,93.0,252.0,90.0,90.0,2026-02-22T08:57:32.883070,0.4011504088146544,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.9981957792658104,0.0233258829903379,0.1527281342462414,0.1137131847980146,3.007936507936508,3.595623512050894,0.99774657946934,0.0379601207392618,0.1948335718998701,0.136628126909748,3.433333333333333,4.104333752944021,0.4931532427956419,7.799245267247951,2.792712886647668,2.020830678402846,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.05_Sadness_label,Sadness_label,distance_features,regression,LGBMRegressor,27.0,252.0,90.0,90.0,2026-02-22T09:02:32.978409,0.3898021787006791,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.8252503207403203,2.259252703268268,1.5030810700917858,1.0837110018316252,3.007936507936508,3.595623512050894,0.825799642604331,2.934501798306376,1.7130387614722489,1.2679535758288516,3.433333333333333,4.104333752944021,0.5425640667775203,7.038922487997913,2.6530967732063435,1.949546875727119,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.05_Sadness_label,Sadness_label,extended_features,regression,LGBMRegressor,56.0,252.0,90.0,90.0,2026-02-22T08:52:32.668347,0.4526145742656986,LGBMRegressor,,,,,,,,,,,,,,,,,,,,,,0.733754673952757,3.4421549450223474,1.855304542392528,1.3525087740580697,3.007936507936508,3.595623512050894,0.7229091459456223,4.667749375909357,2.1604974834304613,1.5357058093744744,3.433333333333333,4.104333752944021,0.6272243771233941,5.736188445797907,2.3950341220529423,1.7820465275003674,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.05_Sadness_label,Sadness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T08:47:32.543837,0.4169490228317316,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.6393824545694866,4.662246979859485,2.159223698429481,1.537040933451692,3.007936507936508,3.595623512050894,0.572579121092752,7.200142161236428,2.6833080630513577,1.9879383180058905,3.433333333333333,4.104333752944021,0.6317208128485685,5.666998292066861,2.3805457970950403,1.7330147971115604,3.7,3.922725809660647, -Emotions_ready_data_gazes_0.05_Tenderness_label,Tenderness_label,all_features,regression,ExtraTreesRegressor,183.0,252.0,90.0,90.0,2026-02-22T09:32:34.546237,0.7461747742145691,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3084349396078243,3.859136464100462,1.9644684940462809,1.3512595985259963,1.3134920634920637,2.362264624189872,0.2830073497694573,3.1777822399106777,1.7826335125063362,1.2197720630944546,1.1111111111111112,2.1052550357218247,0.2453806239642906,6.5944417176927965,2.5679645086513165,1.556196883689722,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.05_Tenderness_label,Tenderness_label,complex_features,regression,ExtraTreesRegressor,93.0,252.0,90.0,90.0,2026-02-22T09:22:34.089464,0.7405185284231153,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3342879405804158,3.714869113891684,1.92739957297175,1.277283597561593,1.3134920634920637,2.362264624189872,0.2815499528370303,3.184241567055632,1.7844443300522523,1.1975664349531,1.1111111111111112,2.1052550357218247,0.2839013824850307,6.257817844713529,2.501563080298702,1.4792596532303832,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.05_Tenderness_label,Tenderness_label,distance_features,regression,XGBRegressor,27.0,252.0,90.0,90.0,2026-02-22T09:27:34.183899,0.7327069640159607,XGBRegressor,,,,,,,,,,,,,,,,,,,,,,0.5443247556686401,2.5428023076553474,1.5946166647992073,1.073627239887765,1.3134920634920637,2.362264624189872,0.5620473623275757,1.9410491070351343,1.3932153842945945,0.9432437394435208,1.1111111111111112,2.1052550357218247,0.1436526775360107,7.483418821323562,2.7355838172725693,1.5847704887597098,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.05_Tenderness_label,Tenderness_label,extended_features,regression,ExtraTreesRegressor,56.0,252.0,90.0,90.0,2026-02-22T09:17:33.817229,0.7605371603291078,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.2804876751437216,4.015090420629319,2.0037690537158515,1.3898730683873903,1.3134920634920637,2.362264624189872,0.2855868456445138,3.1663496594274028,1.7794239684311894,1.2115949540882056,1.1111111111111112,2.1052550357218247,0.2497326740333337,6.556410172990679,2.56054880308708,1.5602818180204672,1.711111111111111,2.956140293033936, -Emotions_ready_data_gazes_0.05_Tenderness_label,Tenderness_label,simple_features,regression,ExtraTreesRegressor,15.0,252.0,90.0,90.0,2026-02-22T09:12:33.616292,0.7616373535184514,ExtraTreesRegressor,,,,,,,,,,,,,,,,,,,,,,0.3043436999767266,3.881966784699349,1.970270738933954,1.377271026637056,1.3134920634920637,2.362264624189872,0.3073933832895373,3.0697009308525454,1.7520562008259168,1.2229763275306254,1.1111111111111112,2.1052550357218247,0.2555656917915438,6.505436799040414,2.550575777945132,1.5724752064234788,1.711111111111111,2.956140293033936, diff --git a/experiments/collection_experiments/training.ipynb b/experiments/collection_experiments/training.ipynb deleted file mode 100644 index 67472a5..0000000 --- a/experiments/collection_experiments/training.ipynb +++ /dev/null @@ -1,151 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# ML & DL training\n", - "\n", - "Single notebook for **FLAML AutoML** (feature CSVs) and **DL training** (Parquet + splits).\n", - "\n", - "- **Data**: `eyefeatures.data` (Parquet + meta); split info from `collection_experiments` (e.g. `features_output/splits/`).\n", - "- **Training logic**: `utils/flaml_training.py`, `utils/dl_training_utils.py`.\n", - "\n", - "Run **create_splits** and **feature_extraction_all** first so splits and feature files exist." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "import sys\n", - "from pathlib import Path\n", - "\n", - "sys.path.insert(0, str(Path('.').resolve()))\n", - "\n", - "from utils.flaml_training import run_training_battery as run_flaml_battery, print_results_summary as print_flaml_summary\n", - "from utils.dl_training_utils import (\n", - " run_dl_training_battery,\n", - " print_results_summary as print_dl_summary,\n", - " ALL_REPRESENTATIONS,\n", - " DEFAULT_TIMESERIES_FEATURES,\n", - " DEFAULT_MAX_LENGTH,\n", - " DEFAULT_IMAGE_SHAPE,\n", - ")\n", - "\n", - "from utils.benchmark_utils import get_collection_dir, find_datasets_parquet, load_dataset_parquet\n", - "from utils.feature_extraction_utils import setup_paths" - ], - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "# Shared paths\n", - "paths = setup_paths(output_dir='features_output', splits_dir='features_output/splits')\n", - "COLLECTION_DIR = paths['collection_dir']\n", - "FEATURES_DIR = paths['output_dir']\n", - "SPLITS_DIR = paths['splits_dir']\n", - "\n", - "Path('flaml_results').mkdir(exist_ok=True)\n", - "Path('dl_results').mkdir(exist_ok=True)\n", - "\n", - "print(f\"Collection: {COLLECTION_DIR}\")\n", - "print(f\"Features: {FEATURES_DIR}\")\n", - "print(f\"Splits: {SPLITS_DIR}\")" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 1: ML (FLAML AutoML)\n", - "\n", - "Trains on precomputed feature train/val/test CSVs from `features_output/`." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "FLAML_RESULTS_FILE = Path('results') / 'flaml_results_all_batteries.csv'\n", - "TIME_BUDGET = 300\n", - "FEATURE_BATTERIES = ['simple_features', 'extended_features', 'complex_features', 'distance_features']\n", - "\n", - "results_flaml = run_flaml_battery(\n", - " FEATURES_DIR,\n", - " SPLITS_DIR,\n", - " FLAML_RESULTS_FILE,\n", - " FEATURE_BATTERIES,\n", - " time_budget=TIME_BUDGET,\n", - ")\n", - "\n", - "print_flaml_summary(results_flaml)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 2: DL training\n", - "\n", - "Uses Parquet datasets and split info; fit on 2d, timeseries, merged representations." - ] - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "DL_RESULTS_FILE = Path('results') / 'dl_training_results.csv'\n", - "load_func = load_dataset_parquet\n", - "\n", - "results_dl = run_dl_training_battery(\n", - " SPLITS_DIR,\n", - " DL_RESULTS_FILE,\n", - " find_datasets_parquet,\n", - " load_func,\n", - " dataset_types=['2d', 'timeseries', 'merged'],\n", - " representations=ALL_REPRESENTATIONS,\n", - " cnn_architecture='large_resnet',\n", - " max_epochs=30,\n", - " batch_size=32,\n", - " image_shape=DEFAULT_IMAGE_SHAPE,\n", - " timeseries_features=DEFAULT_TIMESERIES_FEATURES,\n", - " max_length=DEFAULT_MAX_LENGTH,\n", - " skip_existing=True,\n", - ")\n", - "\n", - "print_dl_summary(results_dl)" - ], - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "eyefeatures-dev", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.0" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/experiments/collection_experiments/utils/__init__.py b/experiments/collection_experiments/utils/__init__.py deleted file mode 100644 index be2bf12..0000000 --- a/experiments/collection_experiments/utils/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Collection experiment utilities: benchmark_utils, feature_extraction_utils, distance_extraction_utils, -# split_utils, training_common, flaml_training, dl_training_utils. diff --git a/experiments/collection_experiments/utils/benchmark_utils.py b/experiments/collection_experiments/utils/benchmark_utils.py deleted file mode 100644 index 3c87eee..0000000 --- a/experiments/collection_experiments/utils/benchmark_utils.py +++ /dev/null @@ -1,420 +0,0 @@ -""" -Shared collection utilities using eyefeatures.data (Parquet + meta.json). - -- Load data via eyefeatures.data.load_dataset / list_datasets -- Resolve split groups from data/collection/meta.json (labels[*].splitting_column) -- Create and apply train/val/test splits by group (no CSV) -""" - -from __future__ import annotations - -import json -from pathlib import Path -from typing import Any - -import pandas as pd -from sklearn.model_selection import train_test_split - -from eyefeatures.data import ( - list_datasets as _list_datasets, - load_dataset, -) - - -def get_collection_dir() -> Path: - """Return collection root (Parquet + meta.json).""" - return Path(__file__).resolve().parent.parent.parent.parent / "data" / "collection" - - -def list_datasets( - *, - dataset_type: str | None = "fixation", - include_extensive_collection: bool = True, - extracted_fixations_only: bool = False, - extensive_collection_only: bool = False, - subdir: str | None = None, -) -> list[str]: - """ - List dataset names from the benchmark (Parquet). Uses eyefeatures.data.list_datasets. - Default: fixation datasets only (same as old experiments that skipped gaze). - subdir: optional subfolder of benchmark root (e.g. 'extracted_fixations'). - """ - bdir = get_collection_dir() if subdir is None else get_collection_dir() / subdir - return _list_datasets( - bdir, - include_extensive_collection=include_extensive_collection, - extensive_collection_only=extensive_collection_only, - extracted_fixations_only=extracted_fixations_only, - include_extracted_fixations=not extensive_collection_only, - dataset_type=dataset_type, - ) - - -def load_dataset_with_meta( - dataset_name: str, - *, - normalize: bool = True, -) -> tuple[pd.DataFrame, dict[str, Any]]: - """ - Load one dataset and its meta using eyefeatures.data. - Returns (df, meta_info) with meta_info['pk'], 'labels', 'meta', 'info' (from meta.json). - """ - bdir = get_collection_dir() - df, meta_info = load_dataset(dataset_name, collection_dir=bdir, normalize=normalize) - df = ensure_duration(df) - return df, meta_info - - -def ensure_duration(df: pd.DataFrame) -> pd.DataFrame: - """Add 'duration' column if missing but timestamp_start/timestamp_end or start_time/end_time exist.""" - if "duration" in df.columns: - return df - df = df.copy() - if "timestamp_start" in df.columns and "timestamp_end" in df.columns: - df["duration"] = df["timestamp_end"] - df["timestamp_start"] - elif "start_time" in df.columns and "end_time" in df.columns: - df["duration"] = df["end_time"] - df["start_time"] - return df - - -def col_info_from_meta(df: pd.DataFrame, meta_info: dict[str, Any]) -> dict[str, Any]: - """Build extractor-friendly col_info from loaded df and meta_info (x, y, t, duration, pk).""" - pk = meta_info.get("pk") or [c for c in df.columns if c.startswith("group_")] - x_col = ( - "norm_pos_x" - if "norm_pos_x" in df.columns - else ("x" if "x" in df.columns else None) - ) - y_col = ( - "norm_pos_y" - if "norm_pos_y" in df.columns - else ("y" if "y" in df.columns else None) - ) - t_col = ( - "timestamp" - if "timestamp" in df.columns - else ("timestamp_start" if "timestamp_start" in df.columns else None) - ) - duration_col = "duration" if "duration" in df.columns else None - return { - "x_col": x_col, - "y_col": y_col, - "t_col": t_col, - "duration": duration_col, - "group_cols": pk, - "has_duration": duration_col is not None, - } - - -def get_split_group_cols_from_meta( - meta_info: dict[str, Any], - label_col: str, -) -> list[str] | None: - """ - Get the list of group columns to use for splitting for a given label. - Reads from meta_info['info']['labels'][label_col]['splitting_column']. - Meta stores a single column name; returns [splitting_column]. - Returns None if no meta or label/splitting_column missing. - """ - info = meta_info.get("info") or {} - labels = info.get("labels") or {} - label_meta = labels.get(label_col) - if not label_meta: - return None - col = label_meta.get("splitting_column") - if not col: - return None - return [col] if isinstance(col, str) else list(col) - - -def create_composite_index(df: pd.DataFrame, pk_cols: list[str]) -> pd.Series: - """Composite index from pk columns (e.g. group_subject_group_trial -> 's1_t1').""" - if not pk_cols: - raise ValueError("pk_cols must be non-empty") - if len(pk_cols) == 1: - return df[pk_cols[0]].astype(str) - return df[pk_cols].astype(str).agg("_".join, axis=1) - - -def create_split_info( - df: pd.DataFrame, - pk_cols: list[str], - split_group_cols: list[str], - label_col: str | None = None, - *, - test_size: float = 0.2, - val_size: float = 0.2, - random_state: int = 42, -) -> dict[str, Any]: - """ - Create train/val/test split info by splitting at group level, then mapping to scanpath indexes. - split_group_cols: columns that define the split unit (e.g. [group_subject]). - Returns dict with 'train', 'val', 'test' (lists of composite pk strings), 'split_pk', 'label_col'. - """ - if not split_group_cols or not pk_cols: - raise ValueError("pk_cols and split_group_cols must be non-empty") - # Group-level id - df = df.copy() - df["_split_group_"] = create_composite_index(df, split_group_cols) - groups = df["_split_group_"].unique().tolist() - # First split: test - groups_train_val, groups_test = train_test_split( - groups, test_size=test_size, random_state=random_state - ) - # Second split: train / val - val_ratio = val_size / (1 - test_size) if test_size < 1 else 0.0 - groups_train, groups_val = train_test_split( - groups_train_val, test_size=val_ratio, random_state=random_state - ) - # Scanpath-level composite index - full_index = create_composite_index(df, pk_cols) - train_idx = set( - full_index[df["_split_group_"].isin(groups_train)].unique().tolist() - ) - val_idx = set(full_index[df["_split_group_"].isin(groups_val)].unique().tolist()) - test_idx = set(full_index[df["_split_group_"].isin(groups_test)].unique().tolist()) - split_pk = ( - split_group_cols[0] - if len(split_group_cols) == 1 - else "_".join(split_group_cols) - ) - return { - "train": sorted(train_idx), - "val": sorted(val_idx), - "test": sorted(test_idx), - "split_pk": split_pk, - "label_col": label_col, - } - - -def create_and_save_splits_for_dataset( - dataset_name: str, - df: pd.DataFrame, - meta_info: dict[str, Any], - splits_dir: Path, - *, - test_size: float = 0.2, - val_size: float = 0.2, - random_state: int = 42, - overwrite: bool = False, -) -> tuple[Path, list[tuple[str, Path]]]: - """ - Create per-label train/val/test split info from meta and save to splits_dir. - Saves {dataset_name}_labels.csv (full) and {dataset_name}_{label}_split_info.json per label. - Returns (labels_path, [(label_col, split_info_path), ...]). - """ - pk_cols = meta_info.get("pk") or [] - label_cols = meta_info.get("labels") or [] - if not pk_cols: - pk_cols = [c for c in df.columns if c.startswith("group_")] - if not pk_cols: - raise ValueError(f"No pk columns for dataset {dataset_name}") - - info = meta_info.get("info") or {} - meta_labels = (info.get("labels") or {}).keys() - labels_to_use = [c for c in label_cols if c in meta_labels] or label_cols - - # Full labels CSV (pk + label columns) - cols_to_save = [c for c in pk_cols + label_cols if c in df.columns] - labels_df = df[cols_to_save].drop_duplicates() - labels_df["index"] = create_composite_index(labels_df, pk_cols) - labels_path = splits_dir / f"{dataset_name}_labels.csv" - labels_df.to_csv(labels_path, index=False) - - split_info_paths: list[tuple[str, Path]] = [] - for label_col in labels_to_use: - # Per-label labels file so FLAML can find {dataset}_{label}_labels.csv - if label_col in labels_df.columns: - per_label_path = splits_dir / f"{dataset_name}_{label_col}_labels.csv" - labels_df[["index", label_col]].drop_duplicates().to_csv( - per_label_path, index=False - ) - split_group_cols = get_split_group_cols_from_meta(meta_info, label_col) - if not split_group_cols: - split_group_cols = pk_cols - split_info_path = splits_dir / f"{dataset_name}_{label_col}_split_info.json" - if split_info_path.exists() and not overwrite: - split_info_paths.append((label_col, split_info_path)) - continue - split_info = create_split_info( - df, - pk_cols, - split_group_cols, - label_col=label_col, - test_size=test_size, - val_size=val_size, - random_state=random_state, - ) - split_info_path.parent.mkdir(parents=True, exist_ok=True) - with open(split_info_path, "w", encoding="utf-8") as f: - json.dump(split_info, f, indent=2) - split_info_paths.append((label_col, split_info_path)) - return labels_path, split_info_paths - - -def load_split_info(split_info_path: str | Path) -> dict[str, Any]: - """Load split info from JSON.""" - with open(split_info_path, encoding="utf-8") as f: - return json.load(f) - - -def save_split_info(split_info: dict[str, Any], output_path: str | Path) -> None: - """Save split info to JSON.""" - output_path = Path(output_path) - output_path.parent.mkdir(parents=True, exist_ok=True) - with open(output_path, "w", encoding="utf-8") as f: - json.dump(split_info, f, indent=2, default=str) - - -def split_dataframe_by_split_info( - df: pd.DataFrame, - pk_cols: list[str], - split_info: dict[str, Any], -) -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: - """ - Split a raw DataFrame into train/val/test by composite index (e.g. for distance features: - fit on train, then transform train/val/test). Returns (train_df, val_df, test_df). - """ - df = df.copy() - df["_idx_"] = create_composite_index(df, pk_cols) - train_set = set(split_info["train"]) - val_set = set(split_info["val"]) - test_set = set(split_info["test"]) - train_df = df[df["_idx_"].isin(train_set)].drop(columns=["_idx_"], errors="ignore") - val_df = df[df["_idx_"].isin(val_set)].drop(columns=["_idx_"], errors="ignore") - test_df = df[df["_idx_"].isin(test_set)].drop(columns=["_idx_"], errors="ignore") - return train_df, val_df, test_df - - -def get_path_pk_for_split_id( - split_id: str, - pk_cols: list[str], - path_pk_per_label: dict[str, list[str]] | None = None, -) -> list[str]: - """ - Return path_pk (group columns for expected/reference path) for this split_id. - From old notebook: PATH_PK_PER_LABEL[split_id]; default = full pk. Independent of split. - """ - if path_pk_per_label and split_id in path_pk_per_label: - return list(path_pk_per_label[split_id]) - return list(pk_cols) - - -def get_split_info_paths_for_dataset(splits_dir: Path, dataset_name: str) -> list[Path]: - """Return list of split info JSON paths for this dataset (exact or {dataset}_*_split_info.json).""" - exact = splits_dir / f"{dataset_name}_split_info.json" - if exact.exists(): - return [exact] - return sorted(splits_dir.glob(f"{dataset_name}_*_split_info.json")) - - -def apply_split_to_features( - features_df: pd.DataFrame, - split_info: dict[str, Any], - index_column: str | None = None, -) -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: - """ - Apply pre-defined split to features DataFrame. split_info has 'train', 'val', 'test' lists. - Returns (train_features, val_features, test_features). - """ - for key in ("train", "val", "test"): - if key not in split_info: - raise ValueError( - f"split_info must contain 'train', 'val', 'test'; missing '{key}'" - ) - train_indexes = set(split_info["train"]) - val_indexes = set(split_info["val"]) - test_indexes = set(split_info["test"]) - if index_column is not None: - if index_column not in features_df.columns: - raise ValueError(f"Index column '{index_column}' not found") - match_values = features_df[index_column].astype(str) - elif "index" in features_df.columns: - match_values = features_df["index"].astype(str) - else: - match_values = features_df.index.astype(str) - train_mask = match_values.isin(train_indexes) - val_mask = match_values.isin(val_indexes) - test_mask = match_values.isin(test_indexes) - n_matched = train_mask.sum() + val_mask.sum() + test_mask.sum() - if n_matched == 0: - raise ValueError( - "No rows matched split indexes. " - f"Sample split: {list(train_indexes)[:3]}, sample df: {match_values.head(3).tolist()}" - ) - return ( - features_df[train_mask].copy(), - features_df[val_mask].copy(), - features_df[test_mask].copy(), - ) - - -def apply_split_to_labels( - labels_df: pd.DataFrame, - split_info: dict[str, Any], - index_column: str = "index", -) -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: - """Apply pre-defined split to labels DataFrame. Returns (train_labels, val_labels, test_labels).""" - if index_column not in labels_df.columns: - raise ValueError( - f"Index column '{index_column}' not found. Columns: {list(labels_df.columns)}" - ) - train_indexes = set(split_info["train"]) - val_indexes = set(split_info["val"]) - test_indexes = set(split_info["test"]) - match_values = labels_df[index_column].astype(str) - return ( - labels_df[match_values.isin(train_indexes)].copy(), - labels_df[match_values.isin(val_indexes)].copy(), - labels_df[match_values.isin(test_indexes)].copy(), - ) - - -# --------------------------------------------------------------------------- -# DL training adapters (Parquet; for run_dl_training_battery find/load_func) -# --------------------------------------------------------------------------- - - -def find_datasets_parquet( - include_extensive_collection: bool = True, - subdir: str | None = None, - **kwargs, -) -> dict[str, list[Path]]: - """ - Return structure {'fixation': [Path(...), ...], ...} for DL training battery. - Paths are dummy (stem = dataset name) so load_dataset_parquet can use path.stem. - subdir: optional subfolder of benchmark root (e.g. 'extracted_fixations'). - """ - names = list_datasets( - dataset_type="fixation", - include_extensive_collection=include_extensive_collection, - subdir=subdir, - **kwargs, - ) - prefix = f"/x/{subdir}/" if subdir else "/x/" - return { - "fixation": [Path(f"{prefix}{n}.parquet") for n in names], - "unknown": [], - "skip": [], - "gaze": [], - "saccade": [], - } - - -def load_dataset_parquet( - dataset_path: Path, -) -> tuple[pd.DataFrame, dict[str, Any], str]: - """ - Load one dataset by name (dataset_path.stem) using eyefeatures.data. - Returns (df, col_info, 'fixation') for compatibility with run_dl_training_battery. - """ - name = dataset_path.stem - parts = getattr(dataset_path, "parts", ()) or () - if len(parts) >= 2 and parts[1] == "extracted_fixations": - bdir = get_collection_dir() / "extracted_fixations" - df, meta_info = load_dataset(name, collection_dir=bdir, normalize=True) - df = ensure_duration(df) - else: - df, meta_info = load_dataset_with_meta(name) - col_info = col_info_from_meta(df, meta_info) - return df, col_info, "fixation" diff --git a/experiments/collection_experiments/utils/distance_extraction_utils.py b/experiments/collection_experiments/utils/distance_extraction_utils.py deleted file mode 100644 index 3a0987f..0000000 --- a/experiments/collection_experiments/utils/distance_extraction_utils.py +++ /dev/null @@ -1,253 +0,0 @@ -""" -Distance-feature pipeline: split data first, then fit on train only and transform train/val/test. -Uses path_pk per split for expected-path computation. Saves one train/val/test set per split_id. -""" - -from __future__ import annotations - -from pathlib import Path -from typing import Any - -import pandas as pd - -from eyefeatures.features.dist import ( - MultiMatchDist, - SimpleDistances, - TDEDist, -) - -from .benchmark_utils import ( - create_composite_index, - get_path_pk_for_split_id, - get_split_info_paths_for_dataset, - load_split_info, - split_dataframe_by_split_info, -) - -SIMPLE_DISTANCE_METHODS = ["euc", "hau", "dtw", "man", "eye", "dfr"] -ADVANCED_DISTANCE_METHODS = ["tde", "multimatch"] -EXPECTED_PATH_METHODS = ["mean", "fwp"] - - -def _create_composite_index_for_features(source_df: pd.DataFrame, pk: list[str]): - """Composite index for feature rows: one per unique group in source_df (order preserved).""" - comp = create_composite_index(source_df, pk) - return comp.drop_duplicates(keep="first").values - - -def run_distance_extraction_for_split( - train_df: pd.DataFrame, - val_df: pd.DataFrame, - test_df: pd.DataFrame, - split_id: str, - path_pk: list[str], - pk: list[str], - col_info: dict[str, Any], - output_dir: Path, - *, - simple_methods: list[str] = None, - advanced_methods: list[str] = None, - expected_path_methods: list[str] = None, - tde_k: int = 1, -) -> dict[str, Any]: - """ - Fit distance transformers on train only, transform train/val/test. Combine all - method×expected_path combinations, add index, save to output_dir. Returns result dict. - """ - if simple_methods is None: - simple_methods = SIMPLE_DISTANCE_METHODS - if advanced_methods is None: - advanced_methods = ADVANCED_DISTANCE_METHODS - if expected_path_methods is None: - expected_path_methods = EXPECTED_PATH_METHODS - - x_col = col_info["x_col"] - y_col = col_info["y_col"] - has_duration = ( - col_info.get("has_duration", False) and "duration" in train_df.columns - ) - - train_frames: list[pd.DataFrame] = [] - val_frames: list[pd.DataFrame] = [] - test_frames: list[pd.DataFrame] = [] - successful: list[str] = [] - - for ep_method in expected_path_methods: - for d_method in simple_methods: - try: - trans = SimpleDistances( - methods=[d_method], - x=x_col, - y=y_col, - pk=pk, - path_pk=path_pk, - expected_paths_method=ep_method, - return_df=True, - ) - trans.fit(train_df) - t_f = trans.transform(train_df) - v_f = trans.transform(val_df) - s_f = trans.transform(test_df) - if t_f is not None and len(t_f) > 0: - successful.append(f"{d_method}_{ep_method}") - train_frames.append(t_f) - val_frames.append(v_f) - test_frames.append(s_f) - except Exception: - pass - - for ep_method in expected_path_methods: - for d_method in advanced_methods: - if d_method in ("scanmatch", "multimatch") and not has_duration: - continue - try: - if d_method == "tde": - trans = TDEDist( - k=tde_k, - x=x_col, - y=y_col, - pk=pk, - path_pk=path_pk, - expected_paths_method=ep_method, - return_df=True, - ) - elif d_method == "multimatch": - trans = MultiMatchDist( - x=x_col, - y=y_col, - duration="duration", - pk=pk, - path_pk=path_pk, - expected_paths_method=ep_method, - return_df=True, - ) - else: - continue - trans.fit(train_df) - t_f = trans.transform(train_df) - v_f = trans.transform(val_df) - s_f = trans.transform(test_df) - if t_f is not None and len(t_f) > 0: - successful.append(f"{d_method}_{ep_method}") - train_frames.append(t_f) - val_frames.append(v_f) - test_frames.append(s_f) - except Exception: - pass - - if not train_frames: - return { - "status": "skipped", - "reason": "No distance features computed", - "split_id": split_id, - } - - train_out = pd.concat(train_frames, axis=1) - val_out = pd.concat(val_frames, axis=1) - test_out = pd.concat(test_frames, axis=1) - - train_out["index"] = _create_composite_index_for_features(train_df, pk) - val_out["index"] = _create_composite_index_for_features(val_df, pk) - test_out["index"] = _create_composite_index_for_features(test_df, pk) - - train_path = output_dir / f"{split_id}_distance_features_train.csv" - val_path = output_dir / f"{split_id}_distance_features_val.csv" - test_path = output_dir / f"{split_id}_distance_features_test.csv" - train_out.to_csv(train_path, index=True) - val_out.to_csv(val_path, index=True) - test_out.to_csv(test_path, index=True) - - return { - "status": "success", - "split_id": split_id, - "n_train_scanpaths": len(train_out), - "n_val_scanpaths": len(val_out), - "n_test_scanpaths": len(test_out), - "num_features": train_out.shape[1] - 1, - "combinations": successful, - "train_output_path": str(train_path), - "val_output_path": str(val_path), - "test_output_path": str(test_path), - } - - -def extract_and_save_distance_features( - df: pd.DataFrame, - dataset_name: str, - meta_info: dict[str, Any], - col_info: dict[str, Any], - paths: dict[str, Path], - *, - simple_methods: list[str] = None, - advanced_methods: list[str] = None, - expected_path_methods: list[str] = None, - path_pk_per_label: dict[str, list[str]] | None = None, - check_cache_per_split: bool = True, -) -> list[dict[str, Any]]: - """ - For each split: split df into train/val/test; path_pk (reference path grouping) from - path_pk_per_label[split_id] (old notebook PATH_PK_PER_LABEL), default = full pk. - Fit on train, transform all. Returns list of result dicts (one per split_id). - """ - pk = col_info["group_cols"] - splits_dir = paths["splits_dir"] - output_dir = paths["output_dir"] - split_paths = get_split_info_paths_for_dataset(splits_dir, dataset_name) - if not split_paths: - return [{"dataset": dataset_name, "status": "error", "error": "No split info"}] - - results: list[dict[str, Any]] = [] - for split_path in split_paths: - split_id = split_path.stem.replace("_split_info", "") - path_pk = get_path_pk_for_split_id(split_id, pk, path_pk_per_label) - missing = [c for c in path_pk if c not in df.columns] - if missing: - results.append( - { - "dataset": dataset_name, - "split_id": split_id, - "status": "error", - "error": f"path_pk columns missing: {missing}", - } - ) - continue - - if check_cache_per_split: - t_p = output_dir / f"{split_id}_distance_features_train.csv" - v_p = output_dir / f"{split_id}_distance_features_val.csv" - s_p = output_dir / f"{split_id}_distance_features_test.csv" - if t_p.exists() and v_p.exists() and s_p.exists(): - tr = pd.read_csv(t_p, index_col=0) - results.append( - { - "dataset": dataset_name, - "status": "cached", - "split_id": split_id, - "n_train_scanpaths": len(tr), - "n_val_scanpaths": len(pd.read_csv(v_p, index_col=0)), - "n_test_scanpaths": len(pd.read_csv(s_p, index_col=0)), - "num_features": tr.shape[1] - 1, - } - ) - print(f" Cached: {split_id}") - continue - - split_info = load_split_info(split_path) - train_df, val_df, test_df = split_dataframe_by_split_info(df, pk, split_info) - print(f" Split: {split_id} (path_pk: {path_pk})") - res = run_distance_extraction_for_split( - train_df, - val_df, - test_df, - split_id, - path_pk, - pk, - col_info, - output_dir, - simple_methods=simple_methods, - advanced_methods=advanced_methods, - expected_path_methods=expected_path_methods, - ) - res["dataset"] = dataset_name - results.append(res) - return results diff --git a/experiments/collection_experiments/utils/dl_training_utils.py b/experiments/collection_experiments/utils/dl_training_utils.py deleted file mode 100644 index 8db43a0..0000000 --- a/experiments/collection_experiments/utils/dl_training_utils.py +++ /dev/null @@ -1,1256 +0,0 @@ -""" -Deep Learning Training Utilities for Eye Features Benchmark. - -Uses find_datasets_parquet and load_dataset_parquet from utils.benchmark_utils. -splits_dir: create_splits output; get_split_info_paths_for_dataset(splits_dir, dataset_name) finds - {dataset_name}_split_info.json or {dataset_name}_*_split_info.json (per-label splits). -load_dataset_func(dataset_path) receives Path with .stem = dataset name; returns (df, col_info, type). -""" - -import gc -import warnings -from pathlib import Path -from typing import Any - -import matplotlib - -matplotlib.use("Agg") # Use non-interactive backend to prevent figure accumulation -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd -import pytorch_lightning as pl -import torch -from sklearn.metrics import ( - accuracy_score, - f1_score, - mean_absolute_error, - mean_squared_error, - precision_score, - r2_score, - recall_score, -) -from sklearn.preprocessing import LabelEncoder -from torch import nn -from torch.utils.data import DataLoader, Subset -from tqdm import tqdm - -from eyefeatures.deep.datasets import ( - Dataset2D, - DatasetTimeSeries, - TimeSeries_2D_Dataset, -) -from eyefeatures.deep.models import ( - Classifier, - Regressor, - SimpleRNN, - VitNet, - create_simple_CNN, -) -from eyefeatures.utils import _split_dataframe - -from .benchmark_utils import get_collection_dir, get_split_info_paths_for_dataset -from .training_common import ( - SKIP_DATASET_SUBSTRINGS, - get_task_type, - get_task_type_for_dataset_label, -) - -# ============================================================================ -# Configuration -# ============================================================================ - -DEFAULT_IMAGE_SHAPE = (100, 100) -ALL_REPRESENTATIONS = [ - "heatmap_fixed", - "heatmap_zoomed", - "baseline_fixed", - "baseline_zoomed", - "gaf_fixed", - "mtf_fixed", # GAF/MTF have no zoom variant -] -DEFAULT_TIMESERIES_FEATURES = ["duration"] -DEFAULT_MAX_LENGTH = 300 - -# CNN architecture options -CNN_ARCHITECTURES = { - "large_resnet": { - 0: {"type": "Resnet_block", "params": {"out_channels": 32}}, - 1: {"type": "MaxPool2d", "params": {"kernel_size": 2, "stride": 2}}, - 2: {"type": "Resnet_block", "params": {"out_channels": 64}}, - 3: {"type": "MaxPool2d", "params": {"kernel_size": 2, "stride": 2}}, - 4: {"type": "Resnet_block", "params": {"out_channels": 128}}, - 5: {"type": "Resnet_block", "params": {"out_channels": 256}}, - 6: {"type": "Resnet_block", "params": {"out_channels": 256}}, - } -} - - -# ============================================================================ -# Model Wrappers -# ============================================================================ - - -class DictWrapperRNN(nn.Module): - """Wrapper to make RNN models accept dict inputs.""" - - def __init__(self, rnn): - super().__init__() - self.rnn = rnn - - def forward(self, sequences=None, lengths=None, **kwargs): - if sequences is None: - sequences = kwargs.get("sequences") - if lengths is None: - lengths = kwargs.get("lengths") - # Ensure lengths is on CPU (required by pack_padded_sequence) - if lengths is not None and hasattr(lengths, "is_cuda") and lengths.is_cuda: - lengths = lengths.cpu() - return self.rnn(sequences, lengths) - - -class DictWrapperVitNet(nn.Module): - """Wrapper to make VitNet models accept dict inputs.""" - - def __init__(self, vitnet): - super().__init__() - self.vitnet = vitnet - - def forward(self, images=None, sequences=None, lengths=None, **kwargs): - if images is None: - images = kwargs.get("images") - if sequences is None: - sequences = kwargs.get("sequences") - if lengths is None: - lengths = kwargs.get("lengths") - # Ensure lengths is on CPU (required by pack_padded_sequence) - if lengths is not None and hasattr(lengths, "is_cuda") and lengths.is_cuda: - lengths = lengths.cpu() - return self.vitnet(images, sequences, lengths) - - -# ============================================================================ -# Label Preparation -# ============================================================================ - - -def prepare_labels( - df: pd.DataFrame, col_info: dict, pk: list[str] -) -> tuple[pd.DataFrame, list[str]]: - """Extract labels and encode string labels to numeric class IDs. - - Args: - df: Input dataframe - col_info: Column information dictionary with 'label_cols' - pk: Primary key columns for grouping - - Returns: - Tuple of (Y dataframe with pk columns and 'label' column, pk columns list) - - Raises: - ValueError: If label_cols or pk are not provided - """ - label_cols = col_info.get("label_cols", []) - if not label_cols: - raise ValueError("label_cols must be provided") - - if not pk or len(pk) == 0: - raise ValueError("pk (group_cols) must be provided") - - label_col = label_cols[0] - cols_to_select = pk.copy() - if label_col not in cols_to_select: - cols_to_select.append(label_col) - - Y = df[cols_to_select].drop_duplicates() - - # Handle duplicate columns - if Y.columns.tolist().count(label_col) > 1: - Y = Y.loc[:, ~Y.columns.duplicated()].copy() - if label_col != "label": - Y = Y.rename(columns={label_col: "label"}) - - # Handle DataFrame instead of Series for label column - if isinstance(Y["label"], pd.DataFrame): - label_series = Y["label"].iloc[:, 0] - Y = Y.drop(columns="label") - Y["label"] = label_series - - # Validate pk columns exist - for col in pk: - if col not in Y.columns: - raise ValueError(f"Primary key column '{col}' is missing from Y") - - # Convert labels to numeric - if Y["label"].dtype == "object" or Y["label"].dtype.name == "object": - unique_labels = sorted(Y["label"].unique()) - label_to_id = {label: idx for idx, label in enumerate(unique_labels)} - Y["label"] = Y["label"].map(label_to_id).astype(int) - elif not pd.api.types.is_numeric_dtype(Y["label"]): - try: - Y["label"] = pd.to_numeric(Y["label"], errors="coerce").astype(int) - except Exception: - unique_labels = sorted(Y["label"].unique()) - label_to_id = {label: idx for idx, label in enumerate(unique_labels)} - Y["label"] = Y["label"].map(label_to_id).astype(int) - else: - Y["label"] = Y["label"].astype(int) - - return Y, pk - - -# ============================================================================ -# Split Utilities -# ============================================================================ - - -def get_split_indices( - df: pd.DataFrame, pk_cols: list[str], split_info: dict[str, Any] -) -> tuple[list[int], list[int], list[int]]: - """Map split info composite indexes to dataset indices. - - Args: - df: Input DataFrame - pk_cols: Primary key column names - split_info: Dictionary with 'train', 'val', 'test' composite indexes - - Returns: - Tuple of (train_indices, val_indices, test_indices) - """ - # Get split indexes from split_info - train_indexes = set(split_info.get("train", split_info.get("train_indexes", []))) - val_indexes = set(split_info.get("val", split_info.get("val_indexes", []))) - test_indexes = set(split_info.get("test", split_info.get("test_indexes", []))) - - # Group DataFrame by pk to get scanpath-level mapping - groups = list(_split_dataframe(df, pk_cols, encode=True)) - group_to_idx = {} - for idx, (group_id, _) in enumerate(groups): - if isinstance(group_id, str): - composite_pk = group_id - elif isinstance(group_id, tuple): - composite_pk = "_".join(str(g) for g in group_id) - else: - composite_pk = str(group_id) - group_to_idx[composite_pk] = idx - - # Map split indexes to dataset indices - train_indices = [group_to_idx[pk] for pk in train_indexes if pk in group_to_idx] - val_indices = [group_to_idx[pk] for pk in val_indexes if pk in group_to_idx] - test_indices = [group_to_idx[pk] for pk in test_indexes if pk in group_to_idx] - - return train_indices, val_indices, test_indices - - -# ============================================================================ -# Dataset Creation -# ============================================================================ - - -def create_2d_dataset( - df: pd.DataFrame, - Y: pd.DataFrame, - x_col: str, - y_col: str, - pk: list[str], - rep_type: str, - image_shape: tuple[int, int] = DEFAULT_IMAGE_SHAPE, -) -> Dataset2D: - """Create a 2D dataset for a single representation type. - - Args: - df: Input DataFrame with fixation data - Y: Labels DataFrame - x_col: X coordinate column name - y_col: Y coordinate column name - pk: Primary key columns - rep_type: Representation type (e.g., 'heatmap_fixed') - image_shape: Shape of output images - - Returns: - Dataset2D instance - """ - dataset = Dataset2D( - df, Y, x=x_col, y=y_col, pk=pk, shape=image_shape, representations=[rep_type] - ) - # Clear matplotlib figures to prevent memory accumulation - plt.close("all") - return dataset - - -def create_timeseries_dataset( - df: pd.DataFrame, - Y: pd.DataFrame, - x_col: str, - y_col: str, - pk: list[str], - features: list[str] | None = None, - max_length: int = DEFAULT_MAX_LENGTH, -) -> DatasetTimeSeries: - """Create a TimeSeries dataset. - - Args: - df: Input DataFrame with fixation data - Y: Labels DataFrame - x_col: X coordinate column name - y_col: Y coordinate column name - pk: Primary key columns - features: List of additional features (e.g., ['duration']) - max_length: Maximum sequence length - - Returns: - DatasetTimeSeries instance - """ - # Validate features exist - if features is not None: - valid_features = [f for f in features if f in df.columns] - if len(valid_features) != len(features): - missing = set(features) - set(valid_features) - warnings.warn( - f"Features {missing} not found in DataFrame, using only {valid_features or 'coordinates'}" - ) - features = valid_features if valid_features else None - - return DatasetTimeSeries( - df, Y, x=x_col, y=y_col, pk=pk, features=features, max_length=max_length - ) - - -def create_merged_dataset( - dataset_2d: Dataset2D, dataset_ts: DatasetTimeSeries -) -> TimeSeries_2D_Dataset: - """Create a merged dataset combining 2D and TimeSeries. - - Args: - dataset_2d: 2D dataset - dataset_ts: TimeSeries dataset - - Returns: - TimeSeries_2D_Dataset instance - """ - return TimeSeries_2D_Dataset(dataset_2d, dataset_ts) - - -# ============================================================================ -# Model Creation -# ============================================================================ - - -def create_cnn_backbone( - in_channels: int, cnn_architecture: str = "small_vgg" -) -> nn.Module: - """Create CNN backbone based on architecture configuration. - - Args: - in_channels: Number of input channels - cnn_architecture: Architecture name ('small_vgg', 'large_vgg', 'large_resnet') - - Returns: - CNN model - - Raises: - ValueError: If architecture is unknown - """ - if cnn_architecture not in CNN_ARCHITECTURES: - raise ValueError( - f"Unknown CNN architecture: {cnn_architecture}. " - f"Must be one of: {list(CNN_ARCHITECTURES.keys())}" - ) - return create_simple_CNN( - CNN_ARCHITECTURES[cnn_architecture], in_channels=in_channels - ) - - -def create_model( - dataset_type: str, - train_dataset, - task_type: str, - n_classes: int | None = None, - cnn_architecture: str = "small_vgg", -) -> pl.LightningModule: - """Create appropriate model based on dataset type. - - Args: - dataset_type: Type of dataset ('2d', 'timeseries', 'merged') - train_dataset: Training dataset (for inferring input dimensions) - task_type: 'classification' or 'regression' - n_classes: Number of classes (for classification) - cnn_architecture: CNN architecture name - - Returns: - PyTorch Lightning model (Classifier or Regressor) - - Raises: - ValueError: If dataset type is unknown or dataset is empty - """ - if len(train_dataset) == 0: - raise ValueError("Cannot create model from empty dataset") - - sample = train_dataset[0] - if isinstance(sample, dict): - sample_x = sample - else: - sample_x, _ = sample - - if dataset_type == "2d": - # CNN for 2D images - images = sample_x["images"] if isinstance(sample_x, dict) else sample_x - in_channels = images.shape[0] if len(images.shape) == 3 else images.shape[1] - cnn = create_cnn_backbone(in_channels, cnn_architecture=cnn_architecture) - if task_type == "classification": - return Classifier(cnn, n_classes=n_classes, learning_rate=1e-3) - else: - return Regressor(cnn, output_dim=1, learning_rate=1e-3) - - elif dataset_type == "timeseries": - # RNN for TimeSeries - sequences = sample_x["sequences"] if isinstance(sample_x, dict) else sample_x - input_size = sequences.shape[-1] if len(sequences.shape) > 1 else 1 - rnn = SimpleRNN("LSTM", input_size=input_size, hidden_size=64, num_layers=2) - rnn_wrapped = DictWrapperRNN(rnn) - if task_type == "classification": - return Classifier(rnn_wrapped, n_classes=n_classes, learning_rate=1e-3) - else: - return Regressor(rnn_wrapped, output_dim=1, learning_rate=1e-3) - - elif dataset_type == "merged": - # VitNet for Merged (2D + TimeSeries) - if "images" not in sample_x or "sequences" not in sample_x: - raise ValueError( - f"Merged dataset missing required keys. Got: {list(sample_x.keys())}" - ) - images = sample_x["images"] - sequences = sample_x["sequences"] - in_channels = images.shape[0] if len(images.shape) == 3 else images.shape[1] - - # Note: VitNet projects sequences to embed_dim BEFORE feeding to RNN - # So RNN input_size should be embed_dim, not the raw sequence features - embed_dim = 64 - cnn = create_cnn_backbone(in_channels, cnn_architecture=cnn_architecture) - rnn = SimpleRNN("LSTM", input_size=embed_dim, hidden_size=64, num_layers=2) - - vitnet = VitNet(cnn, rnn, fusion_mode="concat", embed_dim=embed_dim) - vitnet_wrapped = DictWrapperVitNet(vitnet) - if task_type == "classification": - return Classifier(vitnet_wrapped, n_classes=n_classes, learning_rate=1e-3) - else: - return Regressor(vitnet_wrapped, output_dim=1, learning_rate=1e-3) - - raise ValueError(f"Unknown dataset type: {dataset_type}") - - -# ============================================================================ -# Training Utilities -# ============================================================================ - - -def get_collate_fn(dataset): - """Get collate function from dataset.""" - if hasattr(dataset, "collate_fn"): - return dataset.collate_fn - elif hasattr(dataset, "dataset") and hasattr(dataset.dataset, "collate_fn"): - return dataset.dataset.collate_fn - return None - - -def get_all_labels_from_dataset(dataset) -> list[int]: - """Extract ALL labels from dataset. - - Args: - dataset: PyTorch dataset - - Returns: - List of integer labels - """ - if len(dataset) == 0: - raise ValueError("Cannot extract labels from empty dataset") - labels = [] - for i in range(len(dataset)): - sample = dataset[i] - if isinstance(sample, dict): - label = sample["y"] - else: - _, label = sample - labels.append(int(label.item()) if torch.is_tensor(label) else int(label)) - return labels - - -def compute_metrics(y_true, y_pred, task_type: str) -> dict[str, Any]: - """Compute metrics based on task type. - - Args: - y_true: True labels - y_pred: Predicted labels - task_type: 'classification' or 'regression' - - Returns: - Dictionary of metric names to values - """ - y_true = np.array(y_true) - y_pred = np.array(y_pred) - - if task_type == "classification": - return { - "accuracy": accuracy_score(y_true, y_pred), - "precision": precision_score( - y_true, y_pred, average="macro", zero_division=0 - ), - "recall": recall_score(y_true, y_pred, average="macro", zero_division=0), - "f1": f1_score(y_true, y_pred, average="macro", zero_division=0), - "n_classes": len(np.unique(y_true)), - } - else: - return { - "r2": r2_score(y_true, y_pred), - "mse": mean_squared_error(y_true, y_pred), - "rmse": np.sqrt(mean_squared_error(y_true, y_pred)), - "mae": mean_absolute_error(y_true, y_pred), - } - - -def create_collate_with_label_remap( - base_collate_fn, - label_encoder: LabelEncoder | None, - task_type: str = "classification", -): - """Create a collate function that remaps labels using the encoder. - - Args: - base_collate_fn: Original collate function - label_encoder: Fitted LabelEncoder (or None for no remapping) - task_type: 'classification' or 'regression'; regression targets are cast to float - - Returns: - Collate function - """ - - def collate_with_label_remap(batch): - if base_collate_fn is not None: - result = base_collate_fn(batch) - else: - result = {} - if "images" in batch[0]: - result["images"] = torch.stack([x["images"] for x in batch]) - if "sequences" in batch[0]: - result["sequences"] = torch.stack([x["sequences"] for x in batch]) - dtype = torch.float32 if task_type == "regression" else None - result["y"] = torch.tensor( - [x["y"].item() if torch.is_tensor(x["y"]) else x["y"] for x in batch], - dtype=dtype, - ) - - # Ensure all float tensors are float32 (not float64/Double) - # This fixes "mat1 and mat2 must have the same dtype" errors - for key in ["images", "sequences"]: - if key in result and result[key] is not None: - if result[key].dtype == torch.float64: - result[key] = result[key].float() # Convert to float32 - - # Remap labels if needed (classification only) - if label_encoder is not None and "y" in result: - y = result["y"] - if torch.is_tensor(y): - y_np = y.cpu().numpy() - y_remapped = label_encoder.transform(y_np) - result["y"] = torch.tensor(y_remapped, dtype=torch.long) - elif task_type == "regression" and "y" in result: - # Regression: ensure target is float (MSELoss expects Float, not Long) - if result["y"].dtype in (torch.long, torch.int, torch.int32, torch.int64): - result["y"] = result["y"].float() - - return result - - return collate_with_label_remap - - -# ============================================================================ -# Epoch-wise progress callback -# ============================================================================ - - -class EpochTqdmCallback(pl.Callback): - """Lightning callback that shows a tqdm progress bar over epochs.""" - - def __init__(self): - self._pbar: tqdm | None = None - - def on_train_start( - self, trainer: pl.Trainer, pl_module: pl.LightningModule - ) -> None: - self._pbar = tqdm(total=trainer.max_epochs, desc="Epoch", unit="epoch") - - def on_train_epoch_end( - self, trainer: pl.Trainer, pl_module: pl.LightningModule - ) -> None: - if self._pbar is not None: - self._pbar.update(1) - if trainer.current_epoch + 1 < trainer.max_epochs: - self._pbar.set_postfix({"epoch": trainer.current_epoch + 1}) - - def on_train_end(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: - if self._pbar is not None: - self._pbar.close() - self._pbar = None - - -# ============================================================================ -# Main Training Function -# ============================================================================ - - -def train_model( - train_dataset, - val_dataset, - test_dataset, - dataset_type: str, - task_type: str, - n_classes: int | None = None, - cnn_architecture: str = "small_vgg", - max_epochs: int = 50, - batch_size: int = 32, - label_encoder: LabelEncoder | None = None, -) -> dict[str, Any]: - """Train a model and return metrics. - - Args: - train_dataset: Training dataset - val_dataset: Validation dataset - test_dataset: Test dataset - dataset_type: Type of dataset ('2d', 'timeseries', 'merged') - task_type: 'classification' or 'regression' - n_classes: Number of classes - cnn_architecture: CNN architecture name - max_epochs: Maximum training epochs - batch_size: Batch size - label_encoder: Label encoder for remapping - - Returns: - Dictionary with metrics and training info - """ - # Create model - model = create_model( - dataset_type, - train_dataset, - task_type, - n_classes, - cnn_architecture=cnn_architecture, - ) - - # Get collate function with label remapping - base_collate_fn = get_collate_fn(train_dataset) - collate_fn = create_collate_with_label_remap( - base_collate_fn, label_encoder, task_type=task_type - ) - - # Create data loaders - train_loader = DataLoader( - train_dataset, - batch_size=batch_size, - shuffle=True, - num_workers=0, - collate_fn=collate_fn, - ) - val_loader = DataLoader( - val_dataset, - batch_size=batch_size, - shuffle=False, - num_workers=0, - collate_fn=collate_fn, - ) - test_loader = DataLoader( - test_dataset, - batch_size=batch_size, - shuffle=False, - num_workers=0, - collate_fn=collate_fn, - ) - - # Train (epoch-wise tqdm) - trainer = pl.Trainer( - max_epochs=max_epochs, - enable_progress_bar=False, - logger=False, - enable_checkpointing=False, - callbacks=[EpochTqdmCallback()], - ) - trainer.fit(model, train_loader, val_loader) - - # Evaluate - model.eval() - y_true_train, y_pred_train = [], [] - y_true_val, y_pred_val = [], [] - y_true_test, y_pred_test = [], [] - - with torch.no_grad(): - for loader, y_true_list, y_pred_list in [ - (train_loader, y_true_train, y_pred_train), - (val_loader, y_true_val, y_pred_val), - (test_loader, y_true_test, y_pred_test), - ]: - for batch in loader: - y = batch.pop("y") - pred = model(batch) - if task_type == "classification": - pred = torch.argmax(torch.softmax(pred, dim=1), dim=1) - y_true_list.extend(y.cpu().numpy()) - y_pred_list.extend(pred.cpu().numpy().flatten()) - - # Compute metrics - train_metrics = compute_metrics(y_true_train, y_pred_train, task_type) - val_metrics = compute_metrics(y_true_val, y_pred_val, task_type) - test_metrics = compute_metrics(y_true_test, y_pred_test, task_type) - - return { - "task_type": task_type, - "n_classes": n_classes, - "train_size": len(train_dataset), - "val_size": len(val_dataset), - "test_size": len(test_dataset), - "train_metrics": train_metrics, - "val_metrics": val_metrics, - "test_metrics": test_metrics, - } - - -# ============================================================================ -# Full Pipeline -# ============================================================================ - - -def process_dataset_label( - df: pd.DataFrame, - Y: pd.DataFrame, - x_col: str, - y_col: str, - pk: list[str], - split_info: dict[str, Any], - dataset_type: str, - rep_type: str | None = None, - cnn_architecture: str = "small_vgg", - max_epochs: int = 50, - batch_size: int = 32, - image_shape: tuple[int, int] = DEFAULT_IMAGE_SHAPE, - timeseries_features: list[str] | None = None, - max_length: int = DEFAULT_MAX_LENGTH, - label_name: str | None = None, - dataset_name: str | None = None, -) -> dict[str, Any] | None: - """Process a single dataset+label+type combination. - - Creates datasets in memory, trains model, and returns metrics. - - Args: - df: Input DataFrame - Y: Labels DataFrame - x_col: X coordinate column - y_col: Y coordinate column - pk: Primary key columns - split_info: Split information dictionary - dataset_type: '2d', 'timeseries', or 'merged' - rep_type: Representation type (for 2d/merged) - cnn_architecture: CNN architecture name - max_epochs: Maximum training epochs - batch_size: Batch size - image_shape: Image shape for 2D datasets - timeseries_features: Features for TimeSeries dataset - max_length: Max sequence length - label_name: Label column name for task type inference - dataset_name: Optional dataset name (base or full) for regression-override rule - (surgical / cognitive load / emotion → regression except group_task_label) - - Returns: - Dictionary with results or None on failure - """ - try: - # Create appropriate dataset - if dataset_type == "2d": - if rep_type is None: - raise ValueError("rep_type required for 2d dataset") - full_dataset = create_2d_dataset( - df, Y, x_col, y_col, pk, rep_type, image_shape - ) - - elif dataset_type == "timeseries": - full_dataset = create_timeseries_dataset( - df, Y, x_col, y_col, pk, timeseries_features, max_length - ) - - elif dataset_type == "merged": - if rep_type is None: - raise ValueError("rep_type required for merged dataset") - dataset_2d = create_2d_dataset( - df, Y, x_col, y_col, pk, rep_type, image_shape - ) - dataset_ts = create_timeseries_dataset( - df, Y, x_col, y_col, pk, timeseries_features, max_length - ) - full_dataset = create_merged_dataset(dataset_2d, dataset_ts) - - else: - raise ValueError(f"Unknown dataset type: {dataset_type}") - - # Get split indices - train_indices, val_indices, test_indices = get_split_indices(df, pk, split_info) - - if not train_indices or not val_indices or not test_indices: - print(" ⚠️ Empty split indices, skipping") - return None - - # Create subset datasets - train_dataset = Subset(full_dataset, train_indices) - val_dataset = Subset(full_dataset, val_indices) - test_dataset = Subset(full_dataset, test_indices) - - # Get labels and determine task type - train_labels = get_all_labels_from_dataset(train_dataset) - val_labels = get_all_labels_from_dataset(val_dataset) - test_labels = get_all_labels_from_dataset(test_dataset) - - all_labels = train_labels + val_labels + test_labels - all_labels_series = pd.Series(all_labels) - if dataset_name is not None and label_name is not None: - task_type = get_task_type_for_dataset_label( - dataset_name, label_name, all_labels_series - ) - else: - task_type = get_task_type(all_labels_series, label_name=label_name) - - # Handle label encoding for classification - label_encoder = None - n_classes = None - if task_type == "classification": - unique_labels = sorted(set(all_labels)) - n_classes = len(unique_labels) - - if n_classes < 2: - print(" ⚠️ Less than 2 classes, skipping") - return None - - # Create label encoder - label_encoder = LabelEncoder() - label_encoder.fit(unique_labels) - - # Check if remapping is needed - min_label = min(unique_labels) - max_label = max(unique_labels) - needs_remapping = min_label != 0 or max_label != n_classes - 1 - - if needs_remapping: - print( - f" Remapping labels: {unique_labels[:5]}... -> [0, {n_classes-1}]" - ) - - # Train model - results = train_model( - train_dataset, - val_dataset, - test_dataset, - dataset_type, - task_type, - n_classes, - cnn_architecture=cnn_architecture, - max_epochs=max_epochs, - batch_size=batch_size, - label_encoder=label_encoder, - ) - - results["rep_type"] = rep_type or "" - results["cnn_architecture"] = ( - cnn_architecture if dataset_type in ["2d", "merged"] else "" - ) - - # Clean up - del full_dataset, train_dataset, val_dataset, test_dataset - gc.collect() - plt.close("all") - - return results - - except Exception as e: - print(f" ❌ Error: {str(e)}") - import traceback - - traceback.print_exc() - return {"error": str(e)} - - -def _append_result_to_csv(results_file: Path, result_dict: dict[str, Any]) -> None: - """Append a single result row to the CSV and dedupe. Used for incremental saving.""" - results_file = Path(results_file) - dedup_cols = ["dataset", "label", "dataset_type", "rep_type"] - if "cnn_architecture" in result_dict: - dedup_cols.append("cnn_architecture") - row_df = pd.DataFrame([result_dict]) - if results_file.exists(): - existing_df = pd.read_csv(results_file) - combined_df = pd.concat([existing_df, row_df], ignore_index=True) - # Only dedupe on columns that exist - dedup_cols = [c for c in dedup_cols if c in combined_df.columns] - combined_df = combined_df.drop_duplicates(subset=dedup_cols, keep="last") - combined_df.to_csv(results_file, index=False) - else: - row_df.to_csv(results_file, index=False) - - -def run_dl_training_battery( - splits_dir: str | Path, - results_file: str | Path, - find_datasets_func, - load_dataset_func, - dataset_types: list[str] | None = None, - representations: list[str] = None, - cnn_architecture: str = "small_vgg", - max_epochs: int = 50, - batch_size: int = 32, - image_shape: tuple[int, int] = DEFAULT_IMAGE_SHAPE, - timeseries_features: list[str] | None = None, - max_length: int = DEFAULT_MAX_LENGTH, - skip_existing: bool = True, - test_mode: bool = False, - test_max_samples: int = 100, -) -> pd.DataFrame: - """Run DL training battery for all datasets. - - Args: - splits_dir: Directory with split JSONs from create_splits ({dataset}_*_split_info.json) - results_file: Path to save results CSV - find_datasets_func: Function to find all datasets - load_dataset_func: Function to load and preprocess a dataset - dataset_types: List of dataset types to train - representations: List of representation types (for 2d/merged) - cnn_architecture: CNN architecture name - max_epochs: Maximum training epochs - batch_size: Batch size - image_shape: Image shape for 2D datasets - timeseries_features: Features for TimeSeries dataset - max_length: Max sequence length - skip_existing: Skip combinations that already have results - test_mode: If True, use limited samples for faster testing - test_max_samples: Maximum number of samples to use in test mode - - Returns: - DataFrame with all results - """ - import json - - collection_dir = get_collection_dir() - splits_dir = Path(splits_dir) - results_file = Path(results_file) - - if dataset_types is None: - dataset_types = ["2d", "timeseries", "merged"] - if representations is None: - representations = ALL_REPRESENTATIONS - if timeseries_features is None: - timeseries_features = DEFAULT_TIMESERIES_FEATURES - - # Load existing results - existing_keys = set() - if results_file.exists() and skip_existing: - existing_df = pd.read_csv(results_file) - if all( - col in existing_df.columns - for col in ["dataset", "label", "dataset_type", "rep_type"] - ): - if "cnn_architecture" in existing_df.columns: - existing_keys = set( - zip( - existing_df["dataset"], - existing_df["label"], - existing_df["dataset_type"], - existing_df["rep_type"].fillna(""), - existing_df["cnn_architecture"].fillna(""), - strict=False, - ) - ) - else: - existing_keys = set( - zip( - existing_df["dataset"], - existing_df["label"], - existing_df["dataset_type"], - existing_df["rep_type"].fillna(""), - strict=False, - ) - ) - - # Find all datasets (main + extensive; include extracted_fixations if present) - all_datasets = find_datasets_func(include_extensive_collection=True) - datasets_to_process = all_datasets.get("fixation", []) + all_datasets.get( - "unknown", [] - ) - extracted_dir = collection_dir / "extracted_fixations" - if extracted_dir.exists(): - ext = find_datasets_func( - include_extensive_collection=False, subdir="extracted_fixations" - ) - datasets_to_process = ( - datasets_to_process + ext.get("fixation", []) + ext.get("saccade", []) - ) - - # For Cognitive_load and Emotions, keep only 0.02 dispersion to reduce computation - def _keep_dataset(path: Path) -> bool: - stem = path.stem - if stem.startswith("Cognitive_load_ready_data_gazes_") or stem.startswith( - "Emotions_ready_data_gazes_" - ): - return "_0.02" in stem - return True - - datasets_to_process = [p for p in datasets_to_process if _keep_dataset(p)] - print(f"Found {len(datasets_to_process)} datasets to process") - - results = [] - - for dataset_path in tqdm(datasets_to_process, desc="Datasets"): - dataset_name = dataset_path.stem - - # Per-label splits: get all split files for this dataset - split_paths = get_split_info_paths_for_dataset(splits_dir, dataset_name) - if not split_paths: - continue - - # Load and preprocess dataset once per dataset - df, col_info, _ = load_dataset_func(dataset_path) - if df is None or len(df) == 0: - print(f"\n⚠️ Failed to load {dataset_name}, skipping...") - continue - - pk = col_info.get("group_cols", []) - x_col, y_col = col_info["x_col"], col_info["y_col"] - - print(f"\n{'='*60}") - print( - f"Dataset: {dataset_name} ({len(df):,} rows, {len(split_paths)} split(s))" - ) - print(f"{'='*60}") - - # Process each label split (one split file = one label) - for split_path in split_paths: - split_id = split_path.stem.replace("_split_info", "") - if any(skip in split_id for skip in SKIP_DATASET_SUBSTRINGS): - continue - with open(split_path) as f: - split_info = json.load(f) - - # Label for this split (from split_info or inferred from split_id) - label_col = split_info.get("label_col") - if not label_col and len(split_id) > len(dataset_name) + 1: - label_col = split_id[len(dataset_name) + 1 :] - if not label_col: - print(f"\n⚠️ Could not infer label for {split_id}, skipping...") - continue - - # In test mode, limit the number of samples in each split - if test_mode: - for split_key in ["train", "val", "test"]: - if ( - split_key in split_info - and len(split_info[split_key]) > test_max_samples - ): - split_info[split_key] = split_info[split_key][:test_max_samples] - print(f" [TEST MODE] Limited to {test_max_samples} samples per split") - - # In test mode, filter DataFrame to only include samples in the limited splits - if test_mode: - all_split_samples = set( - split_info.get("train", []) - + split_info.get("val", []) - + split_info.get("test", []) - ) - if len(pk) == 1: - df_composite_idx = df[pk[0]].astype(str) - else: - df_composite_idx = df[pk].astype(str).agg("_".join, axis=1) - df_work = df[df_composite_idx.isin(all_split_samples)].copy() - print(f" [TEST MODE] Filtered DataFrame to {len(df_work):,} rows") - else: - df_work = df.copy() - - # Process this (dataset, label) with this split_info - pk_work = pk.copy() - - # Handle label column conflicts - if label_col in pk_work: - label_col_copy = f"{label_col}_label" - if label_col_copy not in df_work.columns: - df_work[label_col_copy] = df_work[label_col].copy() - label_col_to_use = label_col_copy - else: - label_col_to_use = label_col - - col_info_single = col_info.copy() - col_info_single["label_cols"] = [label_col_to_use] - - try: - Y, pk_work = prepare_labels(df_work, col_info_single, pk_work) - except Exception as e: - print(f" ⚠️ Can't prepare labels for '{label_col}': {e}") - continue - - if Y["label"].nunique() < 2: - print(f" ⚠️ Constant label '{label_col}', skipping...") - continue - - print(f"\n Label: {label_col}") - - # Process each dataset type - for dataset_type in dataset_types: - if dataset_type in ["2d", "merged"]: - rep_types_to_use = representations - else: - rep_types_to_use = [None] - - for rep_type in rep_types_to_use: - # Check if already exists - cnn_key = ( - cnn_architecture if dataset_type in ["2d", "merged"] else "" - ) - if len(existing_keys) > 0 and len(next(iter(existing_keys))) == 5: - key = ( - dataset_name, - label_col, - dataset_type, - rep_type or "", - cnn_key, - ) - else: - key = (dataset_name, label_col, dataset_type, rep_type or "") - - if key in existing_keys: - desc_skip = f"{dataset_type}" + ( - f"/{rep_type}" if rep_type else "" - ) - print(f"Skipping {desc_skip} (already in results)") - continue - - desc = f"{dataset_type}" - if rep_type: - desc += f"/{rep_type}" - print(f" Training {desc}...", end=" ") - - result = process_dataset_label( - df_work, - Y, - x_col, - y_col, - pk_work, - split_info, - dataset_type, - rep_type, - cnn_architecture=cnn_architecture, - max_epochs=max_epochs, - batch_size=batch_size, - image_shape=image_shape, - timeseries_features=timeseries_features, - max_length=max_length, - label_name=label_col, - dataset_name=dataset_name, - ) - - if result and "error" not in result: - result_dict = { - "dataset": dataset_name, - "label": label_col, - "dataset_type": dataset_type, - **result, - } - - # Flatten metrics - for split in ["train", "val", "test"]: - metrics_key = f"{split}_metrics" - if metrics_key in result_dict: - for k, v in result_dict[metrics_key].items(): - result_dict[f"{split}_{k}"] = v - del result_dict[metrics_key] - - results.append(result_dict) - _append_result_to_csv(results_file, result_dict) - - if result.get("task_type") == "classification": - acc = result_dict.get("test_accuracy", 0) - f1 = result_dict.get("test_f1", 0) - print(f"✅ acc={acc:.4f}, f1_macro={f1:.4f}") - else: - r2 = result_dict.get("test_r2", 0) - print(f"✅ r2={r2:.4f}") - elif result and "error" in result: - print(f"❌ {result['error'][:50]}") - error_row = { - "dataset": dataset_name, - "label": label_col, - "dataset_type": dataset_type, - "rep_type": rep_type or "", - "error": result["error"], - } - if dataset_type in ["2d", "merged"]: - error_row["cnn_architecture"] = cnn_key - results.append(error_row) - _append_result_to_csv(results_file, error_row) - else: - print("⚠️ Skipped") - - # Clean up after each label - del df_work, Y - gc.collect() - - # Clean up after each dataset - del df, col_info - gc.collect() - - # Results were saved incrementally after each iteration - if results: - print(f"\n✅ Saved {len(results)} results incrementally to {results_file}") - else: - print("\n✅ No new results to save") - if results_file.exists(): - return pd.read_csv(results_file) - return pd.DataFrame() - - -def print_results_summary(results_df: pd.DataFrame): - """Print summary statistics for results DataFrame.""" - if results_df.empty: - print("⚠️ No results to summarize.") - return - - print("\nSummary Statistics:") - print(f" Total results: {len(results_df)}") - - if "dataset" in results_df.columns: - print(f" Datasets: {results_df['dataset'].nunique()}") - if "dataset_type" in results_df.columns: - print(f" Dataset types: {list(results_df['dataset_type'].unique())}") - if "label" in results_df.columns: - print(f" Labels: {results_df['label'].nunique()}") - - # Filter out error rows - valid_results = results_df[ - ~results_df.get("error", pd.Series([None] * len(results_df))).notna() - ] - - if "task_type" in valid_results.columns: - print("\n Task types:") - print(valid_results["task_type"].value_counts().to_string()) - - if ( - "test_accuracy" in valid_results.columns - and "task_type" in valid_results.columns - ): - classification_results = valid_results[ - valid_results["task_type"] == "classification" - ] - if len(classification_results) > 0: - print(f"\n Classification (n={len(classification_results)}):") - print( - f" Mean Test Accuracy: {classification_results['test_accuracy'].mean():.4f}" - ) - print( - f" Std Test Accuracy: {classification_results['test_accuracy'].std():.4f}" - ) - - if "test_r2" in valid_results.columns and "task_type" in valid_results.columns: - regression_results = valid_results[valid_results["task_type"] == "regression"] - if len(regression_results) > 0: - print(f"\n Regression (n={len(regression_results)}):") - print(f" Mean Test R²: {regression_results['test_r2'].mean():.4f}") - print(f" Std Test R²: {regression_results['test_r2'].std():.4f}") diff --git a/experiments/collection_experiments/utils/feature_extraction_utils.py b/experiments/collection_experiments/utils/feature_extraction_utils.py deleted file mode 100644 index a6cab07..0000000 --- a/experiments/collection_experiments/utils/feature_extraction_utils.py +++ /dev/null @@ -1,243 +0,0 @@ -""" -Common utilities for feature extraction notebooks. Uses eyefeatures.data and benchmark_utils only. -""" - -from __future__ import annotations - -from pathlib import Path -from typing import Any - -import pandas as pd - -from .benchmark_utils import ( - apply_split_to_features, - apply_split_to_labels, - get_collection_dir, - get_split_info_paths_for_dataset, - load_split_info, -) - - -def setup_paths( - output_dir: str | Path | None = None, - splits_dir: str | Path | None = None, -) -> dict[str, Path]: - """ - Set up paths for feature extraction. - output_dir default 'features_output'; splits_dir default output_dir / 'splits'. - """ - collection_path = get_collection_dir() - if output_dir is None: - output_dir = Path("features_output") - else: - output_dir = Path(output_dir) - output_dir.mkdir(parents=True, exist_ok=True) - if splits_dir is None: - splits_dir = output_dir / "splits" - else: - splits_dir = Path(splits_dir) - splits_dir.mkdir(parents=True, exist_ok=True) - return { - "collection_dir": collection_path, - "output_dir": output_dir, - "splits_dir": splits_dir, - } - - -def apply_splits_and_save( - features_df: pd.DataFrame, - dataset_name: str, - feature_type: str, - paths: dict[str, Path], - split_info: dict[str, Any] | None = None, -) -> dict[str, Any]: - """ - Apply splits to features and save train/val/test files. When multiple label-based - splits exist, saves one set per label. Optionally saves labels per split. - """ - output_dir = paths["output_dir"] - splits_dir = paths["splits_dir"] - features_df = features_df.copy() - features_df["index"] = features_df.index.astype(str) - - if split_info is not None: - split_infos = [(None, split_info)] - else: - split_paths = get_split_info_paths_for_dataset(splits_dir, dataset_name) - if not split_paths: - out_path = output_dir / f"{dataset_name}_{feature_type}.csv" - features_df.set_index("index").to_csv(out_path) - return { - "status": "success", - "num_scanpaths": len(features_df), - "num_features": features_df.shape[1] - 1, - "output_path": str(out_path), - "note": "No split info", - } - split_infos = [(p, load_split_info(p)) for p in split_paths] - - features_indexed = features_df.set_index("index") - labels_path = splits_dir / f"{dataset_name}_labels.csv" - labels_df = pd.read_csv(labels_path) if labels_path.exists() else None - split_results = [] - - for idx, (split_path, si) in enumerate(split_infos): - split_id = ( - split_path.stem.replace("_split_info", "") - if split_path is not None - else dataset_name - ) - n = len(split_infos) - if n > 1: - print(f" Split [{idx + 1}/{n}] {split_id} (by: {si.get('split_pk', '?')})") - train_f, val_f, test_f = apply_split_to_features( - features_indexed, si, index_column=None - ) - print(f" Train {len(train_f)}, Val {len(val_f)}, Test {len(test_f)}") - for name, data in ( - ("train", train_f), - ("val", val_f), - ("test", test_f), - ): - p = output_dir / f"{split_id}_{feature_type}_{name}.csv" - data.to_csv(p) - if labels_df is not None: - train_l, val_l, test_l = apply_split_to_labels( - labels_df, si, index_column="index" - ) - for name, data in (("train", train_l), ("val", val_l), ("test", test_l)): - (splits_dir / f"{split_id}_labels_{name}.csv").parent.mkdir( - parents=True, exist_ok=True - ) - data.to_csv(splits_dir / f"{split_id}_labels_{name}.csv", index=False) - split_results.append( - { - "split_id": split_id, - "n_train_scanpaths": len(train_f), - "n_val_scanpaths": len(val_f), - "n_test_scanpaths": len(test_f), - "num_features": train_f.shape[1], - } - ) - - r = split_results[0] - return { - "status": "success", - "n_train_scanpaths": r["n_train_scanpaths"], - "n_val_scanpaths": r["n_val_scanpaths"], - "n_test_scanpaths": r["n_test_scanpaths"], - "num_features": r["num_features"], - "train_output_path": str( - output_dir / f"{split_results[0]['split_id']}_{feature_type}_train.csv" - ), - "val_output_path": str( - output_dir / f"{split_results[0]['split_id']}_{feature_type}_val.csv" - ), - "test_output_path": str( - output_dir / f"{split_results[0]['split_id']}_{feature_type}_test.csv" - ), - } - - -def check_cache( - dataset_name: str, - feature_type: str, - paths: dict[str, Path], -) -> dict[str, Any] | None: - """Return cached result dict if train/val/test files exist for this dataset and feature_type.""" - output_dir = paths["output_dir"] - splits_dir = paths["splits_dir"] - split_paths = get_split_info_paths_for_dataset(splits_dir, dataset_name) - if split_paths: - split_ids = [p.stem.replace("_split_info", "") for p in split_paths] - for split_id in split_ids: - t = output_dir / f"{split_id}_{feature_type}_train.csv" - v = output_dir / f"{split_id}_{feature_type}_val.csv" - s = output_dir / f"{split_id}_{feature_type}_test.csv" - if not (t.exists() and v.exists() and s.exists()): - return None - sid = split_ids[0] - train_df = pd.read_csv( - output_dir / f"{sid}_{feature_type}_train.csv", index_col=0 - ) - val_df = pd.read_csv(output_dir / f"{sid}_{feature_type}_val.csv", index_col=0) - test_df = pd.read_csv( - output_dir / f"{sid}_{feature_type}_test.csv", index_col=0 - ) - return { - "status": "cached", - "n_train_scanpaths": len(train_df), - "n_val_scanpaths": len(val_df), - "n_test_scanpaths": len(test_df), - "num_features": train_df.shape[1], - "train_output_path": str(output_dir / f"{sid}_{feature_type}_train.csv"), - "val_output_path": str(output_dir / f"{sid}_{feature_type}_val.csv"), - "test_output_path": str(output_dir / f"{sid}_{feature_type}_test.csv"), - } - single = output_dir / f"{dataset_name}_{feature_type}.csv" - if single.exists(): - df = pd.read_csv(single, index_col=0) - return { - "status": "cached", - "num_scanpaths": len(df), - "num_features": df.shape[1], - "output_path": str(single), - } - return None - - -def print_summary( - results: list[dict[str, Any]], - feature_type: str = "features", -) -> None: - """Print summary of extraction results.""" - ok = [r for r in results if r.get("status") in ("success", "cached")] - failed = [r for r in results if r.get("status") == "error"] - print("\n" + "=" * 80) - print(f"{feature_type.upper()} EXTRACTION SUMMARY") - print("=" * 80) - print(f"\nProcessed/cached: {len(ok)}, Failed: {len(failed)}") - if ok: - print(f"\n{'Dataset':<45} {'Train':>8} {'Val':>8} {'Test':>8} {'Features':>10}") - print("-" * 85) - for r in ok: - if "n_train_scanpaths" in r: - print( - f" {r.get('dataset', '?'):<43} " - f"{r.get('n_train_scanpaths', 0):>8} " - f"{r.get('n_val_scanpaths', 0):>8} " - f"{r.get('n_test_scanpaths', 0):>8} " - f"{r.get('num_features', 0):>10}" - ) - else: - print( - f" {r.get('dataset', '?'):<43} {r.get('num_scanpaths', 0):>8} scanpaths, {r.get('num_features', 0)} features" - ) - for r in failed: - print(f" FAILED {r.get('dataset', '?')}: {r.get('error', '')}") - - -def extract_and_save_features( - df: pd.DataFrame, - dataset_name: str, - feature_type: str, - extractor, - meta_info: dict[str, Any], - paths: dict[str, Path], - check_cache_first: bool = True, -) -> dict[str, Any]: - """ - Optionally load from cache; else run extractor.fit_transform, then apply splits and save. - meta_info is the dict returned by load_dataset_with_meta (used only for split resolution). - """ - if check_cache_first: - cached = check_cache(dataset_name, feature_type, paths) - if cached: - cached["dataset"] = dataset_name - return cached - features_df = extractor.fit_transform(df) - result = apply_splits_and_save( - features_df, dataset_name, feature_type, paths, split_info=None - ) - result["dataset"] = dataset_name - return result diff --git a/experiments/collection_experiments/utils/flaml_training.py b/experiments/collection_experiments/utils/flaml_training.py deleted file mode 100644 index 6a62c8d..0000000 --- a/experiments/collection_experiments/utils/flaml_training.py +++ /dev/null @@ -1,1331 +0,0 @@ -""" -FLAML Training Module for Eye Features Benchmark. - -Expects collection_experiments layout produced by create_splits + feature_extraction_all: -- Splits: splits_dir with {dataset}_{label_col}_split_info.json and {dataset}_{label_col}_labels.csv - (or per-split labels: {split_id}_labels_train/val/test.csv from apply_splits_and_save). -- Features: features_dir with {split_id}_{battery}_train/val/test.csv (split_id = dataset_label). -- No Parquet loading here; works on pre-extracted feature CSVs and label CSVs. -""" - -import warnings -from pathlib import Path -from typing import Any - -import numpy as np -import pandas as pd -from sklearn.preprocessing import LabelEncoder - -from .benchmark_utils import load_split_info -from .training_common import ( - SKIP_DATASET_SUBSTRINGS, - get_task_type, - get_task_type_for_dataset_label, -) - -warnings.filterwarnings("ignore") - -try: - from flaml import AutoML -except ImportError as err: - raise ImportError( - "FLAML is not installed. Install it with: pip install flaml[notebook]" - ) from err - - -def get_labels_path(splits_dir: str | Path, dataset_name: str) -> Path | None: - """ - Return path to labels file for a dataset. - Supports both layouts: - - Single file: {dataset_name}_labels.csv - - Proper splits: {dataset_name}_labels_train.csv (train split only; used to discover columns) - """ - splits_dir = Path(splits_dir) - combined = splits_dir / f"{dataset_name}_labels.csv" - if combined.exists(): - return combined - train = splits_dir / f"{dataset_name}_labels_train.csv" - if train.exists(): - return train - return None - - -def identify_label_column(df: pd.DataFrame) -> str | None: - """Identify the label column in the dataframe.""" - exclude_cols = {"index", "Unnamed: 0"} - - label_cols = [ - col - for col in df.columns - if col not in exclude_cols - and not col.startswith("group_") - and not ("." in col and col.split(".")[-1].isdigit()) - and (col.endswith("_label") or "label" in col.lower()) - ] - - if label_cols: - return label_cols[0] - - common_names = ["label", "target", "y", "class", "category"] - for name in common_names: - if ( - name in df.columns - and name not in exclude_cols - and not name.startswith("group_") - ): - return name - - return None - - -def get_available_labels(features_path: str | Path) -> list[str]: - """Get list of available label columns for a dataset.""" - features_path = Path(features_path) - - stem = features_path.stem - for split_suffix in ["_train", "_val", "_test"]: - if stem.endswith(split_suffix): - stem = stem[: -len(split_suffix)] - break - - dataset_name = stem - for suffix in [ - "_simple_features", - "_extended_features", - "_complex_features", - "_distance_features", - "_all_features", - ]: - if dataset_name.endswith(suffix): - dataset_name = dataset_name[: -len(suffix)] - break - - splits_dir = features_path.parent / "splits" - labels_path = get_labels_path(splits_dir, dataset_name) - - if labels_path is not None: - labels_df = pd.read_csv(labels_path) - label_columns = [] - for col in labels_df.columns: - if col == "index": - continue - if col.startswith("group_"): - continue - if "." in col and col.split(".")[-1].isdigit(): - continue - if col.endswith("_label"): - label_columns.append(col) - return label_columns - - return [] - - -def filter_valid_labels( - features_path: str | Path, - label_columns: list[str], - split_info: dict[str, Any] | None = None, - min_unique_values: int = 2, -) -> tuple[list[str], list[str]]: - """Filter label columns to only include those with enough unique values in the training set.""" - features_path = Path(features_path) - - stem = features_path.stem - for split_suffix in ["_train", "_val", "_test"]: - if stem.endswith(split_suffix): - stem = stem[: -len(split_suffix)] - break - - dataset_name = stem - for suffix in [ - "_simple_features", - "_extended_features", - "_complex_features", - "_distance_features", - "_all_features", - ]: - if dataset_name.endswith(suffix): - dataset_name = dataset_name[: -len(suffix)] - break - - splits_dir = features_path.parent / "splits" - labels_path = get_labels_path(splits_dir, dataset_name) - - if labels_path is None: - return label_columns, [] - - labels_df = pd.read_csv(labels_path) - labels_df["index"] = labels_df["index"].astype(str) - - # If we have the combined file (not _labels_train), filter to train indexes when split_info is available - is_train_only = "_labels_train.csv" in str(labels_path) - if not is_train_only and split_info is not None: - if "train" in split_info: - train_indexes = set(split_info["train"]) - elif "train_indexes" in split_info: - train_indexes = set(split_info["train_indexes"]) - else: - train_indexes = None - - if train_indexes is not None: - train_mask = labels_df["index"].isin(train_indexes) - labels_df = labels_df[train_mask] - - valid_labels = [] - skipped_labels = [] - - for label_col in label_columns: - if label_col not in labels_df.columns: - skipped_labels.append(label_col) - continue - - n_unique = labels_df[label_col].nunique() - if n_unique >= min_unique_values: - valid_labels.append(label_col) - else: - skipped_labels.append(label_col) - - return valid_labels, skipped_labels - - -def annotate_label_task_types( - labels_df: pd.DataFrame, - label_columns: list[str] | None = None, - task_type_overrides: dict[str, str] | None = None, -) -> dict[str, str]: - """Annotate label columns with their task types (classification or regression).""" - if label_columns is None: - exclude_cols = {"index", "Unnamed: 0"} - label_columns = [col for col in labels_df.columns if col not in exclude_cols] - - if task_type_overrides is None: - task_type_overrides = {} - - label_task_types = {} - - for col in label_columns: - if col not in labels_df.columns: - continue - - if col in task_type_overrides: - label_task_types[col] = task_type_overrides[col] - else: - y = labels_df[col].dropna() - if len(y) == 0: - continue - label_task_types[col] = get_task_type(y) - - return label_task_types - - -def get_hyperparameter_search_space(task_type: str) -> dict[str, Any]: - """Get hyperparameter search space for FLAML based on task type.""" - if task_type == "classification": - return { - "time_budget": 300, - "metric": "macro_f1", - "task": "classification", - "estimator_list": ["lgbm", "xgboost", "catboost", "rf", "extra_tree"], - "n_jobs": -1, - "verbose": 1, - } - else: - return { - "time_budget": 300, - "metric": "r2", - "task": "regression", - "estimator_list": ["lgbm", "xgboost", "catboost", "rf", "extra_tree"], - "n_jobs": -1, - "verbose": 1, - } - - -def compute_metrics( - y_true: pd.Series | np.ndarray, - y_pred: pd.Series | np.ndarray, - task_type: str, -) -> dict[str, float]: - """Compute evaluation metrics based on task type.""" - from sklearn.metrics import ( - accuracy_score, - f1_score, - mean_absolute_error, - mean_squared_error, - precision_score, - r2_score, - recall_score, - roc_auc_score, - ) - - metrics = {} - - if task_type == "classification": - y_true = np.array(y_true) - y_pred = np.array(y_pred) - - metrics["accuracy"] = accuracy_score(y_true, y_pred) - metrics["precision"] = precision_score( - y_true, y_pred, average="macro", zero_division=0 - ) - metrics["recall"] = recall_score( - y_true, y_pred, average="macro", zero_division=0 - ) - metrics["f1"] = f1_score(y_true, y_pred, average="macro", zero_division=0) - - try: - if len(np.unique(y_true)) == 2: - metrics["roc_auc"] = roc_auc_score(y_true, y_pred) - else: - metrics["roc_auc"] = roc_auc_score( - y_true, y_pred, multi_class="ovr", average="macro" - ) - except Exception: - metrics["roc_auc"] = np.nan - - metrics["n_classes"] = len(np.unique(y_true)) - metrics["class_distribution"] = str( - dict(zip(*np.unique(y_true, return_counts=True), strict=False)) - ) - else: - y_true = np.array(y_true) - y_pred = np.array(y_pred) - - metrics["r2"] = r2_score(y_true, y_pred) - metrics["mse"] = mean_squared_error(y_true, y_pred) - metrics["rmse"] = np.sqrt(mean_squared_error(y_true, y_pred)) - metrics["mae"] = mean_absolute_error(y_true, y_pred) - metrics["mean_target"] = np.mean(y_true) - metrics["std_target"] = np.std(y_true) - - return metrics - - -def train_flaml( - X_train: pd.DataFrame, - y_train: pd.Series, - X_val: pd.DataFrame | None = None, - y_val: pd.Series | None = None, - task_type: str | None = None, - time_budget: int = 300, - metric: str | None = None, - estimator_list: list[str] | None = None, - n_jobs: int = -1, - verbose: int = 1, - **kwargs, -) -> tuple[AutoML, dict[str, Any]]: - """Train FLAML AutoML model.""" - if task_type is None: - task_type = get_task_type(y_train) - - search_space = get_hyperparameter_search_space(task_type) - - if metric is not None: - search_space["metric"] = metric - if estimator_list is not None: - search_space["estimator_list"] = estimator_list - search_space["time_budget"] = time_budget - search_space["n_jobs"] = n_jobs - search_space["verbose"] = verbose - search_space.update(kwargs) - - automl = AutoML() - - if X_val is not None and y_val is not None: - X_train_full = pd.concat([X_train, X_val], ignore_index=True) - y_train_full = pd.concat([y_train, y_val], ignore_index=True) - search_space["eval_method"] = "holdout" - search_space["split_ratio"] = len(X_train) / len(X_train_full) - else: - X_train_full = X_train - y_train_full = y_train - search_space["eval_method"] = "holdout" - - automl.fit(X_train=X_train_full, y_train=y_train_full, **search_space) - - training_info = { - "task_type": task_type, - "best_model": automl.model.estimator.__class__.__name__, - "best_config": automl.best_config, - "best_loss": automl.best_loss, - "time_budget": time_budget, - "n_features": X_train.shape[1], - "n_train_samples": len(X_train), - "n_val_samples": len(X_val) if X_val is not None else 0, - } - - return automl, training_info - - -def evaluate_flaml( - model: AutoML, - X_test: pd.DataFrame, - y_test: pd.Series, - task_type: str | None = None, -) -> tuple[np.ndarray, dict[str, float]]: - """Evaluate FLAML model on test set.""" - if task_type is None: - task_type = get_task_type(y_test) - - y_pred = model.predict(X_test) - metrics = compute_metrics(y_test, y_pred, task_type) - - return y_pred, metrics - - -def run_flaml_pipeline_presplit( - train_features_path: str | Path, - val_features_path: str | Path, - test_features_path: str | Path, - split_info_path: str | Path | None = None, - label_column: str | None = None, - time_budget: int = 300, - **flaml_kwargs, -) -> dict[str, Any]: - """ - Run FLAML pipeline with pre-split data. - - Labels are loaded from separate CSV files in the splits directory. - """ - train_features_path = Path(train_features_path) - val_features_path = Path(val_features_path) - test_features_path = Path(test_features_path) - - print("Loading features...") - df_train = pd.read_csv(train_features_path) - df_val = pd.read_csv(val_features_path) - df_test = pd.read_csv(test_features_path) - print(f" Train: {len(df_train)} samples, {df_train.shape[1]} columns") - print(f" Val: {len(df_val)} samples") - print(f" Test: {len(df_test)} samples") - - split_info = None - if split_info_path is not None: - split_info = load_split_info(split_info_path) - print(f" Split by: {split_info.get('split_pk', 'unknown')}") - - # Derive dataset name from features path - stem = train_features_path.stem - for split_suffix in ["_train", "_val", "_test"]: - if stem.endswith(split_suffix): - stem = stem[: -len(split_suffix)] - break - dataset_name = stem - for suffix in [ - "_simple_features", - "_extended_features", - "_complex_features", - "_distance_features", - "_all_features", - ]: - if dataset_name.endswith(suffix): - dataset_name = dataset_name[: -len(suffix)] - break - - # Load labels from separate CSV files - splits_dir = train_features_path.parent / "splits" - train_labels_path = splits_dir / f"{dataset_name}_labels_train.csv" - val_labels_path = splits_dir / f"{dataset_name}_labels_val.csv" - test_labels_path = splits_dir / f"{dataset_name}_labels_test.csv" - - print("Loading labels from separate CSV files...") - train_labels = pd.read_csv(train_labels_path) - val_labels = pd.read_csv(val_labels_path) - test_labels = pd.read_csv(test_labels_path) - - # Merge labels with features using index column - index_col = "index" if "index" in df_train.columns else "Unnamed: 0" - if index_col not in df_train.columns: - raise ValueError( - f"Index column '{index_col}' not found in features. Cannot merge labels." - ) - - # Convert to string for matching - for df in [df_train, df_val, df_test]: - df[index_col] = df[index_col].astype(str) - for labels_df in [train_labels, val_labels, test_labels]: - labels_df["index"] = labels_df["index"].astype(str) - - # Merge labels - train_labels_indexed = train_labels.set_index("index") - val_labels_indexed = val_labels.set_index("index") - test_labels_indexed = test_labels.set_index("index") - - df_train = df_train.merge( - train_labels_indexed, left_on=index_col, right_index=True, how="left" - ) - df_val = df_val.merge( - val_labels_indexed, left_on=index_col, right_index=True, how="left" - ) - df_test = df_test.merge( - test_labels_indexed, left_on=index_col, right_index=True, how="left" - ) - - # Validate alignment: ensure all features have matching labels - train_features_indexes = set(df_train[index_col].astype(str)) - val_features_indexes = set(df_val[index_col].astype(str)) - test_features_indexes = set(df_test[index_col].astype(str)) - - train_labels_indexes = set(train_labels["index"].astype(str)) - val_labels_indexes = set(val_labels["index"].astype(str)) - test_labels_indexes = set(test_labels["index"].astype(str)) - - # Check for missing labels - train_missing = train_features_indexes - train_labels_indexes - val_missing = val_features_indexes - val_labels_indexes - test_missing = test_features_indexes - test_labels_indexes - - if train_missing or val_missing or test_missing: - error_msg = ( - "Label alignment error: Some features do not have matching labels.\n" - ) - if train_missing: - error_msg += f" Train: {len(train_missing)} features without labels (e.g., {list(train_missing)[:3]})\n" - if val_missing: - error_msg += f" Val: {len(val_missing)} features without labels (e.g., {list(val_missing)[:3]})\n" - if test_missing: - error_msg += f" Test: {len(test_missing)} features without labels (e.g., {list(test_missing)[:3]})\n" - raise ValueError(error_msg) - - # Check for extra labels (labels without features) - train_extra = train_labels_indexes - train_features_indexes - val_extra = val_labels_indexes - val_features_indexes - test_extra = test_labels_indexes - test_features_indexes - - if train_extra or val_extra or test_extra: - print("Warning: Some labels do not have matching features:") - if train_extra: - print(f" Train: {len(train_extra)} labels without features") - if val_extra: - print(f" Val: {len(val_extra)} labels without features") - if test_extra: - print(f" Test: {len(test_extra)} labels without features") - - print("Label alignment verified: All features have matching labels") - - # Identify label column - if label_column is None: - label_column = identify_label_column(df_train) - - if label_column not in df_train.columns: - raise ValueError( - f"Label column '{label_column}' not found after merging labels. " - f"Available columns: {[c for c in df_train.columns if c.endswith('_label')]}" - ) - - print(f"Using label column: {label_column}") - - # Validate that all features have non-null labels - train_nan = df_train[label_column].isna().sum() - val_nan = df_val[label_column].isna().sum() - test_nan = df_test[label_column].isna().sum() - - if train_nan > 0 or val_nan > 0 or test_nan > 0: - error_msg = f"Label alignment error: Found NaN values in label column '{label_column}' after merge.\n" - if train_nan > 0: - error_msg += f" Train: {train_nan} missing labels\n" - if val_nan > 0: - error_msg += f" Val: {val_nan} missing labels\n" - if test_nan > 0: - error_msg += f" Test: {test_nan} missing labels\n" - raise ValueError(error_msg) - - # Check if label has enough unique values for training - n_unique_train = df_train[label_column].nunique() - if n_unique_train < 2: - raise ValueError( - f"Label column '{label_column}' has only {n_unique_train} unique value(s) in training set. " - "Need at least 2 unique values to train a model." - ) - - # Separate features and labels - exclude_cols = {label_column, "index", "Unnamed: 0", "level_0"} # Index columns - exclude_cols.update([col for col in df_train.columns if col.startswith("group_")]) - - feature_cols = [col for col in df_train.columns if col not in exclude_cols] - - X_train = df_train[feature_cols].copy() - y_train = pd.Series(df_train[label_column].squeeze()) - X_val = df_val[feature_cols].copy() - y_val = pd.Series(df_val[label_column].squeeze()) - X_test = df_test[feature_cols].copy() - y_test = pd.Series(df_test[label_column].squeeze()) - - # Sanitize feature column names (remove special JSON characters for LightGBM/XGBoost) - def sanitize_column_name(name): - # Replace characters that cause issues with tree-based models - for char in ["[", "]", "{", "}", '"', "'", ",", ":", ";", "<", ">", "\\", "/"]: - name = str(name).replace(char, "_") - return name - - sanitized_cols = {col: sanitize_column_name(col) for col in X_train.columns} - X_train = X_train.rename(columns=sanitized_cols) - X_val = X_val.rename(columns=sanitized_cols) - X_test = X_test.rename(columns=sanitized_cols) - feature_cols = list(X_train.columns) - - # Handle missing values and infinity - # Guard against empty DataFrames or DataFrames with no numeric columns - if len(X_train) > 0: - numeric_cols = X_train.select_dtypes(include=[np.number]).columns - if len(numeric_cols) > 0: - # Replace infinity values with NaN first - X_train[numeric_cols] = X_train[numeric_cols].replace( - [np.inf, -np.inf], np.nan - ) - X_val[numeric_cols] = X_val[numeric_cols].replace([np.inf, -np.inf], np.nan) - X_test[numeric_cols] = X_test[numeric_cols].replace( - [np.inf, -np.inf], np.nan - ) - - # Fill numeric columns with mean - train_mean = X_train[numeric_cols].mean() - X_train[numeric_cols] = X_train[numeric_cols].fillna(train_mean) - X_val[numeric_cols] = X_val[numeric_cols].fillna(train_mean) - X_test[numeric_cols] = X_test[numeric_cols].fillna(train_mean) - - # Fill non-numeric columns with mode (most frequent value) or empty string - non_numeric_cols = X_train.select_dtypes(exclude=[np.number]).columns - if len(non_numeric_cols) > 0: - for col in non_numeric_cols: - mode_value = X_train[col].mode() - fill_value = mode_value[0] if len(mode_value) > 0 else "" - X_train[col] = X_train[col].fillna(fill_value) - X_val[col] = X_val[col].fillna(fill_value) - X_test[col] = X_test[col].fillna(fill_value) - else: - # If empty DataFrame, just fill with 0 for numeric, empty string for non-numeric - numeric_cols = X_train.select_dtypes(include=[np.number]).columns - non_numeric_cols = X_train.select_dtypes(exclude=[np.number]).columns - if len(numeric_cols) > 0: - # Replace infinity values with NaN first, then fill with 0 - X_train[numeric_cols] = ( - X_train[numeric_cols].replace([np.inf, -np.inf], np.nan).fillna(0) - ) - X_val[numeric_cols] = ( - X_val[numeric_cols].replace([np.inf, -np.inf], np.nan).fillna(0) - ) - X_test[numeric_cols] = ( - X_test[numeric_cols].replace([np.inf, -np.inf], np.nan).fillna(0) - ) - if len(non_numeric_cols) > 0: - X_train[non_numeric_cols] = X_train[non_numeric_cols].fillna("") - X_val[non_numeric_cols] = X_val[non_numeric_cols].fillna("") - X_test[non_numeric_cols] = X_test[non_numeric_cols].fillna("") - - # Determine task type and encode labels if needed (surgical/cognitive load/emotion → regression except group_task_label) - task_type = get_task_type_for_dataset_label(dataset_name, label_column, y_train) - label_encoder = None - - if task_type == "classification" and not pd.api.types.is_numeric_dtype(y_train): - label_encoder = LabelEncoder() - label_encoder.fit(pd.concat([y_train, y_val, y_test])) - y_train = pd.Series(label_encoder.transform(y_train), index=y_train.index) - y_val = pd.Series(label_encoder.transform(y_val), index=y_val.index) - y_test = pd.Series(label_encoder.transform(y_test), index=y_test.index) - print(f"Encoded {len(label_encoder.classes_)} classes") - - print(f"Training set: {len(X_train)}, Val: {len(X_val)}, Test: {len(X_test)}") - - # Train model - print("Training FLAML model...") - model, training_info = train_flaml( - X_train, - y_train, - X_val, - y_val, - task_type=task_type, - time_budget=time_budget, - **flaml_kwargs, - ) - - # Evaluate on training set - print("Evaluating on training set...") - y_train_pred, train_metrics_eval = evaluate_flaml( - model, X_train, y_train, task_type - ) - train_metrics = { - "best_loss": training_info["best_loss"], - "best_model": training_info["best_model"], - **train_metrics_eval, - } - - # Evaluate on validation set - print("Evaluating on validation set...") - y_val_pred, val_metrics = evaluate_flaml(model, X_val, y_val, task_type) - - # Evaluate on test set - print("Evaluating on test set...") - y_test_pred, test_metrics = evaluate_flaml(model, X_test, y_test, task_type) - - results = { - "model": model, - "task_type": task_type, - "train_metrics": train_metrics, - "val_metrics": val_metrics, - "test_metrics": test_metrics, - "training_info": training_info, - "predictions": { - "y_train": y_train.values, - "y_train_pred": y_train_pred, - "y_test": y_test.values, - "y_test_pred": y_test_pred, - "y_val": y_val.values, - "y_val_pred": y_val_pred, - }, - "label_encoder": label_encoder, - "feature_columns": feature_cols, - "n_features": len(feature_cols), - "n_samples": {"train": len(X_train), "val": len(X_val), "test": len(X_test)}, - "split_info": split_info, - } - - return results - - -def find_all_datasets_with_splits(splits_dir: str | Path) -> list[str]: - """Find all datasets that have split info files. Skips datasets whose name contains any SKIP_DATASET_SUBSTRINGS (e.g. label_Anger).""" - splits_dir = Path(splits_dir) - split_files = list(splits_dir.glob("*_split_info.json")) - datasets = [] - for split_file in split_files: - dataset_name = split_file.stem.replace("_split_info", "") - if any(skip in dataset_name for skip in SKIP_DATASET_SUBSTRINGS): - continue - datasets.append(dataset_name) - return sorted(datasets) - - -def create_all_features_battery( - dataset_name: str, - features_dir: str | Path, - base_batteries: list[str] | None = None, -) -> bool: - """ - Create concatenated 'all_features' battery by merging all base feature batteries on index. - - Returns: - True if successfully created, False otherwise - """ - if base_batteries is None: - base_batteries = [ - "simple_features", - "extended_features", - "complex_features", - "distance_features", - ] - features_dir = Path(features_dir) - - # Check if all base batteries exist - all_exist = True - for battery in base_batteries: - train_file = features_dir / f"{dataset_name}_{battery}_train.csv" - val_file = features_dir / f"{dataset_name}_{battery}_val.csv" - test_file = features_dir / f"{dataset_name}_{battery}_test.csv" - if not (train_file.exists() and val_file.exists() and test_file.exists()): - all_exist = False - break - - if not all_exist: - return False - - # Check if already exists - all_features_train = features_dir / f"{dataset_name}_all_features_train.csv" - all_features_val = features_dir / f"{dataset_name}_all_features_val.csv" - all_features_test = features_dir / f"{dataset_name}_all_features_test.csv" - - if ( - all_features_train.exists() - and all_features_val.exists() - and all_features_test.exists() - ): - return True # Already created - - try: - # Load all feature batteries for each split - train_dfs = [] - val_dfs = [] - test_dfs = [] - - for battery in base_batteries: - train_file = features_dir / f"{dataset_name}_{battery}_train.csv" - val_file = features_dir / f"{dataset_name}_{battery}_val.csv" - test_file = features_dir / f"{dataset_name}_{battery}_test.csv" - - train_df = pd.read_csv(train_file) - val_df = pd.read_csv(val_file) - test_df = pd.read_csv(test_file) - - # Ensure index column exists - index_col = "index" if "index" in train_df.columns else "Unnamed: 0" - if index_col not in train_df.columns: - raise ValueError( - f"Index column '{index_col}' not found in {train_file}" - ) - - # Set index for merging - train_df = train_df.set_index(index_col) - val_df = val_df.set_index(index_col) - test_df = test_df.set_index(index_col) - - # Remove group_ columns and index-like columns from feature columns - feature_cols = [ - col - for col in train_df.columns - if not col.startswith("group_") and col != index_col - ] - - # Add battery prefix to feature columns to avoid conflicts - train_df_features = train_df[feature_cols].copy() - val_df_features = val_df[feature_cols].copy() - test_df_features = test_df[feature_cols].copy() - - # Rename columns with battery prefix - train_df_features.columns = [ - f"{battery}_{col}" for col in train_df_features.columns - ] - val_df_features.columns = [ - f"{battery}_{col}" for col in val_df_features.columns - ] - test_df_features.columns = [ - f"{battery}_{col}" for col in test_df_features.columns - ] - - train_dfs.append(train_df_features) - val_dfs.append(val_df_features) - test_dfs.append(test_df_features) - - # Concatenate all features on index - train_combined = pd.concat(train_dfs, axis=1) - val_combined = pd.concat(val_dfs, axis=1) - test_combined = pd.concat(test_dfs, axis=1) - - # Reset index to make it a column - # The index name should be the same as index_col, but we want it to be 'index' - train_combined = train_combined.reset_index() - val_combined = val_combined.reset_index() - test_combined = test_combined.reset_index() - - # Ensure the index column is named 'index' - # After reset_index, the index becomes a column with its original name (index_col) - # We need to rename it to 'index' for consistency - index_col_name = train_combined.columns[0] # First column is the index - if index_col_name != "index": - train_combined = train_combined.rename(columns={index_col_name: "index"}) - val_combined = val_combined.rename(columns={index_col_name: "index"}) - test_combined = test_combined.rename(columns={index_col_name: "index"}) - - # Save concatenated features - train_combined.to_csv(all_features_train, index=False) - val_combined.to_csv(all_features_val, index=False) - test_combined.to_csv(all_features_test, index=False) - - return True - except Exception as e: - print(f"Warning: Failed to create all_features battery for {dataset_name}: {e}") - return False - - -def find_available_feature_batteries( - dataset_name: str, features_dir: str | Path, feature_batteries: list[str] -) -> list[str]: - """Find which feature batteries are available for a dataset.""" - features_dir = Path(features_dir) - available = [] - for battery in feature_batteries: - if battery == "all_features": - # For all_features, check if it exists or can be created - train_file = features_dir / f"{dataset_name}_all_features_train.csv" - val_file = features_dir / f"{dataset_name}_all_features_val.csv" - test_file = features_dir / f"{dataset_name}_all_features_test.csv" - - if train_file.exists() and val_file.exists() and test_file.exists(): - available.append(battery) - else: - # Try to create it - if create_all_features_battery(dataset_name, features_dir): - available.append(battery) - else: - # Check if train/val/test files exist - train_file = features_dir / f"{dataset_name}_{battery}_train.csv" - val_file = features_dir / f"{dataset_name}_{battery}_val.csv" - test_file = features_dir / f"{dataset_name}_{battery}_test.csv" - - if train_file.exists() and val_file.exists() and test_file.exists(): - available.append(battery) - return available - - -def train_flaml_for_dataset_label_battery( - dataset_name: str, - label_column: str, - feature_battery: str, - features_dir: str | Path, - splits_dir: str | Path, - time_budget: int = 300, -) -> dict[str, Any] | None: - """ - Train FLAML model for a specific dataset, label, and feature battery. - - Returns: - Dictionary with results or None if training failed - """ - from datetime import datetime - - features_dir = Path(features_dir) - splits_dir = Path(splits_dir) - - # Construct file paths - train_features_path = features_dir / f"{dataset_name}_{feature_battery}_train.csv" - val_features_path = features_dir / f"{dataset_name}_{feature_battery}_val.csv" - test_features_path = features_dir / f"{dataset_name}_{feature_battery}_test.csv" - split_info_path = splits_dir / f"{dataset_name}_split_info.json" - - # Check if all files exist - if not all( - [ - train_features_path.exists(), - val_features_path.exists(), - test_features_path.exists(), - split_info_path.exists(), - ] - ): - return None - - try: - # Train FLAML model - results = run_flaml_pipeline_presplit( - train_features_path=train_features_path, - val_features_path=val_features_path, - test_features_path=test_features_path, - split_info_path=split_info_path, - label_column=label_column, - time_budget=time_budget, - ) - - # Extract metrics and metadata - result_dict = { - "dataset": dataset_name, - "label": label_column, - "feature_battery": feature_battery, - "task_type": results["task_type"], - "best_model": results["training_info"]["best_model"], - "n_features": results["n_features"], - "n_train": results["n_samples"]["train"], - "n_val": results["n_samples"]["val"], - "n_test": results["n_samples"]["test"], - "timestamp": datetime.now().isoformat(), - } - - # Add train metrics - for metric_name, metric_value in results["train_metrics"].items(): - if isinstance(metric_value, (int, float, str)): - result_dict[f"train_{metric_name}"] = metric_value - - # Add validation metrics - for metric_name, metric_value in results["val_metrics"].items(): - if isinstance(metric_value, (int, float, str)): - result_dict[f"val_{metric_name}"] = metric_value - - # Add test metrics - for metric_name, metric_value in results["test_metrics"].items(): - if isinstance(metric_value, (int, float, str)): - result_dict[f"test_{metric_name}"] = metric_value - - return result_dict - - except Exception as e: - from datetime import datetime - - return { - "dataset": dataset_name, - "label": label_column, - "feature_battery": feature_battery, - "error": str(e), - "timestamp": datetime.now().isoformat(), - } - - -def save_results_incremental( - new_result: dict[str, Any], results_file: str | Path -) -> None: - """ - Save a single result incrementally to the results file. - This ensures results are saved after each experiment to prevent data loss. - - Args: - new_result: Dictionary containing result data for one experiment - results_file: Path to CSV file to save/load results - """ - results_file = Path(results_file) - - # Ensure results directory exists - results_file.parent.mkdir(parents=True, exist_ok=True) - - # Convert single result to DataFrame - new_df = pd.DataFrame([new_result]) - - # Load existing results if file exists - if results_file.exists(): - existing_df = pd.read_csv(results_file) - required_cols = ["dataset", "label", "feature_battery"] - use_aoi_key = "aoi_column" in new_result and "aoi_column" in existing_df.columns - if use_aoi_key: - required_cols = required_cols + ["aoi_column"] - - if all(col in existing_df.columns for col in required_cols): - # Check if this combination already exists - mask = ( - (existing_df["dataset"] == new_result.get("dataset")) - & (existing_df["label"] == new_result.get("label")) - & (existing_df["feature_battery"] == new_result.get("feature_battery")) - ) - if use_aoi_key: - mask = mask & ( - existing_df["aoi_column"] == new_result.get("aoi_column") - ) - - if mask.any(): - # Update existing row - existing_df.loc[mask] = new_df.iloc[0] - results_df = existing_df - else: - # Append new row - results_df = pd.concat([existing_df, new_df], ignore_index=True) - else: - # If required columns don't exist, just append - results_df = pd.concat([existing_df, new_df], ignore_index=True) - else: - # Create new file - results_df = new_df - - # Sort by dataset, label, feature_battery (and aoi_column if present) - sort_cols = ["dataset", "label", "feature_battery"] - if "aoi_column" in results_df.columns: - sort_cols.append("aoi_column") - if all(col in results_df.columns for col in sort_cols): - results_df = results_df.sort_values(sort_cols) - - # Save to CSV - results_df.to_csv(results_file, index=False) - - -def run_training_battery( - features_dir: str | Path, - splits_dir: str | Path, - results_file: str | Path, - feature_batteries: list[str], - time_budget: int = 300, - skip_existing: bool = True, -) -> pd.DataFrame: - """ - Run FLAML training for all datasets, labels, and feature batteries. - - Args: - features_dir: Directory containing feature CSV files - splits_dir: Directory containing split info and label files - results_file: Path to CSV file to save/load results - feature_batteries: List of feature battery names to process - time_budget: Time budget per model in seconds - skip_existing: If True, skip combinations that already have results - - Returns: - DataFrame with all results - """ - from tqdm import tqdm - - features_dir = Path(features_dir) - splits_dir = Path(splits_dir) - results_file = Path(results_file) - - all_results = [] - existing_keys = set() - - # Load existing results if file exists - if results_file.exists() and skip_existing: - existing_df = pd.read_csv(results_file) - required_cols = ["dataset", "label", "feature_battery"] - if all(col in existing_df.columns for col in required_cols): - existing_keys = set( - zip( - existing_df["dataset"], - existing_df["label"], - existing_df["feature_battery"], - strict=False, - ) - ) - - # Find all datasets - all_datasets = find_all_datasets_with_splits(splits_dir) - - # Pre-pass: count total FLAML runs (dataset × label × feature_battery) - total_runs = 0 - for dataset_name in all_datasets: - available_batteries = find_available_feature_batteries( - dataset_name, features_dir, feature_batteries - ) - if not available_batteries: - continue - labels_path = get_labels_path(splits_dir, dataset_name) - if labels_path is None: - continue - labels_df = pd.read_csv(labels_path) - all_label_columns = [col for col in labels_df.columns if col.endswith("_label")] - if not all_label_columns: - continue - for lc in all_label_columns: - if dataset_name.endswith("_" + lc): - all_label_columns = [lc] - break - split_info_path = splits_dir / f"{dataset_name}_split_info.json" - split_info = ( - load_split_info(split_info_path) if split_info_path.exists() else None - ) - for feature_battery in available_batteries: - train_features_path = ( - features_dir / f"{dataset_name}_{feature_battery}_train.csv" - ) - if not train_features_path.exists(): - continue - valid_labels, _ = filter_valid_labels( - train_features_path, - all_label_columns, - split_info=split_info, - min_unique_values=2, - ) - for label_column in valid_labels: - key = (dataset_name, label_column, feature_battery) - if key not in existing_keys: - total_runs += 1 - print(f"Total FLAML runs (trials): {total_runs}") - - # Iterate over all datasets - for dataset_name in tqdm(all_datasets, desc="Datasets"): - print(f"\n{'='*80}") - print(f"Processing dataset: {dataset_name}") - print(f"{'='*80}") - - # Find available feature batteries for this dataset - available_batteries = find_available_feature_batteries( - dataset_name, features_dir, feature_batteries - ) - if not available_batteries: - print(f" ⚠️ No feature batteries found for {dataset_name}, skipping...") - continue - - print( - f" Found {len(available_batteries)} feature batteries: {', '.join(available_batteries)}" - ) - - # Load labels to find all available labels (supports both _labels.csv and _labels_train.csv) - labels_path = get_labels_path(splits_dir, dataset_name) - if labels_path is None: - print(f" ⚠️ No labels file found for {dataset_name}, skipping...") - continue - - labels_df = pd.read_csv(labels_path) - - # Get all label columns (ending with '_label') - all_label_columns = [col for col in labels_df.columns if col.endswith("_label")] - - if not all_label_columns: - print(f" ⚠️ No label columns found for {dataset_name}, skipping...") - continue - - # If dataset name is per-label (e.g. ..._effort_label or ..._temporal_label), train only for that label - for lc in all_label_columns: - if dataset_name.endswith("_" + lc): - all_label_columns = [lc] - print(f" Per-label dataset: training only for {lc}") - break - - print( - f" Found {len(all_label_columns)} labels: {', '.join(all_label_columns)}" - ) - - # Load split info to filter valid labels - split_info_path = splits_dir / f"{dataset_name}_split_info.json" - split_info = ( - load_split_info(split_info_path) if split_info_path.exists() else None - ) - - # Iterate over feature batteries - for feature_battery in available_batteries: - print(f"\n Processing feature battery: {feature_battery}") - - # Find valid labels for this feature battery - train_features_path = ( - features_dir / f"{dataset_name}_{feature_battery}_train.csv" - ) - if not train_features_path.exists(): - continue - - # Filter labels that have enough unique values in training set - valid_labels, skipped_labels = filter_valid_labels( - train_features_path, - all_label_columns, - split_info=split_info, - min_unique_values=2, - ) - - if skipped_labels: - print( - f" Skipped {len(skipped_labels)} labels (insufficient unique values): {', '.join(skipped_labels)}" - ) - - if not valid_labels: - print( - f" ⚠️ No valid labels found for {feature_battery}, skipping..." - ) - continue - - print( - f" Training on {len(valid_labels)} labels: {', '.join(valid_labels)}" - ) - - # Iterate over labels - for label_column in valid_labels: - # Check if we already have results for this combination - key = (dataset_name, label_column, feature_battery) - if key in existing_keys: - print(f" ⏭️ Skipping {label_column} (already trained)") - continue - - print( - f"\n Training: {dataset_name} / {label_column} / {feature_battery}" - ) - - # Train model - result = train_flaml_for_dataset_label_battery( - dataset_name=dataset_name, - label_column=label_column, - feature_battery=feature_battery, - features_dir=features_dir, - splits_dir=splits_dir, - time_budget=time_budget, - ) - - if result: - all_results.append(result) - - # Save result immediately after each experiment - try: - save_results_incremental(result, results_file) - print(f" 💾 Result saved to {results_file}") - except Exception as e: - print(f" ⚠️ Warning: Failed to save result: {e}") - - # Print key metrics - if "error" not in result: - if result["task_type"] == "classification": - test_accuracy = result.get("test_accuracy", "N/A") - test_f1 = result.get("test_f1", "N/A") - print( - f" ✅ Test Accuracy: {test_accuracy}, Macro F1: {test_f1}" - ) - else: - test_metric = result.get("test_r2", "N/A") - print(f" ✅ Test R²: {test_metric}") - else: - print( - f" ❌ Training failed: {result.get('error', 'Unknown error')}" - ) - - print(f"\n{'='*80}") - print("Training complete!") - print(f" Total models trained: {len(all_results)}") - print(f"{'='*80}") - - # Final consolidation: reload from file to get all results (including incrementally saved ones) - # This ensures we have all results even if some were saved incrementally but not in all_results - if results_file.exists(): - results_df = pd.read_csv(results_file) - - # Sort by dataset, label, feature_battery - if all( - col in results_df.columns for col in ["dataset", "label", "feature_battery"] - ): - results_df = results_df.sort_values(["dataset", "label", "feature_battery"]) - - # Remove duplicates (keep latest) in case of any duplicates - results_df = results_df.drop_duplicates( - subset=["dataset", "label", "feature_battery"], keep="last" - ) - - # Save consolidated results - results_df.to_csv(results_file, index=False) - print( - f"\n✅ Final consolidation: {len(results_df)} total results in {results_file}" - ) - - return results_df - elif all_results: - # If file doesn't exist but we have results, save them - results_df = pd.DataFrame(all_results) - - # Sort by dataset, label, feature_battery - if all( - col in results_df.columns for col in ["dataset", "label", "feature_battery"] - ): - results_df = results_df.sort_values(["dataset", "label", "feature_battery"]) - - # Save to CSV - results_df.to_csv(results_file, index=False) - print(f"\n✅ Saved {len(results_df)} results to {results_file}") - - return results_df - else: - # No results at all - return pd.DataFrame() - - -def print_results_summary(results_df: pd.DataFrame): - """Print summary statistics for results DataFrame.""" - if results_df.empty: - print("⚠️ No results to summarize.") - return - - print("\nSummary Statistics:") - print(f" Total results: {len(results_df)}") - - if "dataset" in results_df.columns: - print(f" Datasets: {results_df['dataset'].nunique()}") - if "feature_battery" in results_df.columns: - print(f" Feature batteries: {results_df['feature_battery'].nunique()}") - if "label" in results_df.columns: - print(f" Labels: {results_df['label'].nunique()}") - - if "task_type" in results_df.columns: - print("\n Task types:") - print(results_df["task_type"].value_counts().to_string()) - - if "test_accuracy" in results_df.columns and "task_type" in results_df.columns: - classification_results = results_df[results_df["task_type"] == "classification"] - if len(classification_results) > 0: - print(f"\n Classification (n={len(classification_results)}):") - print( - f" Mean Test Accuracy: {classification_results['test_accuracy'].mean():.4f}" - ) - print( - f" Std Test Accuracy: {classification_results['test_accuracy'].std():.4f}" - ) - - if "test_r2" in results_df.columns and "task_type" in results_df.columns: - regression_results = results_df[results_df["task_type"] == "regression"] - if len(regression_results) > 0: - print(f"\n Regression (n={len(regression_results)}):") - print(f" Mean Test R²: {regression_results['test_r2'].mean():.4f}") - print(f" Std Test R²: {regression_results['test_r2'].std():.4f}") - - # Display first few rows - print("\nFirst 5 results:") - display_cols = [] - for col in ["dataset", "label", "feature_battery", "task_type", "best_model"]: - if col in results_df.columns: - display_cols.append(col) - if "test_accuracy" in results_df.columns: - display_cols.append("test_accuracy") - if "test_r2" in results_df.columns: - display_cols.append("test_r2") - if display_cols: - print(results_df[display_cols].head().to_string(index=False)) - else: - print(" No displayable columns found") diff --git a/experiments/collection_experiments/utils/split_utils.py b/experiments/collection_experiments/utils/split_utils.py deleted file mode 100644 index f22bb4d..0000000 --- a/experiments/collection_experiments/utils/split_utils.py +++ /dev/null @@ -1,28 +0,0 @@ -""" -Split utilities for collection experiments. Thin wrapper over benchmark_utils. -""" - -from .benchmark_utils import ( - apply_split_to_features, - apply_split_to_labels, - create_composite_index, - get_split_info_paths_for_dataset, - load_split_info, - save_split_info, -) - -SPLIT_CONFIG = { - "test_size": 0.2, - "val_size": 0.2, - "random_state": 42, -} - -__all__ = [ - "SPLIT_CONFIG", - "create_composite_index", - "load_split_info", - "save_split_info", - "apply_split_to_features", - "apply_split_to_labels", - "get_split_info_paths_for_dataset", -] diff --git a/experiments/collection_experiments/utils/training_common.py b/experiments/collection_experiments/utils/training_common.py deleted file mode 100644 index c8401ec..0000000 --- a/experiments/collection_experiments/utils/training_common.py +++ /dev/null @@ -1,49 +0,0 @@ -""" -Shared constants and helpers for FLAML and DL training (no cross-import between them). -""" - -import pandas as pd - -REGRESSION_DATASET_PREFIXES = ("Cognitive_load", "Emotions", "Surgical") - -# Dataset/split names containing any of these substrings are skipped in training. -SKIP_DATASET_SUBSTRINGS = ("label_Anger",) - - -def get_task_type(y: pd.Series, label_name: str | None = None) -> str: - """Determine task type (classification or regression) from target variable.""" - if pd.api.types.is_numeric_dtype(y): - n_unique = y.nunique() - n_samples = len(y) - if pd.api.types.is_integer_dtype(y): - if n_unique < 20 and n_unique < n_samples * 0.1: - return "classification" - if n_unique <= 10: - return "classification" - else: - if n_unique < 10: - return "classification" - return "regression" - return "classification" - - -def get_task_type_for_dataset_label( - dataset_name: str, - label_column: str, - y: pd.Series, -) -> str: - """ - Effective task type for a (dataset, label) pair. - Surgical, Cognitive load, and Emotion datasets use regression for all labels - except group_task_label, which remains classification. - """ - if label_column == "group_task_label": - return get_task_type(y) - full_name = ( - dataset_name - if (label_column and dataset_name.endswith("_" + label_column)) - else (dataset_name + "_" + label_column) if label_column else dataset_name - ) - if any(full_name.startswith(prefix) for prefix in REGRESSION_DATASET_PREFIXES): - return "regression" - return get_task_type(y) diff --git a/experiments/experiment_1.ipynb b/experiments/experiment_1.ipynb new file mode 100644 index 0000000..710240f --- /dev/null +++ b/experiments/experiment_1.ipynb @@ -0,0 +1,530 @@ +{ + "cells": [ + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2025-07-30T10:47:15.450820Z", + "start_time": "2025-07-30T10:47:14.821573Z" + } + }, + "source": [ + "import os\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "from typing import Dict, List\n", + "from os.path import join\n", + "from eyefeatures.preprocessing.fixation_extraction import IVT\n", + "from timeit import default_timer\n", + "\n", + "from eyefeatures.visualization.static_visualization import scanpath_visualization\n", + "\n", + "DATA_PATH = join(\n", + " \"..\", \"data\", \"experiments\", \"Eye-Tracking-Data\"\n", + ")\n", + "\n", + "x = 'Gaze X'\n", + "y = 'Gaze Y'\n", + "t = 'EventIDE TimeStamp'\n", + "xx, yy = 'Center X (pix)', 'Center Y (pix)'" + ], + "outputs": [], + "execution_count": 1 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "## Code for experiment\n", + "\n", + "### Gazes processing and fixation extraction" + ], + "id": "84b356f8c0a981a1" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:47:15.463806Z", + "start_time": "2025-07-30T10:47:15.456751Z" + } + }, + "cell_type": "code", + "source": [ + "from collections import defaultdict\n", + "\n", + "def normalize(df, x, y):\n", + " df[x] = (df[x] - df[x].min()) / (df[x].max() - df[x].min())\n", + " df[y] = (df[y] - df[y].min()) / (df[y].max() - df[y].min())\n", + " return df\n", + "\n", + "def get_gazes(part_path: str) -> pd.DataFrame:\n", + " part_id = int(os.path.basename(part_path))\n", + " gazes = pd.read_csv(join(part_path, \"TrackerLog.csv\"), sep=',', skiprows=3)\n", + " gazes[\"PartID\"] = part_id\n", + " gazes[\"TextID\"] = -1\n", + " gazes[\"LoopID\"] = -1\n", + " text_id = defaultdict(lambda: 1)\n", + " loop_id = -1\n", + " l, r = 0, 0 # [l, r)\n", + " is_end = True\n", + " while r < len(gazes):\n", + " event = gazes.loc[r, \"Current Event\"]\n", + " if \"Text\" in event:\n", + " loop_id = int(event.split(' ')[1][-1])\n", + " if is_end:\n", + " is_end = False\n", + " l = r\n", + " else:\n", + " if not is_end:\n", + " is_end = True\n", + " if l != r:\n", + " gazes.loc[l:r, \"TextID\"] = text_id[loop_id]\n", + " gazes.loc[l:r, \"LoopID\"] = loop_id\n", + " text_id[loop_id] += 1\n", + " r += 1\n", + "\n", + " if not is_end:\n", + " gazes.loc[l:r, \"TextID\"] = text_id\n", + " gazes.loc[l:r, \"LoopID\"] = loop_id\n", + "\n", + " return gazes\n", + "\n", + "def get_fixations(part_path: str, folder: str) -> pd.DataFrame:\n", + " part_id = int(os.path.basename(part_path))\n", + " loop_id = int(folder[-1])\n", + " path = join(part_path, folder)\n", + " scanpath_files = sorted(os.listdir(path))\n", + " scanpath_dfs = []\n", + " for scanpath_file in scanpath_files:\n", + " text_id = int(scanpath_file.split('_')[1].split('.')[0])\n", + " fixations = pd.read_csv(join(path, scanpath_file), index_col=\"Fixation Number\")\n", + " fixations[\"TextID\"] = text_id\n", + " fixations[\"PartID\"] = part_id\n", + " fixations[\"LoopID\"] = loop_id\n", + " scanpath_dfs.append(fixations)\n", + " return pd.concat(scanpath_dfs)\n", + "\n", + "def get_comparison(threshold, min_duration, input_gazes, verbose=True):\n", + " def _print(x):\n", + " if verbose:\n", + " print(x)\n", + "\n", + " results = {}\n", + "\n", + " part_paths = [\n", + " join(DATA_PATH, part)\n", + " for part in os.listdir(DATA_PATH)\n", + " ]\n", + "\n", + " for part_path in part_paths:\n", + " if \".\" in os.path.basename(part_path):\n", + " continue\n", + "\n", + " _print(part_path)\n", + "\n", + " part_id = int(os.path.basename(part_path))\n", + " part_gazes = input_gazes[input_gazes[\"PartID\"] == part_id]\n", + " for folder in os.listdir(part_path):\n", + " if \"loop\" not in folder:\n", + " continue\n", + " _print(folder)\n", + "\n", + " loop_id = int(folder[-1])\n", + " fixations = get_fixations(part_path, folder)\n", + " fixations = normalize(fixations, xx, yy)\n", + " loop_gazes = part_gazes[part_gazes.LoopID == loop_id]\n", + "\n", + " for text_id in loop_gazes.TextID.value_counts().index:\n", + " gazes = loop_gazes[loop_gazes.TextID == text_id][[x, y, t]].reset_index(drop=True)\n", + "\n", + " _print(f\"PartID: {part_id}, LoopID: {loop_id}, TextID: {text_id}, n_gazes: {len(gazes)}\")\n", + "\n", + " our_params = {'threshold': threshold, 'min_duration': min_duration}\n", + " fixations_extractor = IVT(x=x, y=y, t=t, pk=None,\n", + " threshold=our_params['threshold'],\n", + " min_duration=our_params['min_duration'])\n", + "\n", + " start_ts = default_timer()\n", + " our_fixations = fixations_extractor.fit_transform(gazes)\n", + " end_ts = default_timer()\n", + "\n", + " their_fixations = fixations[(fixations.TextID == text_id) & (fixations.LoopID == loop_id) & (fixations.PartID == part_id)]\n", + "\n", + " results_our = {\n", + " \"time\": end_ts - start_ts,\n", + " \"fixation_count\": len(our_fixations),\n", + " \"avg_duration\" : our_fixations['duration'].mean()\n", + " }\n", + " results_their = {\n", + " \"fixation_count\": len(their_fixations),\n", + " \"avg_duration\" : their_fixations['Duration'].mean()\n", + " }\n", + " results[join(part_path, folder, f\"text_{text_id}\")] = {\n", + " \"part_id\": part_id,\n", + " \"loop_id\": loop_id,\n", + " \"text_id\": text_id,\n", + " \"our\": results_our,\n", + " \"their\": results_their,\n", + " \"our_fixations\": our_fixations,\n", + " \"their_fixations\": their_fixations,\n", + " \"gazes\": gazes\n", + " }\n", + " return results" + ], + "id": "b86e1ad4e40a5429", + "outputs": [], + "execution_count": 2 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "### Helper functions", + "id": "83f61aa3d05e5f59" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:47:15.543188Z", + "start_time": "2025-07-30T10:47:15.540281Z" + } + }, + "cell_type": "code", + "source": [ + "def print_results(results):\n", + " results_dfs = {}\n", + " for k, v in results.items():\n", + " our = pd.DataFrame.from_dict(v['our'], orient='index')\n", + " our.columns = ['our']\n", + " their = pd.DataFrame.from_dict(v['their'], orient='index')\n", + " their.columns = ['their']\n", + " df = pd.concat([our, their], axis=1)\n", + " \n", + " results_dfs[k] = df\n", + " print(df)\n", + " print(\"\\n\")\n", + "\n", + "def plot_diff(results, k): \n", + " our_fixations = results[k][\"our_fixations\"]\n", + " their_fixations = results[k][\"their_fixations\"]\n", + " \n", + " print(\"OUR\")\n", + " scanpath_visualization(\n", + " our_fixations,\n", + " x,\n", + " y,\n", + " path_width=1,\n", + " show_plot=True,\n", + " fig_size=(6, 6)\n", + " )\n", + " print(\"THEIRS\")\n", + " scanpath_visualization(\n", + " their_fixations,\n", + " 'Center X (pix)',\n", + " 'Center Y (pix)',\n", + " path_width=1,\n", + " show_plot=True,\n", + " fig_size=(6, 6)\n", + " )" + ], + "id": "985ab520ffeb8a87", + "outputs": [], + "execution_count": 3 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:47:15.801203Z", + "start_time": "2025-07-30T10:47:15.585376Z" + } + }, + "cell_type": "code", + "source": [ + "from eyefeatures.features.scanpath_dist import calc_dtw_dist, calc_hau_dist, calc_euc_dist\n", + "\n", + "\n", + "def print_metrics(metrics):\n", + " print(f\"Cnt diff: {metrics[\"cnt\"]:.2f}\")\n", + " print(f\"Euc diff: {metrics[\"euc\"]:.5f}\")\n", + " print(f\"Hau diff: {metrics[\"hau\"]:.5f}\")\n", + " print(f\"Dtw diff: {metrics[\"dtw\"]:.5f}\")\n", + "\n", + "def calc_metrics(results, verbose=True, banned_keys=None):\n", + " total_cnt_diff = []\n", + " total_euc_diff = []\n", + " total_hau_diff = []\n", + " total_dtw_diff = []\n", + " all_metrics = {}\n", + " for k, v in results.items():\n", + " if k in banned_keys:\n", + " continue\n", + " o, t = v[\"our_fixations\"][[x, y]], v[\"their_fixations\"][[xx, yy]]\n", + " n = min([len(o), len(t)])\n", + " if n <= 1:\n", + " continue\n", + " cnt, euc, hau, dtw = abs(len(o) - len(t)), calc_euc_dist(o, t) / n, calc_hau_dist(o, t) / n, calc_dtw_dist(o, t) / n\n", + " total_cnt_diff.append(cnt)\n", + " total_euc_diff.append(euc)\n", + " total_hau_diff.append(hau)\n", + " total_dtw_diff.append(dtw)\n", + " \n", + " all_metrics[k] = {\n", + " \"cnt\": cnt,\n", + " \"euc\": euc,\n", + " \"hau\": hau,\n", + " \"dtw\": dtw\n", + " }\n", + "\n", + " avg_metrics = {\n", + " \"cnt\": sum(total_cnt_diff) / len(total_cnt_diff),\n", + " \"euc\": sum(total_euc_diff) / len(total_euc_diff),\n", + " \"hau\": sum(total_hau_diff) / len(total_hau_diff),\n", + " \"dtw\": sum(total_dtw_diff) / len(total_dtw_diff)\n", + " }\n", + " if verbose:\n", + " print_metrics(avg_metrics)\n", + " return avg_metrics, all_metrics" + ], + "id": "b283ef80bf3ff67b", + "outputs": [], + "execution_count": 4 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "## Results", + "id": "516067f2d0bf8ec8" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "### Metrics\n", + "\n", + "**Note**: participant with ID $1104$ is removed from consideration, since his scanpaths are spoiled." + ], + "id": "1212ad4a15d7074e" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:47:59.986891Z", + "start_time": "2025-07-30T10:47:15.806267Z" + } + }, + "cell_type": "code", + "source": [ + "input_gazes = pd.read_csv(join(DATA_PATH, \"Eye-Tracking-Data-All-Gazes.csv\"))\n", + "results = get_comparison(threshold=0.0005, min_duration=70, input_gazes=input_gazes, verbose=False)\n", + "banned_keys = [k for k in results if results[k]['part_id'] == 1104]\n", + "avg_metrics, all_metrics = calc_metrics(results, verbose=False, banned_keys=banned_keys)\n", + "print_metrics(avg_metrics)" + ], + "id": "85384ea0ad175b0e", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cnt diff: 7.14\n", + "Euc diff: 0.11485\n", + "Hau diff: 0.00182\n", + "Dtw diff: 0.05950\n" + ] + } + ], + "execution_count": 5 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "### Plots", + "id": "725b0cc913b9e07c" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:48:00.117793Z", + "start_time": "2025-07-30T10:48:00.113707Z" + } + }, + "cell_type": "code", + "source": [ + "metric_name = \"dtw\"\n", + "min_k, max_k = -1, -1\n", + "min_dist, max_dist = np.inf, -np.inf\n", + "for k in all_metrics:\n", + " if all_metrics[k][metric_name] > max_dist:\n", + " max_dist = all_metrics[k][metric_name]\n", + " max_k = k\n", + " if all_metrics[k][metric_name] < min_dist:\n", + " min_dist = all_metrics[k][metric_name]\n", + " min_k = k" + ], + "id": "b7dbd8d16373ac6", + "outputs": [], + "execution_count": 6 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "Scanpath with smallest metric value:", + "id": "4fa4c2328527a516" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:48:00.240514Z", + "start_time": "2025-07-30T10:48:00.238632Z" + } + }, + "cell_type": "code", + "source": "print(f\"{min_dist:.4f}\")", + "id": "ebfec5822bcd726e", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0253\n" + ] + } + ], + "execution_count": 7 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:48:00.478274Z", + "start_time": "2025-07-30T10:48:00.354991Z" + } + }, + "cell_type": "code", + "source": "plot_diff(results, min_k)", + "id": "37bbb50b8d2b2529", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OUR\n", + "THEIRS\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 8 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "Scanpath with largest metric value:", + "id": "3f3ea8b8a2e42315" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:48:00.563026Z", + "start_time": "2025-07-30T10:48:00.561293Z" + } + }, + "cell_type": "code", + "source": "print(f\"{max_dist:.4f}\")", + "id": "7245de358c98d7b0", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0978\n" + ] + } + ], + "execution_count": 9 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-07-30T10:48:00.724441Z", + "start_time": "2025-07-30T10:48:00.635074Z" + } + }, + "cell_type": "code", + "source": "plot_diff(results, max_k)", + "id": "3d3e787404e58365", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OUR\n", + "THEIRS\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 10 + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/experiments/experiment_2.ipynb b/experiments/experiment_2.ipynb new file mode 100644 index 0000000..3dabd43 --- /dev/null +++ b/experiments/experiment_2.ipynb @@ -0,0 +1,282 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "24c9b935", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from eyefeatures.features.extractor import Extractor\n", + "import eyefeatures.features.stats as eye_stats\n", + "import numpy as np\n", + "import eyefeatures.features.scanpath_dist as eye_dist" + ] + }, + { + "cell_type": "markdown", + "id": "de8f541f", + "metadata": {}, + "source": [ + "# Extraction of simple features" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b028aba", + "metadata": {}, + "outputs": [], + "source": [ + "dyslexia = pd.read_excel('Fixation_report.xlsx', sheet_name=0)\n", + "dyslexia.Group = 2\n", + "norm = pd.read_excel('Fixation_report.xlsx', sheet_name=1)\n", + "norm.Group = 1\n", + "risk = pd.read_excel('Fixation_report.xlsx', sheet_name=2)\n", + "risk.Group = 0\n", + "print(dyslexia.shape, norm.shape, risk.shape)\n", + "data = pd.concat([dyslexia, norm, risk], ignore_index=True)\n", + "data['timestamp'] = list(range(len(data)))\n", + "data\n", + "\n", + "extractor = Extractor(\n", + " features=[ # list of features\n", + " eye_stats.SaccadeFeatures(\n", + " features_stats={\n", + " 'length': ['mean', 'std', 'max', 'min', 'sum', 'count'],\n", + " }\n", + " ),\n", + " eye_stats.FixationFeatures(\n", + " features_stats={\n", + " 'duration': ['mean', 'std', 'min', 'max', 'sum'],\n", + " }\n", + " ),\n", + " eye_stats.RegressionFeatures(\n", + " rule = (90,),\n", + " deviation = 70,\n", + " features_stats={\n", + " 'length': ['mean', 'std', 'max', 'min','count'],\n", + " }\n", + " )\n", + " \n", + " ],\n", + " x='FIX_X', # column with x-coordinate of fixations\n", + " y='FIX_Y', # column with y-coordinate of fixations\n", + " duration='FIX_DURATION', # column with duration in ms\n", + " t = 'timestamp',\n", + " pk=['SubjectID', 'Sentence_ID'], # list of columns being primary key\n", + " return_df=True, # return as pd.DataFrame\n", + " extra=['Group'],\n", + " aggr_extra='mean',\n", + " leave_pk = True\n", + ")\n", + "\n", + "simple_stats = extractor.fit_transform(data)\n", + "\n", + "X_train = simple_stats.drop(columns = ['Group', 'SubjectID', 'Sentence_ID'])\n", + "y_train = simple_stats['Group'].astype(int) \n", + "\n", + "\n", + "norm_demo = pd.read_excel('demo.xlsx', sheet_name=0)\n", + "risk_demo = pd.read_excel('demo.xlsx', sheet_name=1)\n", + "dyslexia_demo = pd.read_excel('demo.xlsx', sheet_name=2)\n", + "data_demo = pd.concat([dyslexia_demo, norm_demo, risk_demo], ignore_index=True).drop(columns=['Group'])\n", + "simple_stats_demo = simple_stats.merge(data_demo, on='SubjectID')\n", + "X_train_demo = simple_stats_demo.drop(columns = ['Group', 'SubjectID', 'Sentence_ID'])\n", + "y_train_demo = simple_stats_demo['Group'].astype(int) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b85f33b", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier\n", + "from sklearn.metrics import f1_score, make_scorer, classification_report\n", + "from skopt import BayesSearchCV\n", + "from skopt.space import Integer, Real, Categorical\n", + "\n", + "X_test, y_test = None, None\n", + "\n", + "f1_micro = make_scorer(f1_score, average=\"micro\")\n", + "f1_micro._deprecation_msg ='xui'\n", + "\n", + "rf_search_space = {\n", + " \"n_estimators\": Integer(100, 1000),\n", + " \"max_depth\": Categorical([None] + list(range(2, 33))),\n", + " \"min_samples_split\": Integer(2, 20),\n", + " \"min_samples_leaf\": Integer(1, 10),\n", + " \"max_features\": Categorical([\"sqrt\", \"log2\", None]),\n", + " \"bootstrap\": Categorical([True, False]),\n", + "}\n", + "\n", + "gb_search_space = {\n", + " \"n_estimators\": Integer(50, 1000),\n", + " \"learning_rate\": Real(1e-3, 0.3, prior=\"log-uniform\"),\n", + " \"max_depth\": Integer(1, 10),\n", + " \"subsample\": Real(0.5, 1.0),\n", + " \"min_samples_split\": Integer(2, 20),\n", + " \"min_samples_leaf\": Integer(1, 20),\n", + " \"max_features\": Categorical([\"sqrt\", \"log2\", None]),\n", + "}\n", + "\n", + "def bayes_search(\n", + " model,\n", + " search_space,\n", + " name: str,\n", + " X_train,\n", + " y_train,\n", + " X_test=None,\n", + " y_test=None,\n", + " *,\n", + " n_iter=64,\n", + " cv=10,\n", + " random_state=228,\n", + " scoring=f1_micro,\n", + " verbose=0,\n", + " n_jobs=-1,\n", + " return_train_score=False\n", + "):\n", + " \"\"\"\n", + " Run Bayesian hyperparameter optimization with explicit data inputs.\n", + "\n", + " Parameters\n", + " ----------\n", + " model : estimator\n", + " Base (unfitted) sklearn estimator.\n", + " search_space : dict\n", + " skopt space definition.\n", + " name : str\n", + " Label for prints/logs.\n", + " X_train, y_train : array-like\n", + " Training data.\n", + " X_test, y_test : array-like, optional\n", + " If provided, a classification report will be printed.\n", + " n_iter : int\n", + " Number of parameter evaluations.\n", + " cv : int or CV splitter\n", + " Cross-validation strategy.\n", + " random_state : int\n", + " Seed for BayesSearchCV.\n", + " scoring : str or callable\n", + " Scoring metric.\n", + " verbose : int\n", + " Verbosity (0,1,2 like GridSearchCV).\n", + " n_jobs : int\n", + " Parallel jobs for fitting inside CV.\n", + " return_train_score : bool\n", + " If True, also returns train predictions & scores.\n", + "\n", + " Returns\n", + " -------\n", + " opt : BayesSearchCV (fitted)\n", + " results : dict\n", + " Contains optional test predictions/report and optionally train predictions.\n", + " \"\"\"\n", + " opt = BayesSearchCV(\n", + " estimator=model,\n", + " search_spaces=search_space,\n", + " n_iter=n_iter,\n", + " scoring=scoring,\n", + " cv=cv,\n", + " n_jobs=n_jobs,\n", + " random_state=random_state,\n", + " verbose=verbose,\n", + " refit=True,\n", + " return_train_score=return_train_score\n", + " )\n", + " opt.fit(X_train, y_train)\n", + "\n", + " print(f\"\\n{name} best parameters → {opt.best_params_}\")\n", + " print(f\"{name} CV-best ({scoring if isinstance(scoring,str) else 'custom'}) → {opt.best_score_:.4f}\")\n", + "\n", + " results = {\"best_estimator\": opt.best_estimator_, \"cv_best_score\": opt.best_score_}\n", + "\n", + " if X_test is not None and y_test is not None:\n", + " y_pred_test = opt.predict(X_test)\n", + " print(\"\\nTest-set report:\")\n", + " print(classification_report(y_test, y_pred_test))\n", + " results[\"y_test_pred\"] = y_pred_test\n", + "\n", + " if return_train_score:\n", + " y_pred_train = opt.predict(X_train)\n", + " results[\"y_train_pred\"] = y_pred_train\n", + "\n", + " return opt, results\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "cf483623", + "metadata": {}, + "source": [ + "# Experiments run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4ea57812", + "metadata": {}, + "outputs": [], + "source": [ + "rf_opt, rf_res = bayes_search(RandomForestClassifier(random_state=228),\n", + " rf_search_space,\n", + " \"Random Forest\",\n", + " X_train, y_train, n_iter=256)\n", + "\n", + "gb_opt, gb_res = bayes_search(GradientBoostingClassifier(random_state=228),\n", + " gb_search_space,\n", + " \"Random Forest\",\n", + " X_train.fillna(-10000), y_train, n_iter=256)\n", + "\n", + "rf_res['cv_best_score'], gb_res['cv_best_score']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee794ada", + "metadata": {}, + "outputs": [], + "source": [ + "rf_opt, rf_res = bayes_search(RandomForestClassifier(random_state=228),\n", + " rf_search_space,\n", + " \"Random Forest\",\n", + " X_train_demo, y_train_demo, n_iter=256)\n", + "\n", + "gb_opt, gb_res = bayes_search(GradientBoostingClassifier(random_state=228),\n", + " gb_search_space,\n", + " \"Random Forest\",\n", + " X_train_demo.fillna(-10000), y_train_demo, n_iter=256)\n", + "\n", + "rf_res['cv_best_score'], gb_res['cv_best_score']" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "eyefeatures_env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/experiments/experiment_3.ipynb b/experiments/experiment_3.ipynb new file mode 100644 index 0000000..3593727 --- /dev/null +++ b/experiments/experiment_3.ipynb @@ -0,0 +1,837 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "bc54a942", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import eyefeatures.features.scanpath_complex as eye_complex\n", + "import eyefeatures.features.scanpath_complex as eye_complex\n", + "import eyefeatures.features.scanpath_dist as eye_dist\n", + "from matplotlib import pyplot as plt\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "id": "5dacc4d0", + "metadata": {}, + "source": [ + "# Getting distance matrices" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "b32a57d7", + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_excel('data_for_scanpath_analysis.xlsx')" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "8bdd7892", + "metadata": {}, + "outputs": [], + "source": [ + "scanpaths = [x[1][['x', 'y']] for x in data.groupby(['participant', 'item'])]\n", + "y = [0 if x[1]['gr'].iloc[0]=='norm' else 1 for x in data.groupby(['participant', 'item'])]\n", + "sentence = [x[1]['item'].iloc[0] for x in data.groupby(['participant', 'item'])]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "59346017", + "metadata": {}, + "outputs": [], + "source": [ + "#hau_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_hau_dist)\n", + "#euc_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_euc_dist)\n", + "#man_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_man_dist)\n", + "#eye_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_eye_dist)\n", + "#dfr_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_dfr_dist)\n", + "#dtw_matrix = eye_complex.get_dist_matrix(scanpaths, dist_metric=eye_dist.calc_dtw_dist)\n", + "\n", + "#eye_matrix.to_csv('eye_matrix.csv')\n", + "#dfr_matrix.to_csv('dfr_matrix.csv')\n", + "#dtw_matrix.to_csv('dtw_matrix.csv')\n", + "#hau_matrix.to_csv('hau_matrix.csv')\n", + "#euc_matrix.to_csv('euc_matrix.csv')\n", + "#man_matrix.to_csv('man_matrix.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "7596f00b", + "metadata": {}, + "outputs": [], + "source": [ + "eye_matrix = pd.read_csv('eye_matrix.csv', index_col=0)\n", + "dfr_matrix = pd.read_csv('dfr_matrix.csv', index_col=0)\n", + "dtw_matrix = pd.read_csv('dtw_matrix.csv', index_col=0)\n", + "hau_matrix = pd.read_csv('hau_matrix.csv', index_col=0)\n", + "euc_matrix = pd.read_csv('euc_matrix.csv', index_col=0)\n", + "man_matrix = pd.read_csv('man_matrix.csv', index_col=0)" + ] + }, + { + "cell_type": "markdown", + "id": "40b24df1", + "metadata": {}, + "source": [ + "# Running umap to get embeddings from distances" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc9c11f5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Hausdorff | groups: 0%| | 0/30 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import re\n", + "from itertools import cycle\n", + "from tqdm import tqdm\n", + "import numpy as np\n", + "from umap import UMAP\n", + "from sklearn.svm import SVC\n", + "\n", + "# --------------------------------------------------------------------------\n", + "# helper to sort IDs naturally: \"10\" comes after \"2\", \"text_12\" after \"text_3\"\n", + "# --------------------------------------------------------------------------\n", + "def _natkey(s):\n", + " return [int(tok) if tok.isdigit() else tok.lower()\n", + " for tok in re.split(r'(\\d+)', str(s))]\n", + "\n", + "# --------------------------------------------------------------------------\n", + "# Low‑level helper – plots ONE distance matrix (one row in the final grid)\n", + "# --------------------------------------------------------------------------\n", + "def _plot_one_umap_best_groups(\n", + " D, labels, groups, *, ax,\n", + " n_components=2, random_state=228,\n", + " test_size=.30, top_n=4,\n", + " cmap_cycle=(\"tab10\", \"Set2\", \"Dark2\"),\n", + " global_handles=None,\n", + " title_prefix=\"\",\n", + " umap_params=None):\n", + "\n", + " # -- validation ------------------------------------------------------\n", + " D, labels, groups = map(np.asarray, (D, labels, groups))\n", + " n = D.shape[0]\n", + " if D.shape != (n, n):\n", + " raise ValueError(\"D must be square\")\n", + " if labels.shape[0] != n or groups.shape[0] != n:\n", + " raise ValueError(\"labels / groups length mismatch\")\n", + " if global_handles is None:\n", + " global_handles = {}\n", + "\n", + " uniq_groups = np.unique(groups)\n", + "\n", + " # -- per‑group UMAP + SVM -------------------------------------------\n", + " embeddings = np.full((n, n_components), np.nan)\n", + " svm_scores, svms = {}, {}\n", + " for g in tqdm(uniq_groups, desc=f\"{title_prefix} groups\"):\n", + " idx = np.where(groups == g)[0]\n", + " if len(idx) < 4 or len(np.unique(labels[idx])) < 2:\n", + " continue\n", + "\n", + " reducer = UMAP(n_components=n_components,\n", + " metric=\"precomputed\",\n", + " random_state=random_state,\n", + " **(umap_params or {}))\n", + " embeddings[idx] = reducer.fit_transform(D[np.ix_(idx, idx)])\n", + " X_emb = embeddings[idx]\n", + "\n", + " # you can keep / drop the split – here we still split:\n", + " Xtr, Xte, ytr, yte = train_test_split(\n", + " X_emb, labels[idx], test_size=test_size,\n", + " stratify=labels[idx], random_state=random_state)\n", + " svm = SVC(kernel=\"linear\", C=1, random_state=random_state)\n", + " svm.fit(Xtr, ytr)\n", + " acc = svm.score(Xte, yte)\n", + "\n", + " svm_scores[g] = acc\n", + " svms[g] = svm\n", + "\n", + " if not svm_scores:\n", + " raise ValueError(\"No scorable groups\")\n", + "\n", + " # ---------- choose & **order** groups --------------------------------\n", + " best = sorted(svm_scores, key=svm_scores.get, reverse=True)[:top_n] # pick by score\n", + " chosen = sorted(best, key=_natkey) # order by text_id\n", + "\n", + " # ---------- plot -----------------------------------------------------\n", + " cmaps = cycle(cmap_cycle)\n", + " for axis, g, cmap in zip(ax, chosen, cmaps):\n", + " mask = groups == g\n", + " Xg, yg = embeddings[mask], labels[mask]\n", + "\n", + " # points\n", + " for cls in np.unique(yg):\n", + " pts = yg == cls\n", + " sc = axis.scatter(Xg[pts, 0], Xg[pts, 1],\n", + " s=45, alpha=.85, cmap=cmap,\n", + " label=str(cls))\n", + " if cls not in global_handles:\n", + " global_handles[cls] = sc\n", + "\n", + " # linear boundary\n", + " w, b = svms[g].coef_[0], svms[g].intercept_[0]\n", + " if abs(w[1]) > 1e-10:\n", + " xlim = np.array(axis.get_xlim())\n", + " ylim = -(w[0] * xlim + b) / w[1]\n", + " axis.plot(xlim, ylim, '--', lw=1, c='black', label='_nolegend_')\n", + " else:\n", + " axis.axvline(x=-b / w[0], ls='--', lw=1, c='black', label='_nolegend_')\n", + "\n", + " axis.set_title(f\"{title_prefix}text_id = {g}\\nAcc={svm_scores[g]:.2%}\",\n", + " fontsize=9)\n", + " axis.set_xlabel(\"UMAP‑1\"); axis.set_ylabel(\"UMAP‑2\")\n", + "\n", + " # hide unused axes (if < top_n groups were plottable)\n", + " for axis in ax[len(chosen):]:\n", + " axis.set_visible(False)\n", + "\n", + " return {\"chosen_groups\": chosen,\n", + " \"test_accuracy\": {g: svm_scores[g] for g in chosen}}\n", + "\n", + "\n", + "\n", + "def plot_umap_best_groups_grid(\n", + " matrices,\n", + " names,\n", + " labels: np.ndarray,\n", + " groups: np.ndarray,\n", + " *,\n", + " top_n: int = 4,\n", + " n_components: int = 2,\n", + " random_state: int = 228,\n", + " test_size: float = .30,\n", + " size_per_plot: Tuple[int, int] = (4, 3),\n", + " cmap_cycle: Tuple[str, ...] = (\"tab10\", \"Set2\", \"Dark2\"),\n", + " figure_title: str = \"UMAP – best texts for each distance function\",\n", + " umap_params: Dict | None = None\n", + "):\n", + " \"\"\"\n", + " Create a single figure with one *row per distance matrix* and\n", + " `top_n` columns – the best‑performing groups.\n", + "\n", + " Parameters\n", + " ----------\n", + " matrices, names\n", + " Sequences of equal length. `names` appear as row titles.\n", + " labels, groups\n", + " 1‑D arrays of length n.\n", + " umap_params\n", + " Extra keyword arguments forwarded to `UMAP(...)` (e.g. `n_neighbors`).\n", + " \"\"\"\n", + "\n", + " n_rows, n_cols = len(matrices), top_n\n", + " w, h = size_per_plot\n", + " fig, axes = plt.subplots(\n", + " n_rows, n_cols,\n", + " figsize=(w * n_cols, h * n_rows),\n", + " squeeze=False\n", + " )\n", + "\n", + " global_handles = {}\n", + " summaries = {}\n", + "\n", + " for r, (D, title) in enumerate(zip(matrices, names)):\n", + " row_axes = axes[r]\n", + " summaries[title] = _plot_one_umap_best_groups(\n", + " D, labels, groups,\n", + " ax=row_axes,\n", + " n_components=n_components,\n", + " random_state=random_state,\n", + " test_size=test_size,\n", + " top_n=top_n,\n", + " cmap_cycle=cmap_cycle,\n", + " global_handles=global_handles,\n", + " title_prefix=f\"{title} | \",\n", + " umap_params=umap_params\n", + " )\n", + "\n", + " # annotate row name once along left margin\n", + " row_axes[0].annotate(title, xy=(0, .5),\n", + " xytext=(-row_axes[0].yaxis.labelpad - 25, 0),\n", + " xycoords=row_axes[0].yaxis.label,\n", + " textcoords='offset points',\n", + " size='large', ha='right', va='center',\n", + " rotation=90)\n", + "\n", + " # global legend (right‑hand side)\n", + " fig.legend(global_handles.values(), global_handles.keys(),\n", + " loc=\"center right\", title=\"class\")\n", + " fig.subplots_adjust(right=.85)\n", + " fig.suptitle(figure_title, fontsize=16, y=.995)\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + " return summaries\n", + "\n", + "\n", + "# ──────────────────────────────────────────────────────────────────────────────\n", + "# Example usage\n", + "# ──────────────────────────────────────────────────────────────────────────────\n", + "\n", + "if True:\n", + " summaries = plot_umap_best_groups_grid(\n", + " matrices=[\n", + " hau_matrix, \n", + " dtw_matrix, \n", + " dfr_matrix, \n", + " man_matrix, \n", + " ],\n", + " names=[\n", + " \"Hausdorff\", \n", + " \"DTW\", \n", + " \"DFR\", \n", + " \"Manhattan\", \n", + " ],\n", + " labels=y,\n", + " groups=sentence,\n", + " top_n=4,\n", + " )\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "eyefeatures_env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/eyefeatures/data/__init__.py b/eyefeatures/data/__init__.py deleted file mode 100644 index e7d2787..0000000 --- a/eyefeatures/data/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -""" -Simple data loading utilities for the eye-tracking collection. -""" - -from eyefeatures.data.utils import ( - DEFAULT_COLLECTION_DIR, - get_labels, - get_meta, - get_pk, - list_datasets, - load_dataset, -) - -__all__ = [ - "DEFAULT_COLLECTION_DIR", - "list_datasets", - "load_dataset", - "get_pk", - "get_labels", - "get_meta", -] diff --git a/eyefeatures/data/utils.py b/eyefeatures/data/utils.py deleted file mode 100644 index 7a3226d..0000000 --- a/eyefeatures/data/utils.py +++ /dev/null @@ -1,259 +0,0 @@ -""" -Simple data loading utilities for the eye-tracking collection. - -Collection data lives in this repo at ``data/collection`` as Parquet files -(tracked with Git LFS). You can pass a custom path or use the default. - -Column conventions: -- Primary key (pk): columns starting with ``group_`` -- Labels: columns ending with ``_label`` -- Meta: columns starting with ``meta_`` -""" - -import json -from pathlib import Path -from typing import Any - -import pandas as pd - -#: Default root directory for collection Parquet files (``data/collection`` in the repo, Git LFS). -DEFAULT_COLLECTION_DIR = Path("data/collection") - - -def _classify_dataset_type(dataset_name: str) -> str: - """Classify dataset type by name suffix: 'gaze' or 'fixation'.""" - if dataset_name.endswith("_gaze") or dataset_name.endswith("_gazes"): - return "gaze" - if dataset_name.endswith("_fixations") or dataset_name.endswith("_fixation"): - return "fixation" - # Default: treat as fixation - return "fixation" - - -def list_datasets( - collection_dir: str | Path | None = None, - *, - include_extensive_collection: bool = True, - extensive_collection_only: bool = False, - include_extracted_fixations: bool = True, - extracted_fixations_only: bool = False, - dataset_type: str | None = None, -) -> list[str]: - """List available dataset names in the collection directory. - - Parameters - ---------- - collection_dir : path, optional - Root directory containing collection Parquet files. - Defaults to ``data/collection`` (repo data tracked with Git LFS). - include_extensive_collection : bool, default True - If True, also search in extensive_collection subfolder. - Ignored when extensive_collection_only or extracted_fixations_only is True. - extensive_collection_only : bool, default False - If True, list only datasets from extensive_collection subfolder - (main directory is not scanned). - include_extracted_fixations : bool, default True - If True, also search in extracted_fixations subfolder. - Ignored when extensive_collection_only or extracted_fixations_only is True. - extracted_fixations_only : bool, default False - If True, list only datasets from extracted_fixations subfolder - (main directory is not scanned). - dataset_type : str, optional - If "gaze", return only gaze datasets (names ending with _gaze/_gazes). - If "fixation", return only fixation datasets (names ending with - _fixations/_fixation or default). If None, return all. - - Returns - ------- - list of str - Sorted list of dataset names (without .parquet extension). - """ - collection_path = ( - Path(collection_dir) if collection_dir is not None else DEFAULT_COLLECTION_DIR - ) - dataset_names = set() - - if extracted_fixations_only: - extracted_dir = collection_path / "extracted_fixations" - if extracted_dir.exists(): - for f in extracted_dir.glob("*.parquet"): - dataset_names.add(f.stem) - elif extensive_collection_only: - extensive_dir = collection_path / "extensive_collection" - if extensive_dir.exists(): - for f in extensive_dir.glob("*.parquet"): - dataset_names.add(f.stem) - else: - for f in collection_path.glob("*.parquet"): - dataset_names.add(f.stem) - if include_extensive_collection: - extensive_dir = collection_path / "extensive_collection" - if extensive_dir.exists(): - for f in extensive_dir.glob("*.parquet"): - dataset_names.add(f.stem) - if include_extracted_fixations: - extracted_dir = collection_path / "extracted_fixations" - if extracted_dir.exists(): - for f in extracted_dir.glob("*.parquet"): - dataset_names.add(f.stem) - - if dataset_type is not None: - dataset_names = { - name - for name in dataset_names - if _classify_dataset_type(name) == dataset_type - } - - return sorted(dataset_names) - - -def load_dataset( - dataset_name: str, - collection_dir: str | Path | None = None, - *, - normalize: bool = True, -) -> tuple[pd.DataFrame, dict]: - """Load a collection dataset by name. - - Parameters - ---------- - dataset_name : str - Name of the dataset (e.g. "ASD_ready_data_fixations"). - Will search for {dataset_name}.parquet in collection_dir. - collection_dir : path, optional - Root directory containing collection Parquet files. - Defaults to ``data/collection`` (repo data tracked with Git LFS). - normalize : bool, default True - If True and dataset has unnormalized x/y columns, normalize them - and rename to norm_pos_x/norm_pos_y. - - Returns - ------- - tuple (DataFrame, meta_info) - - DataFrame: loaded and optionally normalized data - - meta_info: dict with 'pk', 'labels', 'meta' column lists and 'info' - (from collection_dir/meta.json under key dataset_name, if present). - """ - collection_path = ( - Path(collection_dir) if collection_dir is not None else DEFAULT_COLLECTION_DIR - ) - dataset_path = collection_path / f"{dataset_name}.parquet" - - if not dataset_path.exists(): - # Try in extensive_collection - extensive_path = ( - collection_path / "extensive_collection" / f"{dataset_name}.parquet" - ) - if extensive_path.exists(): - dataset_path = extensive_path - else: - # Try in extracted_fixations - extracted_path = ( - collection_path / "extracted_fixations" / f"{dataset_name}.parquet" - ) - if extracted_path.exists(): - dataset_path = extracted_path - else: - raise FileNotFoundError( - f"Dataset '{dataset_name}' not found in {collection_path}, " - f"{collection_path / 'extensive_collection'}, or " - f"{collection_path / 'extracted_fixations'}" - ) - - df = pd.read_parquet(dataset_path) - - # Parquet preserves types; ensure numeric for x/y if present (e.g. from older exports) - if "x" in df.columns and not pd.api.types.is_numeric_dtype(df["x"]): - df["x"] = pd.to_numeric( - df["x"].astype(str).str.replace(",", "."), errors="coerce" - ) - if "y" in df.columns and not pd.api.types.is_numeric_dtype(df["y"]): - df["y"] = pd.to_numeric( - df["y"].astype(str).str.replace(",", "."), errors="coerce" - ) - - # Handle left/right eye columns - if "x_left" in df.columns and "x_right" in df.columns: - if "x" not in df.columns: - df["x"] = (df["x_left"] + df["x_right"]) / 2 - if "y" not in df.columns: - df["y"] = (df["y_left"] + df["y_right"]) / 2 - - # Normalize if requested and needed - if normalize and "x" in df.columns and "y" in df.columns: - if "norm_pos_x" not in df.columns: - max_x = df["x"].max() - max_y = df["y"].max() - df["norm_pos_x"] = df["x"] / max_x if max_x > 0 else df["x"] - df["norm_pos_y"] = df["y"] / max_y if max_y > 0 else df["y"] - - # Build meta info - meta_info = { - "pk": get_pk(df), - "labels": get_labels(df), - "meta": get_meta(df), - "info": _load_meta_info(collection_path, dataset_name), - } - - return df, meta_info - - -def _load_meta_info(collection_path: Path, dataset_name: str) -> Any | None: - """Load meta.json from collection dir and return value for dataset_name key.""" - meta_path = collection_path / "meta.json" - if not meta_path.exists(): - return None - try: - with open(meta_path, encoding="utf-8") as f: - data = json.load(f) - return data.get(dataset_name) - except (json.JSONDecodeError, OSError): - return None - - -def get_pk(df: pd.DataFrame) -> list[str]: - r"""Get primary key column names (columns starting with ``group\_``). - - Parameters - ---------- - df : DataFrame - Benchmark dataset DataFrame. - - Returns - ------- - list of str - Primary key column names. - """ - return [col for col in df.columns if col.startswith("group_")] - - -def get_labels(df: pd.DataFrame) -> list[str]: - """Get label column names (columns ending with _label). - - Parameters - ---------- - df : DataFrame - Benchmark dataset DataFrame. - - Returns - ------- - list of str - Label column names. - """ - return [col for col in df.columns if col.endswith("_label")] - - -def get_meta(df: pd.DataFrame) -> list[str]: - r"""Get meta column names (columns starting with ``meta\_``). - - Parameters - ---------- - df : DataFrame - Benchmark dataset DataFrame. - - Returns - ------- - list of str - Meta column names. - """ - return [col for col in df.columns if col.startswith("meta_")] diff --git a/eyefeatures/deep/datasets.py b/eyefeatures/deep/datasets.py index a34e4d9..1f7b22e 100644 --- a/eyefeatures/deep/datasets.py +++ b/eyefeatures/deep/datasets.py @@ -1,21 +1,64 @@ +import warnings from collections.abc import Callable from copy import copy from functools import partial import numpy as np import pandas as pd +import pytorch_lightning as pl import torch from numpy.typing import ArrayLike -from torch.utils.data import Dataset +from sklearn.model_selection import train_test_split +from skmultilearn.model_selection import IterativeStratification +from torch.utils.data import DataLoader, Dataset from torch_geometric.data import Data from tqdm import tqdm -from eyefeatures.features.feature_maps import get_gafs, get_heatmaps, get_mtfs +from eyefeatures.features.complex import get_heatmaps from eyefeatures.preprocessing.base import BaseFixationPreprocessor from eyefeatures.utils import _split_dataframe from eyefeatures.visualization.static_visualization import get_visualizations +def iterative_split( + df: pd.DataFrame, y: ArrayLike, test_size: float, stratify_columns: list[str] +): + """Custom iterative train test split which + 'maintains balanced representation with respect + to order-th label combinations.' + + Args: + df (pd.DataFrame): Input dataframe to split. + y (np.ndarray): Labels corresponding to the dataframe. + test_size (float): Proportion of the dataset to include in the test split. + stratify_columns (List[str]): List of column names to stratify by. + + Returns: + tuple (pd.DataFrame, pd.DataFrame, np.ndarray, np.ndarray): A tuple + (X_train, X_test, y_train, y_test): + (1) Training split of the dataframe. + (2) Test split of the dataframe. + (3) Training labels. + (4) Test labels. + + Note: + From https://madewithml.com/courses/mlops/splitting/#stratified-split + """ + # One-hot encode the stratify columns and concatenate them + one_hot_cols = [pd.get_dummies(df[col]) for col in stratify_columns] + one_hot_cols = pd.concat(one_hot_cols, axis=1).to_numpy() + stratifier = IterativeStratification( + n_splits=2, + order=len(stratify_columns), + sample_distribution_per_fold=[test_size, 1 - test_size], + ) + train_indices, test_indices = next(stratifier.split(df.to_numpy(), one_hot_cols)) + # Return the train and test set dataframes + X_train, X_test = df.iloc[train_indices], df.iloc[test_indices] + y_train, y_test = y[train_indices], y[test_indices] + return X_train, X_test, y_train, y_test + + def _coord_to_grid(coords: np.array, xlim: tuple, ylim: tuple, shape: tuple): """Maps 2D coordinates to grid indices based on the grid resolution. @@ -277,41 +320,11 @@ def create_graph_data_from_dataframe( return data -# Representation types with zoom options: -# - *_fixed: uses fixed [0,1] coordinate space (shows absolute position) -# - *_zoomed: zooms to data range (fills the image with the scanpath region) _representations = { - # Heatmaps - "heatmap": get_heatmaps, # Default: fixed [0,1] space (backward compat) - "heatmap_fixed": partial(get_heatmaps, zoom_to_data=False), - "heatmap_zoomed": partial(get_heatmaps, zoom_to_data=True), - # Baseline visualization - "baseline_visualization": partial( - get_visualizations, pattern="baseline" - ), # Default: zoomed (backward compat) - "baseline_fixed": partial( - get_visualizations, pattern="baseline", zoom_to_data=False - ), - "baseline_zoomed": partial( - get_visualizations, pattern="baseline", zoom_to_data=True - ), - # AOI visualization + "heatmap": get_heatmaps, + "baseline_visualization": partial(get_visualizations, pattern="baseline"), "aoi_visualization": partial(get_visualizations, pattern="aoi"), - "aoi_fixed": partial(get_visualizations, pattern="aoi", zoom_to_data=False), - "aoi_zoomed": partial(get_visualizations, pattern="aoi", zoom_to_data=True), - # Saccade visualization (with sequential colormap) - "saccade_visualization": partial( - get_visualizations, pattern="saccades" - ), # Default: zoomed - "saccade_fixed": partial( - get_visualizations, pattern="saccades", zoom_to_data=False - ), - "saccade_zoomed": partial( - get_visualizations, pattern="saccades", zoom_to_data=True - ), - # GAF (Gramian Angular Field) and MTF (Markov Transition Field) 2D maps for DL (no zoom variant) - "gaf_fixed": get_gafs, - "mtf_fixed": get_mtfs, + "saccade_visualization": partial(get_visualizations, pattern="saccades"), } @@ -341,16 +354,16 @@ def __init__( transforms=None, ): self.pmk = pk - rep_tensors = [] - for i in representations: - rep_data = _representations[i](X, x, y, pk=pk, shape=shape) - rep_tensor = torch.tensor(rep_data, dtype=torch.float32) - # Only add channel dimension if not already present - # Heatmaps return (n, h, w), visualizations return (n, c, h, w) - if rep_tensor.ndim == 3: - rep_tensor = rep_tensor.unsqueeze(1) - rep_tensors.append(rep_tensor) - self.X = torch.cat(rep_tensors, dim=1) + self.X = torch.cat( + [ + torch.tensor( + _representations[i](X, x, y, pk=pk, shape=shape), + dtype=torch.float32, + ).unsqueeze(1) + for i in representations + ], + dim=1, + ) self.channels_dim = self.X.shape[1] print(f"Number of channels = {self.channels_dim}.") if not isinstance(Y, pd.Series): @@ -369,32 +382,23 @@ def __len__(self): return self.X.shape[0] def __getitem__(self, idx: int): - X = self.X[idx, :, :, :] - label = self.y[idx] - - if self.transforms is not None: - X = self.transforms(X) + if self.transforms is None: + X = self.X[idx, :, :, :] + label = self.y[idx] return { "images": X, - "y": label, + "y": label, # } def collate_fn(self, batch): images = torch.stack([x["images"] for x in batch]) y = torch.tensor([x["y"] for x in batch]) return {"images": images, "y": y} + return batch def _get_features(X, features, x, y, t, pk): - # Handle None features case - return only x and y coordinates - if features is None: - output = [] - groups = _split_dataframe(X, pk) - for group_id, group_X in tqdm(groups): - output.append(group_X[[x, y]].values) - return output - preprocessor = BaseFixationPreprocessor(x, y, t, pk) features_to_get = copy(features) for i in features: @@ -416,7 +420,7 @@ class DatasetTimeSeries(Dataset): X: Input time-series data. Y: Labels for the data. pk: Primary keys for grouping. - features: List of features to extract. If None, only x and y coordinates are used. + features: List of features to extract. transforms: Transformations to apply to the data. max_length: maximum length of scanpath. """ @@ -428,7 +432,7 @@ def __init__( x: str, y: str, pk: list[str], - features: list[str] | None = None, + features: list[str], transforms: Callable = None, max_length: int = 10, ): @@ -442,7 +446,7 @@ def __init__( else: self.Y = torch.tensor(self.Y, dtype=torch.float) - self.n_features = 2 + (len(features) if features is not None else 0) + self.n_features = 2 + len(features) self.transforms = transforms self.max_length = max_length @@ -526,12 +530,8 @@ def __getitem__(self, idx): image = self.image_dataset.X[idx, :, :, :] sequence = self.sequence_dataset.X[idx] y = self.image_dataset.y[idx] - # Use float32 so batch matches model parameters (avoid Double vs Float mismatch) - return { - "images": torch.as_tensor(image, dtype=torch.float32), - "sequences": torch.as_tensor(sequence, dtype=torch.float32), - "y": y, - } + + return {"images": image, "sequences": torch.tensor(sequence), "y": y} def collate_fn(self, batch): lengths = [x["sequences"].shape[0] for x in batch] @@ -540,11 +540,7 @@ def collate_fn(self, batch): torch.cat( [ x["sequences"], - torch.zeros( - max_len - x["sequences"].shape[0], - self.sequence_dataset.n_features, - dtype=torch.float32, - ), + torch.zeros(max_len - x["sequences"].shape[0], self.n_features), ], axis=0, ) @@ -556,7 +552,7 @@ def collate_fn(self, batch): return { "sequences": torch.stack(padded_batch), "lengths": torch.tensor(lengths), - "images": torch.stack([x["images"] for x in batch]), + "images": batch["images"], "y": y, } @@ -631,3 +627,267 @@ def __getitem__(self, idx): def collate_fn(self, batch): return batch + + +class DatasetLightningBase(pl.LightningDataModule): + """Base PyTorch Lightning DataModule for managing datasets and dataloaders. + + Args: + X: Input data. + y: Labels for the data. + x: X coordinate column name. + y: Y coordinate column name. + pk: Primary keys for grouping. + test_size: Test size for the train-validation split. + batch_size: Batch size for the dataloaders. + split_type: Type of train-validation split. + """ + + def __init__( + self, + X: pd.DataFrame, + Y: ArrayLike, + x: str, + y: str, + pk: list[str], + test_size: int, + batch_size: int, + split_type: str = "simple", + ): + super().__init__() + self.X = X + self.Y = Y + + self.x = x + self.y = y + self.pk = pk + self.test_size = test_size + self.batch_size = batch_size + self.split_type = split_type + + def setup(self, stage=None): + X_train, y_train, X_val, y_val = self.split_train_val() + self.create_train_val_datasets(X_train, y_train, X_val, y_val) + + def train_dataloader(self): + return DataLoader( + self.train_dataset, + batch_size=self.batch_size, + shuffle=True, + collate_fn=self.train_dataset.collate_fn, + ) + + def val_dataloader(self): + return DataLoader( + self.val_dataset, + batch_size=self.batch_size, + shuffle=False, + collate_fn=self.val_dataset.collate_fn, + ) + + def split_train_val(self): + pk = self.pk + groups = self.X[self.pk].drop_duplicates() + if len(self.pk) == 1 or self.split_type == "simple": + if self.split_type != "simple": + warnings.warn( + """Ignoring split type. + Split type cannot != "simple" if there is a + single primary key.""" + ) + groups_train, groups_val = train_test_split( + groups, test_size=self.test_size + ) + elif self.split_type == "all_categories_unique": + groups_train, groups_val = groups.copy(), groups.copy() + for i in self.pk: + gr = ( + groups[i] + .drop_duplicates() + .sort_values() + .sample(frac=1 - self.test_size) + .astype(str) + ) + groups_train = groups_train[groups_train[i].isin(gr)] + groups_val = groups_val[~groups_val[i].isin(gr)] + elif self.split_type == "all_categories_repetitive": + groups_train, groups_val = iterative_split(groups, self.test_size, self.pk) + elif self.split_type == "first_category_repetitive": + groups_train, groups_val = train_test_split( + groups, test_size=self.test_size, stratify=groups.iloc[:, 0] + ) + elif self.split_type == "first_category_unique": + pk_col = self.pk[0] + unique_vals = groups[pk_col].drop_duplicates() + vals_train, vals_val = train_test_split( + unique_vals, test_size=self.test_size + ) + groups_train = groups[groups[pk_col].isin(vals_train)] + groups_val = groups[groups[pk_col].isin(vals_val)] + else: + raise ValueError( + f"""Invalid split type: {self.split_type}. + Supported split types are: simple, + first_category_unique, first_category_repetitive, + all_categories_unique, all_categories_repetitive.""" + ) + + X_train = self.X.merge(groups_train, on=pk) + y_train = self.Y.merge(groups_train, on=pk) + X_val = self.X.merge(groups_val, on=pk) + y_val = self.Y.merge(groups_val, on=pk) + + return X_train, y_train, X_val, y_val + + def create_train_val_datasets(self, X_train, y_train, X_val, y_val): + raise NotImplementedError("This method should be implemented by subclasses") + + +class DatasetLightning2D(DatasetLightningBase): + """PyTorch Lightning DataModule for 2D datasets and dataloaders.""" + + def __init__( + self, + X: pd.DataFrame, + Y: ArrayLike, + x: str, + y: str, + pk: list[str], + shape: tuple[int] | int, + representations: list[str], + test_size: int, + batch_size: int, + split_type: str = "simple", + ): + super().__init__(X, Y, x, y, pk, test_size, batch_size, split_type) + self.shape = shape + self.representations = representations + self.train_dataset = None + self.val_dataset = None + + def create_train_val_datasets(self, X_train, y_train, X_val, y_val): + self.train_dataset = Dataset2D( + X_train, + y_train, + self.x, + self.y, + pk=self.pk, + shape=self.shape, + representations=self.representations, + ) + self.val_dataset = Dataset2D( + X_val, + y_val, + self.x, + self.y, + pk=self.pk, + shape=self.shape, + representations=self.representations, + ) + + +class DatasetLightningTimeSeries(DatasetLightningBase): + """PyTorch Lightning DataModule for Time Series datasets and dataloaders.""" + + def __init__( + self, + X: pd.DataFrame, + Y: ArrayLike, + x: str, + y: str, + pk: list[str], + features: list[str], + test_size: int, + batch_size: int, + split_type: str = "simple", + max_length=10, + ): + super().__init__(X, Y, x, y, pk, test_size, batch_size, split_type) + self.features = features + self.max_length = max_length + + def create_train_val_datasets(self, X_train, y_train, X_val, y_val): + self.train_dataset = DatasetTimeSeries( + X_train, + y_train, + self.x, + self.y, + pk=self.pk, + features=self.features, + max_length=self.max_length, + ) + self.val_dataset = DatasetTimeSeries( + X_val, + y_val, + self.x, + self.y, + pk=self.pk, + features=self.features, + max_length=self.max_length, + ) + + +class DatasetLightningTimeSeries2D(DatasetLightningBase): + """PyTorch Lightning DataModule for Time Series 2D datasets and dataloaders.""" + + def __init__( + self, + X: pd.DataFrame, + Y: ArrayLike, + x: str, + y: str, + pk: list[str], + shape: tuple[int] | int, + representations: list[str], + features: list[str], + test_size: int, + batch_size: int, + split_type: str = "simple", + max_length: int = 10, + ): + super().__init__(X, Y, x, y, pk, test_size, batch_size, split_type) + self.shape = shape + self.representations = representations + self.features = features + self.max_length = max_length + + def create_train_val_datasets(self, X_train, y_train, X_val, y_val): + data2D = Dataset2D( + X_train, + y_train, + self.x, + self.y, + pk=self.pk, + shape=self.shape, + representations=self.representations, + ) + dataTime = DatasetTimeSeries( + X_train, + y_train, + self.x, + self.y, + pk=self.pk, + features=self.features, + max_length=self.max_length, + ) + self.train_dataset = TimeSeries_2D_Dataset(data2D, dataTime) + + data2D = Dataset2D( + X_val, + y_val, + self.x, + self.y, + pk=self.pk, + shape=self.shape, + representations=self.representations, + ) + dataTime = DatasetTimeSeries( + X_val, + y_val, + self.x, + self.y, + pk=self.pk, + features=self.features, + max_length=self.max_length, + ) + self.val_dataset = TimeSeries_2D_Dataset(data2D, dataTime) diff --git a/eyefeatures/deep/models.py b/eyefeatures/deep/models.py index b86ae25..5254f1c 100644 --- a/eyefeatures/deep/models.py +++ b/eyefeatures/deep/models.py @@ -82,14 +82,9 @@ def __init__( out_channels, out_channels, kernel_size=kernel_size, padding=padding ) self.bn2 = nn.BatchNorm2d(out_channels) - # Shortcut when channels or spatial size change (standard ResNet) - if in_channels != out_channels or stride != 1: - self.shortcut = nn.Conv2d(in_channels, out_channels, 1, stride=stride) - else: - self.shortcut = nn.Identity() def forward(self, images): - identity = self.shortcut(images) + identity = images out = self.conv1(images) out = self.bn1(out) out = self.relu(out) @@ -212,9 +207,7 @@ def create_simple_CNN( Args: config: (Dict) Configuration dictionary where each key represents - a layer/block and its corresponding parameters. Supported types: - - Block types: 'VGG_block', 'Resnet_block', 'DSC_block', 'Inception_block' - - Pooling: 'MaxPool2d' (with params: kernel_size, stride, padding) + a layer/block and its corresponding parameters. in_channels: (int) Number of input channels for the first layer. shape: (Tuple[int, int], optional) Input shape for the CNN. If provided, checks that the final output shape is valid. @@ -232,26 +225,7 @@ def create_simple_CNN( block_type = block_config["type"] params = block_config.get("params", {}) - # Handle MaxPool2d separately (doesn't change channel count) - if block_type == "MaxPool2d": - kernel_size = params.get("kernel_size", 2) - stride = params.get("stride", kernel_size) - padding = params.get("padding", 0) - module = nn.MaxPool2d( - kernel_size=kernel_size, stride=stride, padding=padding - ) - if shape is not None: - shape = ( - (shape[0] + 2 * padding - kernel_size) // stride + 1, - (shape[1] + 2 * padding - kernel_size) // stride + 1, - ) - if shape[0] < 1 or shape[1] < 1: - raise ValueError( - """Your CNN backbone is too large for the input shape! - Increase resolution or consider reducing the number of - layers/removing stride/adding padding.""" - ) - elif block_type != "Inception_block": + if block_type != "Inception_block": module = _blocks[block_type](in_channels=in_channels, **params) in_channels = params.get("out_channels", in_channels) if shape is not None: @@ -858,54 +832,28 @@ def validation_step(self, batch, batch_idx): # Log precision, recall, and F1-score for each class if getattr(self, "_trainer", None) is not None: - # Handle both binary (scalar) and multiclass (array) metrics - if precision.dim() == 0: - # Binary classification - metrics are scalars + for i in range(len(precision)): self.log( - "val_precision_class_1", - precision, + f"val_precision_class_{i}", + precision[i], on_step=False, on_epoch=True, prog_bar=False, ) self.log( - "val_recall_class_1", - recall, + f"val_recall_class_{i}", + recall[i], on_step=False, on_epoch=True, prog_bar=False, ) self.log( - "val_f1_class_1", - f1, + f"val_f1_class_{i}", + f1[i], on_step=False, on_epoch=True, prog_bar=False, ) - else: - # Multiclass classification - metrics are arrays - for i in range(len(precision)): - self.log( - f"val_precision_class_{i}", - precision[i], - on_step=False, - on_epoch=True, - prog_bar=False, - ) - self.log( - f"val_recall_class_{i}", - recall[i], - on_step=False, - on_epoch=True, - prog_bar=False, - ) - self.log( - f"val_f1_class_{i}", - f1[i], - on_step=False, - on_epoch=True, - prog_bar=False, - ) # Log macro averages if getattr(self, "_trainer", None) is not None: diff --git a/eyefeatures/features/feature_maps.py b/eyefeatures/features/complex.py similarity index 75% rename from eyefeatures/features/feature_maps.py rename to eyefeatures/features/complex.py index 7bb5f50..f63fca1 100644 --- a/eyefeatures/features/feature_maps.py +++ b/eyefeatures/features/complex.py @@ -6,7 +6,6 @@ import pandas as pd from numpy.typing import NDArray from PyEMD.EMD2d import EMD2D -from scipy.ndimage import gaussian_filter, zoom as ndimage_zoom from scipy.signal import convolve2d from scipy.stats import gaussian_kde @@ -25,11 +24,7 @@ def _check_shape(shape: tuple[int, int]): def get_heatmap( - x: NDArray, - y: NDArray, - shape: tuple[int, int], - check: bool = True, - zoom_to_data: bool = False, + x: NDArray, y: NDArray, shape: tuple[int, int], check: bool = True ) -> np.ndarray: """Get heatmap from scanpath (given coordinates are scaled and sorted in time) using Gaussian KDE. @@ -41,8 +36,6 @@ def get_heatmap( otherwise k must be (height, width) tuple and rectangular matrix is returned. check: whether to check 'shape' for correct typing. - zoom_to_data: if True, normalize coordinates to fill the entire heatmap. - If False, use coordinates as-is (assumes [0,1] range). Returns: heatmap matrix. @@ -50,97 +43,22 @@ def get_heatmap( if check: _check_shape(shape) - x = np.asarray(x) - y = np.asarray(y) - - # Handle edge cases where KDE cannot be applied - if len(x) <= 2: + if len(x) <= 2: # TODO warning # in case of small number of samples, KDE cannot be applied and # default kernel estimate is returned instead x, y = np.array([0.25, 0.50, 0.75]), np.array([0.50, 0.50, 0.50]) - # Normalize coordinates to [0, 1] if zoom_to_data is enabled - if zoom_to_data: - x_min, x_max = x.min(), x.max() - y_min, y_max = y.min(), y.max() - # Add small margin to avoid edge effects - x_range = x_max - x_min if x_max > x_min else 1.0 - y_range = y_max - y_min if y_max > y_min else 1.0 - x = (x - x_min) / x_range - y = (y - y_min) / y_range - - # Check if all points are the same (zero variance) - if len(np.unique(x)) == 1 and len(np.unique(y)) == 1: - # All points at same location - return uniform heatmap centered at that point - heatmap = np.zeros(shape) - center_x = int(np.clip(x[0] * shape[1], 0, shape[1] - 1)) - center_y = int(np.clip(y[0] * shape[0], 0, shape[0] - 1)) - heatmap[center_y, center_x] = 1.0 - return heatmap - - # Check if points are collinear (all x same or all y same) - if len(np.unique(x)) == 1 or len(np.unique(y)) == 1: - # Points lie on a line - use histogram-based approach instead - return _get_heatmap_histogram(x, y, shape) - - # Try to create KDE, with fallback to histogram if it fails - try: - scanpath = np.vstack([x, y]) - kernel = gaussian_kde(scanpath) - interval_x, interval_y = np.linspace(0, 1, shape[1]), np.linspace( - 0, 1, shape[0] - ) - x_grid, y_grid = np.meshgrid(interval_x, interval_y) - - # Query KDE with same [x, y] order as training data - positions = np.vstack([x_grid.ravel(), y_grid.ravel()]) - return np.reshape(kernel(positions), x_grid.shape) - except (np.linalg.LinAlgError, ValueError): - # KDE failed due to singular covariance matrix - fallback to histogram - return _get_heatmap_histogram(x, y, shape) - - -def _get_heatmap_histogram( - x: NDArray, y: NDArray, shape: tuple[int, int] -) -> np.ndarray: - """Fallback method: create heatmap using 2D histogram when KDE fails. - - Args: - x: X coordinates (normalized 0-1) - y: Y coordinates (normalized 0-1) - shape: Output shape (height, width) - - Returns: - heatmap matrix - """ - # Convert normalized coordinates to pixel indices - x_indices = np.clip((x * shape[1]).astype(int), 0, shape[1] - 1) - y_indices = np.clip((y * shape[0]).astype(int), 0, shape[0] - 1) - - # Create histogram - heatmap = np.zeros(shape) - for xi, yi in zip(x_indices, y_indices, strict=False): - heatmap[yi, xi] += 1.0 - - # Normalize - if heatmap.sum() > 0: - heatmap = heatmap / heatmap.sum() + scanpath = np.vstack([x, y]) + kernel = gaussian_kde(scanpath) + interval_x, interval_y = np.linspace(0, 1, shape[1]), np.linspace(0, 1, shape[0]) + x, y = np.meshgrid(interval_x, interval_y) - # Apply slight Gaussian smoothing to avoid completely sparse heatmaps - if heatmap.sum() > 0: - heatmap = gaussian_filter(heatmap, sigma=0.5) - heatmap = heatmap / heatmap.sum() if heatmap.sum() > 0 else heatmap - - return heatmap + positions = np.vstack([y.ravel(), x.ravel()]) + return np.reshape(kernel(positions), x.shape) def get_heatmaps( - data: pd.DataFrame, - x: str, - y: str, - shape: tuple[int, int], - pk: list[str] = None, - zoom_to_data: bool = False, + data: pd.DataFrame, x: str, y: str, shape: tuple[int, int], pk: list[str] = None ) -> np.ndarray: """Get heatmaps from scanpaths (given coordinates are scaled and sorted in time) using Gaussian KDE. @@ -153,8 +71,6 @@ def get_heatmaps( otherwise k must be (height, width) tuple and rectangular matrix is returned. pk: List of columns being primary key. - zoom_to_data: if True, normalize coordinates to fill the entire heatmap. - If False, use coordinates as-is (assumes [0,1] range). Returns: heatmap matrices. @@ -163,7 +79,7 @@ def get_heatmaps( if pk is None: x_path, y_path = data[x].values, data[y].values - heatmap = get_heatmap(x_path, y_path, shape, zoom_to_data=zoom_to_data) + heatmap = get_heatmap(x_path, y_path, shape) heatmaps = heatmap[np.newaxis, :, :] else: groups: list[str, pd.DataFrame] = _split_dataframe(data, pk) @@ -172,9 +88,7 @@ def get_heatmaps( heatmaps = np.zeros(hshape) for i, (_, group_X) in enumerate(groups): x_path, y_path = group_X[x], group_X[y] - heatmaps[i, :, :] = get_heatmap( - x_path, y_path, shape, check=False, zoom_to_data=zoom_to_data - ) + heatmaps[i, :, :] = get_heatmap(x_path, y_path, shape, check=False) return heatmaps @@ -559,116 +473,6 @@ def _encode_car(x: np.array, t: np.array) -> tuple[np.ndarray, np.ndarray]: return rho, phi -def _resize_2d_maps_to_shape(maps: np.ndarray, shape: tuple[int, int]) -> np.ndarray: - """Resize (2, h, w) or (c, h, w) array to (c, shape[0], shape[1]) using bilinear interpolation.""" - _check_shape(shape) - if maps.shape[1] == shape[0] and maps.shape[2] == shape[1]: - return maps - n, h, w = maps.shape - zoom_factors = (1, shape[0] / h, shape[1] / w) - return ndimage_zoom(maps, zoom_factors, order=1, mode="nearest") - - -# =========================== GAF/MTF batch (2D DL representations) =========================== -def get_gafs( - data: pd.DataFrame, - x: str, - y: str, - shape: tuple[int, int], - pk: list[str] = None, - t: str = None, - field_type: Literal["difference", "sum"] = "difference", - to_polar: Literal["regular", "cosine"] = "cosine", -) -> np.ndarray: - """Batch Gramian Angular Fields for 2D DL: one (2, H, W) image per group, resized to shape. - - Args: - data: input DataFrame with fixations. - x: X coordinate column name. - y: Y coordinate column name. - shape: (height, width) of output images per channel. - pk: list of primary key columns for grouping. - t: timestamps column name. - field_type: "difference" (GADF) or "sum" (GASF). - to_polar: "regular" or "cosine". - - Returns: - array of shape (n_groups, 2, shape[0], shape[1]), dtype float. - """ - _check_shape(shape) - if pk is None: - groups = [(None, data)] - else: - groups = list(_split_dataframe(data, pk)) - out = np.zeros((len(groups), 2, shape[0], shape[1]), dtype=np.float64) - for i, (_, group_X) in enumerate(groups): - if len(group_X) < 2: - # Pad with duplicate row so GAF is at least 2x2, then resize - group_X = pd.concat([group_X, group_X.iloc[-1:]], ignore_index=True) - gaf = get_gaf( - group_X, x, y, t=t, field_type=field_type, to_polar=to_polar, flatten=False - ) - gaf = _resize_2d_maps_to_shape(gaf, shape) - out[i] = gaf - return out - - -def get_mtfs( - data: pd.DataFrame, - x: str, - y: str, - shape: tuple[int, int], - pk: list[str] = None, - n_bins: int = 10, - shrink_strategy: Literal["max", "mean", "normal"] = "normal", -) -> np.ndarray: - """Batch Markov Transition Fields for 2D DL: one (2, H, W) image per group, resized to shape. - - Args: - data: input DataFrame with fixations. - x: X coordinate column name. - y: Y coordinate column name. - shape: (height, width) of output images per channel. - pk: list of primary key columns for grouping. - n_bins: number of bins for MTF discretization. - shrink_strategy: strategy when shrinking MTF matrix. - - Returns: - array of shape (n_groups, 2, shape[0], shape[1]), dtype float. - """ - _check_shape(shape) - if pk is None: - groups = [(None, data)] - else: - groups = list(_split_dataframe(data, pk)) - out = np.zeros((len(groups), 2, shape[0], shape[1]), dtype=np.float64) - min_len = max(n_bins + 1, 2) - for i, (_, group_X) in enumerate(groups): - grp = group_X - if len(grp) < min_len: - # Repeat rows to reach min_len - while len(grp) < min_len: - grp = pd.concat([grp, grp.iloc[-1:]], ignore_index=True) - try: - # get_mtf requires output_size in [2, len(data)] and len(data) > n_bins - out_size = max(2, min(len(grp), shape[0], shape[1])) - mtf = get_mtf( - grp, - x, - y, - n_bins=n_bins, - output_size=out_size, - shrink_strategy=shrink_strategy, - flatten=False, - ) - mtf = _resize_2d_maps_to_shape(mtf, shape) - out[i] = mtf - except Exception: - # Fallback: zeros or small constant - out[i] = np.zeros((2, shape[0], shape[1]), dtype=np.float64) - return out - - # =========================== HILBERT CURVE =========================== def get_hilbert_curve_enc( data: pd.DataFrame, x: str, y: str, scale: bool = True, p: int = 4 diff --git a/eyefeatures/features/measures.py b/eyefeatures/features/measures.py index 7f6aaf1..a449128 100644 --- a/eyefeatures/features/measures.py +++ b/eyefeatures/features/measures.py @@ -9,8 +9,8 @@ from scipy.spatial.distance import euclidean, pdist, squareform from scipy.stats import entropy, kurtosis, skew +from eyefeatures.features.complex import get_rqa, hilbert_huang_transform from eyefeatures.features.extractor import BaseTransformer -from eyefeatures.features.feature_maps import get_rqa, hilbert_huang_transform from eyefeatures.utils import _split_dataframe @@ -25,8 +25,6 @@ class MeasureTransformer(ABC, BaseTransformer): pk: primary key. return_df: whether to return output as DataFrame or numpy array. feature_name: Column name for resulting feature. - ignore_errors: If True, return NaN values when feature computation fails - instead of raising an error. Default is False. """ def __init__( @@ -37,12 +35,10 @@ def __init__( pk: list[str] = None, return_df: bool = True, feature_name: str = "feature", - ignore_errors: bool = False, ): super().__init__(x=x, y=y, pk=pk, return_df=return_df) self.aoi = aoi self.feature_name = feature_name - self.ignore_errors = ignore_errors def _check_init(self, X_len: int): assert X_len != 0, "Error: there are no fixations" @@ -58,46 +54,7 @@ def fit(self, X: pd.DataFrame, y=None): return self def transform(self, X: pd.DataFrame) -> pd.DataFrame | np.ndarray: - # Handle empty DataFrame case - if X.shape[0] == 0: - if self.ignore_errors: - # Return DataFrame with NaN values - names = self.get_feature_names_out() - if self.pk is None: - features_df = pd.DataFrame( - data=[[np.nan] * len(names)], columns=names, index=["all"] - ) - else: - # Return empty DataFrame with correct columns - features_df = pd.DataFrame(columns=names) - return features_df if self.return_df else features_df.values - else: - self._check_init(X_len=X.shape[0]) - - # Check initialization (catch errors if ignore_errors=True) - try: - self._check_init(X_len=X.shape[0]) - except (AssertionError, RuntimeError) as e: - if self.ignore_errors: - # Return NaN for all groups - names = self.get_feature_names_out() - if self.pk is None: - features_df = pd.DataFrame( - data=[[np.nan] * len(names)], columns=names, index=["all"] - ) - else: - # For grouped data, return NaN for each group - X_split = _split_dataframe(X, self.pk) - group_names = [group for group, _ in X_split] - gathered_features = [[np.nan] * len(names) for _ in group_names] - features_df = pd.DataFrame( - data=gathered_features, columns=names, index=group_names - ) - return features_df if self.return_df else features_df.values - else: - raise type(e)( - f"{e!s} Set ignore_errors=True to return NaN instead." - ) from e + self._check_init(X_len=X.shape[0]) group_names = [] gathered_features = [] @@ -105,43 +62,17 @@ def transform(self, X: pd.DataFrame) -> pd.DataFrame | np.ndarray: if self.pk is None: group_names.append("all") - try: - names, values = self.calculate_features(X) - columns_names = names - gathered_features.append(values) - except Exception as e: - if self.ignore_errors: - # Get feature names to create appropriate number of NaNs - names = self.get_feature_names_out() - if not columns_names: - columns_names = names - # Create NaN values for all features - gathered_features.append([np.nan] * len(names)) - else: - raise type(e)( - f"{e!s} Set ignore_errors=True to return NaN instead." - ) from e + names, values = self.calculate_features(X) + columns_names = names + gathered_features.append(values) else: X_split = _split_dataframe(X, self.pk) for group, current_X in X_split: group_names.append(group) - try: - names, values = self.calculate_features(current_X) - if not columns_names: - columns_names = names - gathered_features.append(values) - except Exception as e: - if self.ignore_errors: - # Get feature names to create appropriate number of NaNs - names = self.get_feature_names_out() - if not columns_names: - columns_names = names - # Create NaN values for all features - gathered_features.append([np.nan] * len(names)) - else: - raise type(e)( - f"{e!s} Set ignore_errors=True to return NaN instead." - ) from e + names, values = self.calculate_features(current_X) + if not columns_names: + columns_names = names + gathered_features.append(values) features_df = pd.DataFrame( data=gathered_features, columns=columns_names, index=group_names @@ -172,7 +103,6 @@ class HurstExponent(MeasureTransformer): pk: list of column names used to split pd.DataFrame. eps: division epsilon. return_df: Return pd.Dataframe object else np.ndarray. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. Example: Quick start with default parameters:: @@ -191,14 +121,9 @@ def __init__( pk: list[str] = None, eps: float = 1e-22, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( - x=coordinate, - pk=pk, - return_df=return_df, - feature_name="hurst_exponent", - ignore_errors=ignore_errors, + x=coordinate, pk=pk, return_df=return_df, feature_name="hurst_exponent" ) self.coordinate = coordinate self.n_iters = n_iters @@ -218,15 +143,6 @@ def _check_init(self, X_len: int): f"Error: 'fill_strategy' must be one of " f"{','.join(fill_strategies)}." ) - def get_feature_names_out(self, input_features=None) -> list[str]: - """Generate feature name that includes coordinate column and hyperparameters.""" - # Determine coordinate name (x or y) from the column name - # Build feature name with coordinate and hyperparameters - feature_name = ( - f"hurst_{self.coordinate}_n{self.n_iters}_fill_{self.fill_strategy}" - ) - return [feature_name] - def _make_pow2(self, x: np.array) -> np.array: n = len(x) k = np.log2(len(x)).astype(np.int32) # 2 ^ k <= n < 2 ^ (k + 1) @@ -274,13 +190,15 @@ def calculate_features(self, X: pd.DataFrame) -> tuple[list[str], list[float]]: # OLS via polynomial fitting rs = rs[:cnt] bs = bs[:cnt] - # Hurst is slope of log(RS) vs log(n) - X_ols = np.vstack([np.ones(cnt), np.log(bs)]).T - grad = np.linalg.lstsq(X_ols, np.log(rs), rcond=None)[0] - # Use dynamic feature name that includes coordinate and hyperparameters - feature_name = self.get_feature_names_out()[0] - return [feature_name], [grad[1]] + # Hurst exponent is slope of log(RS) vs log(n) + coeffs = np.polyfit(np.log(bs), np.log(rs), 1) + + # Manual OLS (unstable) + # X_ols = np.vstack([np.ones(cnt), np.log(bs)]).T # [1, log(bs)] + # grad = (np.linalg.inv(X_ols.T @ X_ols) @ X_ols.T) @ np.log(rs) + + return [self.feature_name], [coeffs[0]] class ShannonEntropy(MeasureTransformer): @@ -294,7 +212,6 @@ class ShannonEntropy(MeasureTransformer): aoi: Area Of Interest column name. pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -302,15 +219,8 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): - super().__init__( - aoi=aoi, - pk=pk, - return_df=return_df, - feature_name="entropy", - ignore_errors=ignore_errors, - ) + super().__init__(aoi=aoi, pk=pk, return_df=return_df, feature_name="entropy") def _check_init(self, X_len: int): assert self.aoi is not None, "Error: Provide aoi column" @@ -344,7 +254,6 @@ class SpectralEntropy(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -354,15 +263,9 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( - x=x, - y=y, - pk=pk, - return_df=return_df, - feature_name="spectral_entropy", - ignore_errors=ignore_errors, + x=x, y=y, pk=pk, return_df=return_df, feature_name="spectral_entropy" ) self.aoi = aoi @@ -390,7 +293,6 @@ class FuzzyEntropy(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -402,15 +304,9 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( - x=x, - y=y, - pk=pk, - return_df=return_df, - feature_name=f"fuzzy_m_{m}_r_{r}", - ignore_errors=ignore_errors, + x=x, y=y, pk=pk, return_df=return_df, feature_name=f"fuzzy_m_{m}_r_{r}" ) self.m = m self.r = r @@ -451,7 +347,6 @@ class SampleEntropy(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -463,7 +358,6 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( x=x, @@ -471,7 +365,6 @@ def __init__( pk=pk, return_df=return_df, feature_name=f"sample_entropy_m={m}_r={r}", - ignore_errors=ignore_errors, ) self.m = m self.r = r @@ -505,7 +398,6 @@ class IncrementalEntropy(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -515,15 +407,9 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( - x=x, - y=y, - pk=pk, - return_df=return_df, - feature_name="incremental_entropy", - ignore_errors=ignore_errors, + x=x, y=y, pk=pk, return_df=return_df, feature_name="incremental_entropy" ) self.aoi = aoi @@ -555,7 +441,6 @@ class GriddedDistributionEntropy(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -566,7 +451,6 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( x=x, @@ -574,7 +458,6 @@ def __init__( pk=pk, return_df=return_df, feature_name=f"gridded_entropy_grid_size_{grid_size}", - ignore_errors=ignore_errors, ) self.grid_size = grid_size self.aoi = aoi @@ -607,7 +490,6 @@ class PhaseEntropy(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. Example: from eyefeatures.features.measures import PhaseEntropy @@ -625,7 +507,6 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( x=x, @@ -633,7 +514,6 @@ def __init__( pk=pk, return_df=return_df, feature_name=f"phase_entropy_m_{m}_tau_{tau}", - ignore_errors=ignore_errors, ) self.m = m self.tau = tau @@ -673,7 +553,6 @@ class LyapunovExponent(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. Example: from eyefeatures.features.measures import LyapunovExponent @@ -692,7 +571,6 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( x=x, @@ -700,7 +578,6 @@ def __init__( pk=pk, return_df=return_df, feature_name=f"lyapunov_exponent_m_{m}_tau_{tau}_T_{T}", - ignore_errors=ignore_errors, ) self.m = m self.tau = tau @@ -756,7 +633,6 @@ class FractalDimension(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -768,7 +644,6 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( x=x, @@ -776,7 +651,6 @@ def __init__( pk=pk, return_df=return_df, feature_name=f"fractal_dim_m_{m}_tau_{tau}", - ignore_errors=ignore_errors, ) self.m = m self.tau = tau @@ -825,7 +699,6 @@ class CorrelationDimension(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -838,7 +711,6 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( x=x, @@ -846,7 +718,6 @@ def __init__( pk=pk, return_df=return_df, feature_name=f"corr_dim_m_{m}_tau_{tau}_r_{r}", - ignore_errors=ignore_errors, ) self.m = m self.tau = tau @@ -897,7 +768,6 @@ class RQAMeasures(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. """ def __init__( @@ -911,18 +781,10 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): if measures is None: measures = ["rec", "det", "lam", "corm"] - super().__init__( - x=x, - y=y, - pk=pk, - return_df=return_df, - feature_name="rqa", - ignore_errors=ignore_errors, - ) + super().__init__(x=x, y=y, pk=pk, return_df=return_df, feature_name="rqa") self.rho = rho self.metric = metric self.min_length = min_length @@ -1035,7 +897,6 @@ class SaccadeUnlikelihood(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. Returns: the cumulative Negative Log-Likelihood (NLL) of the saccades. @@ -1055,15 +916,9 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): super().__init__( - x=x, - y=y, - pk=pk, - return_df=return_df, - feature_name="saccade_nll", - ignore_errors=ignore_errors, + x=x, y=y, pk=pk, return_df=return_df, feature_name="saccade_nll" ) self.mu_p = mu_p self.sigma_p1 = sigma_p1 @@ -1136,7 +991,6 @@ class HHTFeatures(MeasureTransformer): aoi: Area Of Interest column name(-s). pk: primary key. return_df: whether to return output as DataFrame or numpy array. - ignore_errors: If True, return NaN when feature computation fails; otherwise raise. Returns: features extracted from each IMF of the HHT decomposition. @@ -1151,18 +1005,10 @@ def __init__( aoi: str = None, pk: list[str] = None, return_df: bool = True, - ignore_errors: bool = False, ): if features is None: features = ["mean", "std"] - super().__init__( - x=x, - y=y, - pk=pk, - return_df=return_df, - feature_name="hht", - ignore_errors=ignore_errors, - ) + super().__init__(x=x, y=y, pk=pk, return_df=return_df, feature_name="hht") self.max_imfs = max_imfs self.features = features self.aoi = aoi diff --git a/eyefeatures/features/pairwise.py b/eyefeatures/features/scanpath_complex.py similarity index 61% rename from eyefeatures/features/pairwise.py rename to eyefeatures/features/scanpath_complex.py index 10915b1..dd707e5 100644 --- a/eyefeatures/features/pairwise.py +++ b/eyefeatures/features/scanpath_complex.py @@ -5,11 +5,139 @@ from numpy.typing import NDArray from scipy.cluster.hierarchy import leaves_list, linkage, optimal_leaf_ordering from scipy.linalg import sqrtm +from scipy.optimize import minimize from scipy.sparse.csgraph import laplacian from scipy.sparse.linalg import eigsh from sklearn.manifold import MDS from tqdm import tqdm +from eyefeatures.utils import Types, _split_dataframe + + +def _target_norm(fwp: np.ndarray, fixations: np.ndarray) -> float: + return np.linalg.norm(fixations - fwp, axis=1).sum() + + +def get_expected_path( + data: pd.DataFrame, + x: str, + y: str, + path_pk: list[str], + pk: list[str], + method: str = "mean", + duration: str = None, + return_df: bool = True, +) -> dict[str, pd.DataFrame | np.ndarray]: + """Estimates expected path by a given method. + + Args: + data: input Dataframe with fixations. + x: X coordinate column name. + y: Y coordinate column name. + path_pk: List of column names of groups to calculate + expected path (must be a subset of pk). + pk: List of column names used to split pd.Dataframe. + method: method to calculate expected path ("mean" or "fwp"). + duration: Column name of fixations duration if needed. + return_df: Return pd.Dataframe object else np.ndarray. + + Returns: + Dict of groups and Union[pd.Dataframe, np.ndarray] of + form (x_est, y_est) or (x_est, y_est, duration_est). + """ + + if not set(path_pk).issubset(set(pk)): + raise ValueError("path_pk must be a subset of pk") + + columns = [x, y] + columns_ret = ["x_est", "y_est"] + if duration is not None: + columns.append(duration) + columns_ret.append("duration_est") + + resulted_paths = {} + path_groups: Types.Partition = _split_dataframe(data, path_pk) + + for group_nm, group_path in path_groups: + expected_path = [] + data_part: Types.Partition = _split_dataframe(group_path, pk) + path_length = max(len(part_path) for part_nm, part_path in data_part) + + if method == "mean": + reshaped_paths = [ + np.pad( + part_path[columns], + pad_width=((0, path_length - len(part_path)), (0, 0)), + mode="constant", + ) + for part_nm, part_path in data_part + ] + expected_path = np.mean(np.array(reshaped_paths), axis=0) + elif method == "fwp": + for step in range(path_length): + duration_sum = 0 + observed_points = [] + for part_nm, part_path in data_part: + part_path = part_path[columns].values + if part_path.shape[0] > step: + observed_points.append(part_path[step, :2]) + if len(columns) == 3: + duration_sum += part_path[step, 2] + + vector_points = np.array(observed_points) + fwp_init = np.mean(vector_points, axis=0) + fwp_opt = minimize( + _target_norm, fwp_init, args=(vector_points,), method="L-BFGS-B" + ) + fix_opt = [fwp_opt.x[0], fwp_opt.x[1]] + if len(columns) == 3: + fix_opt.append(duration_sum / max(1, len(observed_points))) + + expected_path.append(fix_opt) + else: + raise ValueError('Only "mean" and "fwp" methods are supported') + + expected_path_df = pd.DataFrame(expected_path, columns=columns_ret) + resulted_paths[group_nm] = ( + expected_path_df if return_df else expected_path_df.values + ) + + return resulted_paths + + +def _get_fill_path( + data: list[pd.DataFrame], + x: str, + y: str, + method: str = "mean", + duration: str = None, +) -> pd.DataFrame: + """Calculates fill path as expected path of given expected paths + + Args: + data: list of Dataframes with fixations. + x: X coordinate column name. + y: Y coordinate column name. + method: method to calculate expected path ("mean" or "fwp"). + duration: Column name of fixations duration if needed. + """ + + paths = pd.concat( + [path.assign(__dummy_id__=k) for k, path in enumerate(data)], ignore_index=True + ) + paths = paths.assign(__dummy_all__="__dummy_key__") + + fill_path = get_expected_path( + data=paths, + x=x, + y=y, + path_pk=["__dummy_all__"], + pk=["__dummy_id__", "__dummy_all__"], + method=method, + duration=duration, + ) + return fill_path["__dummy_key__"] + # ======================== SIMILARITY MATRIX ======================== def restore_matrix(matrix: NDArray, tol=1e-9): @@ -67,7 +195,7 @@ def get_dist_matrix( Args: scanpaths: List of scanpaths DataFrames of form (x, y) - dist_metric: Metric used to calculate distance from features.dist + dist_metric: Metric used to calculate distance from features.scanpath_dist """ if len(scanpaths) == 0: diff --git a/eyefeatures/features/dist.py b/eyefeatures/features/scanpath_dist.py similarity index 87% rename from eyefeatures/features/dist.py rename to eyefeatures/features/scanpath_dist.py index 1b1de0b..138f6ab 100644 --- a/eyefeatures/features/dist.py +++ b/eyefeatures/features/scanpath_dist.py @@ -7,134 +7,10 @@ from tqdm import tqdm from eyefeatures.features.extractor import BaseTransformer +from eyefeatures.features.scanpath_complex import _get_fill_path, get_expected_path from eyefeatures.utils import Types, _split_dataframe -def _target_norm(fwp: np.ndarray, fixations: np.ndarray) -> float: - return np.linalg.norm(fixations - fwp, axis=1).sum() - - -def get_expected_path( - data: pd.DataFrame, - x: str, - y: str, - path_pk: list[str], - pk: list[str], - method: str = "mean", - duration: str = None, - return_df: bool = True, -) -> dict[str, pd.DataFrame | np.ndarray]: - """Estimates expected path by a given method. - - Args: - data: input Dataframe with fixations. - x: X coordinate column name. - y: Y coordinate column name. - path_pk: List of column names of groups to calculate - expected path (must be a subset of pk). - pk: List of column names used to split pd.Dataframe. - method: method to calculate expected path ("mean" or "fwp"). - duration: Column name of fixations duration if needed. - return_df: Return pd.Dataframe object else np.ndarray. - - Returns: - Dict of groups and Union[pd.Dataframe, np.ndarray] of - form (x_est, y_est) or (x_est, y_est, duration_est). - """ - from scipy.optimize import minimize - - if not set(path_pk).issubset(set(pk)): - raise ValueError("path_pk must be a subset of pk") - - columns = [x, y] - columns_ret = ["x_est", "y_est"] - if duration is not None: - columns.append(duration) - columns_ret.append("duration_est") - - resulted_paths = {} - path_groups: Types.Partition = _split_dataframe(data, path_pk) - - for group_nm, group_path in path_groups: - expected_path = [] - data_part: Types.Partition = _split_dataframe(group_path, pk) - path_length = max(len(part_path) for part_nm, part_path in data_part) - - if method == "mean": - reshaped_paths = [ - np.pad( - part_path[columns], - pad_width=((0, path_length - len(part_path)), (0, 0)), - mode="constant", - ) - for part_nm, part_path in data_part - ] - expected_path = np.mean(np.array(reshaped_paths), axis=0) - elif method == "fwp": - for step in range(path_length): - duration_sum = 0 - observed_points = [] - for part_nm, part_path in data_part: - part_path = part_path[columns].values - if part_path.shape[0] > step: - observed_points.append(part_path[step, :2]) - if len(columns) == 3: - duration_sum += part_path[step, 2] - - vector_points = np.array(observed_points) - fwp_init = np.mean(vector_points, axis=0) - fwp_opt = minimize( - _target_norm, fwp_init, args=(vector_points,), method="L-BFGS-B" - ) - fix_opt = [fwp_opt.x[0], fwp_opt.x[1]] - if len(columns) == 3: - fix_opt.append(duration_sum / max(1, len(observed_points))) - - expected_path.append(fix_opt) - else: - raise ValueError('Only "mean" and "fwp" methods are supported') - - expected_path_df = pd.DataFrame(expected_path, columns=columns_ret) - resulted_paths[group_nm] = ( - expected_path_df if return_df else expected_path_df.values - ) - - return resulted_paths - - -def _get_fill_path( - data: list[pd.DataFrame], - x: str, - y: str, - method: str = "mean", - duration: str = None, -) -> pd.DataFrame: - """Calculates fill path as expected path of given expected paths - - Args: - data: list of Dataframes with fixations. - x: X coordinate column name. - y: Y coordinate column name. - method: method to calculate expected path ("mean" or "fwp"). - duration: Column name of fixations duration if needed. - """ - paths = pd.concat( - [path.assign(__dummy_id__=k) for k, path in enumerate(data)], ignore_index=True - ) - paths = paths.assign(__dummy_all__="__dummy_key__") - - fill_path = get_expected_path( - data=paths, - x=x, - y=y, - path_pk=["__dummy_all__"], - pk=["__dummy_id__", "__dummy_all__"], - method=method, - duration=duration, - ) - return fill_path["__dummy_key__"] - - class DistanceTransformer(BaseTransformer): """Base Transformer for distance-based features. @@ -1115,7 +991,7 @@ def calc_mm_features( shortest_path.reverse() # calculate features using the shortest path - p_fix_x, p_fix_y = p.values[:, 0], p.values[:, 1] + p_fix_x, p_fix_y = p.values[:, 0], p.values[:, 0] q_fix_x, q_fix_y = q.values[:, 0], q.values[:, 1] p_fix_dur, q_fix_dur = p.values[:, 2], q.values[:, 2] p_sac_rho, p_sac_phi = ( diff --git a/eyefeatures/visualization/static_visualization.py b/eyefeatures/visualization/static_visualization.py index 7d83cab..43dce4f 100644 --- a/eyefeatures/visualization/static_visualization.py +++ b/eyefeatures/visualization/static_visualization.py @@ -354,7 +354,6 @@ def get_visualizations( pattern: str, dpi: float = 100.0, pk: list[str] = None, - zoom_to_data: bool = True, ): """Get visualizations. @@ -366,8 +365,6 @@ def get_visualizations( pattern: visualization class to use. dpi: dpi for images. pk: list of column names used to split pd.DataFrame. - zoom_to_data: if True, auto-scale to fit data (fills the image). - If False, use fixed [0,1] coordinate space. Returns: output: tensor of shape [n, m, fig, fig, c], where\n @@ -379,13 +376,11 @@ def get_visualizations( arr = [] if pk is None: if pattern == "baseline": - res = baseline_visualization(data, x, y, shape, zoom_to_data=zoom_to_data) + res = baseline_visualization(data, x, y, shape) elif pattern == "aoi": - res = aoi_visualization( - data, x, y, shape, aoi="AOI", zoom_to_data=zoom_to_data - ) + res = aoi_visualization(data, x, y, shape, aoi="AOI") elif pattern == "saccades": - res = saccade_visualization(data, x, y, shape, zoom_to_data=zoom_to_data) + res = saccade_visualization(data, x, y, shape) else: raise ValueError(f"Unsupported pattern: {pattern}") arr.append(res) @@ -396,34 +391,15 @@ def get_visualizations( for group_id, group_X in tqdm(groups): if pattern == "baseline": res = baseline_visualization( - group_X, - x, - y, - shape, - show_plot=False, - dpi=dpi, - zoom_to_data=zoom_to_data, + group_X, x, y, shape, show_plot=False, dpi=dpi ) elif pattern == "aoi": res = aoi_visualization( - group_X, - x, - y, - shape, - aoi="AOI", - show_plot=False, - dpi=dpi, - zoom_to_data=zoom_to_data, + group_X, x, y, shape, aoi="AOI", show_plot=False, dpi=dpi ) elif pattern == "saccades": res = saccade_visualization( - group_X, - x, - y, - shape, - show_plot=False, - dpi=dpi, - zoom_to_data=zoom_to_data, + group_X, x, y, shape, show_plot=False, dpi=dpi ) else: raise ValueError(f"Unsupported pattern: {pattern}") @@ -438,7 +414,6 @@ def baseline_visualization( x: str, y: str, shape: tuple[int, int] = (10, 10), - points_width: float = 75, path_width: float = 1, show_legend: bool = False, path_to_img: str = None, @@ -446,55 +421,21 @@ def baseline_visualization( show_plot: bool = False, return_ndarray: bool = True, dpi: float = 100.0, - internal_resolution: int = 256, - zoom_to_data: bool = True, ): - # Render at higher internal resolution for better quality, then resize - # Use a reasonable figure size with adjusted DPI - internal_dpi = 100.0 - fig_size = (internal_resolution / internal_dpi, internal_resolution / internal_dpi) - - # Scale sizes proportionally to internal resolution - scale_factor = internal_resolution / 256.0 # Normalize to 256 as base - scaled_points_width = points_width * scale_factor - scaled_path_width = path_width * scale_factor - - # Set axes limits based on zoom_to_data - # If zoom_to_data=True, let matplotlib auto-scale (axes_limits=None) - # If zoom_to_data=False, use fixed [0,1] coordinate space - axes_limits = None if zoom_to_data else (0, 1, 0, 1) - - arr = scanpath_visualization( + return scanpath_visualization( data_, x, y, - fig_size=fig_size, + fig_size=shape, show_legend=show_legend, path_to_img=path_to_img, with_axes=with_axes, - axes_limits=axes_limits, - points_width=scaled_points_width, - path_width=scaled_path_width, + path_width=path_width, return_ndarray=return_ndarray, show_plot=show_plot, - dpi=internal_dpi, + dpi=dpi, ) - # Resize to target shape if needed - if ( - return_ndarray - and arr is not None - and (arr.shape[0] != shape[0] or arr.shape[1] != shape[1]) - ): - from PIL import Image - - # arr is (H, W, C) with values in [0, 1] - img = Image.fromarray((arr * 255).astype(np.uint8)) - img = img.resize((shape[1], shape[0]), Image.Resampling.LANCZOS) - arr = np.array(img) / 255.0 - - return arr - def aoi_visualization( data_: pd.DataFrame, @@ -517,32 +458,17 @@ def aoi_visualization( show_plot: bool = True, only_points: bool = True, dpi: float = 100.0, - internal_resolution: int = 256, - zoom_to_data: bool = True, ): - # Render at higher internal resolution for better quality, then resize - internal_dpi = 100.0 - fig_size = (internal_resolution / internal_dpi, internal_resolution / internal_dpi) - - # Scale sizes proportionally to internal resolution - scale_factor = internal_resolution / 256.0 - scaled_points_width = points_width * scale_factor - scaled_path_width = path_width * scale_factor - - # Set axes limits based on zoom_to_data (if not explicitly provided) - if axes_limits is None and not zoom_to_data: - axes_limits = (0, 1, 0, 1) - - arr = scanpath_visualization( + return scanpath_visualization( data_, x, y, shape_column=shape_column, aoi=aoi, img_path=img_path, - fig_size=fig_size, - points_width=scaled_points_width, - path_width=scaled_path_width, + fig_size=shape, + points_width=points_width, + path_width=path_width, points_color=points_color, seq_colormap=seq_colormap, show_legend=show_legend, @@ -554,23 +480,9 @@ def aoi_visualization( only_points=only_points, return_ndarray=return_ndarray, show_plot=show_plot, - dpi=internal_dpi, + dpi=dpi, ) - # Resize to target shape if needed - if ( - return_ndarray - and arr is not None - and (arr.shape[0] != shape[0] or arr.shape[1] != shape[1]) - ): - from PIL import Image - - img = Image.fromarray((arr * 255).astype(np.uint8)) - img = img.resize((shape[1], shape[0]), Image.Resampling.LANCZOS) - arr = np.array(img) / 255.0 - - return arr - def saccade_visualization( data_: pd.DataFrame, @@ -579,13 +491,12 @@ def saccade_visualization( shape: tuple[int, int] = (10, 10), shape_column: str = None, img_path: str = None, - points_width: float = 75, path_width: float = 1, path_color: str = "green", add_regressions: bool = False, regression_color: str = "red", is_vectors: bool = False, - seq_colormap: bool = True, # Colors saccades by temporal order (dark to light) + seq_colormap: bool = False, show_legend: bool = False, path_to_img: str = None, with_axes: bool = False, @@ -595,31 +506,15 @@ def saccade_visualization( return_ndarray: bool = True, show_plot: bool = True, dpi: float = 100.0, - internal_resolution: int = 256, - zoom_to_data: bool = True, ): - # Render at higher internal resolution for better quality, then resize - internal_dpi = 100.0 - fig_size = (internal_resolution / internal_dpi, internal_resolution / internal_dpi) - - # Scale sizes proportionally to internal resolution - scale_factor = internal_resolution / 256.0 - scaled_points_width = points_width * scale_factor - scaled_path_width = path_width * scale_factor - - # Set axes limits based on zoom_to_data (if not explicitly provided) - if axes_limits is None and not zoom_to_data: - axes_limits = (0, 1, 0, 1) - - arr = scanpath_visualization( + return scanpath_visualization( data_, x, y, shape_column=shape_column, img_path=img_path, - fig_size=fig_size, - points_width=scaled_points_width, - path_width=scaled_path_width, + fig_size=shape, + path_width=path_width, seq_colormap=seq_colormap, show_legend=show_legend, path_to_img=path_to_img, @@ -633,19 +528,5 @@ def saccade_visualization( is_vectors=is_vectors, return_ndarray=return_ndarray, show_plot=show_plot, - dpi=internal_dpi, + dpi=dpi, ) - - # Resize to target shape if needed - if ( - return_ndarray - and arr is not None - and (arr.shape[0] != shape[0] or arr.shape[1] != shape[1]) - ): - from PIL import Image - - img = Image.fromarray((arr * 255).astype(np.uint8)) - img = img.resize((shape[1], shape[0]), Image.Resampling.LANCZOS) - arr = np.array(img) / 255.0 - - return arr diff --git a/pyproject.toml b/pyproject.toml index 1486fa8..f926e98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,12 +13,12 @@ numba = "0.60.0" numpy = "1.26.0" pandas = "2.2.2" scikit-learn = "1.5.1" +scikit_multilearn = "0.2.0" scipy = "1.14.1" tqdm = "4.66.4" EMD-signal = "1.6.4" gudhi = "3.10.1" kaleido = "1.0.0" -fastparquet = "*" [tool.poetry.group.docs.dependencies] sphinx = "8.1.3" @@ -33,6 +33,7 @@ optional = true [tool.poetry.group.dev.dependencies] black = "24.10.0" +isort = "5.12.0" flake8 = "6.1" openpyxl = "3.1.5" plotly = "6.1.1" @@ -108,6 +109,15 @@ line-length = 88 target-version = ['py310', 'py311', 'py312'] include = '\.pyi?$' +[tool.isort] +profile = "black" +line_length = 88 +multi_line_output = 3 +include_trailing_comma = true +force_grid_wrap = 0 +use_parentheses = true +ensure_newline_before_comments = true + [tool.flake8] max-line-length = 88 extend-ignore = ["E501"] diff --git a/tests/data/__init__.py b/tests/data/__init__.py deleted file mode 100644 index 0ccde5e..0000000 --- a/tests/data/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Tests for eyefeatures.data module.""" diff --git a/tests/data/test_utils.py b/tests/data/test_utils.py deleted file mode 100644 index 38e8864..0000000 --- a/tests/data/test_utils.py +++ /dev/null @@ -1,114 +0,0 @@ -"""Tests for eyefeatures.data.utils.""" - -from pathlib import Path - -import pandas as pd -import pytest - -from eyefeatures.data.utils import ( - get_labels, - get_meta, - get_pk, - list_datasets, - load_dataset, -) - - -class TestGetPk: - """Tests for get_pk function.""" - - def test_group_prefix_columns(self): - """Test extraction of group_ prefixed columns.""" - df = pd.DataFrame( - { - "group_participant": ["p1", "p2"], - "group_stimulus": ["s1", "s2"], - "x": [1.0, 2.0], - } - ) - assert get_pk(df) == ["group_participant", "group_stimulus"] - - def test_no_pk_columns(self): - """Test empty result when no group_ columns.""" - df = pd.DataFrame({"x": [1.0], "y": [2.0]}) - assert get_pk(df) == [] - - -class TestGetLabels: - """Tests for get_labels function.""" - - def test_label_suffix_columns(self): - """Test extraction of _label suffixed columns.""" - df = pd.DataFrame( - { - "condition_label": [0, 1], - "task_label": ["a", "b"], - "x": [1.0, 2.0], - } - ) - assert get_labels(df) == ["condition_label", "task_label"] - - def test_no_label_columns(self): - """Test empty result when no _label columns.""" - df = pd.DataFrame({"x": [1.0], "y": [2.0]}) - assert get_labels(df) == [] - - -class TestGetMeta: - """Tests for get_meta function.""" - - def test_meta_prefix_columns(self): - """Test extraction of meta_ prefixed columns.""" - df = pd.DataFrame( - { - "meta_screen_w": [1920], - "meta_screen_h": [1080], - "x": [1.0], - } - ) - assert get_meta(df) == ["meta_screen_w", "meta_screen_h"] - - def test_no_meta_columns(self): - """Test empty result when no meta_ columns.""" - df = pd.DataFrame({"x": [1.0], "y": [2.0]}) - assert get_meta(df) == [] - - -class TestListDatasets: - """Tests for list_datasets function.""" - - def test_list_returns_sorted_names(self): - """Test listing datasets from benchmark dir returns sorted names.""" - collection_dir = ( - Path(__file__).resolve().parent.parent.parent / "data" / "collection" - ) - if not collection_dir.exists(): - pytest.skip("Collection data dir not found") - result = list_datasets(collection_dir=collection_dir) - assert isinstance(result, list) - assert result == sorted(result) - if result: - assert all(isinstance(name, str) for name in result) - - -class TestLoadDataset: - """Tests for load_dataset function.""" - - def test_load_paris_experiment_fixations(self): - """Test loading Paris_experiment_fixations dataset from collection.""" - collection_dir = ( - Path(__file__).resolve().parent.parent.parent / "data" / "collection" - ) - dataset_path = collection_dir / "Paris_experiment_fixations.parquet" - if not dataset_path.exists(): - pytest.skip("Paris_experiment_fixations.parquet not found (Git LFS?)") - df, meta = load_dataset( - "Paris_experiment_fixations", collection_dir=collection_dir - ) - assert isinstance(df, pd.DataFrame) - assert len(df) > 0 - assert "info" in meta - assert "labels" in meta - assert "general_info" in meta["info"] - assert "reference" in meta["info"] - assert "source_url" in meta["info"] diff --git a/tests/deep/test_datasets.py b/tests/deep/test_datasets.py index 07b3897..d9857ae 100644 --- a/tests/deep/test_datasets.py +++ b/tests/deep/test_datasets.py @@ -12,6 +12,7 @@ _cell_index, _coord_to_grid, create_graph_data_from_dataframe, + iterative_split, ) @@ -38,6 +39,19 @@ def y_labels(deep_sample_df): return deep_sample_df[["participant", "stimulus", "label"]].drop_duplicates() +def test_iterative_split(): + """Test iterative_split function.""" + df = pd.DataFrame({"a": [1, 1, 0, 0, 1, 1, 0, 0], "b": [1, 0, 1, 0, 1, 0, 1, 0]}) + y = np.array([1, 0, 1, 0, 1, 0, 1, 0]) + + X_train, X_test, y_train, y_test = iterative_split( + df, y, test_size=0.5, stratify_columns=["a", "b"] + ) + + assert len(X_train) == 4 + assert len(X_test) == 4 + + def test_coord_helpers(): """Test coordinate transformation helpers.""" coords = np.array([[50, 50], [150, 150]]) @@ -179,3 +193,57 @@ def test_grid_graph_dataset(deep_sample_df): graph = ds[0] assert hasattr(graph, "x") assert hasattr(graph, "edge_index") + + +def test_lightning_datamodules(deep_sample_df): + """Test PyTorch Lightning DataModules.""" + from eyefeatures.deep.datasets import DatasetLightning2D, DatasetLightningTimeSeries + + Y = deep_sample_df[["participant", "stimulus", "label"]].drop_duplicates() + # Need to group X and Y by PK to pass to DataModule split logic + X_grouped = deep_sample_df + Y_grouped = Y + + dm2d = DatasetLightning2D( + X_grouped, + Y_grouped, + x="x", + y="y", + pk=["participant", "stimulus"], + shape=(10, 10), + representations=["heatmap"], + test_size=0.5, + batch_size=1, + ) + dm2d.setup() + assert len(dm2d.train_dataloader()) == 1 + assert len(dm2d.val_dataloader()) == 1 + + dmts = DatasetLightningTimeSeries( + X_grouped, + Y_grouped, + x="x", + y="y", + pk=["participant", "stimulus"], + features=["duration"], + test_size=0.5, + batch_size=1, + ) + dmts.setup() + assert len(dmts.train_dataloader()) == 1 + + # Test another split type + dm2d_alt = DatasetLightning2D( + X_grouped, + Y_grouped, + x="x", + y="y", + pk=["participant", "stimulus"], + shape=(10, 10), + representations=["heatmap"], + test_size=0.5, + batch_size=1, + split_type="first_category_unique", + ) + dm2d_alt.setup() + assert dm2d_alt.train_dataset is not None diff --git a/tests/deep/test_models.py b/tests/deep/test_models.py index 4f8ef80..0001ea9 100644 --- a/tests/deep/test_models.py +++ b/tests/deep/test_models.py @@ -148,7 +148,6 @@ def test_regressor(): def test_graph_models(): """Test GCN and GIN.""" - from torch_geometric.data import Batch, Data # Mock some graph data diff --git a/tests/features/test_all_features.py b/tests/features/test_all_features.py index 93e5690..9b04f45 100644 --- a/tests/features/test_all_features.py +++ b/tests/features/test_all_features.py @@ -2,17 +2,6 @@ import pandas as pd import pytest -from eyefeatures.features.dist import ( - DFDist, - DTWDist, - EucDist, - EyeAnalysisDist, - HauDist, - MannanDist, - MultiMatchDist, - ScanMatchDist, - TDEDist, -) from eyefeatures.features.extractor import Extractor from eyefeatures.features.measures import ( CorrelationDimension, @@ -27,6 +16,17 @@ ShannonEntropy, SpectralEntropy, ) +from eyefeatures.features.scanpath_dist import ( + DFDist, + DTWDist, + EucDist, + EyeAnalysisDist, + HauDist, + MannanDist, + MultiMatchDist, + ScanMatchDist, + TDEDist, +) from eyefeatures.features.stats import ( FixationFeatures, MicroSaccadeFeatures, diff --git a/tests/features/test_feature_maps.py b/tests/features/test_complex.py similarity index 97% rename from tests/features/test_feature_maps.py rename to tests/features/test_complex.py index 2b91f03..d24e03f 100644 --- a/tests/features/test_feature_maps.py +++ b/tests/features/test_complex.py @@ -1,8 +1,8 @@ -"""Tests for eyefeatures/features/feature_maps.py.""" +"""Tests for eyefeatures/features/complex.py.""" import numpy as np -from eyefeatures.features.feature_maps import ( +from eyefeatures.features.complex import ( calculate_topological_features, get_gaf, get_heatmap, diff --git a/tests/features/test_extractor.py b/tests/features/test_extractor.py index 150ce07..c16d019 100644 --- a/tests/features/test_extractor.py +++ b/tests/features/test_extractor.py @@ -4,9 +4,9 @@ import pandas as pd import pytest -from eyefeatures.features.dist import SimpleDistances from eyefeatures.features.extractor import BaseTransformer, Extractor from eyefeatures.features.measures import RQAMeasures, ShannonEntropy +from eyefeatures.features.scanpath_dist import SimpleDistances from eyefeatures.features.stats import FixationFeatures, SaccadeFeatures diff --git a/tests/features/test_pairwise.py b/tests/features/test_scanpath_complex.py similarity index 95% rename from tests/features/test_pairwise.py rename to tests/features/test_scanpath_complex.py index b0260ce..6a62bdc 100644 --- a/tests/features/test_pairwise.py +++ b/tests/features/test_scanpath_complex.py @@ -1,13 +1,14 @@ -"""Tests for eyefeatures/features/pairwise.py - Scanpaths.""" +"""Tests for eyefeatures/features/scanpath_complex.py - Scanpaths.""" import numpy as np import pandas as pd import pytest -from eyefeatures.features.dist import _get_fill_path, get_expected_path -from eyefeatures.features.pairwise import ( +from eyefeatures.features.scanpath_complex import ( + _get_fill_path, dimensionality_reduction_order, get_compromise_matrix, + get_expected_path, get_sim_matrix, hierarchical_clustering_order, optimal_leaf_ordering_clustering, diff --git a/tests/features/test_dist.py b/tests/features/test_scanpath_dist.py similarity index 96% rename from tests/features/test_dist.py rename to tests/features/test_scanpath_dist.py index 30a977c..bc3a558 100644 --- a/tests/features/test_dist.py +++ b/tests/features/test_scanpath_dist.py @@ -1,9 +1,9 @@ -"""Tests for eyefeatures/features/dist.py - Distance transformers.""" +"""Tests for eyefeatures/features/scanpath_dist.py - Distance transformers.""" import pandas as pd import pytest -from eyefeatures.features.dist import ( +from eyefeatures.features.scanpath_dist import ( DistanceTransformer, MultiMatchDist, ScanMatchDist, diff --git a/tutorials/AOI_definition_tutorial.ipynb b/tutorials/AOI_definition_tutorial.ipynb index f7faca8..0b9682e 100644 --- a/tutorials/AOI_definition_tutorial.ipynb +++ b/tutorials/AOI_definition_tutorial.ipynb @@ -11,25 +11,24 @@ ] }, { - "cell_type": "code", - "execution_count": 1, - "id": "51080fa667047f4d", "metadata": { "ExecuteTime": { "end_time": "2026-01-20T19:14:43.095793Z", "start_time": "2026-01-20T19:14:43.054615Z" } }, - "outputs": [], + "cell_type": "code", "source": [ "from eyefeatures.preprocessing.aoi_extraction import ThresholdBased, ShapeBased, GradientBased\n", "from eyefeatures.visualization.static_visualization import scanpath_visualization\n", "import pandas as pd" - ] + ], + "id": "51080fa667047f4d", + "outputs": [], + "execution_count": 1 }, { "cell_type": "code", - "execution_count": 2, "id": "97d6eabee4fdec2d", "metadata": { "ExecuteTime": { @@ -37,7 +36,6 @@ "start_time": "2026-01-20T19:14:43.099691Z" } }, - "outputs": [], "source": [ "def load_data():\n", " df = pd.read_csv(\"../data/aoi/em-y35-fasttext.csv\", low_memory=False)\n", @@ -48,11 +46,12 @@ " Y = df[['SUBJ_NAME', 'TEXT', 'TEXT_TYPE', 'TEXT_TYPE_2']].drop_duplicates()\n", " other_features = df.drop(columns = ['SUBJ_NAME', 'TEXT', 'norm_pos_x', 'norm_pos_y', 'duration'])\n", " return X, Y, other_features" - ] + ], + "outputs": [], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": 3, "id": "43ace9fcc346a8e8", "metadata": { "ExecuteTime": { @@ -60,9 +59,33 @@ "start_time": "2026-01-20T19:14:43.165576Z" } }, + "source": [ + "x = \"norm_pos_x\"\n", + "y = \"norm_pos_y\"\n", + "pk = [\"SUBJ_NAME\", \"TEXT\"]\n", + "aoi = \"AOI\"\n", + "data, target, other = load_data()\n", + "data[\"to_filter\"] = data.apply(lambda row: '_'.join([str(row[column]) for column in pk]), axis=1)\n", + "data.head()" + ], "outputs": [ { "data": { + "text/plain": [ + " SUBJ_NAME TEXT norm_pos_x norm_pos_y duration \\\n", + "0 s01 chasse_oiseaux-a1 0.376268 0.384969 96 \n", + "1 s01 chasse_oiseaux-a1 0.437754 0.383532 129 \n", + "2 s01 chasse_oiseaux-a1 0.546146 0.382957 280 \n", + "3 s01 chasse_oiseaux-a1 0.706643 0.399626 278 \n", + "4 s01 chasse_oiseaux-a1 0.724645 0.397615 266 \n", + "\n", + " to_filter \n", + "0 s01_chasse_oiseaux-a1 \n", + "1 s01_chasse_oiseaux-a1 \n", + "2 s01_chasse_oiseaux-a1 \n", + "3 s01_chasse_oiseaux-a1 \n", + "4 s01_chasse_oiseaux-a1 " + ], "text/html": [ "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
epochsteptrain_lossval_acc_stepval_f1_class_0val_f1_class_1val_f1_class_2val_macro_f1val_macro_precisionval_macro_recallval_precision_class_0val_precision_class_1val_precision_class_2val_recall_class_0val_recall_class_1val_recall_class_2valid_loss
0011NaN0.380.0000000.0948570.5380640.2301190.1964600.3577780.000.1466670.3977140.0000000.0733330.9200001.103867
10111.177783NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2123NaN0.380.0000000.0000000.5382280.2012210.1438100.3666670.000.0000000.3814290.0000000.0000001.0000001.099788
31231.029670NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
4235NaN0.330.0640000.3369520.3883810.2831110.3066670.2991110.080.3266670.4533330.0533330.3800000.4040001.157510
......................................................
1959711750.000386NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
196981187NaN0.390.1123810.3605710.4219050.3160630.3316830.3533330.160.3680000.3984760.0933330.3866670.5266673.398647
1979811870.000342NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
198991199NaN0.390.1123810.3605710.4304760.3189210.3356830.3533330.160.3680000.4104760.0933330.3866670.5266673.390130
1999911990.000384NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", - "

200 rows × 17 columns

\n", - "
" - ], - "text/plain": [ - " epoch step train_loss val_acc_step val_f1_class_0 val_f1_class_1 \\\n", - "0 0 11 NaN 0.38 0.000000 0.094857 \n", - "1 0 11 1.177783 NaN NaN NaN \n", - "2 1 23 NaN 0.38 0.000000 0.000000 \n", - "3 1 23 1.029670 NaN NaN NaN \n", - "4 2 35 NaN 0.33 0.064000 0.336952 \n", - ".. ... ... ... ... ... ... \n", - "195 97 1175 0.000386 NaN NaN NaN \n", - "196 98 1187 NaN 0.39 0.112381 0.360571 \n", - "197 98 1187 0.000342 NaN NaN NaN \n", - "198 99 1199 NaN 0.39 0.112381 0.360571 \n", - "199 99 1199 0.000384 NaN NaN NaN \n", - "\n", - " val_f1_class_2 val_macro_f1 val_macro_precision val_macro_recall \\\n", - "0 0.538064 0.230119 0.196460 0.357778 \n", - "1 NaN NaN NaN NaN \n", - "2 0.538228 0.201221 0.143810 0.366667 \n", - "3 NaN NaN NaN NaN \n", - "4 0.388381 0.283111 0.306667 0.299111 \n", - ".. ... ... ... ... \n", - "195 NaN NaN NaN NaN \n", - "196 0.421905 0.316063 0.331683 0.353333 \n", - "197 NaN NaN NaN NaN \n", - "198 0.430476 0.318921 0.335683 0.353333 \n", - "199 NaN NaN NaN NaN \n", - "\n", - " val_precision_class_0 val_precision_class_1 val_precision_class_2 \\\n", - "0 0.00 0.146667 0.397714 \n", - "1 NaN NaN NaN \n", - "2 0.00 0.000000 0.381429 \n", - "3 NaN NaN NaN \n", - "4 0.08 0.326667 0.453333 \n", - ".. ... ... ... \n", - "195 NaN NaN NaN \n", - "196 0.16 0.368000 0.398476 \n", - "197 NaN NaN NaN \n", - "198 0.16 0.368000 0.410476 \n", - "199 NaN NaN NaN \n", - "\n", - " val_recall_class_0 val_recall_class_1 val_recall_class_2 valid_loss \n", - "0 0.000000 0.073333 0.920000 1.103867 \n", - "1 NaN NaN NaN NaN \n", - "2 0.000000 0.000000 1.000000 1.099788 \n", - "3 NaN NaN NaN NaN \n", - "4 0.053333 0.380000 0.404000 1.157510 \n", - ".. ... ... ... ... \n", - "195 NaN NaN NaN NaN \n", - "196 0.093333 0.386667 0.526667 3.398647 \n", - "197 NaN NaN NaN NaN \n", - "198 0.093333 0.386667 0.526667 3.390130 \n", - "199 NaN NaN NaN NaN \n", - "\n", - "[200 rows x 17 columns]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
epochsteptrain_lossval_acc_stepval_f1_class_0val_f1_class_1val_f1_class_2val_macro_f1val_macro_precisionval_macro_recallval_precision_class_0val_precision_class_1val_precision_class_2val_recall_class_0val_recall_class_1val_recall_class_2valid_loss
0012NaN0.440.2777140.0000000.5439190.2738780.2933330.3728890.4800000.0000000.4000000.1986670.0000000.9200001.076805
10121.253184NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2125NaN0.470.3320000.0000000.5736100.3018700.2841270.3902220.3906670.0000000.4617140.3306670.0000000.8400001.035904
31251.044438NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
4238NaN0.490.5094350.0000000.5346670.3582900.3331910.4480000.3972380.0000000.5773330.7733330.0000000.5306671.041226
......................................................
1959712730.000512NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
196981286NaN0.390.2019050.3279370.4080000.3126140.3369520.3582220.2466670.3255240.4386670.2120000.4346670.4280003.408892
1979812860.000978NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
198991299NaN0.380.2019050.3012700.4026670.3019470.3280640.3448890.2466670.3055240.4320000.2120000.3946670.4280003.363146
1999912990.000517NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

200 rows × 17 columns

\n", + "
" ], - "source": [ - "metrics = pd.read_csv('Paris_exeperiment/CNN_model/version_0/metrics.csv')\n", - "metrics" + "text/plain": [ + " epoch step train_loss val_acc_step val_f1_class_0 val_f1_class_1 \\\n", + "0 0 12 NaN 0.44 0.277714 0.000000 \n", + "1 0 12 1.253184 NaN NaN NaN \n", + "2 1 25 NaN 0.47 0.332000 0.000000 \n", + "3 1 25 1.044438 NaN NaN NaN \n", + "4 2 38 NaN 0.49 0.509435 0.000000 \n", + ".. ... ... ... ... ... ... \n", + "195 97 1273 0.000512 NaN NaN NaN \n", + "196 98 1286 NaN 0.39 0.201905 0.327937 \n", + "197 98 1286 0.000978 NaN NaN NaN \n", + "198 99 1299 NaN 0.38 0.201905 0.301270 \n", + "199 99 1299 0.000517 NaN NaN NaN \n", + "\n", + " val_f1_class_2 val_macro_f1 val_macro_precision val_macro_recall \\\n", + "0 0.543919 0.273878 0.293333 0.372889 \n", + "1 NaN NaN NaN NaN \n", + "2 0.573610 0.301870 0.284127 0.390222 \n", + "3 NaN NaN NaN NaN \n", + "4 0.534667 0.358290 0.333191 0.448000 \n", + ".. ... ... ... ... \n", + "195 NaN NaN NaN NaN \n", + "196 0.408000 0.312614 0.336952 0.358222 \n", + "197 NaN NaN NaN NaN \n", + "198 0.402667 0.301947 0.328064 0.344889 \n", + "199 NaN NaN NaN NaN \n", + "\n", + " val_precision_class_0 val_precision_class_1 val_precision_class_2 \\\n", + "0 0.480000 0.000000 0.400000 \n", + "1 NaN NaN NaN \n", + "2 0.390667 0.000000 0.461714 \n", + "3 NaN NaN NaN \n", + "4 0.397238 0.000000 0.577333 \n", + ".. ... ... ... \n", + "195 NaN NaN NaN \n", + "196 0.246667 0.325524 0.438667 \n", + "197 NaN NaN NaN \n", + "198 0.246667 0.305524 0.432000 \n", + "199 NaN NaN NaN \n", + "\n", + " val_recall_class_0 val_recall_class_1 val_recall_class_2 valid_loss \n", + "0 0.198667 0.000000 0.920000 1.076805 \n", + "1 NaN NaN NaN NaN \n", + "2 0.330667 0.000000 0.840000 1.035904 \n", + "3 NaN NaN NaN NaN \n", + "4 0.773333 0.000000 0.530667 1.041226 \n", + ".. ... ... ... ... \n", + "195 NaN NaN NaN NaN \n", + "196 0.212000 0.434667 0.428000 3.408892 \n", + "197 NaN NaN NaN NaN \n", + "198 0.212000 0.394667 0.428000 3.363146 \n", + "199 NaN NaN NaN NaN \n", + "\n", + "[200 rows x 17 columns]" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can see NaNs. It happens due to internal operation of CSVLogger, which writes training and validation results to separate rows. For convenience we can split this dataframe to train loss Series and DataFrame with validation loss and metrics." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "train_loss = metrics['train_loss'].dropna().reset_index(drop=True)\n", - "val_loss_metrics = metrics.drop(columns='train_loss').dropna().reset_index(drop=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can easily plot results" - ] - }, + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metrics = pd.read_csv('Paris_exeperiment/CNN_model/version_0/metrics.csv')\n", + "metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can see NaNs. It happens due to internal operation of CSVLogger, which writes training and validation results to separate rows. For convenience we can split this dataframe to train loss Series and DataFrame with validation loss and metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "train_loss = metrics['train_loss'].dropna().reset_index(drop=True)\n", + "val_loss_metrics = metrics.drop(columns='train_loss').dropna().reset_index(drop=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can easily plot results" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABLyUlEQVR4nO3dB3xU1bYG8G/SE1IghCSU0HvvVQGlSROsyFXBxrt2EPEqFmxX8IpgRRAbNkQBKQJSpErvHSI9lIQWUgmp835r70wKJCFlkjPl+7937pw5c2Zmz0lkVvZee22T2Ww2g4iIiMggLka9MREREZFgMEJERESGYjBCREREhmIwQkRERIZiMEJERESGYjBCREREhmIwQkRERIZiMEJERESGcoMdyMjIwLlz5+Dn5weTyWR0c4iIiKgQpK5qfHw8qlSpAhcXF/sORiQQCQsLM7oZREREVAynT59GtWrV7DsYkR4Ry4fx9/c3ujlERERUCHFxcaozwfI9btfBiGVoRgIRBiNERET25WYpFkxgJSIiIkMVKRiZOnUqmjdvntVD0alTJ/z555/5nj9jxgwVDeXcvLy8rNFuIiIichBFGqaR5JP3338f9erVUxmy33//PQYNGoRdu3ahSZMmeT5Hgpbw8PCs+5wNQ0RERMUORgYOHJjr/nvvvad6SzZv3pxvMCLBR2hoKEpbeno6UlNTS/19qHS5urrCzc2NQSsRkRNxK8mX/+zZs5GYmKiGa/KTkJCAGjVqqFohrVu3xvjx4/MNXCySk5PVljMbtyDyHmfOnFG9NWT/fHx8ULlyZXh4eBjdFCIissVgZN++fSr4uHbtGnx9fTFv3jw0btw4z3MbNGiAb7/9VuWZxMbG4sMPP0Tnzp1x4MCBAucbT5gwAW+//XahgyIJROQLrFKlSvyL2o5JMJmSkoKLFy/ixIkTajiwoCI5RETkGEzmInYnyJdFRESECi7mzJmDr7/+GmvXrs03IMlJhlEaNWqEoUOH4t133y1Sz4jMU5b3vH5qrwRF8sVVs2ZNeHt7F+WjkI26evUqTp06hVq1ajHhmYjIjsn3d0BAQJ7f3yXqGZGu87p166r9Nm3aYNu2bfjkk0/w5Zdf3vS57u7uaNWqFY4ePVrgeZ6enmorCibGOg72hhAROZcS94FLLkjOXoybDanIMI/kAxAREREVuWdk7Nix6Nu3L6pXr64Wvpk5cybWrFmDZcuWqceHDRuGqlWrqpwP8c4776Bjx46qJyUmJgYTJ05U3e9PPPEErz4REREVvWfkwoULKuCQxNQePXqoIRoJRHr16qUel1ySyMjIrPOvXLmCESNGqDyRfv36qbGjjRs3Fiq/hApP8mU+/vhjq1wyCS5lyEuCRyIiIpvrGfnmm29u+kWW00cffaQ2ulH37t3RsmVLqwQREhSWK1eOl5mIiOySXSyU54xkkpPk2EgBsJuRKc1EROQgrsUCu2cCJlegzu1AxToyS6Pg58SdAyI2AZePAXV7AFXbwJ64OOKX+NWUNEO2ws6SfuSRR9R0aJmFZFmzx7KOj6z1I7OUZDbR+vXrcezYMVVyPyQkRNV1adeuHf76668Ch2nkdWTK9V133aXqr0i9joULFxb7ms6dO1cVqpM2yXtNmjQp1+NffPGFeg9Zd0jaee+992Y9JtO/mzVrpqZdV6xYET179lSF8oiI6DppKcDmacAnLYGlrwB/vgR83gb4pDnwx0hg72/AvjnAzh+ALdOB9R8Bv/8b+Lg5MLkRMOcxYPV7wFe3A9/eARxaBGSk28VldriekaTUdDQepxNqy9rBd/rAx+Pml1SCkH/++QdNmzZVSb5CCsGJV155RRWHq127NipUqIDTp0+rfBspvS/BwA8//KDK8st6P5JInB8pGvfBBx+opOHPPvsMDz74oEoeDgwMLNJn2rFjB+6//3689dZbGDJkiMr5efrpp1VgIUHV9u3b8fzzz+PHH39UBe2io6Px999/q+dK/pDUlJF2SGAkSc/yGCvlEhHlkJEBHJwHrHwHuHJSHwuqD/iFAhGbgZgIYMcMveXH5AKENgP8qwFHluteEtkCawMNB2S+TxqQngqYM4AKNYHQpkBIM8DX+N51hwtG7IEUgJF6LdJrYVm35/Dhw+pWghNLQrCQ4KFFixZZ96VYnFS9lZ6OZ599Nt/3kEBBAgEhJfg//fRTbN26FXfccUeR2jp58mSVrPzGG2+o+/Xr18fBgwdVkCPvIUnLkq8yYMAA+Pn5qdL/UkvGEoykpaXh7rvvVseF9JIQETm9uEjg+Grg2Grg+Bog8YK+JL4hQPexQKuHAVc3ICUROLkeOLoSiNoLuLoDbt6Ae+YWEAZU7whUawd4+WcP2WydDmz/Fog+Dmz8tODLLe8Z0hS4/XWgamtDfjQOF4x4u7uqHgqj3ruk2rZte8O6O9IrsXjx4qwv96SkJBUEFERK8FtIsCCV72Q2VFEdOnRIDRPl1KVLFzUsJDktEjhJoCE9ORLoyGYZHpIgSgIZCUD69OmD3r17qyEc6fEhIioTu3/RPQXyRSu5F0aSIZP9vwMbPgHO78v9mIcf0OV5oNMzgEeOCQmyX7+P3grLvwrQ8y3g1jHA3l+BS/8ALm46kJFbSSm4fASI2gdEnwASzuutxzgYxeGCEcmXKMxQia26flbMmDFjsGLFCjV0I/VaJPdCvtClLP/Nqt1ef12kQJ21SW/Izp071Uyq5cuXY9y4cSp4khk+5cuXV22XoR15TIaLXnvtNWzZskWVeiciKjXy793Kt4ENmfl0J9YC//oNqJb7D74yIV/+h/4AVo8HLh7KPGgCqrQC6twG1L4NCGsPuBWt8vhNefoC7R4v+JzkBODCQR2YVGoIo9jvt7adk2Ea6Vm4mQ0bNqjhEOltsPSUnDyZOaZYBqRGjLTh+jbJcI2rq+4Jkhk/kpgq25tvvqmCkFWrVqnhGQmCpCdFNglUpBdFhplGjx5dZp+BiJxMWjIw/ylg/1x9P6A6EBsBzBgA3Pst0LCf9QIeeV3pXbhyQt/Gntb5GzKEYhlOkUAoco9+jlcA0Pk5oO3jgE/RcvhKhQQsEgjJZiAGIwaRWSnSQyCBhcySya/XQmap/P777yppVb7YJXejNHo48vPiiy+qGTySqyIJrJs2bcLnn3+uZtCIRYsW4fjx4+jatasaflmyZIlqnxTGk8+3cuVKNTwTHBys7suKvBLgEBGViqvRwK8PAac26CGJOz8HGg0E5jyqh2t+fRDo+wHQfoQeNok7q5NGr17WPQOSOOpSiCH3kxv0DBcZ7igMD1+g49N6GMa7fIk/pqNhMGIQGX4ZPny4qkYrOSDfffddvgmkjz32mJqpEhQUhJdffllVsi0rrVu3xm+//aZ6NSQgkXWFJMlWemuE9IJIsCRDM7KCsgRPv/zyi5oKLPkm69atU/kl0mbpFZFpwbKkABGR1YdCJCF0yX90gODpDwz5EajdXT/+wC/A4tHAzu+BJWOAjZ/pRM+M1Nyv4+6jZ6XIEEpYB12zQ3ozLJLjgb/eArZ9re+7egDlawCBtYAKskmyvglISwJSMzfvCkCbR4FyFflDz4fJbAfzLAtagli+AE+cOMHl5h0If6ZEVCTSSyH1NaQ3RPhXBR6cDYQ0yX2efN2t+xBY/d/sYy7uOoDwKg9cPAykJOR+jvSu1OgM1O+rp9quGKeHYkTrYUCvd9nTUczv75zYM0JERPZFggoZXjm7A9j+ne4REa6eQNvHgK5jgHJBNz5Pqph2ewloNABIvKRrbcjME8uwjAyBXz4KRO4Gzu4Ejq0CLoUDJ9bpzUJ6Qu78NLvXhUqMwYiTefLJJ/HTTz/l+dhDDz2EadOmlXmbiMhOSQ0MqZchhbVcSrGgd1KMDjzUthM4t1NPRc3ZuyG9FLe+CARUvfnrBeeTtyafoVJ9vTW/Xx+TOh3hS4F/luqek6b36GnCOaffUolxmMbJSK2R/HJOpAtNEk2NxmEaIhsgvQRSsdPN48bH0tOAXT/qoZHEi0BgHT2FtOW/dH5EUXo4zmwHtn2lv+yl1oYMhcgmPRYy7fTsdl0n43qybktIY6BGF50YqnI1yNZwmIbyJMGGLQQcRGSDJDiQ3gdZ/+TAPB1oSL5Eg35Agzt0D8jRv4Blr+eolyG9B8eAZa8CK98Fmt0DBDfOLKR1Qd9K0qcMbVRqoGerVKyreze2fqWriuZcIC7uTN5tk+RQqREiC8DJJkmmMm2WHAKHaYiInJ1Mh938BbBvdvbaKBYn/9bbsrGAXxUg/pw+Lgmf3V8Bmg8BDs4Htn0DnN8P7Mp7GBhntuV93M1LD32o8uceQHyk3mSmi1QMVcFHW85EcXAMRoiInLknRAKQpWOBq5f0MfdyuihY03t1D8bRFUD4EuDURh2ISH5G+//TSaKWol2SNCpTV09vAXb/rHNJZL0T32B9K9NlpSjYpSPAxXB9KwmmbR4BWj1kG8W/yFAMRoiIHFnsWR0kSFAgQyQSBMisksvHdN0NWaRNSMGvri8BDfrmTs4Mqgt0fEonkUrvhrxGXvkZ8pqyYJtsREXEYISIyNF6O2SdEenNkM1ShtxChlekx0POSU/WwyTd/gN0ei7vZFULqRpaL3tFcSJrYjBCROQoLhwG5j6uczeymIDKzXXPRkwEcE2myW7XD9W5Heg/SSemEhmIwYidr28zatQotQlZu0YWoRs8eHCe58s6OLJa7q5du9CyZcsCX1tW4b3ttttw5coVVfKdiGzc3tnAH88DqVd1joYEGjILRpaetxQAk9LkMjwjU2UlT6NWNz28QmQwBiMOJDIyUi1WR0ROtkKtJKBu/0bflwDjnm8A30o3nitTYUOb6o3IhjAYcSChoaFGN4HIcUmPwpYvdc2MWrfqL/3CVPvML6dDNln3xNVNz1Bx89RrqQRUK9xryOyUyL3Aho+Bc7v08a7/0dNtC7PqLJENcbxgRP4jlW5KI0jXaCG7PKdPn65Wuj1z5gxccpRRHjRoECpWrIjXXnsNo0ePxubNm5GYmIhGjRphwoQJ6NmzZ76vef0wzdatW/Hvf/9brZ7btGlT9ZolMXfuXLV679GjR9Xqvc899xxefPHFrMe/+OILfPTRRzh9+rRaGOnWW2/FnDlz1GNy+/bbb6vn+vj4oFWrVliwYAHKlWNJZbJxMg1VFlfb9xtgztDH9szUtxXr6aJg5nQg8bIuEiZTZN28swOWmrfo5E8pmy6vsWcWcOFg/u8X2hxo2F8PsUhhL1lDRYZVZI2Ui//ofBAJQpJjs58jVU/v/ooJpmS3HC8YkUBkfBVj3vvVc4Ver+C+++5TX+arV69Gjx491LHo6GgsXboUS5YsQUJCAvr164f33nsPnp6e+OGHHzBw4ECEh4ejevXqN319ef6AAQPQq1cvtRaNrGw8cuTIYn+0HTt24P7771cB1JAhQ7Bx40Y8/fTTKnB65JFHsH37djz//PP48ccf0blzZ/VZ/v7776zho6FDh+KDDz7AXXfdhfj4ePWYHSwYTc4s9gyw4k1g/1z5K0cfq9cbCGmqF02TCqKyVL1seZEKpVunAyYXHbTIeZZgRhZ0q95BPyal1WUZe6nNcf6Arkgq25oJeqZL2rW8X18KhElPihQF6zISKH/zfxeIbJXjBSN2QnI7+vbti5kzZ2YFI9J7EBQUpBJHpbekRYsWWee/++67qtdj4cKFePbZZ2/6+vK6GRkZ+Oabb+Dl5YUmTZqoXpinnnqqWO2dPHmyaucbb7yh7tevXx8HDx7ExIkTVTASERGhejkkAPLz80ONGjVU74clGElLS8Pdd9+tjotmzZoVqx1EZeLcbmDm/dmLsTXor4t8VW2dfY7MTjm5XpdP9/ABfIJ0oqjcSg/JibXA8bU6CJFeDRHWEWg5FGg8OO9l56UXRNZoObxErxiblqRnw0igIfU9ZJNF3qq01HVBpEIpkQNwvGBEhkqkh8Ko9y6CBx98ECNGjFDDG9L78fPPP+OBBx5QgYj0bEgvxOLFi7O+zJOSktSXfmHI0Ezz5s1VIGLRqVOnIn+knK8nQ0g5denSBR9//DHS09NVD4wEGrVr18Ydd9yhNukFkSEZCaokkJEApE+fPujduzfuvfdeJtuSbTryF/DbMCA1EQhuAtw1TU+NvZ4EE7IUvWx5aXxndtExyemQIKJinYLfW4IZqUgqW8pVIPY0EBCmgx0iB1aKaz4bRHI2ZKjEiK2IU+Rk2EWGKiTgkDwLGbqQAEWMGTNG9YSMHz9eHd+9e7f6Mk9JSYEtkt6QnTt34pdfflH5JJJbIkFITEwMXF1dsWLFCvz5559o3LgxPvvsMzRo0EANHRHZlJ0/6B4RCUQk3+OxP/MORIpCklwlYLlZIHI9CUBkYTkGIuQEHC8YsSPSayFDF9IjIl/i8gXdurXuBt6wYYMa/pDeBQlCZKaM1AkpLEl43bt3L65dyx5vlmTY4pLXkzblJPdluEaCDeHm5qYSbCU3RN5b2rtq1aqs5FrpSZEkVqlz4uHhoYItIpuQkQGsHg8sfE4nozZ/AHhwDuAVYHTLiJyC4w3T2BnpCZE8iwMHDuChhx7KOl6vXj38/vvvqvdEvsglV0NyQArrX//6l5o9I8NAY8eOVYHBhx9+WOx2yqyZdu3aqdwVSWDdtGkTPv/8czXEJBYtWoTjx4+ja9euavhFknClvRJgbdmyBStXrlTDM8HBwer+xYsXVYBDVCokObqwPZVJV4B5T+pcDXHrGOD211kMjKgMMRgx2O23347AwEA1S0YCiJwJo4899piamSJJrS+//DLi4uIK/bq+vr74448/8OSTT6pEUhke+d///od77rmnWO2UHpvffvtNDb9IQCJDMe+8847qvRFSpVWCJ8lzkd4YCaakt0cSZyXfZN26dSq/RD6D5JZMmjRJJfASlUhGOhC5W9fsuHBIT5k9f1DPTAlrB9TooqfeyhL0eQ13yLotvz4MxJzSM1ykNHrrh/lDISpjJrMdzK+ULzCpWxEbGwt/f/9cj8kXn+QeSJnznMmaZL/4M6UCSUlzWWn28GIg/E9d1+NmpKiY1Oyo0krPiJHbM9uBJS/pxeLK1wDu/0HPUiGiMvn+zok9I0RU+iwrx4Y0A3IU+SuSa7HAX2/pomE5Cxt6BgDV2gDBjTO3Rro+x+nNwKmNwMkNQPw5XRdENkvZdIv6fYG7purCYURkCAYjTkqGb6QYWl4kd2XatGll3iZy0GEUKd61bqK+Xy4YqNsDqNtTL+Qmi7UVhtTrWPCMnuoq/KvqKqWyyVBMXvU2QhoDbR/T+SOyWq3UA5Fg5OwuPbSTngp0fxno8kLxAyQisgoO0zipCxcu5JuDIl1pkmhqFA7TOAhJDJ07Aji6Qt+XEumqiFcmkyvQ+TngttcAN4+8X0NqbUhvyNYv9f0KNYGBn5R8tVlJBs9Iy/99icgqOExDBZJgw8iAgxycJJHO+pdezE2GTAZ+CjS5Sw+dHP1LFxa7cEAv8nZ8NXD310Cl+tnPT70GHFwArP0fEH1MH2v7ONDrHcDTt+Ttk54QFwYiRLbCYYZp7CAPlwqJP0sbJv+dXQwHkqJ1OXTp/bgWo1eyVVsccC0OOLJCFw4LqA488BNQOXNpg1pd9SZBxcGFwB/P63ySL7sCvd/Vwzc7ZgC7fgSuXtbP8asCDPpcD+8QkUOy+2DEUnBLKpN6e3sb3RyygqtXdXKiuzvX3bApMrTxyxDgyPLCnV+7O3DPt0C5ivmXS6/WDljwtF6HZcmY3I/7VwPaPAK0H5H3Oi5E5DDsPhiRqp+y/okU0ZIvL1nXhey3R0QCEclnkbollkCTbMSWaToQkWmysnCbzD6RIMFLtgDA0y9z8wf8qwD17wBcb/JPjH9l4MG5OidEVsiVabaS2NruCaBen5s/n4icL4F16tSparOUJZeCVlIEq6DiVbNnz1bVQ+U5UghLCm/169fPqgkw0isitUaKUqGUbJcEIlL+XirPko24dBSY1kUvZz/gY6Dto9Z/j9gzevZNBb2yMxHZv1JJYK1WrRref/99FVRIDPP999+rlVxlrREJTK63ceNGDB06FBMmTFAlz2VZ+8GDB6sF1Zo2bQprkXVOpE22uogcFZ70brFHxMZIgDD/KR2I1L5ND52UhoBqpfO6ROT4U3ullPnEiRPx+OOP3/CYrGGSmJio1i2x6NixI1q2bFmkOhaFjayIqBRs+BRY8YYefnl6E4MGIrL693exEyzS09Mxa9YsFWx06tQpz3NkMTVZxTWnPn36qONEZAdk5syq/+r9PuMZiBBRqShydti+fftU8CGFqWQxNlkGXhZhy0tUVBRCQkJyHZP7crwgycnJarMoygJxRGQlacl6eEaSSuv2AlplrypNRGRoMCJLwu/evVt1ucyZMwfDhw/H2rVr8w1IikNyTN5++22rvR6RU0u8BOz8QdcAqd4ZqN4R8PIvOAjZ9RPw92Qg7oxe++XOT0tW8ZSIyJrBiCSL1q1bV+23adMG27ZtwyeffIIvv8ws15yDzIg4f/58rmNyX44XZOzYsRg9enSunpGwsLCiNpXIuV0+Bmz6HNg9UyefKh8BJhcgtLle00XKq/tW0mvG+AYDJ9ZlByHCrzJw5+d6qi4RUSkp8SR+mU6bc0glJxnOWblyJUaNGpV1bMWKFfnmmFh4enqqjYiK4eI/wMq3gcOLpXqLPlalFRDcBDi1QZdol4XiZMuPBCG3jAZaDwPcvfhjICLbCUakx0JqilSvXh3x8fFqqu6aNWuwbNky9fiwYcNQtWpVNcwiRo4ciW7dumHSpEno37+/Snjdvn07pk+fXjqfhsiercwskd5oANDyISBI90BmkTo6UXuB+EhdUt2j3I2Pb/5Cv47keQgpHNbled0LYhlmiT2rg5Iz2/RrJVwEEi/oWyliJovXtR7OIISIbDMYkcqYEnBERkaqqTrNmzdXgUivXr3U4xEREbkqoHbu3FkFLK+//jpeffVVVQtk/vz5Vq0xQuQQ1PDIJL2//iO9Ve8EtPyXzuE4sRY4uV6vBSMkj0MSSts9DlSsA0SfABY8o4MMUaeHnv0S3PDG9wqoCjS/X29ERI5QZ6QssM4IOTRZoVaqm14+CtTvC5gzgKMr9O31PPx070Xs6exj0ktyZodemM69HNDnPV2YjAmnROSIFViJqBSsn6wDEd9Q4O4v9TovcZHAnl+Agwv0zJda3fQmuR+SgHpsJbB1ul4rRnpVhAzFDJoCBNbij4mI7Ap7RoiMLio2tQuQkQrc9z3QZHDRZ8zs/hnwrwq0eRTgQpFEZEPYM0Jk6yTh9I9ROhCRFW4bDyr6a0i+SI9xpdE6IqIyU+xy8ERUQrt+BCI26jyPfh8yx4OInBaDESIjRB/Xi8+J214FyrOoHxE5LwYjRGVNklK/7AZciwUqtwA6PMmfARE5Nc6mISqppBg91VaqlvpUzH+4ReqFLH9dz4IRYR2Ae78DXPmfIRE5N/4rSFTSXo75TwMpCfq+qwfgF6oDE9lkTRe5L2u/bJmWXYK9yyjg9tcBV3defyJyegxGiIojI12XXd/wcXYxspR4ID0FiInQW168A4G7vgTq9+Z1JyLKxGCEqKgSLwNzHwOOr9H3ZS2XHm/piqkJUUB8FBB3Tt/Gn8u+7xsC9HobCKjGa05ElAODEaKiFin76V4gNgJw9wEGfQ40vSf78fLV9UZERIXGYISosNLTgLlP6EAksDYw5GcgpDGvHxFRCTEYISqsbV8DUXv12jGPLQN8g3ntiIisgHVGiApDFq5b9V+93+NNBiJERFbEYISoMJa/pmfLVG2jF6QjIiKrYTBCdDPHVgH75wImF2DAR1wZl4jIyhiMkHOKPQt8fyew4k29em5+Uq8Bi8fo/fb/p8u3ExGRVTGBlZxPylVg1lAgcg9wYi2QcB4YNAVwcb3x3I2fAtHHdI0QWdCOiIisjsEIORezGVjwtA5EZFZMcgKw5xddOVUqo1rKs6ckAn9PAjZ8ou/3Ga/PJyIiq2MwQvYvOV73dviF3PzcdROBA/MAFzfggV+ApGhg9qM6JyQ9FbjnG+DIMmDpWL34nWg+JHdhMyIisioGI2T/a8R81xeI2g80vRvoPhYIqpf3uQcXAqvf0/v9JwE1u+j9IT8Bvz0MHFoIfNJCl3AXAdWBvu8DDfrlvxIvERGVGBNYyb4dWQ5E7ZPxF927MaU9MO8pIPqEHpJJvARE7gX2/w7M+7d+Tvt/A20eyX6NBncAQ38B3Lx0ICIr7946BnhmC9CwPwMRIqJSZjKb5V9s2xYXF4eAgADExsbC39/f6OaQLflhkF6wrum9QOpVIHyJPm5y1QmpkguSU+3uwINzAdc8OgVPbwUOLtB1RILqlk37iYgcWGG/vzlMQ/brwiEdiEj9j55v6gXqzuzQQzHHVgLp6fq8cpUAv1A9LbfXu3kHIiKsvd6IiKhMMRgh+7XlS30rQymWlXKrtQEe/h24clIHKb6hgJuHoc0kIqKCMRgh+3Q1GtgzS+93ePLGxyvULPMmERFR8TCBlezTzh+AtCQgpBlQI3NWDBER2SUGI2R/0tOAbV/r/Q7/5mwXIiI7x2CE7E/4Yl2QzKci0Ow+o1tDREQlxGCE7DdxVWqFuHsZ3RoiIiohJrCSfUhLAaL2AsdWA6c26HLu7Z4wulVERGQFDEbIdiVd0YmqR1YAZ7brhFULWSvGv4qRrSMiIithMEK2J/o4sHkqsOsnXVXVwrsCUL2Tnj3DXhEiIofBYIRsR3wUsPhF4PBivdaMCGmqc0Nq3goE1QdcmOZERORoGIyQ7Vj4PHBkmd6v2wvo/CxQqxun7hIROTgGI2QbIvfoQERKuD/+ly7rTkREToF93mQb1n2YnZjKQISIyKkwGCHbWH330EK9f+uLRreGiIjKGIMRMt7fk/Vto4FAcCOjW0NERLYcjEyYMAHt2rWDn58fgoODMXjwYISHhxf4nBkzZsBkMuXavLxYNZMyXT4G7J+j928dw8tCROSEihSMrF27Fs888ww2b96MFStWIDU1Fb1790ZiYmKBz/P390dkZGTWdurUqZK2mxzF+smAOQOo1xuo0tLo1hARka3Pplm6dOkNvR7SQ7Jjxw507do13+dJb0hoaGjxW0mOKSYC2DNL73d9yejWEBGRPeaMxMbGqtvAwMACz0tISECNGjUQFhaGQYMG4cCBAwWen5ycjLi4uFwbORizGVj/EZCRpmuJhLU3ukVERGRvdUYyMjIwatQodOnSBU2bNs33vAYNGuDbb79F8+bNVfDy4YcfonPnziogqVatWr65KW+//XZxm0a2KCkGOLwIiNoHRO0Hzu8HrsXox9grQkTk1Exms/yJWnRPPfUU/vzzT6xfvz7foCIvkmfSqFEjDB06FO+++26+PSOyWUjPiPSqSDAj+SdkY2JOA2d3APXvANzzSE4+vRWY/SgQdyb3cVl5t9l9wOCprLJKROSA5Ps7ICDgpt/fxeoZefbZZ7Fo0SKsW7euSIGIcHd3R6tWrXD06NF8z/H09FQb2YGMdOCnu4FL/wDlqwM93wKa3K2DC4lzN38BrBinh2PK1wAaDgBCm+o1Zyo1ANz4cyYicnZFCkakE+W5557DvHnzsGbNGtSqVavIb5ieno59+/ahX79+RX4u2aBDf+hAxJKQOucxveJu97HA9m/10Ixochcw8FPAiz1bRERUgmBEpvXOnDkTCxYsULVGoqKi1HHpgvH29lb7w4YNQ9WqVVXeh3jnnXfQsWNH1K1bFzExMZg4caKa2vvEE08U5a3JlpNQRadnAU9/YMPHwJlturdEuHoAfcYD7Z7gUAwREZU8GJk6daq67d69e67j3333HR555BG1HxERAZccy7xfuXIFI0aMUIFLhQoV0KZNG2zcuBGNGzcuyluTLTq+BojcDbh5A7e8AJQLAloPA1b/F9j1sx62uW8GULW10S0lIiJHTGC1xQQYKmPfDwROrAM6PAn0/V/ux+KjAO8KzAkhInJicaWZwEqEMzt0ICIzYmSI5np+LHJHRESFw4XyqPhl3EWz+4HyYbyKRERUbAxGqOguhmfPkrllFK8gERGVCIMRKroNn+hbqRkitUKIiIhKgMEIFU3sGWDvr3pfZtAQERGVEIMRKpod3+tqqjVvBaq15dUjIqISYzBCRSv9vusnvd/2MV45IiKyCgYjVHhHVwLx5wDvQKBhf145IiKyCgYjVHg7v9e3LYaymBkREVkNgxEqnPjzwD9L9X7rh3nViIjIahiMUOHs+UUnrlZrDwQ34lUjIiKrYTBCNyfLF+38Qe+zV4SIiKyMwQjd3KmNQPQxwMMXaHI3rxgREVkVgxG6uV0/6tumdwOevrxiRERkVQxGqGBJMcCB+Xq/9XBeLSIisjoGI1Sw/XOAtCQguDFQtQ2vFhERWZ2b9V+S7FZ6mh6SidoLRB/Xm6xFI1oPA0wmo1tIREQOiMEIZVvxBrD5ixuvSIVaQIsHeKWIiKhUMBgh7eI/wNbper/DU0BoMyCwNlCxDlCuEntFiIio1DAYIW3567qoWf2+QN/3eVWIiKjMMIGVgKN/AUeWAS7uQO//8ooQEVGZYjDi7CRpdemrer/Dv4Gguka3iIiInAyDEWe3/VvgUjjgUxHo+pLRrSEiIifEYMSZXY0G1ozX+7e9BniXN7pFRETkhBiMOLO1/wOSruiCZqyuSkREBmEw4qyuxQLbvtH7fcYDrpxYRURExmAw4qxOrAMyUoHAOkCd24xuDREROTEGI87q6Ep9W7eH0S0hIiInx2DEGZnNwLHMYKQOgxEiIjIWgxFndPkYEBOhi5zVvMXo1hARkZNjMOKMLL0i1TsCnr5Gt4aIiJwcgxFnxHwRIiKyIQxGnE1aMnDyb73PfBEiIrIBDEacTcRmIPUq4BsChDYzujVEREQMRpxO1iya2wGTyejWEBERMRhxOkdX6VsO0RARkY3gMI0ziT8PnN8HwMSqq0REZDMYjDiTY5m9IpVbAOWCjG4NERFR0YORCRMmoF27dvDz80NwcDAGDx6M8PDwmz5v9uzZaNiwIby8vNCsWTMsWbKkKG9L1s4XYQl4IiKy12Bk7dq1eOaZZ7B582asWLECqamp6N27NxITE/N9zsaNGzF06FA8/vjj2LVrlwpgZNu/f7812k+FlZGR3TPCfBEiIrIhJrNZFiopnosXL6oeEglSunbtmuc5Q4YMUcHKokWLso517NgRLVu2xLRp0wr1PnFxcQgICEBsbCz8/f2L21zndm4XML074OEHvHwCcHU3ukVEROTg4gr5/V2inBF5cREYGJjvOZs2bULPnj1zHevTp486np/k5GT1AXJuZKWqq7W6MhAhIiKbUuxgJCMjA6NGjUKXLl3QtGnTfM+LiopCSEhIrmNyX44XlJsikZRlCwsLK24z6YYS8LfzmhARkWMEI5I7Inkfs2bNsm6LAIwdO1b1uli206dPW/09nMq1WODMVr3PfBEiIrIxbsV50rPPPqtyQNatW4dq1aoVeG5oaCjOnz+f65jcl+P58fT0VBtZyYl1QEYaULEuEFiLl5WIiOy3Z0RyXSUQmTdvHlatWoVatW7+xdapUyesXJk5RJBJZuLIcSojR//St+wVISIie+8ZkaGZmTNnYsGCBarWiCXvQ/I6vL291f6wYcNQtWpVlfchRo4ciW7dumHSpEno37+/GtbZvn07pk+fXhqfh64nk6UsJeDr5k4kJiIisruekalTp6ocju7du6Ny5cpZ26+//pp1TkREBCIjI7Pud+7cWQUwEny0aNECc+bMwfz58wtMeiUrunQEiI0AXD2Bml14aYmIyL57RgpTkmTNmjU3HLvvvvvURqXk5Hpg2zdA7/8CAVXzHqKp0QnwKMcfAREROUYCK9mYdR8Cx1cDJhNw77f5lIDnEA0REdkmLpTnCC4c0rf7fwfOH8w+npqke00EgxEiIrJRDEbs3dVoIMFSQM4MrH0/+7FTG4C0a4B/VaBSQ6NaSEREVCAGI/bu4mF96yk1/03AwQVA1L7cVVfr3K6HcIiIiGwQgxF7dyFzWKZ6J6Dp3Xp/9YTrSsAzX4SIiGwXgxFHyRcJbgR0ewUwuQDhi4GDC4FL4YDJFajd3ehWEhER5YvBiL27cDg7GKlUH2h2v74//2l9W60t4F3euPYRERHdBIMReyZ1XyzDNBKMiG7/0b0hKfH6PodoiIjIxjEYsWcJF4CkaD00E1RfH6tYB2gxNPucuj0Max4REVFhMBixZxcz80Uq1ALc9dpAStcxgIevPl65pWHNIyIiKgxWYHWU5NWcAmsBz2wB3LwBF1dDmkZERFRYDEbs2fX5IjkFVCvz5hARERUHh2kcZSYNERGRnWIwYs8zaSzVV4MbG90aIiKiYmMwYq/izgLJcYCLGxBYx+jWEBERFRuDEXtPXq1YD3DzMLo1RERExcZgxBGTV4mIiOwIgxF7xeRVIiJyEAxG7BV7RoiIyEEwGLFHGRnAxXC9X4nDNEREZN8YjNijmJNAWhLg6qmrrRIREdkxBiP2PJOmUgOWeyciIrvHYMQeMV+EiIgcCIMRe8SZNERE5EAYjNj1ar0sA09ERPaPwYi9SU8FLv2j9ys1NLo1REREJcZgxN7IlN6MVMDDFwgIM7o1REREJcZgxN5sna5va3QGXPjjIyIi+8dvM3ty5RSw+2e9f+uLRreGiIjIKhiM2JO/JwEZaUDt7kD1jka3hoiIyCoYjNhjr0i3V4xuDRERkdUwGLEX6ydn94rU6GR0a4iIiKyGwYg9iIkAdv2k99krQkREDobBiL3lirBXhIiIHAyDEVvHXhEiInJwbkY3gHKIPg580we4ehlwcdObOUP3itTqxl4RIiJySAxGbMmhRUDiBb2fng6kJ+t9kytw++uGNo2IiKi0MBixJZG7swuatXlU94hkpANe/oBvsNGtIyIiso2ckXXr1mHgwIGoUqUKTCYT5s+fX+D5a9asUeddv0VFRZWk3Y7pXGYwUqMLUD4MCKwFBNVlIEJERA6tyMFIYmIiWrRogSlTphTpeeHh4YiMjMzagoP5l34u12KB6GN6v0qrov5YiIiInGeYpm/fvmorKgk+ypcvX+TnOY3IPfo2oDrgE2h0a4iIiBxvam/Lli1RuXJl9OrVCxs2bCjw3OTkZMTFxeXanGaIpkpLo1tCRETkWMGIBCDTpk3D3Llz1RYWFobu3btj586d+T5nwoQJCAgIyNrkOU6TvMpghIiInIzJbDabi/1kkwnz5s3D4MGDi/S8bt26oXr16vjxxx/z7RmRzUJ6RiQgiY2Nhb+/PxzSp610nZGHfgfq9jC6NURERCUm39/SqXCz729Dpva2b98e69evz/dxT09PtTlX8upxvc/kVSIicjKGlIPfvXu3Gr6h65JXyzN5lYiInE+Re0YSEhJw9OjRrPsnTpxQwUVgYKAaehk7dizOnj2LH374QT3+8ccfo1atWmjSpAmuXbuGr7/+GqtWrcLy5cut+0ns2bld+rYyk1eJiMj5FDkY2b59O2677bas+6NHj1a3w4cPx4wZM1QNkYiIiKzHU1JS8OKLL6oAxcfHB82bN8dff/2V6zWcHmfSEBGREytRAqutJcDYffLqw/OAOrcb3RoiIqIy/f42JGeEckiKyU5e5TANERE5IQYjRmPyKhEROTkGIzZT7Izr0RARkXNiMGIryascoiEiIifFYMRWpvWyDDwRETkpBiNGJ69eOaH32TNCREROisGITSSv1gB8Ag1tChERkVEYjBiJK/USERExGDEUy8ATERExGDHM1WjgZObKxUxeJSIiJ8ZhGiNIBf6FzwGJF4HA2kD1zoY0g4iIyBYwGDHC1q+Aw4sAVw/g3u8Ady9DmkFERGQLGIwYMYNm+Wt6v9e7HKIhIiKnx2CkLCXHA7MfBdJTgAb9gA7/dvpfQCIiIgYjZZknsvhFIPoY4F8VGDQFMJn4G0hERE7PzemvQFnIyADWjAf2/gqYXIF7vmGRMyIiokwMRkpbSiIw70ng0EJ9v+dbQI1Opf62RERE9oLBiDVcOARs+lyvL1O/D1C+uj4eexb45QEgai/g4g4M/Bho9ZBV3pKIiMhRMBgpqbhzwI93AfGRwK6fgCVjgOAmQJ3bgH2zgYTzgE8QMOQn9ogQERHlgcFISSQnADOH6EBEipf5hgKnNwMXDuhNSGAy9BegQo0SvRUREZGjYjBSXBnpwO8j9BCM9Hw8PA+oUFOXeT+6EjiyDPAoB/T+L+DpZ9UfGhERkSNhMFJcK8YB4UsAV8/Mno+a+rhPIND8Pr0RERHRTbHOSHFs+0YnrIq7pgJh7Yv1MkREROTkwcjZmCR8v/EkktPSC19BddFoYPFoff/214Gm95RqG4mIiByd0w7TmM1m3P3FBpyPS0aNij7o3iC44CccWw0sfB6IjdD3Oz0L3DqmTNpKRETkyJy2Z8RkMqFnoxC1v/zg+YJ7Q/4YCfw4WAciUkNk2EKgz3ss505ERGQFThuMiN5NQtXtioPnkZFhvvGE9FRg5gPAjhn6frsRwFObgNrdyrilREREjstph2lEp9oV4efphovxydh9Jgatq1fIfcKy14BT6wEPPz1jptatRjWViIjIYTl1z4iHmwu6N9S5IssPXDdUI9VUt36p9+/5ioEIERFRKXHqYET0bmzJG4nKPnhmB7DoBb3f/VWgQV+DWkdEROT4nDsYSbqC7nUD4OHqguMXE3H0QgIQfx749SEgPQVoOADo+pLRrSQiInJoTp0zgt+Gw+/EWuz09MP5NF94/VwZcI0F4s8BQQ2Au6YBLs4drxEREZU25w5GZB0ZAL4Z8fB1iQdiI/VxzwDggZlcU4aIiKgMOHcw8u91wLUYXL5wGs9OX4aKiMP4PpXh36AbEFTX6NYRERE5BecORmQIxicQFWsGIrlaAhZFxKCjZ1M8FFrD6JYRERE5DSZEXFcArcBqrERERGR1DEaum+K76dglxF1Ltf6VJiIiojwxGMlUu5Iv6gb7IjXdjNWHL+R9tYiIiMj4YGTdunUYOHAgqlSpohabmz9//k2fs2bNGrRu3Rqenp6oW7cuZszIXOvFRntHft12mr0jREREthqMJCYmokWLFpgyZUqhzj9x4gT69++P2267Dbt378aoUaPwxBNPYNmyZbA1A5pXgYsJ2HjsMrp9sBpf/30c11LTjW4WERGRQzOZzWZzsZ9sMmHevHkYPHhwvue8/PLLWLx4Mfbv35917IEHHkBMTAyWLl1aqPeJi4tDQEAAYmNj4e/vj9K0OvwC3lt8SFdjBVC1vDde6FUf97Suqj4vERERwarf36WeM7Jp0yb07Nkz17E+ffqo4/lJTk5WHyDnVlZuaxCMpSNvxQf3NEflAC+cjUnCmNl78OHy8DJrAxERkTMp9WAkKioKISE6F8NC7kuAkZSUlOdzJkyYoCIpyxYWFoay5ObqgvvbhWH1mO4Y3au+OjZl9TEs3ptZoZWIiIgcezbN2LFjVZeOZTt9+rQh7fByd8XzPephxK211H3pITl4rux6aYiIiJxBqQcjoaGhOH8+dyExuS9jR97e3nk+R2bdyOM5NyO9fEdD3FovCEmp6fi/H7cjOjHF0PYQERE5klIPRjp16oSVK1fmOrZixQp13F7IsM1nQ1uheqAPzlxJwrMzdyItPcPoZhERETlnMJKQkKCm6Mpmmbor+xEREVlDLMOGDcs6/8knn8Tx48fxn//8B4cPH8YXX3yB3377DS+88ALsSXkfD3w1rC18PFzV1N/3/zxsdJOIiIicMxjZvn07WrVqpTYxevRotT9u3Dh1PzIyMiswEbVq1VJTe6U3ROqTTJo0CV9//bWaUWNvGoT6YfL9LdX+txtOcLiGiIjI6DojZaUs64wURt9P/sahyDhMvLc57mtbtjN9iIiI7IXN1BlxRJay8Vzhl4iIqOQYjBRDnyah6vbvIxeRlMJy8URERCXBYKQYGlX2Q7UK3riWmoF1Ry6W6AdARETk7BiMFIOsUdO7se4dWX4gdw0VIiIiKhoGI8XUu4nOG1l5+DxrjhAREZUAg5FialujAir4uCPmaiq2nowuyc+AiIjIqTEYKUFV1p6NMmfVcKiGiIio2BiMlEDvzFk1Kw6ehx2UayEiIrJJDEZKQBbP83Z3xdmYJBzgar5ERETFwmCkBLzcXdG1fpDaZwE0IiKi4mEwUkLZU3yjSvpSRERETonBSAn1aBQMVxcTDkfF49TlROv8VIiIiJwIg5ESKu/jgQ61AtX+xGXhuJbK8vBERERFwWDECh7tUgsuJmDR3kjcM3UjTkdftcbLEhEROQUGI1bQq3EIfnisAwLLeahZNQM+W4/V4Res8dJEREQOj8GIldxSLwh/PHcLWlQLQGxSKh6bsQ1frDlqrZcnIiJyWAxGrKhqeW/89mQnPNihOqQG2gdLw3H0QoI134KIiMjhMBixMk83V7x3VzN0q19J3f9jzzlrvwUREZFDYTBSSga1rKJu/9h7jqXiiYiICsBgpBSTWj3dXHD8YiIORsaV1tsQERHZPQYjpcTPyx23NwxW+ws5VENERJQvBiOlaGALPVSzaE8kh2qIiIjywWCkFEnPSDkPvarvzoiY0nwrIiIiu8VgpJRX9e3dRC+kx1k1REREeWMwUsoGtqisbqVUfHqGubTfjoiIyO4wGCllt9SthABvd1xKSMaW45dL++2IiIjsDoORUubh5oK+TfVQDWfVEBER3YjBSBm4M3NWzZ/7o5CSllEWb0lERGQ3GIyUgQ61KyLI11MtoLf+6MWyeEsiIiK7wWCkDLi6mDCguU5k/X7jqbJ4SyIiIrvBYKSMDOtUA+6uJqz95yJWHjpfVm9LRERk8xiMlJHalXzx2C211P47iw7iWmp6Wb01ERGRTWMwUoaeu70egv08ceryVXyz/kRZvjUREZHNYjBShnw93fBqv0Zq//NVR3EuJqks356IiMgmMRgpY4NaVkG7mhWQlJqO8UsOlfXbExER2RwGI2XMZDLhrTubwMWkS8RvOsaqrERE5NwYjBigSZUA/KtDdbX/1sIDSEtnITQiInJeDEYMMqZ3A5T3cUf4+XisOnzBqGYQERHZZzAyZcoU1KxZE15eXujQoQO2bt2a77kzZsxQQxM5N3mesyvv44H72lRT+3N3njG6OURERPYTjPz6668YPXo03nzzTezcuRMtWrRAnz59cOFC/n/d+/v7IzIyMms7dYpVSMW9bcLU7cpDF3A5IbkkP0ciIiLnCUYmT56MESNG4NFHH0Xjxo0xbdo0+Pj44Ntvv833OdIbEhoamrWFhISUtN0OoUGoH5pXC0BahhkLdp8zujlERES2H4ykpKRgx44d6NmzZ/YLuLio+5s2bcr3eQkJCahRowbCwsIwaNAgHDhwoMD3SU5ORlxcXK7NUd2bOVQzZweHaoiIyDkVKRi5dOkS0tPTb+jZkPtRUVF5PqdBgwaq12TBggX46aefkJGRgc6dO+PMmfy/fCdMmICAgICsTYIYR3VniyrwcHXBwcg4HDgXa3RziIiIHG82TadOnTBs2DC0bNkS3bp1w++//45KlSrhyy+/zPc5Y8eORWxsbNZ2+vRpOHIia6/GOribu+Os0c0hIiKy7WAkKCgIrq6uOH8+96qzcl9yQQrD3d0drVq1wtGjR/M9x9PTUyW95twcmWWoZv7us0hJY80RIiJyLkUKRjw8PNCmTRusXLky65gMu8h96QEpDBnm2bdvHypXrlz01jqoW+sFqQX0ohNTsDqcNUeIiMi5FHmYRqb1fvXVV/j+++9x6NAhPPXUU0hMTFSza4QMycgwi8U777yD5cuX4/jx42oq8EMPPaSm9j7xxBPW/SR2zM3VBXe1rqr2mchKRETOxq2oTxgyZAguXryIcePGqaRVyQVZunRpVlJrRESEmmFjceXKFTUVWM6tUKGC6lnZuHGjmhZM2e5tXQ1frj2O1Ycv4FJCMoJ8PXl5iIjIKZjMZrMZNk6m9sqsGklmdeT8kUFTNmDP6Ri8MaAxHr+lltHNISIiKpPvb65NY4OJrDM2nkByWrrRzSEiIioTDEZsbKgmxN8Tp6OT8OMmlswnIiLnwGDEhnh7uGJ0r/pq/7NVRxF7NdXoJhEREZU6BiM2uHhe/RBfxCal4os1+ddiISIichQMRmyMq4sJY/s2UvvfbTyJM1euGt0kIiKiUsVgxAZ1b1AJnWpXVNVYJy//x+jmEBERlSoGIzbIZDLh1X66d2Te7rPYf5YL6BERkeNiMGKjmlULwKCWVSBVYCb8eQh2UA6GiIioWBiM2LAxvRvAw9UFG45expp/LhrdHCIiolLBYMSGhQX64JEuNdX++MWHkJbOFX2JiMjxMBixcc/cVhcVfNxx5EICftl22ujmEBERWR2DERsX4O2OFzILoX204h/EXWMhNCIiciwMRuzA0PbVUadSOUQnpmDKahZCIyIix8JgxA64u7rgtf6ZhdDWn8TpaBZCIyIix8FgxE7c1iAYt9QNQkp6Bt7/87DRzSEiIrIaBiN2VAjt9QGN4GICFu+LxPaT0UY3iYiIyCoYjNiRhqH+GNIuTO2PnLUb2xiQEBGRA2AwYmdG92qAahW8cTYmCfd/uUlVZ01OSze6WURERMXGYMTOVPLzxJKRt+LeNtVUqfgv1x7HnZ9twIFzXL+GiIjsE4MRO+Tv5Y4P72uBr4a1RZCvB8LPx2PwlA3YdOyy0U0jIiIqMgYjdqxX4xAsG9UV3RtUQmq6Gf9dfBAZGVxQj4iI7AuDETtX0dcTk+9vCV9PNxw4F6dm2hAREdkTBiMOILCcB/6va221P2l5OFK5oB4REdkRBiMO4vFbaqn8kZOXr+JXLqhHRER2hMGIgyjn6Ybnbq+n9j9ZeQRJKZzuS0RE9oHBiIMtqCc1SC7GJ+O7jSeMbg4REVGhMBhxIB5uLnixd321P23NMcReTTW6SURERDfFYMTB3NmiKhqG+iHuWhq+WHPU6OYQERHdFIMRB+PqYsJLfRqo/el/H8cPm04a3SQiIqICMRhxQLc3DMZDHaurcvHjFhzAh8vCYZY7RERENojBiAMymUx4d1BTvNBT5498vvooXp67F2msP0JERDaIwYgDByQje9bDhLubwcUE/Lb9DP7vxx24mpJmdNOIiIhyYTDiBNN9v3y4LTzdXLDq8AX866stiE5MMbpZREREWRiMOMmCejNHdECAtzt2n47BvdM24nT0VaObRUREpDAYcRJtagRizpOdUCXAC8cvJuKeqRtxKDLO6GYRERExGHEm9UL8MPfpzmgQ4ocL8cm4f9omrPvnImfaEBGRoUxmO5jzGRcXh4CAAMTGxsLf39/o5tg9qcw64oft2HoyWt2vHVQO/ZtXVpsEKpL8SkREVFbf3wxGnNS11HS8tfAAft91FilpGVnHa1cqh671KqFNjQpoVzMQoQFehraTiIjsV6kGI1OmTMHEiRMRFRWFFi1a4LPPPkP79u3zPX/27Nl44403cPLkSdSrVw//+9//0K9fP6t/GCq6+GupapbNor2RWBt+ESnX1SKpWt4bLcPKIyzQRy3CJ7dhFbxRrYKPWguHiIiozIORX3/9FcOGDcO0adPQoUMHfPzxxyrYCA8PR3Bw8A3nb9y4EV27dsWECRMwYMAAzJw5UwUjO3fuRNOmTQv1ngxGyi4wWfvPRWw/eQXbTkarBNeMfH47pHaJBCQ1g8qpYR4JUoJ8PRBYTm8Vy3nC18tNTSl2d2XQQkTkjOJKKxiRAKRdu3b4/PPP1f2MjAyEhYXhueeewyuvvHLD+UOGDEFiYiIWLVqUdaxjx45o2bKlCmis+WHIuhKS07Ar4grCo+LVVODTV5Jw5spVnI5OQlJqepHWy5GgxNvdFf7e7vD3csu8dYeXuyvcXExwczWpoEXOlU3SVlxNet/D1QU+nm4o5+Gqbn3cXdVx6P9XOS6Wc+V11K2LCS6mzPsmE1zkdU2538fdxQWmzDjJ8jpyq85xcVHPISKi4ivs97dbUV40JSUFO3bswNixY7OOubi4oGfPnti0aVOez5Hjo0ePznWsT58+mD9/flHemgzg6+mGW+tVUltOEr/KbJwTlxJx8lIiTlxOxJkrSYhOSFEF1S4nym1yVq9KeoYZV1PS1SaP2QsVsLhKgGKCWf7PLJ9dPyYBiwQ8EthYAh5LVJ9feC+xjat6ng6G5Pn5sQRGEpTlzCfWRzOPZ+5knafeQwdyudp8XRvUJ8p83bz3JZDLfj31ma5vX+Z7yp6ca8763OZ8e9OyAj5Tdjvy/uyWzfLZcp9X0N9PludYXif7Ofk+Jeu8gkJPSxsyP3Kx5PzZZR/L+f7ZD8jPrqSvb/nMOV8r589b3SuleDuvly3Je+X187P8zhZ0zSyft6DXKaiNpXF5SmOCgNmc929MXv/9FOTxW2qpXm4jFCkYuXTpEtLT0xESEpLruNw/fPhwns+RvJK8zpfj+UlOTlZbzsiKbIf8cof4e6mtY+2KeZ6TkWFW+SeSKJucpm8lGIm/loa4pFTEXUtVt9fSMlSwkppuuZUvM7N6fnrmrbxOYrI8Py3rVr7wcgYI8hx5fpraMpCWru9bjlu2tBy3N2N5Tl5SCt8xRERkF+5sWcU+gpGyIvklb7/9ttHNoBKQIQ4vF1c1DGOL5C8JCUh0z4G+1ceB1IwMpKZlqMBIgiQ5Zvlr0tJTkJ4ZJKVlniNBT15/+eaUK2DKDJbybFuOHo2cvQBZe9cFYpbzLL0Tlv2cvRdym7PnwhLAZT038zUzMnK8XuY5uf5yN133/pmfK+sv7jz+Yr3+c2VY3ttyYXP/YG74HIX/meZ8rxvl9WPJeY3zas71r5+zRdk9D9mvnd/zc557fY9Ffn+t5/Va+bUx+/dXX+Osn1kevUo521KY1y6qvD5PcXp6CmrT9T/r/HrDzHm80PUvl+ucm7WnKI3P6/k5fvZ5/TdiMpXs+pjyaev1Hy2/9w/1N272ZJGCkaCgILi6uuL8+fO5jsv90NDQPJ8jx4tyvpBhoJxDO9IzInkpRNYi/0jLEExevGGbARQRkaMq0jQHDw8PtGnTBitXrsw6Jgmscr9Tp055PkeO5zxfrFixIt/zhaenp0p0ybkRERGRYyryMI30WAwfPhxt27ZVtUVkaq/Mlnn00UfV4zLtt2rVqmqoRYwcORLdunXDpEmT0L9/f8yaNQvbt2/H9OnTrf9piIiIyPGDEZmqe/HiRYwbN04locoU3aVLl2YlqUZERKgZNhadO3dWtUVef/11vPrqq6romcykKWyNESIiInJsLAdPREREhtYZYWlMIiIiMhSDESIiIjIUgxEiIiIyFIMRIiIiMhSDESIiIjIUgxEiIiIyFIMRIiIiMhSDESIiIjIUgxEiIiKyr3LwRrAs8S2V3IiIiMg+WL63Ld/jdh2MxMfHq9uwsDCjm0JERETF+B6XsvB2vTZNRkYGzp07Bz8/P5hMJqtGbBLgnD59usCa+cRrbU/4e83r7aj4u21/11pCDAlEqlSpkmsRXbvsGZEPUK1atVJ7fbnQDEbKBq912eG1Llu83rzWjsjfCt+PBfWIWDCBlYiIiAzFYISIiIgM5dTBiKenJ9588011S7zWjoK/17zejoq/2457re0igZWIiIgcl1P3jBAREZHxGIwQERGRoRiMEBERkaEYjBAREZGhnDoYmTJlCmrWrAkvLy906NABW7duNbpJdm/ChAlo166dqpYbHByMwYMHIzw8PNc5165dwzPPPIOKFSvC19cX99xzD86fP29Ymx3B+++/r6oTjxo1KusYr7N1nT17Fg899JD6vfX29kazZs2wffv2rMdlLsC4ceNQuXJl9XjPnj1x5MgRK7fC8aWnp+ONN95ArVq11HWsU6cO3n333Vxrm/BaF8+6deswcOBAVQ1V/r2YP39+rscLc12jo6Px4IMPqkJo5cuXx+OPP46EhIRitij3mzulWbNmmT08PMzffvut+cCBA+YRI0aYy5cvbz5//rzRTbNrffr0MX/33Xfm/fv3m3fv3m3u16+fuXr16uaEhISsc5588klzWFiYeeXKlebt27ebO3bsaO7cubOh7bZnW7duNdesWdPcvHlz88iRI7OO8zpbT3R0tLlGjRrmRx55xLxlyxbz8ePHzcuWLTMfPXo065z333/fHBAQYJ4/f755z5495jvvvNNcq1Ytc1JSkhVb4vjee+89c8WKFc2LFi0ynzhxwjx79myzr6+v+ZNPPsk6h9e6eJYsWWJ+7bXXzL///rtEduZ58+blerww1/WOO+4wt2jRwrx582bz33//ba5bt6556NCh5pJy2mCkffv25meeeSbrfnp6urlKlSrmCRMmGNouR3PhwgX1S7927Vp1PyYmxuzu7q7+gbE4dOiQOmfTpk0GttQ+xcfHm+vVq2desWKFuVu3blnBCK+zdb388svmW265Jd/HMzIyzKGhoeaJEydmHZOfgaenp/mXX36xcmscW//+/c2PPfZYrmN33323+cEHH1T7vNbWcX0wUpjrevDgQfW8bdu2ZZ3z559/mk0mk/ns2bMlao9TDtOkpKRgx44dqgsq5/o3cn/Tpk2Gts3RxMbGqtvAwEB1K9c9NTU117Vv2LAhqlevzmtfDDLc1b9//1zXk9fZ+hYuXIi2bdvivvvuU8OPrVq1wldffZX1+IkTJxAVFZXr5yDrccjwL/9NKZrOnTtj5cqV+Oeff9T9PXv2YP369ejbty+vdSkqzO+w3MrQjPy3YCHny/fnli1bSvT+drFQnrVdunRJjUuGhITkOi73Dx8+bFi7HI2stiw5DF26dEHTpk3VMfll9/DwUL/Q1197eYwKb9asWdi5cye2bdt2w2O8ztZ1/PhxTJ06FaNHj8arr76qrvnzzz+vfpeHDx+e9bub178p/L0umldeeUWtGCt/pLi6uqp/q9977z2VpyB4rUtHYa6r3EownpObm5v6Y7Okv+dOGYxQ2f3Vvn//fvVXDVmXLOs9cuRIrFixQiVgU+kH1vLX4Pjx49V96RmR3+1p06apYISs57fffsPPP/+MmTNnokmTJti9e7f6o0aSLnmtHZdTDtMEBQWpiPv6GRxyPzQ01LB2OZJnn30WixYtwurVq1GtWrWs43J9ZZgsJiYm1/m89kUjw10XLlxA69at1V8msq1duxaffvqp2pe/ZnidrUdmFzRu3DjXsUaNGiEiIkLtW/7d4L8pJffSSy+p3pEHHnhAzVh6+OGH8cILL6iZerzWpacwv8NyK//u5JSWlqZm2JT0u9MpgxHpWm3Tpo0al8z5l4/c79Spk6Fts3eSFyWByLx587Bq1So1PS8nue7u7u65rr1M/ZV/1HntC69Hjx7Yt2+f+qvRsslf7tKVbdnndbYeGWq8foq65DTUqFFD7cvvufxjnPP3WoYaZBydv9dFc/XqVZWDkJP88Sj/RvNal57C/A7LrfwhKX8MWci/8/KzkdySEjE78dReyRKeMWOGyhD+v//7PzW1Nyoqyuim2bWnnnpKTQ1bs2aNOTIyMmu7evVqrimnMt131apVampvp06d1EYlk3M2Da+z9adPu7m5qWmnR44cMf/8889mHx8f808//ZRrWqT8G7JgwQLz3r17zYMGDeLU3mIYPny4uWrVqllTe2UaalBQkPk///kPr7UVZt/t2rVLbfL1P3nyZLV/6tSpQv8Oy9TeVq1aqSnu69evV7P5OLW3hD777DP1pSj1RmSqr8ybppKRX/C8Nqk9YiG/2E8//bS5QoUK6h/0u+66SwUsZN1ghNfZuv744w9z06ZN1R8xDRs2NE+fPj3X4zI18o033jCHhISoc3r06GEODw+3ciscX1xcnPo9ln+bvby8zLVr11a1MZKTk7PO4bUuntWrV+f577MEgIW9rpcvX1bBh9R+8ff3Nz/66KMqyCkpk/xPyfpWiIiIiIrPKXNGiIiIyHYwGCEiIiJDMRghIiIiQzEYISIiIkMxGCEiIiJDMRghIiIiQzEYISIiIkMxGCEiIiJDMRghIiIiQzEYISIiIkMxGCEiIiJDMRghIiIiGOn/AbkSGfN0HQomAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "train_loss.plot(legend='train_loss')\n", - "val_loss_metrics['valid_loss'].plot(legend='valid_loss')" + "data": { + "text/plain": [ + "" ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" }, { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "From the graph we can see that model overfits, which is expected result, because we supplied very little data to model. It important to remember that Neural Networks Usually require more data than classical ML algorithms." + "data": { + "image/png": "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uP/++7nyyiu59NJL823Xcy5fc+bMoWfPntx00000bNiQbt268d577+Xs1/MuPxdeeCE///wz27dvB2D9+vX8+uuvDB06FNCzriglea6rV68mMzMz3zGNGjWiY8eOZX721WKivPJ29OhRnE4nkZGR+bZHRkaSmJjopahqHsuyGDNmDBdeeCEdO3YEyHm+hT37vXv3VnqM1dmMGTNYs2YNK1euLLBPz7l87d69m0mTJjFmzBieeuopfv/9dx566CH8/f0ZOXKknnc5euKJJ0hKSqJt27Y4HA6cTicvvvgiw4cPB/S7XVFK8lwTExPx8/Ojbt26BY4p63dnrUxG3Gw2W773lmUV2Cal98ADD7BhwwZ+/fXXAvv07Mtm3759PPzww/z4448EBAQUeZyec/lwuVz07NmTl156CYBu3bqxadMmJk2axMiRI3OO0/Muu88//5xp06bx2Wef0aFDB9atW8cjjzxCo0aNuPPOO3OO07OuGKV5ruXx7GtlNU39+vVxOBwFMrnDhw8XyAqldB588EHmzJnDggULaNKkSc72qKgoAD37Mlq9ejWHDx+mR48e+Pj44OPjw6JFi3jzzTfx8fHJeZZ6zuUjOjqa9u3b59vWrl074uPjAf1el6fHHnuMJ598kltvvZVOnTpxxx138Le//Y3x48cDetYVpSTPNSoqioyMDE6cOFHkMaVVK5MRPz8/evTowfz58/Ntnz9/Pn379vVSVDWDZVk88MADzJo1i19++YXY2Nh8+2NjY4mKisr37DMyMli0aJGevQcGDRrExo0bWbduXc6rZ8+ejBgxgnXr1tGiRQs953LUr1+/Al3Ut2/fTvPmzQH9XpenlJQU7Pb8X00OhyOna6+edcUoyXPt0aMHvr6++Y5JSEjgjz/+KPuzL1Pz12rM3bX3gw8+sDZv3mw98sgjVp06daw9e/Z4O7Rq7d5777XCwsKshQsXWgkJCTmvlJSUnGNefvllKywszJo1a5a1ceNGa/jw4eqWVw7y9qaxLD3n8vT7779bPj4+1osvvmjt2LHD+vTTT62goCBr2rRpOcfoeZePO++802rcuHFO195Zs2ZZ9evXtx5//PGcY/SsS+fUqVPW2rVrrbVr11qA9frrr1tr167NGdKiJM919OjRVpMmTayffvrJWrNmjTVw4EB17S2rt99+22revLnl5+dnde/ePaf7qZQeUOjrww8/zDnG5XJZ//znP62oqCjL39/f6t+/v7Vx40bvBV1DnJ2M6DmXr2+++cbq2LGj5e/vb7Vt29Z699138+3X8y4fycnJ1sMPP2w1a9bMCggIsFq0aGE9/fTTVnp6es4xetals2DBgkL/fb7zzjstyyrZc01NTbUeeOABq169elZgYKB11VVXWfHx8WWOzWZZllW2shURERGR0quVbUZERESk6lAyIiIiIl6lZERERES8SsmIiIiIeJWSEREREfEqJSMiIiLiVUpGRERExKuUjIiIiIhXKRkRERERr1IyIiIiIl6lZERERES8SsmIiIiIeNX/A+XIfhUcUYqSAAAAAElFTkSuQmCC", + "text/plain": [ + "
" ] - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "train_loss.plot(legend='train_loss')\n", + "val_loss_metrics['valid_loss'].plot(legend='valid_loss')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the graph we can see that model overfits, which is expected result, because we supplied very little data to model. It important to remember that Neural Networks Usually require more data than classical ML algorithms." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Training RNNs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we will show how to train RNN model with Dataset for time series, which will present every sample as multidimensional time series [x position of fixation, y position of fixation, duration of fixation] and pad every batch." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from eyefeatures.deep.datasets import DatasetLightningTimeSeries\n", + "\n", + "\n", + "datasetTime = DatasetLightningTimeSeries(\n", + " X=X, \n", + " Y=Y, \n", + " x='norm_pos_x', \n", + " y='norm_pos_y', \n", + " pk=['SUBJ_NAME', 'TEXT'], #Primary keys which together determinate unique sample in common dataframe\n", + " features=[],# which additional features to add to coordinate features\n", + " test_size = 0.5, \n", + " batch_size= 8,\n", + " split_type = 'simple', #Do not consider distribution of pk when spliting\n", + " max_length=10 # truncate input to first 10 fixations, shorter inputs are truncated\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Training RNNs" - ] - }, + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\toxas\\anaconda3\\Lib\\site-packages\\torch\\nn\\modules\\lazy.py:181: UserWarning: Lazy modules are a new feature under heavy development so changes to the API or functionality can happen at any moment.\n", + " warnings.warn('Lazy modules are a new feature under heavy development '\n" + ] + } + ], + "source": [ + "from eyefeatures.deep.models import SimpleRNN\n", + "#create simple RNN of LSTM type\n", + "RNN_model = SimpleRNN(\n", + " rnn_type='LSTM', \n", + " input_size = 2, \n", + " hidden_size = 64, \n", + " num_layers=2, \n", + " bidirectional=False, \n", + " pre_rnn_linear_size=32\n", + " ) \n", + "#The next step is the same as for CNN model\n", + "RNN_classifier = Classifier(RNN_model, \n", + " n_classes=len(Y['TEXT_TYPE'].unique()), \n", + " classifier_hidden_layers=(25,), #add hidden layer with 25 neurons to classifier head\n", + " learning_rate = 0.01\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section we will show how to train RNN model with Dataset for time series, which will present every sample as multidimensional time series [x position of fixation, y position of fixation, duration of fixation] and pad every batch." - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: False, used: False\n", + "TPU available: False, using: 0 TPU cores\n", + "HPU available: False, using: 0 HPUs\n", + "100%|██████████| 100/100 [00:00<00:00, 1173.81it/s]\n", + "100%|██████████| 100/100 [00:00<00:00, 1775.81it/s]\n", + "\n", + " | Name | Type | Params | Mode \n", + "-----------------------------------------------------------------\n", + "0 | backbone | SimpleRNN | 58.5 K | train\n", + "1 | head | ModuleList | 0 | train\n", + "2 | loss_fn | CrossEntropyLoss | 0 | train\n", + "3 | flat | Flatten | 0 | train\n", + "4 | accuracy | MulticlassAccuracy | 0 | train\n", + "5 | precision | MulticlassPrecision | 0 | train\n", + "6 | recall | MulticlassRecall | 0 | train\n", + "7 | f1 | MulticlassF1Score | 0 | train\n", + "8 | macro_precision | MulticlassPrecision | 0 | train\n", + "9 | macro_recall | MulticlassRecall | 0 | train\n", + "10 | macro_f1 | MulticlassF1Score | 0 | train\n", + "11 | prob | Softmax | 0 | train\n", + "-----------------------------------------------------------------\n", + "58.5 K Trainable params\n", + "0 Non-trainable params\n", + "58.5 K Total params\n", + "0.234 Total estimated model params size (MB)\n" + ] }, { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 96/96 [00:00<00:00, 6041.13it/s]\n", - "100%|██████████| 100/100 [00:00<00:00, 6727.35it/s]\n" - ] - } - ], - "source": [ - "from eyefeatures.deep.datasets import DatasetTimeSeries\n", - "\n", - "# Use the same train/val split (X_train, X_val, Y_train, Y_val) from the first cell.\n", - "train_ds_ts = DatasetTimeSeries(\n", - " X_train, Y_train, x='norm_pos_x', y='norm_pos_y', pk=pk,\n", - " features=['duration'], max_length=10\n", - ")\n", - "val_ds_ts = DatasetTimeSeries(\n", - " X_val, Y_val, x='norm_pos_x', y='norm_pos_y', pk=pk,\n", - " features=['duration'], max_length=10\n", - ")\n", - "train_loader_ts = DataLoader(train_ds_ts, batch_size=batch_size, shuffle=True, collate_fn=train_ds_ts.collate_fn)\n", - "val_loader_ts = DataLoader(val_ds_ts, batch_size=batch_size, collate_fn=val_ds_ts.collate_fn)" + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e3aa10fac16a4718aaaa101898fc52e0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Sanity Checking: | | 0/? [00:00" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# same steps as before for CNN model\n", - "logger = CSVLogger(\"Paris_exeperiment\", name=\"RNN_model\") #directory and subdirectory to store losses and metrics\n", - "\n", - "class LitProgressBar(TQDMProgressBar):\n", - " def init_validation_tqdm(self):\n", - " bar = tqdm(disable=True,)\n", - " return bar\n", - "\n", - "tr = pl.Trainer(logger = logger,\n", - " max_epochs=100,\n", - " log_every_n_steps=1, \n", - " callbacks=[LitProgressBar()] #if You use Jupyter in VsCode, \n", - " ) #You may need this callback to supress redundant progress bars: https://lightning.ai/forums/t/progress-bar-in-jupyter-notebooks-visual-studio-code/4985/5\n", - "\n", - "tr.fit(RNN_classifier, train_dataloaders=train_loader_ts, val_dataloaders=val_loader_ts)\n", - "\n", - "metrics = pd.read_csv('Paris_exeperiment/RNN_model/version_0/metrics.csv')\n", - "\n", - "train_loss = metrics['train_loss'].dropna().reset_index(drop=True)\n", - "val_loss_metrics = metrics.drop(columns='train_loss').dropna().reset_index(drop=True)\n", - "\n", - "train_loss.plot(legend='train_loss')\n", - "val_loss_metrics['valid_loss'].plot(legend='valid_loss')" + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e2109a506f69459f8bd3a9dbe32fe65e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Training: | | 0/? [00:00" ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" }, { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "from eyefeatures.deep.datasets import TimeSeries_2D_Dataset\n", - "from eyefeatures.deep.models import VitNet\n", - "\n", - "# Combine 2D and time-series datasets (same train/val split as above).\n", - "train_combined = TimeSeries_2D_Dataset(train_ds, train_ds_ts)\n", - "val_combined = TimeSeries_2D_Dataset(val_ds, val_ds_ts)\n", - "train_loader_2d_ts = DataLoader(train_combined, batch_size=batch_size, shuffle=True, collate_fn=train_combined.collate_fn)\n", - "val_loader_2d_ts = DataLoader(val_combined, batch_size=batch_size, collate_fn=val_combined.collate_fn)\n", - "\n", - "# VitNet projects sequences with seq_proj to embed_dim, so the RNN must take embed_dim (32) as input, not raw 3-D.\n", - "RNN_for_VitNet = SimpleRNN(\n", - " rnn_type='LSTM',\n", - " input_size=32, # match VitNet's embed_dim (seq_proj output)\n", - " hidden_size=64,\n", - " num_layers=2,\n", - " bidirectional=False,\n", - " pre_rnn_linear_size=None,\n", - ")\n", - "\n", - "VitNet_model = VitNet(\n", - " CNN_model, \n", - " RNN_for_VitNet, \n", - " fusion_mode = 'concat', \n", - " activation = None, \n", - " embed_dim = 32)\n", - "\n", - "VitNet_classifier = Classifier(VitNet_model, \n", - " n_classes=len(Y['TEXT_TYPE_label'].unique()), \n", - " classifier_hidden_layers=(25,), #add hidden layer with 25 neurons to classifier head\n", - " learning_rate = 0.01\n", - " )\n" + "data": { + "image/png": "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", + "text/plain": [ + "
" ] + }, + "metadata": {}, + "output_type": "display_data" } - ], - "metadata": { - "kernelspec": { - "display_name": "eyefeatures-dev", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.0" + ], + "source": [ + "# same steps as before for CNN model\n", + "logger = CSVLogger(\"Paris_exeperiment\", name=\"RNN_model\") #directory and subdirectory to store losses and metrics\n", + "\n", + "class LitProgressBar(TQDMProgressBar):\n", + " def init_validation_tqdm(self):\n", + " bar = tqdm(disable=True,)\n", + " return bar\n", + "\n", + "tr = pl.Trainer(logger = logger,\n", + " max_epochs=100,\n", + " log_every_n_steps=1, \n", + " callbacks=[LitProgressBar()] #if You use Jupyter in VsCode, \n", + " ) #You may need this callback to supress redundant progress bars: https://lightning.ai/forums/t/progress-bar-in-jupyter-notebooks-visual-studio-code/4985/5\n", + "\n", + "tr.fit(RNN_classifier, datasetTime)\n", + "\n", + "metrics = pd.read_csv('Paris_exeperiment/RNN_model/version_0/metrics.csv')\n", + "\n", + "train_loss = metrics['train_loss'].dropna().reset_index(drop=True)\n", + "val_loss_metrics = metrics.drop(columns='train_loss').dropna().reset_index(drop=True)\n", + "\n", + "train_loss.plot(legend='train_loss')\n", + "val_loss_metrics['valid_loss'].plot(legend='valid_loss')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Situation is similar here - RNN need more data to learn something and 10 first fixations might be not enough to differentiate between scanpaths, because network strugles to even overfit to training set." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Combining CNN and RNN\n", + "\n", + "We, also, can combine CNN and RNN as proposed in [Sims et al. 2020](https://dl.acm.org/doi/10.1145/3382507.3418828)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\toxas\\anaconda3\\Lib\\site-packages\\torch\\nn\\modules\\lazy.py:181: UserWarning: Lazy modules are a new feature under heavy development so changes to the API or functionality can happen at any moment.\n", + " warnings.warn('Lazy modules are a new feature under heavy development '\n" + ] } + ], + "source": [ + "from eyefeatures.deep.datasets import DatasetLightningTimeSeries2D\n", + "from eyefeatures.deep.models import VitNet\n", + "\n", + "time2d_dataset = DatasetLightningTimeSeries2D(\n", + " X=X, \n", + " Y=Y, \n", + " x='norm_pos_x', \n", + " y='norm_pos_y', \n", + " pk=['SUBJ_NAME', 'TEXT'], #Primary keys which together determinate unique sample in common dataframe\n", + " features=[],# which additional features to add to coordinate features\n", + " test_size = 0.5, \n", + " batch_size= 8,\n", + " shape=(16, 16), #Required shape. Can be anything, but remember that bigger images require more computational resources\n", + " representations=['heatmap', 'baseline_visualization'],\n", + " split_type = 'simple', #Do not consider distribution of pk when spliting\n", + " max_length=10 # truncate input to first 10 fixations\n", + " )\n", + "\n", + "VitNet_model = VitNet(\n", + " CNN_model, \n", + " RNN_model, \n", + " fusion_mode = 'concat', \n", + " activation = None, \n", + " embed_dim = 32)\n", + "\n", + "VitNet_classifier = Classifier(VitNet_model, \n", + " n_classes=len(Y['TEXT_TYPE'].unique()), \n", + " classifier_hidden_layers=(25,), #add hidden layer with 25 neurons to classifier head\n", + " learning_rate = 0.01\n", + " )\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 2 + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 } diff --git a/tutorials/feature_maps_tutorial.ipynb b/tutorials/complex_tutorial.ipynb similarity index 99% rename from tutorials/feature_maps_tutorial.ipynb rename to tutorials/complex_tutorial.ipynb index 67591d8..9cc6d54 100644 --- a/tutorials/feature_maps_tutorial.ipynb +++ b/tutorials/complex_tutorial.ipynb @@ -2,73 +2,98 @@ "cells": [ { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, "source": [ "## EyeFeatures: fixations complex analysis" - ] + ], + "metadata": { + "collapsed": false + } }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, "source": [ - "`features.feature_maps` submodule of the library allows to get feature maps. Look at preprocessing and features tutorial first to get grasp of simpler eyetracking attributes. Here will be shown several use-cases.\n", + "`complex` module of the library allows to get features represented as tensors (like vectors and matrices). Look at preprocessing and features tutorial first to get grasp of simpler eyetracking attributes. Here will be shown several use-cases.\n", "\n", - "Let's take a dataset with fixations." - ] + "Let's take Paris dataset - it contains data about people reading texts, including eyetracking data." + ], + "metadata": { + "collapsed": false + } }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2026-01-20T18:54:34.357825Z", - "start_time": "2026-01-20T18:54:33.988307Z" - }, - "collapsed": false - }, - "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "import warnings\n", "warnings.simplefilter(\"ignore\")" - ] + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2026-01-20T18:54:34.357825Z", + "start_time": "2026-01-20T18:54:33.988307Z" + } + }, + "outputs": [], + "execution_count": 1 }, { - "cell_type": "code", - "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2026-01-20T18:54:34.363555Z", "start_time": "2026-01-20T18:54:34.361637Z" } }, - "outputs": [], + "cell_type": "code", "source": [ "participant = 'Participant'\n", "x = 'norm_pos_x'\n", "y = 'norm_pos_y'\n", "t = 'start_timestamp'" - ] + ], + "outputs": [], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": 3, + "source": [ + "data = pd.read_csv(\"../data/fixations/fixations_subset.csv\")\n", + "data.head()" + ], "metadata": { + "collapsed": false, "ExecuteTime": { "end_time": "2026-01-20T18:54:34.439075Z", "start_time": "2026-01-20T18:54:34.423316Z" - }, - "collapsed": false + } }, "outputs": [ { "data": { + "text/plain": [ + " Participant id duration confidence start_frame_index \\\n", + "0 1 998 208.1115 0.999697 1806 \n", + "1 1 999 209.2905 1.000000 1807 \n", + "2 1 1000 235.8615 1.000000 1809 \n", + "3 1 1001 231.0985 0.999868 1810 \n", + "4 1 1002 225.3285 0.999293 1812 \n", + "\n", + " start_timestamp end_frame_index dispersion norm_pos_x norm_pos_y \\\n", + "0 317242.694809 1807 1.330883 0.242478 0.508895 \n", + "1 317242.913454 1808 1.650276 0.246931 0.433742 \n", + "2 317243.128721 1810 1.249983 0.240074 0.408932 \n", + "3 317243.376751 1812 1.097607 0.203017 0.505386 \n", + "4 317243.633292 1813 1.206289 0.272986 0.503568 \n", + "\n", + " tekst id_news AOI \n", + "0 1 1.0 C \n", + "1 1 1.0 N \n", + "2 1 1.0 N \n", + "3 1 1.0 C \n", + "4 1 1.0 C " + ], "text/html": [ "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " centers duration saccade_duration \\\n", + "0 [0.26978281912696733, 0.2982622328901172] 1.566372 0.000000 \n", + "1 [0.2910625032822163, 0.1982021669431278] 1.910347 0.012657 \n", + "2 [0.3431115936291729, 0.5135625103911892] 2.947131 0.393987 \n", + "3 [0.34663493546708635, 0.4025502251881663] 4.991766 0.276210 \n", + "4 [0.3634474419928634, 0.16512318042269397] 4.991021 0.011914 \n", + "5 [0.29910106021574867, 0.15546331016248877] 1.576171 0.012360 \n", + "6 [0.39205210487319875, 0.2443357155482297] 2.272374 0.154924 \n", + "7 [0.3797224191155708, 0.15968173057298432] 1.410356 0.014579 \n", + "8 [0.4710875049736325, 0.27212431928317216] 4.575028 0.012616 \n", + "9 [0.337747722909397, 0.2777624383886774] 1.094643 0.012734 \n", + "10 [0.3704336335687768, 0.23147004056889658] 3.138900 0.138914 \n", + "11 [0.36343474633265815, 0.17469483036467187] 1.363376 0.202343 \n", + "12 [0.39673366246329733, 0.09632984792585829] 1.631731 0.012182 \n", + "13 [0.33534177772834195, 0.35311976456730026] 4.991657 0.000000 \n", + "14 [0.3765540766363764, 0.4125175492361066] 4.993037 0.012521 \n", + "15 [0.3758370666770321, 0.3730184813743165] 4.986682 0.012589 \n", + "16 [0.36152381114531495, 0.43068093164941246] 1.589275 0.013556 \n", + "17 [0.38313719954267, 0.37995101792065533] 4.992366 0.271621 \n", + "18 [0.3588541503601599, 0.14414289670355132] 4.988104 0.011840 \n", + "19 [0.3945159855380682, 0.1362223820617317] 1.561573 0.012473 \n", + "20 [0.28569631779154875, 0.438573225587563] 3.191960 0.000000 \n", + "21 [0.3837128198869304, 0.33647354145540476] 4.689940 0.166436 \n", + "22 [0.3752684021895516, 0.2624662935633424] 4.992451 0.159714 \n", + "23 [0.37089163195361424, 0.3720539860446369] 4.991975 0.012730 \n", + "24 [0.3923539734985546, 0.2698841998231458] 4.599641 0.012238 \n", + "25 [0.3999618668253544, 0.046260296613667144] 4.987707 0.012105 \n", + "26 [0.4739453103267861, -0.04014648235633445] 0.796922 0.012733 \n", + "27 [0.4269862984804291, 0.5083341915665329] 4.986185 0.000000 \n", + "28 [0.4802360641806547, 0.39024683868507004] 2.218854 0.014340 \n", + "29 [0.40209334350551984, 0.5103319548773868] 4.991805 0.116453 \n", + "30 [0.4184696002276027, 0.5266126482583644] 4.990767 0.011154 \n", + "31 [0.36539670390929757, 0.4919671537174253] 1.523484 0.012099 \n", + "32 [0.40314594773643364, 0.4796729080041757] 4.990259 0.148813 \n", + "33 [0.3899687887886145, 0.4718868368090767] 4.991743 0.013696 \n", + "34 [0.4034523403690571, 0.48884587482508834] 4.988010 0.013679 \n", + "35 [0.3947501684970405, 0.48299240351921924] 3.661386 0.013185 \n", + "36 [0.22561777386759013, 0.5175313777633619] 2.443137 0.011641 \n", + "37 [0.4062207943615448, 0.2884033649764888] 0.601690 0.015476 \n", + "38 [0.376277122604634, 0.50741811145474] 4.906576 0.000000 \n", + "39 [0.3858542087798327, 0.4646067382476673] 4.991474 0.030219 \n", + "40 [0.3640949298150673, 0.47267247028921133] 4.991234 0.012466 \n", + "41 [0.37561276336523264, 0.4199258752782953] 1.964861 0.011695 \n", + "42 [0.35083924252904897, 0.30835286681420504] 1.752402 0.139641 \n", + "43 [0.3305661354625725, 0.37190666195903355] 2.272229 0.127609 \n", + "44 [0.35482779591097824, 0.5477141309687568] 2.989883 0.000000 \n", + "45 [0.40218989768564484, 0.4627803367754382] 3.065065 0.244345 \n", + "46 [0.43686242894364113, 0.44570319353994137] 4.992316 0.013112 \n", + "47 [0.4006682648759181, 0.4583427206835182] 4.988531 0.011333 \n", + "48 [0.4518663190174905, 0.3322604030819605] 3.667531 0.011904 \n", + "49 [0.3116975435295686, 0.3940803945439342] 1.323099 0.012611 \n", + "\n", + " saccade_length saccade_angle saccade2_angle \n", + "0 0.000000 0.000000 0.000000 \n", + "1 0.275507 273.668414 13.860336 \n", + "2 0.350302 79.808078 14.391533 \n", + "3 0.129089 274.199611 171.687878 \n", + "4 0.165815 265.887489 142.738272 \n", + "5 0.064425 228.625761 26.311673 \n", + "6 0.194845 74.937434 36.981137 \n", + "7 0.102986 291.918571 101.175097 \n", + "8 0.052398 10.743474 7.514506 \n", + "9 0.102924 183.228968 315.363417 \n", + "10 0.044139 318.592386 2.146126 \n", + "11 0.045712 140.738511 27.607843 \n", + "12 0.269524 293.130668 0.000000 \n", + "13 0.000000 0.000000 0.000000 \n", + "14 0.093136 66.159927 20.255112 \n", + "15 0.081482 266.415039 10.684551 \n", + "16 0.063905 75.730488 5.548401 \n", + "17 0.050849 261.278889 187.656742 \n", + "18 0.199398 268.935632 233.255031 \n", + "19 0.072773 322.190663 0.000000 \n", + "20 0.000000 0.000000 0.000000 \n", + "21 0.173189 303.099011 168.103537 \n", + "22 0.071257 291.202548 28.585992 \n", + "23 0.102735 139.788540 9.167791 \n", + "24 0.083185 328.956331 138.072780 \n", + "25 0.176523 287.029111 178.583049 \n", + "26 0.171514 285.612160 0.000000 \n", + "27 0.000000 0.000000 0.000000 \n", + "28 0.160209 311.749340 6.539873 \n", + "29 0.141731 138.289212 188.921502 \n", + "30 0.055493 129.367710 164.782504 \n", + "31 0.028530 144.585206 1.357467 \n", + "32 0.137656 323.227738 128.916283 \n", + "33 0.017083 272.144021 89.871412 \n", + "34 0.010856 182.015433 172.993845 \n", + "35 0.055875 175.009278 201.973875 \n", + "36 0.115692 153.035403 24.006094 \n", + "37 0.261577 309.029309 0.000000 \n", + "38 0.000000 0.000000 0.000000 \n", + "39 0.035264 204.492639 302.320797 \n", + "40 0.026169 326.813437 104.929549 \n", + "41 0.044137 251.742985 186.636612 \n", + "42 0.042465 258.379597 247.804922 \n", + "43 0.035813 326.184519 0.000000 \n", + "44 0.000000 0.000000 0.000000 \n", + "45 0.094442 288.395706 225.629949 \n", + "46 0.065481 334.025655 8.930962 \n", + "47 0.040562 145.094693 65.087952 \n", + "48 0.076717 260.006741 64.586628 \n", + "49 0.150031 144.593369 0.000000 " + ], + "text/html": [ + "
\n", + "\n", + "
Participanttekstnorm_pos_xnorm_pos_ystart_timeend_timedistance_mindistance_maxdispersiondiameterscentersdurationsaccade_durationsaccade_lengthsaccade_anglesaccade2_angle
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1320,215 +1534,6 @@ " \n", "
Participanttekstnorm_pos_xnorm_pos_ystart_timeend_timedistance_mindistance_maxdispersiondiameterscentersdurationsaccade_durationsaccade_lengthsaccade_anglesaccade2_angle
\n", "
" - ], - "text/plain": [ - " Participant tekst norm_pos_x norm_pos_y start_time end_time \\\n", - "0 1 1 0.261095 0.439568 317242.694809 317244.261180 \n", - "1 1 1 0.278722 0.164626 317244.273837 317246.184184 \n", - "2 1 1 0.340707 0.509400 317246.578172 317249.525303 \n", - "3 1 1 0.350160 0.380658 317249.801513 317254.793279 \n", - "4 1 1 0.338269 0.215270 317254.805193 317259.796214 \n", - "5 1 1 0.295685 0.166924 317259.808574 317261.384745 \n", - "6 1 1 0.346321 0.355075 317261.539669 317263.812044 \n", - "7 1 1 0.384764 0.259534 317263.826622 317265.236978 \n", - "8 1 1 0.436244 0.269301 317265.249594 317269.824622 \n", - "9 1 1 0.333483 0.263504 317269.837356 317270.931999 \n", - "10 1 1 0.366588 0.234310 317271.070913 317274.209812 \n", - "11 1 1 0.331195 0.263239 317274.412156 317275.775531 \n", - "12 1 1 0.437072 0.015382 317275.787714 317277.419445 \n", - "13 1 2 0.333125 0.350568 317281.436953 317286.428611 \n", - "14 1 2 0.370769 0.435757 317286.441132 317291.434168 \n", - "15 1 2 0.365674 0.354435 317291.446758 317296.433440 \n", - "16 1 2 0.381425 0.416368 317296.446996 317298.036271 \n", - "17 1 2 0.373715 0.366107 317298.307892 317303.300258 \n", - "18 1 2 0.370011 0.166743 317303.312099 317308.300203 \n", - "19 1 2 0.427506 0.122131 317308.312676 317309.874248 \n", - "20 1 3 0.276203 0.464995 317313.293483 317316.485442 \n", - "21 1 3 0.370779 0.319910 317316.651878 317321.341818 \n", - "22 1 3 0.396550 0.253476 317321.501532 317326.493983 \n", - "23 1 3 0.318095 0.319803 317326.506713 317331.498688 \n", - "24 1 3 0.389366 0.276905 317331.510926 317336.110567 \n", - "25 1 3 0.441062 0.108121 317336.122672 317341.110379 \n", - "26 1 3 0.487221 -0.057065 317341.123112 317341.920034 \n", - "27 2 1 0.354679 0.503045 657.822498 662.808683 \n", - "28 2 1 0.461357 0.383519 662.823022 665.041876 \n", - "29 2 1 0.355553 0.477823 665.158329 670.150134 \n", - "30 2 1 0.320354 0.520724 670.161288 675.152055 \n", - "31 2 1 0.297103 0.537257 675.164154 676.687639 \n", - "32 2 1 0.407369 0.454851 676.836452 681.826711 \n", - "33 2 1 0.408008 0.437780 681.840406 686.832149 \n", - "34 2 1 0.397158 0.437398 686.845828 691.833838 \n", - "35 2 1 0.341495 0.442259 691.847023 695.508409 \n", - "36 2 1 0.238381 0.494718 695.520051 697.963188 \n", - "37 2 1 0.403101 0.291519 697.978664 698.580354 \n", - "38 2 2 0.375199 0.475464 702.479466 707.386042 \n", - "39 2 2 0.343108 0.460844 707.416261 712.407735 \n", - "40 2 2 0.365009 0.446520 712.420201 717.411435 \n", - "41 2 2 0.351182 0.404605 717.423130 719.387991 \n", - "42 2 2 0.342628 0.363010 719.527632 721.280035 \n", - "43 2 2 0.372383 0.343080 721.407644 723.679873 \n", - "44 2 3 0.339868 0.535279 727.313529 730.303412 \n", - "45 2 3 0.369672 0.445663 730.547756 733.612821 \n", - "46 2 3 0.428538 0.416985 733.625933 738.618249 \n", - "47 2 3 0.395273 0.440195 738.629582 743.618113 \n", - "48 2 3 0.381960 0.364642 743.630017 747.297548 \n", - "49 2 3 0.259675 0.451567 747.310159 748.633258 \n", - "\n", - " distance_min distance_max dispersion diameters \\\n", - "0 0.000008 0.163336 0.476200 0.447168 \n", - "1 0.000020 0.214331 0.493642 0.405614 \n", - "2 0.000029 0.313150 0.396658 0.315787 \n", - "3 0.000000 0.121382 0.419438 0.340191 \n", - "4 0.000000 0.357914 0.468017 0.377124 \n", - "5 0.000022 0.196554 0.475589 0.429357 \n", - "6 0.000000 0.215157 0.462429 0.388555 \n", - "7 0.000000 0.346267 0.498731 0.448065 \n", - "8 0.000036 0.152877 0.490870 0.422792 \n", - "9 0.000075 0.418614 0.493908 0.230166 \n", - "10 0.000000 0.157471 0.316114 0.281264 \n", - "11 0.000026 0.250956 0.497754 0.473781 \n", - "12 0.000012 0.218767 0.484224 0.384218 \n", - "13 0.000000 0.194412 0.493658 0.395848 \n", - "14 0.000000 0.103500 0.368489 0.322099 \n", - "15 0.000000 0.306248 0.496096 0.341502 \n", - "16 0.000059 0.082978 0.302276 0.292460 \n", - "17 0.000000 0.132389 0.440897 0.320217 \n", - "18 0.000000 0.158084 0.493653 0.395739 \n", - "19 0.000038 0.337269 0.491482 0.402251 \n", - "20 0.000000 0.095356 0.261161 0.219527 \n", - "21 0.000000 0.116311 0.359441 0.316505 \n", - "22 0.000000 0.099043 0.370099 0.313619 \n", - "23 0.000000 0.295884 0.456163 0.349909 \n", - "24 0.000000 0.149273 0.498853 0.398927 \n", - "25 0.000000 0.194899 0.418319 0.377273 \n", - "26 0.000062 0.041768 0.150003 0.148457 \n", - "27 0.000000 0.099162 0.472762 0.452556 \n", - "28 0.000000 0.222788 0.478034 0.225708 \n", - "29 0.000000 0.127341 0.474856 0.438192 \n", - "30 0.000000 0.108815 0.454060 0.421354 \n", - "31 0.000000 0.147073 0.413664 0.398268 \n", - "32 0.000000 0.114757 0.476205 0.451709 \n", - "33 0.000000 0.136851 0.459621 0.435390 \n", - "34 0.000000 0.128595 0.485209 0.388434 \n", - "35 0.000000 0.114233 0.489931 0.404091 \n", - "36 0.000000 0.200898 0.492224 0.396003 \n", - "37 0.000000 0.032990 0.048581 0.048351 \n", - "38 0.000000 0.122901 0.445328 0.423148 \n", - "39 0.000000 0.117068 0.479489 0.462347 \n", - "40 0.000000 0.132446 0.495726 0.479506 \n", - "41 0.000000 0.089325 0.231574 0.206388 \n", - "42 0.000007 0.264235 0.381841 0.264235 \n", - "43 0.000033 0.316914 0.365123 0.322019 \n", - "44 0.000000 0.245835 0.430685 0.354454 \n", - "45 0.000000 0.066142 0.499002 0.474051 \n", - "46 0.000000 0.129103 0.494971 0.474624 \n", - "47 0.000000 0.108318 0.455607 0.439360 \n", - "48 0.000000 0.215840 0.492667 0.433851 \n", - "49 0.000000 0.210912 0.421400 0.420487 \n", - "\n", - " centers duration saccade_duration \\\n", - "0 [0.26978281912696733, 0.2982622328901172] 1.566372 0.000000 \n", - "1 [0.2910625032822163, 0.1982021669431278] 1.910347 0.012657 \n", - "2 [0.3431115936291729, 0.5135625103911892] 2.947131 0.393987 \n", - "3 [0.34663493546708635, 0.4025502251881663] 4.991766 0.276210 \n", - "4 [0.3634474419928634, 0.16512318042269397] 4.991021 0.011914 \n", - "5 [0.29910106021574867, 0.15546331016248877] 1.576171 0.012360 \n", - "6 [0.39205210487319875, 0.2443357155482297] 2.272374 0.154924 \n", - "7 [0.3797224191155708, 0.15968173057298432] 1.410356 0.014579 \n", - "8 [0.4710875049736325, 0.27212431928317216] 4.575028 0.012616 \n", - "9 [0.337747722909397, 0.2777624383886774] 1.094643 0.012734 \n", - "10 [0.3704336335687768, 0.23147004056889658] 3.138900 0.138914 \n", - "11 [0.36343474633265815, 0.17469483036467187] 1.363376 0.202343 \n", - "12 [0.39673366246329733, 0.09632984792585829] 1.631731 0.012182 \n", - "13 [0.33534177772834195, 0.35311976456730026] 4.991657 0.000000 \n", - "14 [0.3765540766363764, 0.4125175492361066] 4.993037 0.012521 \n", - "15 [0.3758370666770321, 0.3730184813743165] 4.986682 0.012589 \n", - "16 [0.36152381114531495, 0.43068093164941246] 1.589275 0.013556 \n", - "17 [0.38313719954267, 0.37995101792065533] 4.992366 0.271621 \n", - "18 [0.3588541503601599, 0.14414289670355132] 4.988104 0.011840 \n", - "19 [0.3945159855380682, 0.1362223820617317] 1.561573 0.012473 \n", - "20 [0.28569631779154875, 0.438573225587563] 3.191960 0.000000 \n", - "21 [0.3837128198869304, 0.33647354145540476] 4.689940 0.166436 \n", - "22 [0.3752684021895516, 0.2624662935633424] 4.992451 0.159714 \n", - "23 [0.37089163195361424, 0.3720539860446369] 4.991975 0.012730 \n", - "24 [0.3923539734985546, 0.2698841998231458] 4.599641 0.012238 \n", - "25 [0.3999618668253544, 0.046260296613667144] 4.987707 0.012105 \n", - "26 [0.4739453103267861, -0.04014648235633445] 0.796922 0.012733 \n", - "27 [0.4269862984804291, 0.5083341915665329] 4.986185 0.000000 \n", - "28 [0.4802360641806547, 0.39024683868507004] 2.218854 0.014340 \n", - "29 [0.40209334350551984, 0.5103319548773868] 4.991805 0.116453 \n", - "30 [0.4184696002276027, 0.5266126482583644] 4.990767 0.011154 \n", - "31 [0.36539670390929757, 0.4919671537174253] 1.523484 0.012099 \n", - "32 [0.40314594773643364, 0.4796729080041757] 4.990259 0.148813 \n", - "33 [0.3899687887886145, 0.4718868368090767] 4.991743 0.013696 \n", - "34 [0.4034523403690571, 0.48884587482508834] 4.988010 0.013679 \n", - "35 [0.3947501684970405, 0.48299240351921924] 3.661386 0.013185 \n", - "36 [0.22561777386759013, 0.5175313777633619] 2.443137 0.011641 \n", - "37 [0.4062207943615448, 0.2884033649764888] 0.601690 0.015476 \n", - "38 [0.376277122604634, 0.50741811145474] 4.906576 0.000000 \n", - "39 [0.3858542087798327, 0.4646067382476673] 4.991474 0.030219 \n", - "40 [0.3640949298150673, 0.47267247028921133] 4.991234 0.012466 \n", - "41 [0.37561276336523264, 0.4199258752782953] 1.964861 0.011695 \n", - "42 [0.35083924252904897, 0.30835286681420504] 1.752402 0.139641 \n", - "43 [0.3305661354625725, 0.37190666195903355] 2.272229 0.127609 \n", - "44 [0.35482779591097824, 0.5477141309687568] 2.989883 0.000000 \n", - "45 [0.40218989768564484, 0.4627803367754382] 3.065065 0.244345 \n", - "46 [0.43686242894364113, 0.44570319353994137] 4.992316 0.013112 \n", - "47 [0.4006682648759181, 0.4583427206835182] 4.988531 0.011333 \n", - "48 [0.4518663190174905, 0.3322604030819605] 3.667531 0.011904 \n", - "49 [0.3116975435295686, 0.3940803945439342] 1.323099 0.012611 \n", - "\n", - " saccade_length saccade_angle saccade2_angle \n", - "0 0.000000 0.000000 0.000000 \n", - "1 0.275507 273.668414 13.860336 \n", - "2 0.350302 79.808078 14.391533 \n", - "3 0.129089 274.199611 171.687878 \n", - "4 0.165815 265.887489 142.738272 \n", - "5 0.064425 228.625761 26.311673 \n", - "6 0.194845 74.937434 36.981137 \n", - "7 0.102986 291.918571 101.175097 \n", - "8 0.052398 10.743474 7.514506 \n", - "9 0.102924 183.228968 315.363417 \n", - "10 0.044139 318.592386 2.146126 \n", - "11 0.045712 140.738511 27.607843 \n", - "12 0.269524 293.130668 0.000000 \n", - "13 0.000000 0.000000 0.000000 \n", - "14 0.093136 66.159927 20.255112 \n", - "15 0.081482 266.415039 10.684551 \n", - "16 0.063905 75.730488 5.548401 \n", - "17 0.050849 261.278889 187.656742 \n", - "18 0.199398 268.935632 233.255031 \n", - "19 0.072773 322.190663 0.000000 \n", - "20 0.000000 0.000000 0.000000 \n", - "21 0.173189 303.099011 168.103537 \n", - "22 0.071257 291.202548 28.585992 \n", - "23 0.102735 139.788540 9.167791 \n", - "24 0.083185 328.956331 138.072780 \n", - "25 0.176523 287.029111 178.583049 \n", - "26 0.171514 285.612160 0.000000 \n", - "27 0.000000 0.000000 0.000000 \n", - "28 0.160209 311.749340 6.539873 \n", - "29 0.141731 138.289212 188.921502 \n", - "30 0.055493 129.367710 164.782504 \n", - "31 0.028530 144.585206 1.357467 \n", - "32 0.137656 323.227738 128.916283 \n", - "33 0.017083 272.144021 89.871412 \n", - "34 0.010856 182.015433 172.993845 \n", - "35 0.055875 175.009278 201.973875 \n", - "36 0.115692 153.035403 24.006094 \n", - "37 0.261577 309.029309 0.000000 \n", - "38 0.000000 0.000000 0.000000 \n", - "39 0.035264 204.492639 302.320797 \n", - "40 0.026169 326.813437 104.929549 \n", - "41 0.044137 251.742985 186.636612 \n", - "42 0.042465 258.379597 247.804922 \n", - "43 0.035813 326.184519 0.000000 \n", - "44 0.000000 0.000000 0.000000 \n", - "45 0.094442 288.395706 225.629949 \n", - "46 0.065481 334.025655 8.930962 \n", - "47 0.040562 145.094693 65.087952 \n", - "48 0.076717 260.006741 64.586628 \n", - "49 0.150031 144.593369 0.000000 " ] }, "execution_count": 8, @@ -1536,12 +1541,7 @@ "output_type": "execute_result" } ], - "source": [ - "preprocessor = IDT(x=x, y=y, t=t, pk=pk, min_duration=0.5, max_dispersion=0.5, max_duration=5)\n", - "\n", - "fixations = preprocessor.fit_transform(data)\n", - "fixations" - ] + "execution_count": 8 }, { "cell_type": "markdown", @@ -1559,36 +1559,36 @@ }, { "cell_type": "code", - "execution_count": 9, "metadata": { - "ExecuteTime": { - "end_time": "2026-01-20T19:04:08.174737Z", - "start_time": "2026-01-20T19:04:08.115061Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2026-01-20T19:04:08.174737Z", + "start_time": "2026-01-20T19:04:08.115061Z" } }, + "source": [ + "scanpath_visualization(get_object(fixations), x, y, with_axes=True, path_width=1, axes_limits=(0, 1, 0, 1))" + ], "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAMzCAYAAABp/LlpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABv+ElEQVR4nO3deXhU9dnG8XuWJJMASYYAYd8iq0AQkIiKVmVREcW6UFSkKAoKxEpt1VpFayt9W2utiqIoLnUBi7siElBcEWTLAAIqYRPJAAkkQNaZOe8fMZFAgMxkJpOZ8/1cV67WM79zzpNeU/T2+Z3nWAzDMAQAAAAAJmUNdwEAAAAAEE6EIgAAAACmRigCAAAAYGqEIgAAAACmRigCAAAAYGqEIgAAAACmRigCAAAAYGqEIgAAAACmRigCAAAAYGqEIgAAAACm5nco+uyzzzRy5Ei1bt1aFotFb7/99knPWbp0qfr166e4uDidcsopeuGFFwIoFQAAAACCz+9QdPjwYaWnp2vmzJm1Wr9161aNGDFC5513ntauXavf/e53mjBhgj766CO/iwUAAACAYLMYhmEEfLLForfeekujRo067po777xTH3zwgdavX1917De/+Y0OHDighQsXBnprAAAAAAgKe6hvsGzZMg0ZMqTaseHDh+t3v/vdcc8pLS1VaWlp1V/7fD7l5+crJSVFFoslVKUCAAAAaOAMw9DBgwfVunVrWa3BGZEQ8lCUm5ur1NTUasdSU1NVWFio4uJixcfHH3POjBkz9MADD4S6NAAAAAARaufOnWrbtm1QrhXyUBSIu+++W9OmTav664KCArVv3147d+5UYmJiGCsDAAAAEE6FhYVq166dmjRpErRrhjwUtWzZUm63u9oxt9utxMTEGrtEkhQXF6e4uLhjjicmJhKKAAAAAAT1sZqQv6do0KBBWrJkSbVjWVlZGjRoUKhvDQAAAAAn5XcoOnTokNauXau1a9dKqhi5vXbtWu3YsUNSxda366+/vmr9pEmTlJOToz/+8Y/atGmTnnzySb3++uu6/fbbg/MbAAAAAEAd+B2KVq5cqdNOO02nnXaaJGnatGk67bTTdN9990mSdu/eXRWQJKlTp0764IMPlJWVpfT0dP3rX//Ss88+q+HDhwfpVwAAAACAwNXpPUX1pbCwUElJSSooKOCZIgAAAMDEQpENQv5MEQAAAAA0ZIQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgagGFopkzZ6pjx45yOBzKyMjQihUrTrj+0UcfVbdu3RQfH6927drp9ttvV0lJSUAFAwAAAEAw+R2K5s2bp2nTpmn69OlavXq10tPTNXz4cO3Zs6fG9a+++qruuusuTZ8+XRs3btRzzz2nefPm6U9/+lOdiwcAAACAuvI7FD3yyCO66aabNH78ePXs2VOzZs1SQkKC5syZU+P6r776SmeddZauueYadezYUcOGDdOYMWNO2l0CAAAAgPrgVygqKyvTqlWrNGTIkF8uYLVqyJAhWrZsWY3nnHnmmVq1alVVCMrJydGCBQt08cUXH/c+paWlKiwsrPYDAAAAAKFg92fxvn375PV6lZqaWu14amqqNm3aVOM511xzjfbt26ezzz5bhmHI4/Fo0qRJJ9w+N2PGDD3wwAP+lAYAAAAAAQn59LmlS5fqoYce0pNPPqnVq1frzTff1AcffKAHH3zwuOfcfffdKigoqPrZuXNnqMsEAAAAYFJ+dYqaNWsmm80mt9td7bjb7VbLli1rPOfee+/V2LFjNWHCBElS7969dfjwYd1888265557ZLUem8vi4uIUFxfnT2kAAAAAEBC/OkWxsbHq37+/lixZUnXM5/NpyZIlGjRoUI3nFBUVHRN8bDabJMkwDH/rBQAAAICg8qtTJEnTpk3TuHHjNGDAAA0cOFCPPvqoDh8+rPHjx0uSrr/+erVp00YzZsyQJI0cOVKPPPKITjvtNGVkZOiHH37Qvffeq5EjR1aFIwAAAAAIF79D0ejRo7V3717dd999ys3NVd++fbVw4cKq4Qs7duyo1hn685//LIvFoj//+c/atWuXmjdvrpEjR+pvf/tb8H4LAAAAAAiQxYiAPWyFhYVKSkpSQUGBEhMTw10OAAAAgDAJRTYI+fQ5AAAAAGjICEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUAgpFM2fOVMeOHeVwOJSRkaEVK1accP2BAwc0efJktWrVSnFxceratasWLFgQUMEAAAAAEEx2f0+YN2+epk2bplmzZikjI0OPPvqohg8frs2bN6tFixbHrC8rK9PQoUPVokULzZ8/X23atNH27duVnJwcjPoBAAAAoE4shmEY/pyQkZGh008/XU888YQkyefzqV27dpo6daruuuuuY9bPmjVL//znP7Vp0ybFxMQEVGRhYaGSkpJUUFCgxMTEgK4BAAAAIPKFIhv4tX2urKxMq1at0pAhQ365gNWqIUOGaNmyZTWe8+6772rQoEGaPHmyUlNT1atXLz300EPyer3HvU9paakKCwur/QAAAABAKPgVivbt2yev16vU1NRqx1NTU5Wbm1vjOTk5OZo/f768Xq8WLFige++9V//617/017/+9bj3mTFjhpKSkqp+2rVr50+ZAAAAAFBrIZ8+5/P51KJFCz3zzDPq37+/Ro8erXvuuUezZs067jl33323CgoKqn527twZ6jIBAAAAmJRfgxaaNWsmm80mt9td7bjb7VbLli1rPKdVq1aKiYmRzWarOtajRw/l5uaqrKxMsbGxx5wTFxenuLg4f0oDAAAAgID41SmKjY1V//79tWTJkqpjPp9PS5Ys0aBBg2o856yzztIPP/wgn89Xdey7775Tq1atagxEAAAAAFCf/N4+N23aNM2ePVsvvviiNm7cqFtuuUWHDx/W+PHjJUnXX3+97r777qr1t9xyi/Lz83Xbbbfpu+++0wcffKCHHnpIkydPDt5vAQAAAAAB8vs9RaNHj9bevXt13333KTc3V3379tXChQurhi/s2LFDVusvWatdu3b66KOPdPvtt6tPnz5q06aNbrvtNt15553B+y0AAAAAIEB+v6coHHhPEQAAAACpAbynCAAAAACiDaEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkR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2oEDBzR58mS1atVKcXFx6tq1K38fRa34+1179NFH1a1bN8XHx6tdu3a6/fbbVVJSUk/VIhJ99tlnGjlypFq3bi2LxaK33377pOcsXbpU/fr1U1xcnE455RS98MILft+3QYSiefPmadq0aZo+fbpWr16t9PR0DR8+XHv27Klx/VdffaUxY8boxhtv1Jo1azRq1CiNGjVK69evr+fKEWn8/a4tXbpUY8aM0SeffKJly5apXbt2GjZsmHbt2lXPlSPS+Ptdq7Rt2zbdcccdGjx4cD1Vikjn73etrKxMQ4cO1bZt2zR//nxt3rxZs2fPVps2beq5ckQaf79rr776qu666y5Nnz5dGzdu1HPPPad58+bpT3/6Uz1Xjkhy+PBhpaena+bMmbVav3XrVo0YMULnnXee1q5dq9/97neaMGGCPvroI/9ubDQAAwcONCZPnlz1116v12jdurUxY8aMGtdfffXVxogRI6ody8jIMCZOnBjSOhH5/P2uHc3j8RhNmjQxXnzxxVCViCgRyHfN4/EYZ555pvHss88a48aNMy677LJ6qBSRzt/v2lNPPWV07tzZKCsrq68SESX8/a5NnjzZOP/886sdmzZtmnHWWWeFtE5ED0nGW2+9dcI1f/zjH41TTz212rHRo0cbw4cP9+teYe8UlZWVadWqVRoyZEjVMavVqiFDhmjZsmU1nrNs2bJq6yVp+PDhx10PSIF9145WVFSk8vJyNW3aNFRlIgoE+l37y1/+ohYtWujGG2+sjzIRBQL5rr377rsaNGiQJk+erNTUVPXq1UsPPfSQvF5vfZWNCBTId+3MM8/UqlWrqrbY5eTkaMGCBbr44ovrpWaYQ7BygT2YRQVi37598nq9Sk1NrXY8NTVVmzZtqvGc3NzcGtfn5uaGrE5EvkC+a0e788471bp162P+zwccKZDv2hdffKHnnntOa9eurYcKES0C+a7l5OTo448/1rXXXqsFCxbohx9+0K233qry8nJNnz69PspGBArku3bNNddo3759Ovvss2UYhjwejyZNmsT2OQTV8XJBYWGhiouLFR8fX6vrhL1TBESKv//975o7d67eeustORyOcJeDKHLw4EGNHTtWs2fPVrNmzcJdDqKcz+dTixYt9Mwzz6h///4aPXq07rnnHs2aNSvcpSHKLF26VA899JCefPJJrV69Wm+++aY++OADPfjgg+EuDThG2DtFzZo1k81mk9vtrnbc7XarZcuWNZ7TsmVLv9YDUmDftUoPP/yw/v73v2vx4sXq06dPKMtEFPD3u7ZlyxZt27ZNI0eOrDrm8/kkSXa7XZs3b1ZaWlpoi0ZECuTPtVatWikmJkY2m63qWI8ePZSbm6uysjLFxsaGtGZEpkC+a/fee6/Gjh2rCRMmSJJ69+6tw4cP6+abb9Y999wjq5V/N4+6O14uSExMrHWXSGoAnaLY2Fj1799fS5YsqTrm8/m0ZMkSDRo0qMZzBg0aVG29JGVlZR13PSAF9l2TpH/84x968MEHtXDhQg0YMKA+SkWE8/e71r17d61bt05r166t+rn00kurJum0a9euPstHBAnkz7WzzjpLP/zwQ1XwlqTvvvtOrVq1IhDhuAL5rhUVFR0TfCrDeMUz9EDdBS0X+DcDIjTmzp1rxMXFGS+88ILx7bffGjfffLORnJxs5ObmGoZhGGPHjjXuuuuuqvVffvmlYbfbjYcfftjYuHGjMX36dCMmJsZYt25duH4FRAh/v2t///vfjdjYWGP+/PnG7t27q34OHjwYrl8BEcLf79rRmD6H2vL3u7Zjxw6jSZMmxpQpU4zNmzcb77//vtGiRQvjr3/9a7h+BUQIf79r06dPN5o0aWK89tprRk5OjrFo0SIjLS3NuPrqq8P1KyACHDx40FizZo2xZs0aQ5LxyCOPGGvWrDG2b99uGIZh3HXXXcbYsWOr1ufk5BgJCQnGH/7wB2Pjxo3GzJkzDZvNZixcuNCv+zaIUGQYhvH4448b7du3N2JjY42BAwcaX3/9ddVn5557rjFu3Lhq619//XWja9euRmxsrHHqqacaH3zwQT1XjEjlz3etQ4cOhqRjfqZPn17/hSPi+Pvn2pEIRfCHv9+1r776ysjIyDDi4uKMzp07G3/7298Mj8dTz1UjEvnzXSsvLzfuv/9+Iy0tzXA4HEa7du2MW2+91di/f3/9F46I8cknn9T4z16V361x48YZ55577jHn9O3b14iNjTU6d+5sPP/8837f12IY9C8BAAAAmFfYnykCAAAAgHAiFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwtf8H09yhe+86lN0AAAAASUVORK5CYII=", "text/plain": [ "
" - ] + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAMzCAYAAABp/LlpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABv+ElEQVR4nO3deXhU9dnG8XuWJJMASYYAYd8iq0AQkIiKVmVREcW6UFSkKAoKxEpt1VpFayt9W2utiqIoLnUBi7siElBcEWTLAAIqYRPJAAkkQNaZOe8fMZFAgMxkJpOZ8/1cV67WM79zzpNeU/T2+Z3nWAzDMAQAAAAAJmUNdwEAAAAAEE6EIgAAAACmRigCAAAAYGqEIgAAAACmRigCAAAAYGqEIgAAAACmRigCAAAAYGqEIgAAAACmRigCAAAAYGqEIgAAAACm5nco+uyzzzRy5Ei1bt1aFotFb7/99knPWbp0qfr166e4uDidcsopeuGFFwIoFQAAAACCz+9QdPjwYaWnp2vmzJm1Wr9161aNGDFC5513ntauXavf/e53mjBhgj766CO/iwUAAACAYLMYhmEEfLLForfeekujRo067po777xTH3zwgdavX1917De/+Y0OHDighQsXBnprAAAAAAgKe6hvsGzZMg0ZMqTaseHDh+t3v/vdcc8pLS1VaWlp1V/7fD7l5+crJSVFFoslVKUCAAAAaOAMw9DBgwfVunVrWa3BGZEQ8lCUm5ur1NTUasdSU1NVWFio4uJixcfHH3POjBkz9MADD4S6NAAAAAARaufOnWrbtm1QrhXyUBSIu+++W9OmTav664KCArVv3147d+5UYmJiGCsDAAAAEE6FhYVq166dmjRpErRrhjwUtWzZUm63u9oxt9utxMTEGrtEkhQXF6e4uLhjjicmJhKKAAAAAAT1sZqQv6do0KBBWrJkSbVjWVlZGjRoUKhvDQAAAAAn5XcoOnTokNauXau1a9dKqhi5vXbtWu3YsUNSxda366+/vmr9pEmTlJOToz/+8Y/atGmTnnzySb3++uu6/fbbg/MbAAAAAEAd+B2KVq5cqdNOO02nnXaaJGnatGk67bTTdN9990mSdu/eXRWQJKlTp0764IMPlJWVpfT0dP3rX//Ss88+q+HDhwfpVwAAAACAwNXpPUX1pbCwUElJSSooKOCZIgAAAMDEQpENQv5MEQAAAAA0ZIQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgaoQiAAAAAKZGKAIAAABgagGFopkzZ6pjx45yOBzKyMjQihUrTrj+0UcfVbdu3RQfH6927drp9ttvV0lJSUAFAwAAAEAw+R2K5s2bp2nTpmn69OlavXq10tPTNXz4cO3Zs6fG9a+++qruuusuTZ8+XRs3btRzzz2nefPm6U9/+lOdiwcAAACAuvI7FD3yyCO66aabNH78ePXs2VOzZs1SQkKC5syZU+P6r776SmeddZauueYadezYUcOGDdOYMWNO2l0CAAAAgPrgVygqKyvTqlWrNGTIkF8uYLVqyJAhWrZsWY3nnHnmmVq1alVVCMrJydGCBQt08cUXH/c+paWlKiwsrPYDAAAAAKFg92fxvn375PV6lZqaWu14amqqNm3aVOM511xzjfbt26ezzz5bhmHI4/Fo0qRJJ9w+N2PGDD3wwAP+lAYAAAAAAQn59LmlS5fqoYce0pNPPqnVq1frzTff1AcffKAHH3zwuOfcfffdKigoqPrZuXNnqMsEAAAAYFJ+dYqaNWsmm80mt9td7bjb7VbLli1rPOfee+/V2LFjNWHCBElS7969dfjwYd1888265557ZLUem8vi4uIUFxfnT2kAAAAAEBC/OkWxsbHq37+/lixZUnXM5/NpyZIlGjRoUI3nFBUVHRN8bDabJMkwDH/rBQAAAICg8qtTJEnTpk3TuHHjNGDAAA0cOFCPPvqoDh8+rPHjx0uSrr/+erVp00YzZsyQJI0cOVKPPPKITjvtNGVkZOiHH37Qvffeq5EjR1aFIwAAAAAIF79D0ejRo7V3717dd999ys3NVd++fbVw4cKq4Qs7duyo1hn685//LIvFoj//+c/atWuXmjdvrpEjR+pvf/tb8H4LAAAAAAiQxYiAPWyFhYVKSkpSQUGBEhMTw10OAAAAgDAJRTYI+fQ5AAAAAGjICEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUCEUAAAAATI1QBAAAAMDUAgpFM2fOVMeOHeVwOJSRkaEVK1accP2BAwc0efJktWrVSnFxceratasWLFgQUMEAAAAAEEx2f0+YN2+epk2bplmzZikjI0OPPvqohg8frs2bN6tFixbHrC8rK9PQoUPVokULzZ8/X23atNH27duVnJwcjPoBAAAAoE4shmEY/pyQkZGh008/XU888YQkyefzqV27dpo6daruuuuuY9bPmjVL//znP7Vp0ybFxMQEVGRhYaGSkpJUUFCgxMTEgK4BAAAAIPKFIhv4tX2urKxMq1at0pAhQ365gNWqIUOGaNmyZTWe8+6772rQoEGaPHmyUlNT1atXLz300EPyer3HvU9paakKCwur/QAAAABAKPgVivbt2yev16vU1NRqx1NTU5Wbm1vjOTk5OZo/f768Xq8WLFige++9V//617/017/+9bj3mTFjhpKSkqp+2rVr50+ZAAAAAFBrIZ8+5/P51KJFCz3zzDPq37+/Ro8erXvuuUezZs067jl33323CgoKqn527twZ6jIBAAAAmJRfgxaaNWsmm80mt9td7bjb7VbLli1rPKdVq1aKiYmRzWarOtajRw/l5uaqrKxMsbGxx5wTFxenuLg4f0oDAAAAgID41SmKjY1V//79tWTJkqpjPp9PS5Ys0aBBg2o856yzztIPP/wgn89Xdey7775Tq1atagxEAAAAAFCf/N4+N23aNM2ePVsvvviiNm7cqFtuuUWHDx/W+PHjJUnXX3+97r777qr1t9xyi/Lz83Xbbbfpu+++0wcffKCHHnpIkydPDt5vAQAAAAAB8vs9RaNHj9bevXt13333KTc3V3379tXChQurhi/s2LFDVusvWatdu3b66KOPdPvtt6tPnz5q06aNbrvtNt15553B+y0AAAAAIEB+v6coHHhPEQAAAACpAbynCAAAAACiDaEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkR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2oEDBzR58mS1atVKcXFx6tq1K38fRa34+1179NFH1a1bN8XHx6tdu3a6/fbbVVJSUk/VIhJ99tlnGjlypFq3bi2LxaK33377pOcsXbpU/fr1U1xcnE455RS98MILft+3QYSiefPmadq0aZo+fbpWr16t9PR0DR8+XHv27Klx/VdffaUxY8boxhtv1Jo1azRq1CiNGjVK69evr+fKEWn8/a4tXbpUY8aM0SeffKJly5apXbt2GjZsmHbt2lXPlSPS+Ptdq7Rt2zbdcccdGjx4cD1Vikjn73etrKxMQ4cO1bZt2zR//nxt3rxZs2fPVps2beq5ckQaf79rr776qu666y5Nnz5dGzdu1HPPPad58+bpT3/6Uz1Xjkhy+PBhpaena+bMmbVav3XrVo0YMULnnXee1q5dq9/97neaMGGCPvroI/9ubDQAAwcONCZPnlz1116v12jdurUxY8aMGtdfffXVxogRI6ody8jIMCZOnBjSOhH5/P2uHc3j8RhNmjQxXnzxxVCViCgRyHfN4/EYZ555pvHss88a48aNMy677LJ6qBSRzt/v2lNPPWV07tzZKCsrq68SESX8/a5NnjzZOP/886sdmzZtmnHWWWeFtE5ED0nGW2+9dcI1f/zjH41TTz212rHRo0cbw4cP9+teYe8UlZWVadWqVRoyZEjVMavVqiFDhmjZsmU1nrNs2bJq6yVp+PDhx10PSIF9145WVFSk8vJyNW3aNFRlIgoE+l37y1/+ohYtWujGG2+sjzIRBQL5rr377rsaNGiQJk+erNTUVPXq1UsPPfSQvF5vfZWNCBTId+3MM8/UqlWrqrbY5eTkaMGCBbr44ovrpWaYQ7BygT2YRQVi37598nq9Sk1NrXY8NTVVmzZtqvGc3NzcGtfn5uaGrE5EvkC+a0e788471bp162P+zwccKZDv2hdffKHnnntOa9eurYcKES0C+a7l5OTo448/1rXXXqsFCxbohx9+0K233qry8nJNnz69PspGBArku3bNNddo3759Ovvss2UYhjwejyZNmsT2OQTV8XJBYWGhiouLFR8fX6vrhL1TBESKv//975o7d67eeustORyOcJeDKHLw4EGNHTtWs2fPVrNmzcJdDqKcz+dTixYt9Mwzz6h///4aPXq07rnnHs2aNSvcpSHKLF26VA899JCefPJJrV69Wm+++aY++OADPfjgg+EuDThG2DtFzZo1k81mk9vtrnbc7XarZcuWNZ7TsmVLv9YDUmDftUoPP/yw/v73v2vx4sXq06dPKMtEFPD3u7ZlyxZt27ZNI0eOrDrm8/kkSXa7XZs3b1ZaWlpoi0ZECuTPtVatWikmJkY2m63qWI8ePZSbm6uysjLFxsaGtGZEpkC+a/fee6/Gjh2rCRMmSJJ69+6tw4cP6+abb9Y999wjq5V/N4+6O14uSExMrHWXSGoAnaLY2Fj1799fS5YsqTrm8/m0ZMkSDRo0qMZzBg0aVG29JGVlZR13PSAF9l2TpH/84x968MEHtXDhQg0YMKA+SkWE8/e71r17d61bt05r166t+rn00kurJum0a9euPstHBAnkz7WzzjpLP/zwQ1XwlqTvvvtOrVq1IhDhuAL5rhUVFR0TfCrDeMUz9EDdBS0X+DcDIjTmzp1rxMXFGS+88ILx7bffGjfffLORnJxs5ObmGoZhGGPHjjXuuuuuqvVffvmlYbfbjYcfftjYuHGjMX36dCMmJsZYt25duH4FRAh/v2t///vfjdjYWGP+/PnG7t27q34OHjwYrl8BEcLf79rRmD6H2vL3u7Zjxw6jSZMmxpQpU4zNmzcb77//vtGiRQvjr3/9a7h+BUQIf79r06dPN5o0aWK89tprRk5OjrFo0SIjLS3NuPrqq8P1KyACHDx40FizZo2xZs0aQ5LxyCOPGGvWrDG2b99uGIZh3HXXXcbYsWOr1ufk5BgJCQnGH/7wB2Pjxo3GzJkzDZvNZixcuNCv+zaIUGQYhvH4448b7du3N2JjY42BAwcaX3/9ddVn5557rjFu3Lhq619//XWja9euRmxsrHHqqacaH3zwQT1XjEjlz3etQ4cOhqRjfqZPn17/hSPi+Pvn2pEIRfCHv9+1r776ysjIyDDi4uKMzp07G3/7298Mj8dTz1UjEvnzXSsvLzfuv/9+Iy0tzXA4HEa7du2MW2+91di/f3/9F46I8cknn9T4z16V361x48YZ55577jHn9O3b14iNjTU6d+5sPP/8837f12IY9C8BAAAAmFfYnykCAAAAgHAiFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwNUIRAAAAAFMjFAEAAAAwtf8H09yhe+86lN0AAAAASUVORK5CYII=" }, "metadata": {}, "output_type": "display_data" } ], - "source": [ - "scanpath_visualization(get_object(fixations), x, y, with_axes=True, path_width=1, axes_limits=(0, 1, 0, 1))" - ] + "execution_count": 9 }, { - "cell_type": "markdown", "metadata": {}, + "cell_type": "markdown", "source": [ "### 2. Filtering gazes.\n", "\n", @@ -1616,18 +1616,16 @@ }, { "cell_type": "code", - "execution_count": 10, "metadata": { - "ExecuteTime": { - "end_time": "2026-01-20T19:04:08.844605Z", - "start_time": "2026-01-20T19:04:08.229246Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2026-01-20T19:04:08.844605Z", + "start_time": "2026-01-20T19:04:08.229246Z" } }, - "outputs": [], "source": [ "from eyefeatures.preprocessing.smoothing import WienerFilter, SavGolFilter\n", "from sklearn.pipeline import Pipeline\n", @@ -1639,36 +1637,38 @@ "])\n", "\n", "fixations_smooth = pipe.fit_transform(data)" - ] + ], + "outputs": [], + "execution_count": 10 }, { "cell_type": "code", - "execution_count": 11, "metadata": { - "ExecuteTime": { - "end_time": "2026-01-20T19:04:08.927879Z", - "start_time": "2026-01-20T19:04:08.861496Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2026-01-20T19:04:08.927879Z", + "start_time": "2026-01-20T19:04:08.861496Z" } }, + "source": [ + "scanpath_visualization(get_object(fixations_smooth), x, y, with_axes=True, path_width=1, axes_limits=(0, 1, 0, 1))" + ], "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAMzCAYAAABp/LlpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABjHElEQVR4nO3dd3RUdd7H8c/MpBEgoYdiIBTpIQEUFtTFEghFEEWlhCJgxc7qKmvBCuq6LruK8oABLFRREAETFGUtoCAQejEBpCb0BAIpM3OfP9BIqJkwNff9OoezeOeWb/bMsry9d35jMQzDEAAAAACYlNXXAwAAAACALxFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATM3lKPruu+/Us2dP1a5dWxaLRfPmzbvkMUuXLlWbNm0UGhqqRo0aaerUqaUYFQAAAADcz+Uoys3NVVxcnMaPH1+i/Xfs2KEePXrohhtuUFpamh577DHdfffdSk1NdXlYAAAAAHA3i2EYRqkPtlg0d+5c9e7d+4L7PPXUU1q4cKE2bNhQtK1fv346duyYUlJSSntpAAAAAHCLIE9fYPny5UpISCi2LTExUY899tgFj8nPz1d+fn7RPzudTh05ckRVq1aVxWLx1KgAAAAA/JxhGDp+/Lhq164tq9U9SyR4PIoyMzMVFRVVbFtUVJRycnJ06tQplStX7pxjxo4dqxdffNHTowEAAAAIULt379YVV1zhlnN5PIpKY9SoURo5cmTRP2dnZ6tu3bravXu3IiIifDgZAAAAAF/KyclRdHS0Klas6LZzejyKatasqaysrGLbsrKyFBERcd67RJIUGhqq0NDQc7ZHREQQRQAAAADc+rEaj39PUYcOHbRkyZJi27766it16NDB05cGAAAAgEtyOYpOnDihtLQ0paWlSTq95HZaWpp27dol6fSjb4MHDy7a//7779f27dv197//XVu2bNG7776r2bNn6/HHH3fPTwAAAAAAl8HlKPrll1/UunVrtW7dWpI0cuRItW7dWs8//7wkaf/+/UWBJEn169fXwoUL9dVXXykuLk7/+te/9P777ysxMdFNPwIAAAAAlN5lfU+Rt+Tk5CgyMlLZ2dl8pggAAAAwMU+0gcc/UwQAAAAA/owoAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMLVSRdH48eMVExOjsLAwtW/fXitWrLjo/uPGjVOTJk1Urlw5RUdH6/HHH1deXl6pBgYAAAAAd3I5imbNmqWRI0dq9OjRWr16teLi4pSYmKgDBw6cd//p06fr6aef1ujRo7V582YlJydr1qxZ+sc//nHZwwMAAADA5XI5it566y3dc889Gjp0qJo3b64JEyYoPDxckydPPu/+y5Yt0zXXXKMBAwYoJiZGXbp0Uf/+/S95dwkAAAAAvMGlKCooKNCqVauUkJDw5wmsViUkJGj58uXnPaZjx45atWpVUQRt375dixYtUvfu3S94nfz8fOXk5BT7BQAAAACeEOTKzocOHZLD4VBUVFSx7VFRUdqyZct5jxkwYIAOHTqka6+9VoZhyG636/7777/o43Njx47Viy++6MpoAAAAAFAqHl99bunSpRozZozeffddrV69Wp999pkWLlyol19++YLHjBo1StnZ2UW/du/e7ekxAQAAAJiUS3eKqlWrJpvNpqysrGLbs7KyVLNmzfMe89xzz2nQoEG6++67JUmxsbHKzc3Vvffeq2eeeUZW67ldFhoaqtDQUFdGAwAAAIBScelOUUhIiNq2baslS5YUbXM6nVqyZIk6dOhw3mNOnjx5TvjYbDZJkmEYrs4LAAAAAG7l0p0iSRo5cqSGDBmiq666Su3atdO4ceOUm5uroUOHSpIGDx6sOnXqaOzYsZKknj176q233lLr1q3Vvn17paen67nnnlPPnj2L4ggAAAAAfMXlKOrbt68OHjyo559/XpmZmYqPj1dKSkrR4gu7du0qdmfo2WeflcVi0bPPPqu9e/eqevXq6tmzp1599VX3/RQAAAAAUEoWIwCeYcvJyVFkZKSys7MVERHh63EAAAAA+Ign2sDjq88BAAAAgD8jigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkR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", "text/plain": [ "
" - ] + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAMzCAYAAABp/LlpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABjHElEQVR4nO3dd3RUdd7H8c/MpBEgoYdiIBTpIQEUFtTFEghFEEWlhCJgxc7qKmvBCuq6LruK8oABLFRREAETFGUtoCAQejEBpCb0BAIpM3OfP9BIqJkwNff9OoezeOeWb/bMsry9d35jMQzDEAAAAACYlNXXAwAAAACALxFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATM3lKPruu+/Us2dP1a5dWxaLRfPmzbvkMUuXLlWbNm0UGhqqRo0aaerUqaUYFQAAAADcz+Uoys3NVVxcnMaPH1+i/Xfs2KEePXrohhtuUFpamh577DHdfffdSk1NdXlYAAAAAHA3i2EYRqkPtlg0d+5c9e7d+4L7PPXUU1q4cKE2bNhQtK1fv346duyYUlJSSntpAAAAAHCLIE9fYPny5UpISCi2LTExUY899tgFj8nPz1d+fn7RPzudTh05ckRVq1aVxWLx1KgAAAAA/JxhGDp+/Lhq164tq9U9SyR4PIoyMzMVFRVVbFtUVJRycnJ06tQplStX7pxjxo4dqxdffNHTowEAAAAIULt379YVV1zhlnN5PIpKY9SoURo5cmTRP2dnZ6tu3bravXu3IiIifDgZAAAAAF/KyclRdHS0Klas6LZzejyKatasqaysrGLbsrKyFBERcd67RJIUGhqq0NDQc7ZHREQQRQAAAADc+rEaj39PUYcOHbRkyZJi27766it16NDB05cGAAAAgEtyOYpOnDihtLQ0paWlSTq95HZaWpp27dol6fSjb4MHDy7a//7779f27dv197//XVu2bNG7776r2bNn6/HHH3fPTwAAAAAAl8HlKPrll1/UunVrtW7dWpI0cuRItW7dWs8//7wkaf/+/UWBJEn169fXwoUL9dVXXykuLk7/+te/9P777ysxMdFNPwIAAAAAlN5lfU+Rt+Tk5CgyMlLZ2dl8pggAAAAwMU+0gcc/UwQAAAAA/owoAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMLVSRdH48eMVExOjsLAwtW/fXitWrLjo/uPGjVOTJk1Urlw5RUdH6/HHH1deXl6pBgYAAAAAd3I5imbNmqWRI0dq9OjRWr16teLi4pSYmKgDBw6cd//p06fr6aef1ujRo7V582YlJydr1qxZ+sc//nHZwwMAAADA5XI5it566y3dc889Gjp0qJo3b64JEyYoPDxckydPPu/+y5Yt0zXXXKMBAwYoJiZGXbp0Uf/+/S95dwkAAAAAvMGlKCooKNCqVauUkJDw5wmsViUkJGj58uXnPaZjx45atWpVUQRt375dixYtUvfu3S94nfz8fOXk5BT7BQAAAACeEOTKzocOHZLD4VBUVFSx7VFRUdqyZct5jxkwYIAOHTqka6+9VoZhyG636/7777/o43Njx47Viy++6MpoAAAAAFAqHl99bunSpRozZozeffddrV69Wp999pkWLlyol19++YLHjBo1StnZ2UW/du/e7ekxAQAAAJiUS3eKqlWrJpvNpqysrGLbs7KyVLNmzfMe89xzz2nQoEG6++67JUmxsbHKzc3Vvffeq2eeeUZW67ldFhoaqtDQUFdGAwAAAIBScelOUUhIiNq2baslS5YUbXM6nVqyZIk6dOhw3mNOnjx5TvjYbDZJkmEYrs4LAAAAAG7l0p0iSRo5cqSGDBmiq666Su3atdO4ceOUm5uroUOHSpIGDx6sOnXqaOzYsZKknj176q233lLr1q3Vvn17paen67nnnlPPnj2L4ggAAAAAfMXlKOrbt68OHjyo559/XpmZmYqPj1dKSkrR4gu7du0qdmfo2WeflcVi0bPPPqu9e/eqevXq6tmzp1599VX3/RQAAAAAUEoWIwCeYcvJyVFkZKSys7MVERHh63EAAAAA+Ign2sDjq88BAAAAgD8jigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkRRQAAAABMjSgCAAAAYGpEEQAAAABTI4oAAAAAmBpRBAAAAMDUiCIAAAAApkYUAQAAADA1oggAAACAqRFFAAAAAEyNKAIAAABgakQRAAAAAFMjigAAAACYGlEEAAAAwNSIIgAAAACmRhQBAAAAMDWiCAAAAICpEUUAAAAATI0oAgAAAGBqRBEAAAAAUyOKAAAAAJgaUQQAAADA1IgiAAAAAKZGFAEAAAAwNaIIAAAAgKkR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" }, "metadata": {}, "output_type": "display_data" } ], - "source": [ - "scanpath_visualization(get_object(fixations_smooth), x, y, with_axes=True, path_width=1, axes_limits=(0, 1, 0, 1))" - ] + "execution_count": 11 }, { "cell_type": "markdown", @@ -1684,17 +1684,19 @@ }, { "cell_type": "code", - "execution_count": 12, "metadata": { - "ExecuteTime": { - "end_time": "2026-01-20T19:04:08.949807Z", - "start_time": "2026-01-20T19:04:08.947277Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2026-01-20T19:04:08.949807Z", + "start_time": "2026-01-20T19:04:08.947277Z" } }, + "source": [ + "len(get_object(fixations))" + ], "outputs": [ { "data": { @@ -1707,9 +1709,7 @@ "output_type": "execute_result" } ], - "source": [ - "len(get_object(fixations))" - ] + "execution_count": 12 }, { "cell_type": "markdown", @@ -1725,17 +1725,19 @@ }, { "cell_type": "code", - "execution_count": 13, "metadata": { - "ExecuteTime": { - "end_time": "2026-01-20T19:04:08.996066Z", - "start_time": "2026-01-20T19:04:08.992269Z" - }, "collapsed": false, "jupyter": { "outputs_hidden": false + }, + "ExecuteTime": { + "end_time": "2026-01-20T19:04:08.996066Z", + "start_time": "2026-01-20T19:04:08.992269Z" } }, + "source": [ + "len(get_object(fixations_smooth))" + ], "outputs": [ { "data": { @@ -1748,9 +1750,7 @@ "output_type": "execute_result" } ], - "source": [ - "len(get_object(fixations_smooth))" - ] + "execution_count": 13 }, { "cell_type": "markdown",