diff --git a/src/graph.py b/src/graph.py index 3d46eac07bd8287b047345d9ceb8bb568e9393f2..ddfe9b01c4f5fb1b931e557974bbe03d04ebbe09 100644 --- a/src/graph.py +++ b/src/graph.py @@ -317,17 +317,18 @@ class Graph(): #self.initialise_flattened_dico(self.full_dico) dico = self.dico_flattened - user_view, self.new_nodes_user_view = relev_user_view_builder(dico, relevant_modules=relevant_processes) + user_view, self.new_nodes_user_view = user_view_builder_couples(dico, relevant_modules=relevant_processes) + print(user_view) - with open(self.get_output_dir()/ "graphs/user_view.json", 'w') as output_file : - json.dump(user_view, output_file, indent=4) - - - user_view_with_subworkflows = add_subworkflows_2_dico(self.dico_process_dependency_graph, user_view) - with open(self.get_output_dir()/ "graphs/user_view_with_subworkflows.json", 'w') as output_file : - json.dump(user_view_with_subworkflows, output_file, indent=4) - - return user_view, user_view_with_subworkflows + #with open(self.get_output_dir()/ "graphs/user_view.json", 'w') as output_file : + # json.dump(user_view, output_file, indent=4) + # + # + #user_view_with_subworkflows = add_subworkflows_2_dico(self.dico_process_dependency_graph, user_view) + #with open(self.get_output_dir()/ "graphs/user_view_with_subworkflows.json", 'w') as output_file : + # json.dump(user_view_with_subworkflows, output_file, indent=4) + # + #return user_view, user_view_with_subworkflows def generate_user_view(self, relevant_processes = [], render_graphs = True): user_view, user_view_with_subworkflows = self.get_user_view_graph_georges_algo(relevant_processes = relevant_processes) diff --git a/src/outils_graph.py b/src/outils_graph.py index f1da30a29d0acc2fd6faefed382de8f0c1156b7d..4dcec7b063f0ac8a186b8f32f1c6a393e0f97697 100644 --- a/src/outils_graph.py +++ b/src/outils_graph.py @@ -852,6 +852,43 @@ def relev_user_view_builder(dico_param, relevant_modules): # new_dico["edges"].append({'A':"input", 'B':input, "label": ""}) return new_dico, new_nodes + +def user_view_builder_couples(dico_param, relevant_modules): + import time + dico = copy.deepcopy(dico_param) + tag = str(time.time()) + + #Add this to simplify the use of duplicate processes + nodes_2_num = {} + for node in dico["nodes"]: + nodes_2_num[node['name']] = 0 + for node in dico["nodes"]: + tmp = nodes_2_num[node['name']] + nodes_2_num[node['name']]+=1 + node['name'] = f"{node['name']}{tag}{tmp}" + tab_temp = [] + for n in relevant_modules: + for i in range(0, nodes_2_num[n]): + tab_temp.append(f"{n}{tag}{i}") + relevant_modules = tab_temp + + R = [] + for r in relevant_modules: + R+=get_id_from_name(dico, r) + R = list(set(R)) + outputs = get_output_nodes(dico) + inputs = get_input_nodes(dico) + #dico['nodes'].append({'id':"input", 'name':"input"}) + #dico['nodes'].append({'id':"output", 'name':"output"}) + for out in outputs: + dico["edges"].append({'A':out, 'B':'output'}) + #TODO remove this -> it's to replicate the one in the algortihm demo + #dico["edges"].append({'A':get_id_from_name(dico, f"M5_0{tag}0")[0], 'B':'output'}) + for input in inputs: + dico["edges"].append({'A':"input", 'B':input}) + + return dico, [] + #This function fills the new_dico with the flattened_dico but #reintegrates the subworkflows (from the full workflow) def add_subworkflows_2_dico(full_dico, flattened_dico, add_root_nodes = True):