gr-libs 0.2.2__py3-none-any.whl → 0.2.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. gr_libs/_evaluation/_generate_experiments_results.py +0 -141
  2. gr_libs/_version.py +2 -2
  3. gr_libs/all_experiments.py +73 -107
  4. gr_libs/environment/environment.py +22 -2
  5. gr_libs/evaluation/generate_experiments_results.py +100 -0
  6. gr_libs/ml/neural/deep_rl_learner.py +17 -20
  7. gr_libs/odgr_executor.py +20 -25
  8. gr_libs/problems/consts.py +568 -290
  9. gr_libs/recognizer/_utils/__init__.py +1 -0
  10. gr_libs/recognizer/gr_as_rl/gr_as_rl_recognizer.py +12 -1
  11. gr_libs/recognizer/graml/graml_recognizer.py +16 -8
  12. gr_libs/tutorials/gcdraco_panda_tutorial.py +6 -2
  13. gr_libs/tutorials/gcdraco_parking_tutorial.py +3 -1
  14. gr_libs/tutorials/graml_minigrid_tutorial.py +16 -12
  15. gr_libs/tutorials/graml_panda_tutorial.py +6 -2
  16. gr_libs/tutorials/graml_parking_tutorial.py +3 -1
  17. gr_libs/tutorials/graml_point_maze_tutorial.py +15 -2
  18. {gr_libs-0.2.2.dist-info → gr_libs-0.2.5.dist-info}/METADATA +27 -16
  19. {gr_libs-0.2.2.dist-info → gr_libs-0.2.5.dist-info}/RECORD +26 -25
  20. {gr_libs-0.2.2.dist-info → gr_libs-0.2.5.dist-info}/WHEEL +1 -1
  21. tests/test_odgr_executor_expertbasedgraml.py +14 -0
  22. tests/test_odgr_executor_gcdraco.py +14 -0
  23. tests/test_odgr_executor_gcgraml.py +14 -0
  24. tests/test_odgr_executor_graql.py +14 -0
  25. gr_libs/_evaluation/_analyze_results_cross_alg_cross_domain.py +0 -260
  26. gr_libs/_evaluation/_generate_task_specific_statistics_plots.py +0 -497
  27. gr_libs/_evaluation/_get_plans_images.py +0 -61
  28. gr_libs/_evaluation/_increasing_and_decreasing_.py +0 -106
  29. /gr_libs/{_evaluation → evaluation}/__init__.py +0 -0
  30. {gr_libs-0.2.2.dist-info → gr_libs-0.2.5.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ from .format import recognizer_str_to_obj
@@ -193,6 +193,10 @@ class Draco(GRAsRL, GaAgentTrainerRecognizer):
193
193
  if self.rl_agent_type == None:
194
194
  self.rl_agent_type = DeepRLAgent
195
195
  self.evaluation_function = kwargs.get("evaluation_function")
196
+ if self.evaluation_function is None:
197
+ from gr_libs.metrics.metrics import mean_wasserstein_distance
198
+
199
+ self.evaluation_function = mean_wasserstein_distance
196
200
  assert callable(
197
201
  self.evaluation_function
198
202
  ), "Evaluation function must be a callable function."
@@ -218,11 +222,18 @@ class GCDraco(GRAsRL, LearningRecognizer, GaAdaptingRecognizer):
218
222
  if self.rl_agent_type == None:
219
223
  self.rl_agent_type = GCDeepRLAgent
220
224
  self.evaluation_function = kwargs.get("evaluation_function")
225
+ if self.evaluation_function is None:
226
+ from gr_libs.metrics.metrics import mean_wasserstein_distance
227
+
228
+ self.evaluation_function = mean_wasserstein_distance
221
229
  assert callable(
222
230
  self.evaluation_function
223
231
  ), "Evaluation function must be a callable function."
224
232
 
225
- def domain_learning_phase(self, base_goals: list[str], train_configs):
233
+ def domain_learning_phase(self, problems):
234
+ base = problems["gc"]
235
+ base_goals = base["goals"]
236
+ train_configs = base["train_configs"]
226
237
  super().domain_learning_phase(base_goals, train_configs)
227
238
  agent_kwargs = {
228
239
  "domain_name": self.env_prop.domain_name,
@@ -335,11 +335,15 @@ class BGGraml(Graml):
335
335
  def __init__(self, *args, **kwargs):
336
336
  super().__init__(*args, **kwargs)
337
337
 
338
- def domain_learning_phase(self, base_goals: list[str], train_configs: list):
339
- assert len(train_configs) == len(
340
- base_goals
341
- ), "There should be train configs for every goal in BGGraml."
342
- return super().domain_learning_phase(base_goals, train_configs)
338
+ def domain_learning_phase(self, problems):
339
+ # Always use 'bg' for BGGraml
340
+ base = problems["bg"]
341
+ base_goals = base["goals"]
342
+ train_configs = base["train_configs"]
343
+ assert len(base_goals) == len(
344
+ train_configs
345
+ ), "base_goals and train_configs should have the same length"
346
+ super().domain_learning_phase(base_goals, train_configs)
343
347
 
344
348
  # In case we need goal-directed agent for every goal
345
349
  def train_agents_on_base_goals(self, base_goals: list[str], train_configs: list):
@@ -544,11 +548,15 @@ class GCGraml(Graml, GaAdaptingRecognizer):
544
548
  and not self.env_prop.is_action_discrete()
545
549
  )
546
550
 
547
- def domain_learning_phase(self, base_goals: list[str], train_configs: list):
551
+ def domain_learning_phase(self, problems):
552
+ # Always use 'gc' for GCGraml
553
+ base = problems["gc"]
554
+ base_goals = base["goals"]
555
+ train_configs = base["train_configs"]
548
556
  assert (
549
557
  len(train_configs) == 1
550
- ), "There should be one train config for the sole gc agent in GCGraml."
551
- return super().domain_learning_phase(base_goals, train_configs)
558
+ ), "GCGraml should only have one train config for the base goals, it uses a single agent"
559
+ super().domain_learning_phase(base_goals, train_configs)
552
560
 
