Skip to content
Snippets Groups Projects
Commit 2cb08b6b authored by George Marchment's avatar George Marchment
Browse files

added subworkflows to user view

parent dc438d6d
No related branches found
No related tags found
No related merge requests found
Pipeline #14111 passed with stage
in 2 minutes and 26 seconds
......@@ -300,7 +300,14 @@ class Graph():
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)
generate_graph(self.get_output_dir()/'graphs'/"user_view", user_view, label_edge=True, label_node=True, render_graphs = render_graphs)
generate_graph(self.get_output_dir()/'graphs'/"user_view_with_subworkflows", user_view_with_subworkflows, label_edge=True, label_node=True, render_graphs = render_graphs)
......
......@@ -699,6 +699,14 @@ class Nextflow_File(Nextflow_Building_Blocks):
self.graph.get_metadata_dependency_graph()
self.graph.get_metadata_process_dependency_graph()
def generate_specification_graph(self, render_graphs = True, processes_2_remove = []):
self.graph.initialise(processes_2_remove = processes_2_remove)
self.graph.get_specification_graph(render_graphs = render_graphs)
def generate_process_dependency_graph(self, render_graphs = True, processes_2_remove = []):
self.graph.initialise(processes_2_remove = processes_2_remove)
self.graph.render_graph_wo_operations(render_graphs = render_graphs)
def generate_user_view(self, relevant_processes = [], render_graphs = True, processes_2_remove = []):
self.graph.initialise(processes_2_remove = processes_2_remove)
self.graph.generate_user_view(relevant_processes = relevant_processes, render_graphs = render_graphs)
......
......@@ -748,4 +748,29 @@ def relev_user_view_builder(dico, relevant_modules):
new_dico["edges"].append({'A':"input", 'B':input, "label": ""})
return new_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):
#Add nodes with subworkflows
def add_nodes(full_dico, flattened_dico):
new_dico = {}
new_dico['nodes'] = []
new_dico['edges'] = []
new_dico['subworkflows'] = {}
for n1 in full_dico["nodes"]:
for n2 in flattened_dico["nodes"]:
if(n1['id'][1:-1] in n2['id'] and n1['name'] == n2['name']):
new_dico["nodes"].append(n2)
for sub in full_dico["subworkflows"]:
new_dico['subworkflows'][sub] = add_nodes(full_dico["subworkflows"][sub], flattened_dico)
return new_dico
new_dico = add_nodes(full_dico, flattened_dico)
new_dico["edges"] = flattened_dico["edges"]
if(add_root_nodes):
new_dico["nodes"].append({"id": "input","name": "i","shape": "triangle", "fillcolor":"#ffffff"})
new_dico["nodes"].append({"id": "output","name": "o","shape": "triangle", "fillcolor":"#ffffff"})
return new_dico
......@@ -83,6 +83,7 @@ class Workflow:
self.keywords = keywords
self.producer = producer
self.publisher = publisher
self.tab_processes_2_remove = None
self.personnal_acces_token = personnal_acces_token
self.processes_2_tools = processes_2_tools
if(processes_2_remove==""):
......@@ -515,26 +516,35 @@ George Marchment, Bryan Brancotte, Marie Schmit, Frédéric Lemoine, Sarah Cohen
print()
print(citation)
def iniatilise_tab_processes_2_remove(self):
if(self.tab_processes_2_remove==None):
tab_processes_2_remove = []
if(self.processes_2_remove!=None):
temp = self.processes_2_remove.split(",")
for t in temp:
tab_processes_2_remove.append(t.strip())
self.tab_processes_2_remove = tab_processes_2_remove
def generate_all_graphs(self, render_graphs = True):
"""Method that generates all graphs representing the workflow
Keyword arguments:
"""
tab_processes_2_remove = []
if(self.processes_2_remove!=None):
temp = self.processes_2_remove.split(",")
for t in temp:
tab_processes_2_remove.append(t.strip())
self.nextflow_file.generate_all_graphs(render_graphs = render_graphs, processes_2_remove = tab_processes_2_remove)
self.iniatilise_tab_processes_2_remove()
self.nextflow_file.generate_all_graphs(render_graphs = render_graphs, processes_2_remove = self.tab_processes_2_remove)
def generate_specification_graph(self, render_graphs = True):
self.iniatilise_tab_processes_2_remove()
self.nextflow_file.generate_specification_graph(render_graphs = render_graphs, processes_2_remove = self.tab_processes_2_remove)
def generate_process_dependency_graph(self, render_graphs = True):
self.iniatilise_tab_processes_2_remove()
self.nextflow_file.generate_process_dependency_graph(render_graphs = render_graphs, processes_2_remove = self.tab_processes_2_remove)
def generate_user_view(self, relevant_processes = [], render_graphs = True):
tab_processes_2_remove = []
if(self.processes_2_remove!=None):
temp = self.processes_2_remove.split(",")
for t in temp:
tab_processes_2_remove.append(t.strip())
self.nextflow_file.generate_user_view(relevant_processes = relevant_processes, render_graphs = render_graphs, processes_2_remove = tab_processes_2_remove)
self.iniatilise_tab_processes_2_remove()
self.nextflow_file.generate_user_view(relevant_processes = relevant_processes, render_graphs = render_graphs, processes_2_remove = self.tab_processes_2_remove)
def build_processes_2_tools(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment