Spaces:
Sleeping
Sleeping
SocialAISchool
/
gym-minigrid
/gym_minigrid
/social_ai_envs
/case_studies_envs
/langfeedbackcasestudyenvs.py
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", | |
] | |