aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guide/pipeline_input_context
diff options
context:
space:
mode:
authorThéo de la Hogue2024-04-22 14:31:24 +0200
committerThéo de la Hogue2024-04-22 14:31:24 +0200
commite7344955a1368c24c55fc12b2cb9ff2582278785 (patch)
tree88b7da7f34318c5eb69f0ed810e2c518d0f0f9b7 /docs/user_guide/pipeline_input_context
parent191da6950e7d4e9a7822b779ffb41dec3a1b7cb5 (diff)
downloadargaze-e7344955a1368c24c55fc12b2cb9ff2582278785.zip
argaze-e7344955a1368c24c55fc12b2cb9ff2582278785.tar.gz
argaze-e7344955a1368c24c55fc12b2cb9ff2582278785.tar.bz2
argaze-e7344955a1368c24c55fc12b2cb9ff2582278785.tar.xz
First work around ArContext documentation.
Diffstat (limited to 'docs/user_guide/pipeline_input_context')
-rw-r--r--docs/user_guide/pipeline_input_context/configuration_and_connection.md35
-rw-r--r--docs/user_guide/pipeline_input_context/context_definition.md58
-rw-r--r--docs/user_guide/pipeline_input_context/introduction.md15
3 files changed, 108 insertions, 0 deletions
diff --git a/docs/user_guide/pipeline_input_context/configuration_and_connection.md b/docs/user_guide/pipeline_input_context/configuration_and_connection.md
new file mode 100644
index 0000000..392860f
--- /dev/null
+++ b/docs/user_guide/pipeline_input_context/configuration_and_connection.md
@@ -0,0 +1,35 @@
+Load and connect a context
+==========================
+
+Once an [ArContext is defined](context_definition.md), it have to be connected to a pipeline.
+
+# Load JSON configuration file
+
+An [ArContext](../../argaze.md/#argaze.ArFeatures.ArContext) can be loaded from a JSON configuration file thanks to the argaze.load package method.
+
+Here is a JSON configuration file related to the [previously defined Example context](context_definition.md):
+
+```json
+{
+ "my_context.Example": {
+ "name": "My example context",
+ "parameter": ...,
+ "pipeline": "pipeline.json"
+ }
+}
+```
+
+Then, here is how to load the JSON file:
+
+```python
+import argaze
+
+# Load ArContext
+with argaze.load('./configuration.json') as ar_context:
+
+ # Do something with ArContext
+ ...
+```
+
+!!! note
+ There is nothing to do to execute a loaded context as it is handled inside its own **__enter__** method.
diff --git a/docs/user_guide/pipeline_input_context/context_definition.md b/docs/user_guide/pipeline_input_context/context_definition.md
new file mode 100644
index 0000000..9f4981c
--- /dev/null
+++ b/docs/user_guide/pipeline_input_context/context_definition.md
@@ -0,0 +1,58 @@
+Define a context class
+======================
+
+The [ArContext](../../argaze.md/#argaze.ArFeatures.ArContext) class defines a generic class interface to handle pipeline inputs according to [Python context manager feature](https://docs.python.org/3/reference/datamodel.html#context-managers).
+
+# Write Python context file
+
+A specific [ArContext](../../argaze.md/#argaze.ArFeatures.ArContext) can be defined into a Python file.
+
+Here is an example context defined into *my_context.py* file:
+
+```python
+from argaze import ArFeatures, DataFeatures
+
+class Example(ArFeatures.ArContext):
+
+ @DataFeatures.PipelineStepInit
+ def __init__(self, **kwargs):
+
+ # Init ArContext class
+ super().__init__()
+
+ # Init private attribute
+ self.__parameter = ...
+
+ @property
+ def parameter(self):
+ """Any required parameter."""
+ return self.__parameter
+
+ @parameter.setter
+ def parameter(self, parameter):
+ self.__parameter = parameter
+
+ @DataFeatures.PipelineStepEnter
+ def __enter__(self):
+
+ # Start context according any required parameter
+ ... self.parameter
+
+ # Assuming that timestamp, x and y values are available
+ ...
+
+ # Process timestamped gaze position
+ self._process_gaze_position(timestamp = timestamp, x = x, y = y)
+
+ return self
+
+ @DataFeatures.PipelineStepExit
+ def __exit__(self, exception_type, exception_value, exception_traceback):
+
+ # End context
+ ...
+```
+
+!!! note ""
+
+ The next chapter explains how to [load a context to connect it with a pipeline](configuration_and_connection.md). \ No newline at end of file
diff --git a/docs/user_guide/pipeline_input_context/introduction.md b/docs/user_guide/pipeline_input_context/introduction.md
new file mode 100644
index 0000000..002f1e2
--- /dev/null
+++ b/docs/user_guide/pipeline_input_context/introduction.md
@@ -0,0 +1,15 @@
+Overview
+========
+
+This section explains how to wrap any pipeline detailled in previous sections into various context.
+
+First, let's look at the schema below: it gives an overview of the main notions involved in the following chapters.
+
+![Pipeline input context](../../img/pipeline_input_context.png)
+
+To build your own input context, you need to know:
+
+* [How to define a context class](context_definition.md),
+* [How to load and connect a context](configuration_and_connection.md),
+* [How to visualize a context](visualization.md),
+* [How to pause and resume a context](pause_and_resume.md)