87def all_DataFlow_to_dot(name, step_list):
88 with open('%s.dot'%(name), mode="wt") as file:
89 file.write( 'digraph step { \n'\
90 +' concentrate=true;\n'\
91 +' rankdir="LR";\n'
92 +' node [ shape=polygon, fontname=Helvetica ]\n'\
93 +' edge [ fontname=Helvetica ]\n'
94 +' %s [shape=Mdiamond]\n'%name)
95
96 nstep=1
97 last_step_hypoNodes=[]
98 all_hypos=[]
99 for cfseq_list in step_list:
100
101 step_connections = []
102 step_connections.extend(last_step_hypoNodes)
103
104 last_step_hypoNodes =[]
105 for cfseq in cfseq_list:
106 file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.sequenceCA.filterNode.Alg.name,algColor(cfseq.sequenceCA.filterNode.Alg)))
107 step_connections.append(cfseq.sequenceCA.filterNode)
108 file.write( '\n subgraph cluster_%s {\n'%(cfseq.sequenceCA.step.name)\
109 +' concentrate=true;\n'
110 +' node [color=white style=filled]\n'\
111 +' style=filled\n'\
112 +' color=lightgrey\n'\
113 +' fontname=Helvetica\n'\
114 +' label = %s\n'%(cfseq.sequenceCA.step.name))
115
116 cfseq_algs = []
117 cfseq_algs.append(cfseq.sequenceCA.filterNode)
118
119 if len(cfseq.sequenceCA.step.sequences)==0:
120 last_step_hypoNodes.append(cfseq.sequenceCA.filterNode)
121
122 for menuseq in cfseq.sequenceCA.step.sequences:
123 cfseq_algs, all_hypos, last_step_hypoNodes = menuseq.buildDFDot(cfseq_algs,
124 all_hypos,
125 last_step_hypoNodes,
126 file)
127
128
129 if cfseq.sequenceCA.step.combo is not None:
130 file.write(" %s[color=%s]\n"%(cfseq.sequenceCA.step.combo.Alg.name, algColor(cfseq.sequenceCA.step.combo.Alg)))
131 cfseq_algs.append(cfseq.sequenceCA.step.combo)
132 last_step_hypoNodes.append(cfseq.sequenceCA.step.combo)
133 file.write(' }\n')
134 file.write(findConnections(cfseq_algs))
135 file.write('\n')
136
137
138
139 file.write(findConnections(step_connections))
140 nstep+=1
141
142 file.write( '}')
143 file.close()
144
145