def run_graph()

in vihds/run_inference_graph.py [0:0]


def run_graph(graph_name, staged_nodes):
    # TODO: Do some preprocessing and checks here?

    # Create directory for results
    rootpath = os.path.join(vihds.config.get_results_directory(), graph_name)

    resultmap = {}

    if not os.path.exists(rootpath):
        #    print("Path doesn't exist yet. Creating folder: " + rootpath)
        os.makedirs(rootpath)
    # else:
    #     print('Graph result folder exists..')
    subfolders = os.listdir(rootpath)

    for stage in range(len(staged_nodes)):
        print("------------------------------------------------------------------------------------------------------")
        print("Current stage of the graph: " + str(stage) + " which has " + str(len(staged_nodes[stage])) + " node(s).")
        for node in staged_nodes[stage]:
            print("#############################")
            print("Processing Node: " + node.name)
            run_node = True
            for subfolder in subfolders:
                if subfolder.startswith(node.name):
                    sbpath = [f.path for f in os.scandir(rootpath) if (f.is_dir() and (f.name == subfolder))][0]
                    completedpath = os.path.join(sbpath, "completed.txt")
                    if os.path.exists(completedpath):
                        with open(completedpath) as file:
                            completednode = file.read()
                        if completednode == node.args.experiment:
                            resultmap[node.name] = sbpath
                            run_node = not (completednode == node.args.experiment)

            if run_node:
                print("About to start running Node:" + node.name + ".")
                settings = Config(node.args)
                settings.trainer = Trainer(node.args, add_timestamp=True)
                print("-----------------------------")
                print("Before propagating parameters:")
                print(settings.params)
                print("-----------------------------")
                propagate_params(node, settings, resultmap)
                print("After propagating parameters:")
                print(settings.params)
                save_propagatedParameters(settings.params, settings.trainer.tb_log_dir)
                print("-----------------------------")
                CallRunXval.execute(node.args, settings)
                resultmap[node.name] = settings.trainer.tb_log_dir
            else:
                print("Node:" + node.name + " execution completed.")