553
561
  # In case we need goal-directed agent for every goal
554
562
  def train_agents_on_base_goals(self, base_goals: list[str], train_configs: list):
@@ -17,8 +17,12 @@ def run_gcdraco_panda_tutorial():
17
17
  )
18
18
 
19
19
  recognizer.domain_learning_phase(
20
- base_goals=[np.array([PandaProperty.sample_goal()]) for _ in range(30)],
21
- train_configs=[(SAC, 800000)],
20
+ {
21
+ "gc": {
22
+ "goals": [np.array([PandaProperty.sample_goal()]) for _ in range(30)],
23
+ "train_configs": [(SAC, 800000)],
24
+ }
25
+ }
22
26
  )
23
27
 
24
28
  recognizer.goals_adaptation_phase(
@@ -15,7 +15,9 @@ def run_gcdraco_parking_tutorial():
15
15
  evaluation_function=mean_wasserstein_distance, # or mean_p_value
16
16
  )
17
17
 
18
- recognizer.domain_learning_phase([i for i in range(1, 21)], [(PPO, 200000)])
18
+ recognizer.domain_learning_phase(
19
+ {"gc": {"goals": [i for i in range(1, 21)], "train_configs": [(PPO, 200000)]}}
20
+ )
19
21
  recognizer.goals_adaptation_phase(
20
22
  dynamic_goals=["1", "11", "21"]
21
23
  # no need for expert sequence generation since GCRL is used
@@ -12,18 +12,22 @@ def run_graml_minigrid_tutorial():
12
12
  )
13
13
 
