gr-libs 0.1.6.post1__py3-none-any.whl → 0.1.8__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.
- evaluation/analyze_results_cross_alg_cross_domain.py +236 -246
- evaluation/create_minigrid_map_image.py +10 -6
- evaluation/file_system.py +16 -5
- evaluation/generate_experiments_results.py +123 -74
- evaluation/generate_experiments_results_new_ver1.py +227 -243
- evaluation/generate_experiments_results_new_ver2.py +317 -317
- evaluation/generate_task_specific_statistics_plots.py +481 -253
- evaluation/get_plans_images.py +41 -26
- evaluation/increasing_and_decreasing_.py +97 -56
- gr_libs/__init__.py +6 -1
- gr_libs/_version.py +2 -2
- gr_libs/environment/__init__.py +17 -9
- gr_libs/environment/environment.py +167 -39
- gr_libs/environment/utils/utils.py +22 -12
- gr_libs/metrics/__init__.py +5 -0
- gr_libs/metrics/metrics.py +76 -34
- gr_libs/ml/__init__.py +2 -0
- gr_libs/ml/agent.py +21 -6
- gr_libs/ml/base/__init__.py +1 -1
- gr_libs/ml/base/rl_agent.py +13 -10
- gr_libs/ml/consts.py +1 -1
- gr_libs/ml/neural/deep_rl_learner.py +433 -352
- gr_libs/ml/neural/utils/__init__.py +1 -1
- gr_libs/ml/neural/utils/dictlist.py +3 -3
- gr_libs/ml/neural/utils/penv.py +5 -2
- gr_libs/ml/planner/mcts/mcts_model.py +524 -302
- gr_libs/ml/planner/mcts/utils/__init__.py +1 -1
- gr_libs/ml/planner/mcts/utils/node.py +11 -7
- gr_libs/ml/planner/mcts/utils/tree.py +14 -10
- gr_libs/ml/sequential/__init__.py +1 -1
- gr_libs/ml/sequential/lstm_model.py +256 -175
- gr_libs/ml/tabular/state.py +7 -7
- gr_libs/ml/tabular/tabular_q_learner.py +123 -73
- gr_libs/ml/tabular/tabular_rl_agent.py +20 -19
- gr_libs/ml/utils/__init__.py +8 -2
- gr_libs/ml/utils/format.py +78 -70
- gr_libs/ml/utils/math.py +2 -1
- gr_libs/ml/utils/other.py +1 -1
- gr_libs/ml/utils/storage.py +95 -28
- gr_libs/problems/consts.py +1549 -1227
- gr_libs/recognizer/gr_as_rl/gr_as_rl_recognizer.py +145 -80
- gr_libs/recognizer/graml/gr_dataset.py +209 -110
- gr_libs/recognizer/graml/graml_recognizer.py +431 -231
- gr_libs/recognizer/recognizer.py +38 -27
- gr_libs/recognizer/utils/__init__.py +1 -1
- gr_libs/recognizer/utils/format.py +8 -3
- {gr_libs-0.1.6.post1.dist-info → gr_libs-0.1.8.dist-info}/METADATA +1 -1
- gr_libs-0.1.8.dist-info/RECORD +70 -0
- {gr_libs-0.1.6.post1.dist-info → gr_libs-0.1.8.dist-info}/WHEEL +1 -1
- {gr_libs-0.1.6.post1.dist-info → gr_libs-0.1.8.dist-info}/top_level.txt +0 -1
- tests/test_gcdraco.py +10 -0
- tests/test_graml.py +8 -4
- tests/test_graql.py +2 -1
- tutorials/gcdraco_panda_tutorial.py +66 -0
- tutorials/gcdraco_parking_tutorial.py +61 -0
- tutorials/graml_minigrid_tutorial.py +42 -12
- tutorials/graml_panda_tutorial.py +35 -14
- tutorials/graml_parking_tutorial.py +37 -19
- tutorials/graml_point_maze_tutorial.py +33 -13
- tutorials/graql_minigrid_tutorial.py +31 -15
- CI/README.md +0 -12
- CI/docker_build_context/Dockerfile +0 -15
- gr_libs/recognizer/recognizer_doc.md +0 -61
- gr_libs-0.1.6.post1.dist-info/RECORD +0 -70
gr_libs/ml/utils/storage.py
CHANGED
@@ -6,81 +6,148 @@ import sys
|
|
6
6
|
|
7
7
|
from .other import device
|
8
8
|
|
9
|
+
|
9
10
|
def create_folders_if_necessary(path):
|
10
11
|
if not os.path.exists(path):
|
11
12
|
os.makedirs(path)
|
12
13
|
|
13
14
|
|
14
15
|
def get_storage_framework_dir(recognizer: str):
|
15
|
-
return os.path.join(get_storage_dir(),recognizer)
|
16
|
+
return os.path.join(get_storage_dir(), recognizer)
|
17
|
+
|
16
18
|
|
17
19
|
def get_storage_dir():
|
20
|
+
# Prefer local directory if it exists (e.g., in GitHub workspace)
|
21
|
+
if os.path.exists("dataset"):
|
22
|
+
return "dataset"
|
23
|
+
# Fall back to pre-mounted directory (e.g., in Docker container)
|
24
|
+
if os.path.exists("/preloaded_data"):
|
25
|
+
return "/preloaded_data"
|
26
|
+
# Default to "dataset" even if it doesn't exist (e.g., will be created)
|
18
27
|
return "dataset"
|
19
28
|
|
29
|
+
|
20
30
|
def _get_models_directory_name():
|
21
31
|
return "models"
|
22
32
|
|
33
|
+
|
23
34
|
def _get_siamese_datasets_directory_name():
|
24
35
|
return "siamese_datasets"
|
25
36
|
|
37
|
+
|
26
38
|
def _get_observations_directory_name():
|
27
39
|
return "observations"
|
28
40
|
|
41
|
+
|
29
42
|
def get_observation_file_name(observability_percentage: float):
|
30
|
-
return
|
43
|
+
return "obs" + str(observability_percentage) + ".pkl"
|
31
44
|
|
32
45
|
|
33
|
-
def get_domain_dir(domain_name, recognizer:str):
|
46
|
+
def get_domain_dir(domain_name, recognizer: str):
|
34
47
|
return os.path.join(get_storage_framework_dir(recognizer), domain_name)
|
35
48
|
|
36
|
-
|
49
|
+
|
50
|
+
def get_env_dir(domain_name, env_name, recognizer: str):
|
37
51
|
return os.path.join(get_domain_dir(domain_name, recognizer), env_name)
|
38
52
|
|
39
|
-
|
40
|
-
|
53
|
+
|
54
|
+
def get_observations_dir(domain_name, env_name, recognizer: str):
|
55
|
+
return os.path.join(
|
56
|
+
get_env_dir(domain_name=domain_name, env_name=env_name, recognizer=recognizer),
|
57
|
+
_get_observations_directory_name(),
|
58
|
+
)
|
59
|
+
|
41
60
|
|
42
61
|
def get_agent_model_dir(domain_name, model_name, class_name):
|
43
|
-
return os.path.join(
|
62
|
+
return os.path.join(
|
63
|
+
get_storage_dir(),
|
64
|
+
_get_models_directory_name(),
|
65
|
+
domain_name,
|
66
|
+
model_name,
|
67
|
+
class_name,
|
68
|
+
)
|
69
|
+
|
70
|
+
|
71
|
+
def get_lstm_model_dir(domain_name, env_name, model_name, recognizer: str):
|
72
|
+
return os.path.join(
|
73
|
+
get_env_dir(domain_name=domain_name, env_name=env_name, recognizer=recognizer),
|
74
|
+
model_name,
|
75
|
+
)
|
76
|
+
|
44
77
|
|
45
|
-
def
|
46
|
-
return os.path.join(
|
78
|
+
def get_models_dir(domain_name, env_name, recognizer: str):
|
79
|
+
return os.path.join(
|
80
|
+
get_env_dir(domain_name=domain_name, env_name=env_name, recognizer=recognizer),
|
81
|
+
_get_models_directory_name(),
|
82
|
+
)
|
47
83
|
|
48
|
-
def get_models_dir(domain_name, env_name, recognizer:str):
|
49
|
-
return os.path.join(get_env_dir(domain_name=domain_name, env_name=env_name, recognizer=recognizer), _get_models_directory_name())
|
50
84
|
|
51
85
|
### GRAML PATHS ###
|
52
86
|
|
53
|
-
def get_siamese_dataset_path(domain_name, env_name, model_name, recognizer:str):
|
54
|
-
return os.path.join(get_lstm_model_dir(domain_name, env_name, model_name, recognizer), _get_siamese_datasets_directory_name())
|
55
87
|
|
56
|
-
def
|
57
|
-
return os.path.join(
|
88
|
+
def get_siamese_dataset_path(domain_name, env_name, model_name, recognizer: str):
|
89
|
+
return os.path.join(
|
90
|
+
get_lstm_model_dir(domain_name, env_name, model_name, recognizer),
|
91
|
+
_get_siamese_datasets_directory_name(),
|
92
|
+
)
|
93
|
+
|
94
|
+
|
95
|
+
def get_embeddings_result_path(domain_name, env_name, recognizer: str):
|
96
|
+
return os.path.join(
|
97
|
+
get_env_dir(domain_name, env_name=env_name, recognizer=recognizer),
|
98
|
+
"goal_embeddings",
|
99
|
+
)
|
100
|
+
|
101
|
+
|
102
|
+
def get_embeddings_result_path(domain_name, env_name, recognizer: str):
|
103
|
+
return os.path.join(
|
104
|
+
get_env_dir(domain_name, env_name=env_name, recognizer=recognizer),
|
105
|
+
"goal_embeddings",
|
106
|
+
)
|
58
107
|
|
59
|
-
def get_embeddings_result_path(domain_name, env_name, recognizer:str):
|
60
|
-
return os.path.join(get_env_dir(domain_name, env_name=env_name, recognizer=recognizer), "goal_embeddings")
|
61
108
|
|
62
109
|
def get_and_create(path):
|
63
110
|
create_folders_if_necessary(path)
|
64
111
|
return path
|
65
112
|
|
66
|
-
def get_experiment_results_path(domain, env_name, task, recognizer:str):
|
67
|
-
return os.path.join(get_env_dir(domain, env_name=env_name, recognizer=recognizer), "experiment_results", env_name, task, "experiment_results")
|
68
113
|
|
69
|
-
def
|
70
|
-
return os.path.join(
|
114
|
+
def get_experiment_results_path(domain, env_name, task, recognizer: str):
|
115
|
+
return os.path.join(
|
116
|
+
get_env_dir(domain, env_name=env_name, recognizer=recognizer),
|
117
|
+
"experiment_results",
|
118
|
+
env_name,
|
119
|
+
task,
|
120
|
+
"experiment_results",
|
121
|
+
)
|
122
|
+
|
123
|
+
|
124
|
+
def get_plans_result_path(domain_name, env_name, recognizer: str):
|
125
|
+
return os.path.join(
|
126
|
+
get_env_dir(domain_name, env_name=env_name, recognizer=recognizer), "plans"
|
127
|
+
)
|
128
|
+
|
129
|
+
|
130
|
+
def get_policy_sequences_result_path(domain_name, env_name, recognizer: str):
|
131
|
+
return os.path.join(
|
132
|
+
get_env_dir(domain_name, env_name, recognizer=recognizer), "policy_sequences"
|
133
|
+
)
|
71
134
|
|
72
|
-
def get_policy_sequences_result_path(domain_name, env_name, recognizer:str):
|
73
|
-
return os.path.join(get_env_dir(domain_name, env_name, recognizer=recognizer), "policy_sequences")
|
74
135
|
|
75
136
|
### END GRAML PATHS ###
|
76
|
-
|
137
|
+
""
|
77
138
|
### GRAQL PATHS ###
|
78
139
|
|
79
|
-
|
80
|
-
|
140
|
+
|
141
|
+
def get_gr_as_rl_experiment_confidence_path(domain_name, env_name, recognizer: str):
|
142
|
+
return os.path.join(
|
143
|
+
get_env_dir(domain_name=domain_name, env_name=env_name, recognizer=recognizer),
|
144
|
+
"experiments",
|
145
|
+
)
|
146
|
+
|
81
147
|
|
82
148
|
### GRAQL PATHS ###
|
83
149
|
|
150
|
+
|
84
151
|
def get_status_path(model_dir):
|
85
152
|
return os.path.join(model_dir, "status.pt")
|
86
153
|
|
@@ -113,8 +180,8 @@ def get_txt_logger(model_dir):
|
|
113
180
|
format="%(message)s",
|
114
181
|
handlers=[
|
115
182
|
logging.FileHandler(filename=path),
|
116
|
-
logging.StreamHandler(sys.stdout)
|
117
|
-
]
|
183
|
+
logging.StreamHandler(sys.stdout),
|
184
|
+
],
|
118
185
|
)
|
119
186
|
|
120
187
|
return logging.getLogger()
|