aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md')
-rw-r--r--docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md88
1 files changed, 45 insertions, 43 deletions
diff --git a/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md b/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md
index fb69f88..fa7a71e 100644
--- a/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md
+++ b/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md
@@ -7,49 +7,51 @@ Once [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) is [configured](confi
## Add ArLayer to ArFrame JSON configuration file
-The [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) class defines a space where to make matching of fixations with AOI and inside which those matchings need to be analyzed.
+The [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) class defines a space where to match fixations with AOI and inside which those matches need to be analyzed.
Here is an extract from the JSON [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) configuration file with a sample where one layer is added:
```json
{
- "name": "My FullHD screen",
- "size": [1920, 1080],
- ...
- "layers": {
- "MyLayer": {
- "aoi_scene" : {
- "GeoSector": [[860, 160], [1380, 100], [1660, 400], [1380, 740], [1440, 960], [920, 920], [680, 800], [640, 560]],
- "LeftPanel": {
- "Rectangle": {
- "x": 0,
- "y": 0,
- "width": 350,
- "height": 1080
- }
- },
- "CircularWidget": {
- "Circle": {
- "cx": 1800,
- "cy": 120,
- "radius": 80
- }
- }
- },
- "aoi_matcher": {
- "argaze.GazeAnalysis.DeviationCircleCoverage.AOIMatcher": {
- "coverage_threshold": 0.5
- }
- },
- "aoi_scan_path": {
- "duration_max": 30000
- },
- "aoi_scan_path_analyzers": {
- "argaze.GazeAnalysis.Basic.AOIScanPathAnalyzer": {},
- "argaze.GazeAnalysis.TransitionMatrix.AOIScanPathAnalyzer": {},
- "argaze.GazeAnalysis.NGram.AOIScanPathAnalyzer": {
- "n_min": 3,
- "n_max": 5
+ "argaze.ArFeatures.ArFrame": {
+ "name": "My FullHD screen",
+ "size": [1920, 1080],
+ ...
+ "layers": {
+ "MyLayer": {
+ "aoi_scene" : {
+ "GeoSector": [[860, 160], [1380, 100], [1660, 400], [1380, 740], [1440, 960], [920, 920], [680, 800], [640, 560]],
+ "LeftPanel": {
+ "Rectangle": {
+ "x": 0,
+ "y": 0,
+ "width": 350,
+ "height": 1080
+ }
+ },
+ "CircularWidget": {
+ "Circle": {
+ "cx": 1800,
+ "cy": 120,
+ "radius": 80
+ }
+ }
+ },
+ "aoi_matcher": {
+ "argaze.GazeAnalysis.DeviationCircleCoverage.AOIMatcher": {
+ "coverage_threshold": 0.5
+ }
+ },
+ "aoi_scan_path": {
+ "duration_max": 30000
+ },
+ "aoi_scan_path_analyzers": {
+ "argaze.GazeAnalysis.Basic.AOIScanPathAnalyzer": {},
+ "argaze.GazeAnalysis.TransitionMatrix.AOIScanPathAnalyzer": {},
+ "argaze.GazeAnalysis.NGram.AOIScanPathAnalyzer": {
+ "n_min": 3,
+ "n_max": 5
+ }
}
}
}
@@ -59,7 +61,7 @@ Here is an extract from the JSON [ArFrame](../../argaze.md/#argaze.ArFeatures.Ar
!!! note
- Timestamped gaze movements identified by parent [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) are passed one by one to each [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer). So, the execution of all [ArLayers](../../argaze.md/#argaze.ArFeatures.ArLayer) is done during parent [ArFrame.look](../../argaze.md/#argaze.ArFeatures.ArFrame.look) method call as explained in [previous chapter](configuration_and_execution.md).
+ Timestamped gaze movements identified by the parent [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) are passed one by one to each [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer). So, the execution of all [ArLayers](../../argaze.md/#argaze.ArFeatures.ArLayer) is done during the parent [ArFrame.look](../../argaze.md/#argaze.ArFeatures.ArFrame.look) method call, as explained in the [previous chapter](configuration_and_execution.md).
Now, let's understand the meaning of each JSON entry.
@@ -79,7 +81,7 @@ The set of 2D AOI into the layer as defined at [2D AOI description chapter](aoi_
### *aoi_matcher*
-The first [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) pipeline step aims to make match identified gaze movement with a layer's AOI.
+The first [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) pipeline step aims to match identified gaze movement with the layer's AOI.
![AOI matcher](../../img/aoi_matcher.png)
@@ -92,7 +94,7 @@ In the example file, the chosen matching algorithm is the [Deviation Circle Cove
### *aoi_scan_path*
-The second [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) pipeline step aims to build a [AOIScanPath](../../argaze.md/#argaze.GazeFeatures.AOIScanPath) defined as a list of [AOIScanSteps](../../argaze.md/#argaze.GazeFeatures.AOIScanStep) made by a set of successive fixations/saccades onto a same AOI.
+The second [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) pipeline step aims to build an [AOIScanPath](../../argaze.md/#argaze.GazeFeatures.AOIScanPath) defined as a list of [AOIScanSteps](../../argaze.md/#argaze.GazeFeatures.AOIScanStep) made by a set of successive fixations/saccades onto the same AOI.
![AOI scan path](../../img/aoi_scan_path.png)
@@ -101,7 +103,7 @@ Once gaze movements are matched to AOI, they are automatically appended to the A
The [AOIScanPath.duration_max](../../argaze.md/#argaze.GazeFeatures.AOIScanPath.duration_max) attribute is the duration from which older AOI scan steps are removed each time new AOI scan steps are added.
!!! note "Optional"
- JSON *aoi_scan_path* entry is not mandatory. If aoi_scan_path_analyzers entry is not empty, the [AOIScanPath](../../argaze.md/#argaze.GazeFeatures.AOIScanPath) step is automatically enabled.
+ JSON *aoi_scan_path* entry is not mandatory. If *aoi_scan_path_analyzers* entry is not empty, the [AOIScanPath](../../argaze.md/#argaze.GazeFeatures.AOIScanPath) step is automatically enabled.
### *aoi_scan_path_analyzers*
@@ -109,4 +111,4 @@ Finally, the last [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) pipeline
Each analysis algorithm can be selected by instantiating a particular [AOIScanPathAnalyzer from the GazeAnalysis submodule](pipeline_modules/aoi_scan_path_analyzers.md) or [from another Python package](advanced_topics/module_loading.md).
-In the example file, the chosen analysis algorithms are the [Basic](../../argaze.md/#argaze.GazeAnalysis.Basic) module, the [TransitionMatrix](../../argaze.md/#argaze.GazeAnalysis.TransitionMatrix) module and the [NGram](../../argaze.md/#argaze.GazeAnalysis.NGram) module which has two specific *n_min* and *n_max* attributes.
+In the example file, the chosen analysis algorithms are the [Basic](../../argaze.md/#argaze.GazeAnalysis.Basic) module, the [TransitionMatrix](../../argaze.md/#argaze.GazeAnalysis.TransitionMatrix) module and the [NGram](../../argaze.md/#argaze.GazeAnalysis.NGram) module, which has two specific *n_min* and *n_max* attributes.