14
14
  recognizer.domain_learning_phase(
15
- base_goals=[
16
- (11, 1),
17
- (11, 11),
18
- (1, 11),
19
- (7, 11),
20
- (8, 1),
21
- (10, 6),
22
- (6, 9),
23
- (11, 3),
24
- (11, 5),
25
- ],
26
- train_configs=[(QLEARNING, 100000) for _ in range(9)],
15
+ {
16
+ "bg": {
17
+ "goals": [
18
+ (11, 1),
19
+ (11, 11),
20
+ (1, 11),
21
+ (7, 11),
22
+ (8, 1),
23
+ (10, 6),
24
+ (6, 9),
25
+ (11, 3),
26
+ (11, 5),
27
+ ],
28
+ "train_configs": [(QLEARNING, 100000) for _ in range(9)],
29
+ }
30
+ }
27
31
  )
28
32
 
29
33
  recognizer.goals_adaptation_phase(
@@ -14,8 +14,12 @@ def run_graml_panda_tutorial():
14
14
  domain_name=PANDA, env_name="PandaMyReachDense"
15
15
  )
16
16
  recognizer.domain_learning_phase(
17
- base_goals=[np.array([PandaProperty.sample_goal()]) for _ in range(1, 30)],
18
- train_configs=[(SAC, 800000)],
17
+ {
18
+ "gc": {
19
+ "goals": [np.array([PandaProperty.sample_goal()]) for _ in range(30)],
20
+ "train_configs": [(SAC, 800000)],
21
+ }
22
+ }
19
23
  )
