From c03097c7b8e9b3fbbe188c0c99908fae2b28ba37 Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Wed, 10 Apr 2024 12:37:08 +0200 Subject: Adding new argaze.load package function to ease the access to DataFeatures.from_json function. --- .../aruco_markers_pipeline/configuration_and_execution.md | 6 +++--- .../advanced_topics/module_loading.md | 4 ++-- .../gaze_analysis_pipeline/configuration_and_execution.md | 6 +++--- src/argaze.test/ArUcoMarkers/ArUcoCamera.py | 4 ++-- src/argaze/__init__.py | 15 +++++++++++++++ src/argaze/__main__.py | 4 ++-- 6 files changed, 27 insertions(+), 12 deletions(-) diff --git a/docs/user_guide/aruco_markers_pipeline/configuration_and_execution.md b/docs/user_guide/aruco_markers_pipeline/configuration_and_execution.md index 885db50..dd36ed3 100644 --- a/docs/user_guide/aruco_markers_pipeline/configuration_and_execution.md +++ b/docs/user_guide/aruco_markers_pipeline/configuration_and_execution.md @@ -9,7 +9,7 @@ As [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) inherits from ## Load JSON configuration file -The [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) internal pipeline loads from a JSON configuration file thanks to [ArUcoCamera.from_json](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera.from_json) class method. +An [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) pipeline can be loaded from a JSON configuration file thanks to [argaze.load](../../argaze.md/#argaze.load) package method. Here is a simple JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) configuration file example: @@ -53,10 +53,10 @@ Here is a simple JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCa Then, here is how to load the JSON file: ```python -from argaze.ArUcoMarkers import ArUcoCamera +import argaze # Load ArUcoCamera -with ArUcoCamera.ArUcoCamera.from_json('./configuration.json') as aruco_camera: +with argaze.load('./configuration.json') as aruco_camera: # Do something with ArUcoCamera ... diff --git a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md index fb717b6..0e439a9 100644 --- a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md +++ b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md @@ -37,13 +37,13 @@ To do so, simply prepend the package where to find the module into the JSON conf Then, load your package from the python script where the [ArFrame](../../../argaze.md/#argaze.ArFeatures.ArFrame) is created. ```python -from argaze import ArFeatures +import argaze # Import your own package import my_package # Load ArFrame -with ArFeatures.ArFrame.from_json('./configuration.json') as ar_frame: +with argaze.load('./configuration.json') as ar_frame: # Print ArFrame attributes for module, scan_path_analyzer in ar_frame.scan_path_analyzers.items(): diff --git a/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md b/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md index 7fbbef0..47b820b 100644 --- a/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md +++ b/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md @@ -7,7 +7,7 @@ The [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) class defines a rectan ## Load JSON configuration file -The [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) internal pipeline is entirely customizable from a JSON configuration file thanks to [ArFrame.from_json](../../argaze.md/#argaze.ArFeatures.ArFrame.from_json) class method. +An [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) pipeline can be loaded from a JSON configuration file thanks to [argaze.load](../../argaze.md/#argaze.load) package method. Here is a simple JSON [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) configuration file example: @@ -36,10 +36,10 @@ Here is a simple JSON [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) conf Then, here is how to load the JSON file: ```python -from argaze import ArFeatures +import argaze # Load ArFrame -with ArFeatures.ArFrame.from_json('./configuration.json') as ar_frame: +with argaze.load('./configuration.json') as ar_frame: # Do something with ArFrame ... diff --git a/src/argaze.test/ArUcoMarkers/ArUcoCamera.py b/src/argaze.test/ArUcoMarkers/ArUcoCamera.py index 091383e..eb930ab 100644 --- a/src/argaze.test/ArUcoMarkers/ArUcoCamera.py +++ b/src/argaze.test/ArUcoMarkers/ArUcoCamera.py @@ -19,7 +19,7 @@ __license__ = "GPLv3" import unittest import os -from argaze.ArUcoMarkers import ArUcoCamera +import argaze import numpy @@ -34,7 +34,7 @@ class TestArUcoCameraClass(unittest.TestCase): json_filepath = os.path.join(current_directory, 'utils/aruco_camera.json') # Load test aruco camera - with ArUcoCamera.ArUcoCamera.from_json(json_filepath) as aruco_camera: + with argaze.load(json_filepath) as aruco_camera: # Check aruco camera meta data self.assertEqual(aruco_camera.name, "TestArUcoCamera") diff --git a/src/argaze/__init__.py b/src/argaze/__init__.py index 8c0068f..c492882 100644 --- a/src/argaze/__init__.py +++ b/src/argaze/__init__.py @@ -3,3 +3,18 @@ ArGaze is divided in submodules dedicated to various specifics features. """ __all__ = ['ArUcoMarkers', 'AreaOfInterest', 'ArFeatures', 'GazeFeatures', 'GazeAnalysis', 'PupilFeatures', 'PupilAnalysis', 'DataFeatures', 'utils'] + +def load(filepath: str) -> any: + """ + Load object instance from .json file. + + !!! note + The directory where configuration file is will be the global working directory. + + Parameters: + configuration_filepath: path to json configuration file + """ + + from argaze import DataFeatures + + return DataFeatures.from_json(filepath) \ No newline at end of file diff --git a/src/argaze/__main__.py b/src/argaze/__main__.py index 3e1fe9e..bd0f34c 100644 --- a/src/argaze/__main__.py +++ b/src/argaze/__main__.py @@ -20,7 +20,7 @@ import argparse import logging import contextlib -from .DataFeatures import from_json +from . import load from .ArFeatures import ArCamera, ArContext import cv2 @@ -37,7 +37,7 @@ args = parser.parse_args() logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG if args.verbose else logging.INFO) # Load context from JSON file -with from_json(args.context_file) as context: +with load(args.context_file) as context: # Loaded object must be a subclass of ArContext if not issubclass(type(context), ArContext): -- cgit v1.1