grg's picture
Cleaned old git history
be5548b
raw
history blame contribute delete
No virus
10.1 kB
from gym_minigrid.social_ai_envs.socialaiparamenv import SocialAIParamEnv
from gym_minigrid.parametric_env import *
from gym_minigrid.register import register
import inspect, importlib
# for used for automatic registration of environments
defined_classes = [name for name, _ in inspect.getmembers(importlib.import_module(__name__), inspect.isclass)]
# LangFeedback case study
# training
class ELangFeedbackInformationSeekingParamEnv(SocialAIParamEnv):
def construct_tree(self):
tree = ParameterTree()
env_type_nd = tree.add_node("Env_type", type="param")
# Information seeking
inf_seeking_nd = tree.add_node("Information_seeking", parent=env_type_nd, type="value")
prag_fr_compl_nd = tree.add_node("Pragmatic_frame_complexity", parent=inf_seeking_nd, type="param")
tree.add_node("Eye_contact", parent=prag_fr_compl_nd, type="value")
# scaffolding
scaffolding_nd = tree.add_node("Scaffolding", parent=inf_seeking_nd, type="param")
scaffolding_N_nd = tree.add_node("N", parent=scaffolding_nd, type="value")
cue_type_nd = tree.add_node("Cue_type", parent=scaffolding_N_nd, type="param")
tree.add_node("Language_Feedback", parent=cue_type_nd, type="value")
problem_nd = tree.add_node("Problem", parent=inf_seeking_nd, type="param")
boxes_nd = tree.add_node("Boxes", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=boxes_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=boxes_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
switches_nd = tree.add_node("Switches", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=switches_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=switches_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
generators_nd = tree.add_node("Generators", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=generators_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=generators_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
levers_nd = tree.add_node("Levers", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=levers_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=levers_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
doors_nd = tree.add_node("Doors", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=doors_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=doors_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
marble_nd = tree.add_node("Marble", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=marble_nd, type="param")
tree.add_node("1", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=marble_nd, type="param")
tree.add_node("N", parent=peer_nd, type="value")
return tree
# testing
class ELangFeedbackMarbleInformationSeekingParamEnv(SocialAIParamEnv):
def construct_tree(self):
tree = ParameterTree()
env_type_nd = tree.add_node("Env_type", type="param")
# Information seeking
inf_seeking_nd = tree.add_node("Information_seeking", parent=env_type_nd, type="value")
prag_fr_compl_nd = tree.add_node("Pragmatic_frame_complexity", parent=inf_seeking_nd, type="param")
tree.add_node("Eye_contact", parent=prag_fr_compl_nd, type="value")
# scaffolding
scaffolding_nd = tree.add_node("Scaffolding", parent=inf_seeking_nd, type="param")
scaffolding_N_nd = tree.add_node("N", parent=scaffolding_nd, type="value")
cue_type_nd = tree.add_node("Cue_type", parent=scaffolding_N_nd, type="param")
tree.add_node("Language_Feedback", parent=cue_type_nd, type="value")
problem_nd = tree.add_node("Problem", parent=inf_seeking_nd, type="param")
marble_nd = tree.add_node("Marble", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=marble_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=marble_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
return tree
# Joint Attention
# training
class JAELangFeedbackInformationSeekingParamEnv(SocialAIParamEnv):
def construct_tree(self):
tree = ParameterTree()
env_type_nd = tree.add_node("Env_type", type="param")
# Information seeking
inf_seeking_nd = tree.add_node("Information_seeking", parent=env_type_nd, type="value")
prag_fr_compl_nd = tree.add_node("Pragmatic_frame_complexity", parent=inf_seeking_nd, type="param")
tree.add_node("Eye_contact", parent=prag_fr_compl_nd, type="value")
# scaffolding
scaffolding_nd = tree.add_node("Scaffolding", parent=inf_seeking_nd, type="param")
scaffolding_N_nd = tree.add_node("N", parent=scaffolding_nd, type="value")
cue_type_nd = tree.add_node("Cue_type", parent=scaffolding_N_nd, type="param")
tree.add_node("Language_Feedback", parent=cue_type_nd, type="value")
problem_nd = tree.add_node("Problem", parent=inf_seeking_nd, type="param")
boxes_nd = tree.add_node("Boxes", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=boxes_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=boxes_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
switches_nd = tree.add_node("Switches", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=switches_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=switches_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
generators_nd = tree.add_node("Generators", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=generators_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=generators_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
levers_nd = tree.add_node("Levers", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=levers_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=levers_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
doors_nd = tree.add_node("Doors", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=doors_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=doors_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
marble_nd = tree.add_node("Marble", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=marble_nd, type="param")
tree.add_node("1", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=marble_nd, type="param")
tree.add_node("N", parent=peer_nd, type="value")
N_bo_nd = tree.add_node("JA_recursive", parent=inf_seeking_nd, type="param")
tree.add_node("Y", parent=N_bo_nd, type="value")
return tree
# testing
class JAELangFeedbackMarbleInformationSeekingParamEnv(SocialAIParamEnv):
def construct_tree(self):
tree = ParameterTree()
env_type_nd = tree.add_node("Env_type", type="param")
# Information seeking
inf_seeking_nd = tree.add_node("Information_seeking", parent=env_type_nd, type="value")
prag_fr_compl_nd = tree.add_node("Pragmatic_frame_complexity", parent=inf_seeking_nd, type="param")
tree.add_node("Eye_contact", parent=prag_fr_compl_nd, type="value")
# scaffolding
scaffolding_nd = tree.add_node("Scaffolding", parent=inf_seeking_nd, type="param")
scaffolding_N_nd = tree.add_node("N", parent=scaffolding_nd, type="value")
cue_type_nd = tree.add_node("Cue_type", parent=scaffolding_N_nd, type="param")
tree.add_node("Language_Feedback", parent=cue_type_nd, type="value")
problem_nd = tree.add_node("Problem", parent=inf_seeking_nd, type="param")
marble_nd = tree.add_node("Marble", parent=problem_nd, type="value")
version_nd = tree.add_node("N", parent=marble_nd, type="param")
tree.add_node("2", parent=version_nd, type="value")
peer_nd = tree.add_node("Peer", parent=marble_nd, type="param")
tree.add_node("Y", parent=peer_nd, type="value")
N_bo_nd = tree.add_node("JA_recursive", parent=inf_seeking_nd, type="param")
tree.add_node("Y", parent=N_bo_nd, type="value")
return tree
# automatic registration of environments
defined_classes_ = [name for name, _ in inspect.getmembers(importlib.import_module(__name__), inspect.isclass)]
envs = list(set(defined_classes_) - set(defined_classes))
assert all([e.endswith("Env") for e in envs])
for env in envs:
try:
register(
id='SocialAI-{}-v1'.format(env),
entry_point='gym_minigrid.social_ai_envs:{}'.format(env)
)
except:
print(f"Env : {env} registratoin failed.")
exit()
language_feedback_test_set = [
"SocialAI-ELangFeedbackMarbleInformationSeekingParamEnv-v1",
]
ja_language_feedback_test_set = [
"SocialAI-JAELangFeedbackMarbleInformationSeekingParamEnv-v1",
]