20
24
  recognizer.goals_adaptation_phase(
21
25
  dynamic_goals=[
@@ -11,7 +11,9 @@ from gr_libs.recognizer.graml.graml_recognizer import GCGraml
11
11
  def run_graml_parking_tutorial():
12
12
  recognizer = GCGraml(domain_name=PARKING, env_name="Parking-S-14-PC-")
13
13
 
14
- recognizer.domain_learning_phase([i for i in range(1, 21)], [(PPO, 200000)])
14
+ recognizer.domain_learning_phase(
15
+ {"gc": {"goals": [i for i in range(1, 21)], "train_configs": [(PPO, 200000)]}}
16
+ )
15
17
  recognizer.goals_adaptation_phase(
16
18
  dynamic_goals=["1", "11", "21"]
17
19
  # no need for expert sequence generation since GCRL is used
@@ -14,8 +14,21 @@ def run_graml_point_maze_tutorial():
14
14
  )
15
15
 
16
16
  recognizer.domain_learning_phase(
17
- [(9, 1), (9, 9), (1, 9), (3, 3), (3, 4), (8, 2), (3, 7), (2, 8)],
18
- [(SAC, 200000) for _ in range(8)],
17
+ {
18
+ "bg": {
19
+ "goals": [
20
+ (9, 1),
21
+ (9, 9),
22
+ (1, 9),
23
+ (3, 3),
24
+ (3, 4),
25
+ (8, 2),
26
+ (3, 7),
27
+ (2, 8),
28
+ ],
29
+ "train_configs": [(SAC, 200000) for _ in range(8)],
30
+ }
31
+ }
19
32
  )
20
33
 
21
34
  recognizer.goals_adaptation_phase(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gr_libs
3
- Version: 0.2.2
3
+ Version: 0.2.5
4
4
  Summary: Package with goal recognition frameworks baselines
5
5
  Author: Ben Nageris
6
6
  Author-email: Matan Shamir <matan.shamir@live.biu.ac.il>, Osher Elhadad <osher.elhadad@live.biu.ac.il>
@@ -110,11 +110,14 @@ For any issues or troubleshooting, please refer to the repository's issue tracke
110
110
 
111
111
  Successors of algorithms that don't differ in their specifics are added in parentheses after the algorithm name. For example, since GC-DRACO and DRACO share the same column values, they're written on one line as DRACO (GC).
112
112
 
113
- | **Algorithm** | **Supervised** | **Reinforcement Learning** | **Discrete States** | **Continuous States** | **Discrete Actions** | **Continuous Actions** | **Model-Based** | **Model-Free** | **Action-Only** |
114
- |--------------|--------------|------------------------|------------------|------------------|--------------|--------------|--------------|--------------|--------------|
115
- | GRAQL | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
116
- | DRACO (GC) | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
117
- | GRAML (GC, BG) | | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | |
113
+ | **Algorithm** | **Supervised** | **Reinforcement Learning** | **Discrete States** | **Continuous States** | **Discrete Actions** | **Continuous Actions** | **Model-Based** | **Model-Free** | **Action-Only** | **Supported Environments** |
114
+ |---------------------|----------------|---------------------------|---------------------|----------------------|----------------------|-----------------------|------------------|----------------|----------------|--------------------------------------------|
115
+ | Graql | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | Minigrid |
116
+ | Draco | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | PointMaze, Panda Reach, Parking |
117
+ | GCDraco | | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | | Panda Reach, Parking |
118
+ | ExpertBasedGraml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | Panda Reach, Parking |
119
+ | BGGraml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | Minigrid, PointMaze |
120
+ | GCGraml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | Panda Reach, Parking |
118
121
 
119
122
  ## Supported Domains
120
123
 
@@ -259,20 +262,28 @@ A part of the contribution of this package is standardizing the evaluations of M
259
262
  consts.py provides a set of ODGR problems on which the framework can be evaluated.
260
263
  The 'evaluations' sub-package provides scripts to analyze the results of the all_experiments.py execution, done over the ODGR the problems defined at consts.py.
261
264
 
262
- In order to parallelize executions of odgr_executor.py, you can edit all_experiments.py with your combination of domains, environments and tasks.
263
- This script use multiprocessing to simultaniously execute many odgr_executor.py python executions as child processes.
265
+ #### Running all_experiments.py
264
266
 
265
- It logs failures and successful executions for debugability.
267
+ You can now run `all_experiments.py` with your desired combination of domains, environments, tasks, and recognizers directly from the command line, without editing the script:
266
268
 
267
- After execution, another level of abstraction for the results is created. For example, when running for Graql in the minigrid domain:
268
269
  ```sh
269
- outputs\summaries\detailed_summary_minigrid_Graql.txt
270
+ python gr_libs/all_experiments.py \
271
+ --domains minigrid parking \
272
+ --envs MiniGrid-SimpleCrossingS13N4 Parking-S-14-PC- \
273
+ --tasks L1 L2 L3 L4 L5 \
274
+ --recognizers ExpertBasedGraml Graql \
275
+ --n 5
270
276
  ```
271
- Will show the accuracies for every ODGR problem, for every percentage and type of input in a table-like .txt format, whike:
272
- ```sh
273
- outputs\summaries\compiled_summary_minigrid_Graql.txt
274
- ```
275
- Will show the same results in a more compact summary.
277
+
278
+ - `--domains`: List of domains to run experiments on.
279
+ - `--envs`: List of environments (must be in the same order as domains).
280
+ - `--tasks`: List of tasks (applied to all domain/env pairs).
281
+ - `--recognizers`: List of recognizers/algorithms to evaluate.
282
+ - `--n`: Number of times to execute each task (default: 5).
283
+
284
+ This script uses multiprocessing to simultaneously execute many `odgr_executor.py` runs as child processes. It logs failures and successful executions for debugability.
285
+
286
+ After execution, summary files are generated in `outputs/summaries/` for further analysis and plotting.
276
287
 
277
288
  ### Using analysis scripts
278
289
  The repository provides benchmark domains and scripts for analyzing experimental results. The `evaluation` directory contains tools for processing and visualizing the results from odgr_executor.py and all_experiments.py.
@@ -1,17 +1,14 @@
1
1
  gr_libs/__init__.py,sha256=XGx0_nWGgy-1zEQUXHRBs3TTb13jX9yOxVvSaavCkBk,376
2
- gr_libs/_version.py,sha256=OjGGK5TcHVG44Y62aAqeJH4CskkZoY9ydbHOtCDew50,511
3
- gr_libs/all_experiments.py,sha256=0Xm1KZ1YDWGcAiYKc6IilZ-UyVuxm77iZNsUVzTURqY,11357
4
- gr_libs/odgr_executor.py,sha256=AdO5qpQ6fZcVRxJg0O-mSKDXim3gVQbq8vSmfx0AjQk,10615
5
- gr_libs/_evaluation/__init__.py,sha256=trZ-4PyOhzEEK_TvQLfbnNFcqYuN6SdRjDkkAdW6MW8,78
6
- gr_libs/_evaluation/_analyze_results_cross_alg_cross_domain.py,sha256=ksguC1zeokjpd_ItC5e6MX8HE9qEtjw-uxCXzwGsO88,9863
7
- gr_libs/_evaluation/_generate_experiments_results.py,sha256=Nj2XLDJ-g9Vn_3oA3tEDu8qWQcIT25Hf_tRySm00oGc,5163
8
- gr_libs/_evaluation/_generate_task_specific_statistics_plots.py,sha256=Jgst3PW-XTu1JHWhyl73zi4mqoUI3U3dHLIUemKSx7c,19051
9
- gr_libs/_evaluation/_get_plans_images.py,sha256=a_e97aOMiZ8toBiAIzJCx75lF9RLiVfxROYvcoNy6rM,2729
10
- gr_libs/_evaluation/_increasing_and_decreasing_.py,sha256=1VOHrriv9mdhc1fxNjVAsu-sO77KRnscbmFXNUub0YU,3868
2
+ gr_libs/_version.py,sha256=N3oBwJUFmS-AwCjqOcSlRW4GvSq-uJJMaBvoGfv1-hM,511
3
+ gr_libs/all_experiments.py,sha256=OTTMx5ddy7z3kJbElQcR5nwEtshPsoehNPwDuMzojcc,10006
4
+ gr_libs/odgr_executor.py,sha256=ttfEjeEBjr_YusegCX2zx11NBMfeXUwyKJjryYS6QaY,10685
5
+ gr_libs/_evaluation/_generate_experiments_results.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
6
  gr_libs/environment/__init__.py,sha256=xCCzTFDrj_ijdLoZ-PzGyyYDeU2aoW19X1da76_x9iM,1458
12
- gr_libs/environment/environment.py,sha256=G3XXuhJDtduOtNeMCbwbMAygfP55AI07Aufs9QrggWQ,16389
7
+ gr_libs/environment/environment.py,sha256=fAjkM5XyfFBlP6U3yjMyGj_WDI2c4fM2Ac-e7-kSKuM,16940
13
8
  gr_libs/environment/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
9
  gr_libs/environment/_utils/utils.py,sha256=dKuWoUpyuGSJL6qHQfvvJnFf4g-Rh1t2ykuRNrsIvP8,614
10
+ gr_libs/evaluation/__init__.py,sha256=trZ-4PyOhzEEK_TvQLfbnNFcqYuN6SdRjDkkAdW6MW8,78
11
+ gr_libs/evaluation/generate_experiments_results.py,sha256=mXsGlOJKqRwtTDxuIVlsZhwgLyHAKb3zmK6jAVE7G7o,3420
15
12
  gr_libs/metrics/__init__.py,sha256=dQo4cMqrOB2-VLDxTIGryCm14mUnmEXs4F8jqcgNsY4,145
16
13
  gr_libs/metrics/metrics.py,sha256=tpjr4hKt5AGft5H2YxkbF0O8La5JZQaOmnkyjptD2M8,13430
17
14
  gr_libs/ml/__init__.py,sha256=xX9InKnWhYm8e0Lhsnnm0H68yBPTNEfq756w95xv-98,83
@@ -20,7 +17,7 @@ gr_libs/ml/consts.py,sha256=vsEB1nk5V_qP3FjNlv4vBKeTTFngV3RNaNp6fWnmEz0,366
20
17
  gr_libs/ml/base/__init__.py,sha256=f63VN3Lv4tQp3dAZjtT78PGV5XuOD8WlU4svy43LZrU,123
21
18
  gr_libs/ml/base/rl_agent.py,sha256=Ewqu583gUkgRmeGWCJgkyDBKxTqQnN4qa2vxq0-ydoE,3843
22
19
  gr_libs/ml/neural/__init__.py,sha256=vGdjx1KzlB9UxNRwkAeYBEoYdVtRdhj0M4mtWuzqvU8,55
23
- gr_libs/ml/neural/deep_rl_learner.py,sha256=iy0N0BaUW3jRttLYUteApNWBI5pIYZTjJn2v32UVUQ4,26950
20
+ gr_libs/ml/neural/deep_rl_learner.py,sha256=fq5n78RelIi794nNIl9x-W8ZnO5kXmD0LYv2q_2xMs8,26690
24
21
  gr_libs/ml/neural/utils/__init__.py,sha256=Av5wB2eSHR7spHqZFdgau_9EJV0FmijaYqXeyGMwktQ,69
25
22
  gr_libs/ml/neural/utils/dictlist.py,sha256=ORFez_KmaCzraStF97hxdgCAAALP4Er8u3e9RcqlvhM,1030
26
23
  gr_libs/ml/planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -42,30 +39,34 @@ gr_libs/ml/utils/math.py,sha256=7Au9L-FHE7eB1ygLbbuR6AhZK6kq8D_9srVtu4iDMPk,429
42
39
  gr_libs/ml/utils/other.py,sha256=93oaveiHUzWt_rCDVqybrpHdAfI3UBPCto31Nm5yT0Y,506
43
40
  gr_libs/ml/utils/storage.py,sha256=CgZHWcC3GovKe-U3Cvwz0s5qCbBrYHY6w_CV-LnTquc,3791
44
41
  gr_libs/problems/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- gr_libs/problems/consts.py,sha256=kgmaUi3wbHvcBfnIaXT8D79J_cD1yTrwgha6k3Y429Y,62096
42
+ gr_libs/problems/consts.py,sha256=FQk2TaKAFHdZiISubGXeYleBaOXpk8ZC749NtP5RqWs,68520
46
43
  gr_libs/recognizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
44
  gr_libs/recognizer/recognizer.py,sha256=gtUttI1473co5ZHgO7-wQ7HL-aYJp0S4X6goqVYyT24,3091
48
- gr_libs/recognizer/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
+ gr_libs/recognizer/_utils/__init__.py,sha256=MvXPRyr30W5C_n-Dul3aheE_9SWy2aIMGINKWj36mfM,42
49
46
  gr_libs/recognizer/_utils/format.py,sha256=eCoqEwv7YdLrF5nb-xAbDXxQ-ogvq_DHf9I2uwdfv-0,512
50
47
  gr_libs/recognizer/gr_as_rl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- gr_libs/recognizer/gr_as_rl/gr_as_rl_recognizer.py,sha256=ztucO7YRZ3mZDGdt98OUAu_DJHVgUhUEvIngL2swfCE,9705
48
+ gr_libs/recognizer/gr_as_rl/gr_as_rl_recognizer.py,sha256=asjsjg52f43vlFPw1iT7PK8oOopa-u0UN7XBgiuufAY,10158
52
49
  gr_libs/recognizer/graml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
50
  gr_libs/recognizer/graml/_gr_dataset.py,sha256=JChqXOh7TP8yu-zQPCQ34ghw7iJFnAzd2FkeOyndvFk,10038
54
- gr_libs/recognizer/graml/graml_recognizer.py,sha256=M-tvipAMn_tiWbM3M74D5zH8yKbPEwR-sKTQy3FZT3E,26058
51
+ gr_libs/recognizer/graml/graml_recognizer.py,sha256=BVV-qn46AffkALRudBydHU24BGwMnvGFB1WSkIOAcWs,26292
55
52
  gr_libs/tutorials/draco_panda_tutorial.py,sha256=9_scjcyMjkjw8l6g9E-GKOrFTxsIIndW_J1WKjE6-wo,2146
56
53
  gr_libs/tutorials/draco_parking_tutorial.py,sha256=jjbNzSv5l4EvjydwslNYh51xHoIkNmcjPbi0YL6WAeA,1896
57
- gr_libs/tutorials/gcdraco_panda_tutorial.py,sha256=KsYStJPk9vI7PUuJrwBaMcQ5a9GT-00-DGJgqRmYvgs,2230
58
- gr_libs/tutorials/gcdraco_parking_tutorial.py,sha256=wvhwIwXw_h_VP4OBdsnv2rn9WTTaXJXA_xZ8mLHxcmg,2053
59
- gr_libs/tutorials/graml_minigrid_tutorial.py,sha256=msw19nRKAFUJGZy0JNym1At3Zoe5cGxppt24xcElLTQ,2205
60
- gr_libs/tutorials/graml_panda_tutorial.py,sha256=DC0AyiZswc5zOKFd0xTYU72ugaCLlf7xtnOGFsmv7MQ,2140
61
- gr_libs/tutorials/graml_parking_tutorial.py,sha256=Qf39bdpF4lgppKlDO3qa1CfswmbubqKBXJlPMn2PfhI,1941
62
- gr_libs/tutorials/graml_point_maze_tutorial.py,sha256=L95_2u1SA1aZJS-C4dQdq-97Sv6nFYNve2FAX2p5_Mc,2188
54
+ gr_libs/tutorials/gcdraco_panda_tutorial.py,sha256=HzGKqZR--rcTYj3RQMuQCzTVll2Q-Z_RQbmGpcZPovg,2301
55
+ gr_libs/tutorials/gcdraco_parking_tutorial.py,sha256=kd7xRsjGPCHohwhbJEK5XAsD3R9k8rcd0qz8IZIgjN4,2103
56
+ gr_libs/tutorials/graml_minigrid_tutorial.py,sha256=bEsi21-9-AiOw4-H98Fr3YaCrp8_uSXOiiGahaCO4mg,2356
57
+ gr_libs/tutorials/graml_panda_tutorial.py,sha256=e2pm62Hj6wyzKO-RvSz_qnDxLZoqKqnzc8B_ylVoGVM,2208
58
+ gr_libs/tutorials/graml_parking_tutorial.py,sha256=vRvcbrbM8N7npt7W_0g-CbUhALkXVqUejoVWlPMuj04,1991
59
+ gr_libs/tutorials/graml_point_maze_tutorial.py,sha256=KA28__CNKslxq3p6O5htjJFDKOXXbiA1bOX-oPJxjmI,2463
63
60
  gr_libs/tutorials/graql_minigrid_tutorial.py,sha256=HT8kCFNbZXAraIau9wtgC_aW8xg-QNRZB2lcpGm3yWk,1941
64
61
  tests/test_draco.py,sha256=oIeTDgn6pt3RfTC-RPX3Bw5cG4BThxRGH3z8en3TX0M,385
65
62
  tests/test_gcdraco.py,sha256=vV6rp7PkJJk_WpAfRekb197QiMHjXXApqrBiLG9RTwo,308
66
63
  tests/test_graml.py,sha256=amSikMWrGS9BNVSXGNKc1n5tfRl-FfgCsyHYsJtduD4,608
67
64
  tests/test_graql.py,sha256=KxVKx6rcSCbN-PjxR2DFoKcILRUmMDz0dTM5SvJZMXg,154
68
- gr_libs-0.2.2.dist-info/METADATA,sha256=0hqzG9XaGJmqfJ36sKLPnlU1lFUqHdOr7if1icu1sV0,12992
69
- gr_libs-0.2.2.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
70
- gr_libs-0.2.2.dist-info/top_level.txt,sha256=Yzc_VSW3gzbVM7ZtlV4r6VXmfAC8WXqGVUgK1r6JcLs,14
71
- gr_libs-0.2.2.dist-info/RECORD,,
65
+ tests/test_odgr_executor_expertbasedgraml.py,sha256=UQh1pzaqAy9kRN1O--x1tQLGWkRXuYnz5ujB2H1XMas,558
66
+ tests/test_odgr_executor_gcdraco.py,sha256=VUmnO33tuMVlNYz7Fh08VUW4jfUXhhUsJu7oPiLF2iU,506
67
+ tests/test_odgr_executor_gcgraml.py,sha256=MmyadmboVxFwfRigqe9jondZopqUjhbQ3gXjCbK4yAs,506
68
+ tests/test_odgr_executor_graql.py,sha256=06p_kPAUn2OQrL-nBik58C22UPbTDC4CwDaB7MUk61o,514
69
+ gr_libs-0.2.5.dist-info/METADATA,sha256=TYD_l_WXrcWoyi8fb4RkGjamcfdbcOeiPfrxypb-sQs,14421
70
+ gr_libs-0.2.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
+ gr_libs-0.2.5.dist-info/top_level.txt,sha256=Yzc_VSW3gzbVM7ZtlV4r6VXmfAC8WXqGVUgK1r6JcLs,14
72
+ gr_libs-0.2.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.7.1)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,14 @@
1
+ import subprocess
2
+ import sys
3
+
4
+ def test_odgr_executor_expertbasedgraml_minigrid():
5
+ """Test odgr_executor.py with ExpertBasedGraml on minigrid, L1, easiest env."""
6
+ result = subprocess.run([
7
+ sys.executable, "gr_libs/odgr_executor.py",
8
+ "--domain", "minigrid",
9
+ "--env_name", "MiniGrid-SimpleCrossingS13N4",
10
+ "--recognizer", "ExpertBasedGraml",
11
+ "--task", "L1",
12
+ "--collect_stats"
13
+ ], capture_output=True, text=True)
14
+ assert result.returncode == 0, f"ExpertBasedGraml minigrid L1 failed: {result.stderr}"
@@ -0,0 +1,14 @@
1
+ import subprocess
2
+ import sys
3
+
4
+ def test_odgr_executor_gcdraco_parking():
5
+ """Test odgr_executor.py with GCDraco on parking, L1, easiest env."""
6
+ result = subprocess.run([
7
+ sys.executable, "gr_libs/odgr_executor.py",
8
+ "--domain", "parking",
9
+ "--env_name", "Parking-S-14-PC-",
10
+ "--recognizer", "GCDraco",
11
+ "--task", "L1",
12
+ "--collect_stats"
13
+ ], capture_output=True, text=True)
14
+ assert result.returncode == 0, f"GCDraco parking L1 failed: {result.stderr}"
@@ -0,0 +1,14 @@
1
+ import subprocess
2
+ import sys
3
+
4
+ def test_odgr_executor_gcgraml_parking():
5
+ """Test odgr_executor.py with GCGraml on parking, L1, easiest env."""
6
+ result = subprocess.run([
7
+ sys.executable, "gr_libs/odgr_executor.py",
8
+ "--domain", "parking",
9
+ "--env_name", "Parking-S-14-PC-",
10
+ "--recognizer", "GCGraml",
11
+ "--task", "L1",
12
+ "--collect_stats"
13
+ ], capture_output=True, text=True)
14
+ assert result.returncode == 0, f"GCGraml parking L1 failed: {result.stderr}"
@@ -0,0 +1,14 @@
1
+ import subprocess
2
+ import sys
3
+
4
+ def test_odgr_executor_graql_minigrid():
5
+ """Test odgr_executor.py with Graql on minigrid, L1, easiest env."""
6
+ result = subprocess.run([
7
+ sys.executable, "gr_libs/odgr_executor.py",
8
+ "--domain", "minigrid",
9
+ "--env_name", "MiniGrid-SimpleCrossingS13N4",
10
+ "--recognizer", "Graql",
11
+ "--task", "L1",
12
+ "--collect_stats"
13
+ ], capture_output=True, text=True)
14
+ assert result.returncode == 0, f"Graql minigrid L1 failed: {result.stderr}"