19 data = open(filename).read()
23 for algo
in workflow[
"algorithms"]:
25 name = algo[
"name"] +
"_algo"
27 for input
in algo[
"inputs"]:
30 if not gr.has_node(input):
32 if not gr.has_edge((input, name)):
33 gr.add_edge((input, name), wt=0)
34 for output
in algo[
"outputs"]:
37 if not gr.has_node(output):
38 gr.add_nodes([output])
39 if not gr.has_edge((name, output)):
41 gr.add_edge((name, output), wt=algo[
"runtimes_wall"][0] * 100)
95 for edge
in gr.edges():
96 if edge[0].endswith(
"_algo"):
97 algoname = edge[0].rstrip(
"_algo")
101 algoname = edge[1].rstrip(
"_algo")
105 if algoname
not in known_names:
106 algorithms[algoname] = {
111 "runtimes_wall": [1000],
113 known_names.add(algoname)
115 algorithms[algoname][
"inputs"].append(product)
117 algorithms[algoname][
"outputs"].append(product)
118 algorithms[algoname][
"runtimes_wall"] = [
119 gr.edge_weight(edge) / 100,
121 out = open(filename,
"w")
122 algorithm_list = [item
for item
in algorithms.values()]
123 workflow = {
"algorithms": algorithm_list}
124 out.write(workflow.__repr__())