from otree.api import * import sys,os sys.path.append(os.path.dirname(__file__) + os.sep + '../') # from FINDER import FINDER import random, json import networkx as nx from networkx.readwrite import json_graph import io doc = """ Your app description """ def finder(): dqn = FINDER() data_test_path = './data/synthetic/' data_test_name = 'test' model_file = './models/nrange_30_50_iter_78000.ckpt' data_test = data_test_path + data_test_name val, sol, solution = dqn.Evaluate(data_test, model_file) return val, sol, solution def jsFormatConverter(dct): tmp_dct = dict() cnt = 0 for node in dct["nodes"]: node["label"] = node["id"] tmp_dct["node_"+str(cnt)]= node cnt += 1 for edge in dct["links"]: tmp_dct["edge_"+str(cnt)] = edge cnt += 1 str_ = str(json.dumps(tmp_dct, indent=2, ensure_ascii=False)) print(str_) for idx in range(cnt, -1, -1): str_ = str_.replace("_"+str(idx), "") str_ = "graph [" + str_[1:] str_ = str_.replace('\"', '').replace(',', '').replace(':', '').replace('{', '[').replace('}', ']') return str_ def genRandomGraph(n, m): G = nx.path_graph(6) data = json_graph.node_link_data(G) with io.open('./data/synthetic/test/g_0', 'w', encoding='utf8') as outfile: str_ = jsFormatConverter(data) outfile.write(str_) print(data) return data class C(BaseConstants): NAME_IN_URL = 'my_game' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): pass # PAGES class CreateGraph(Page): @staticmethod def vars_for_template(player: Player): G = genRandomGraph(30, 5) return { "graph": G } class ResultsWaitPage(WaitPage): pass class Results(Page): @staticmethod def vars_for_template(player: Player): val, sol, solution = finder() return { "val": val, "sol": sol[0], "solution": solution } page_sequence = [CreateGraph, ResultsWaitPage, Results]