Ejemplo n.º 1
0
 def graphviz(self):
     try:
         return self._graphviz
     except AttributeError:
         g = Digraph()
         g.attr(rankdir='LR')
         g.node('BEGIN', shape='point')
         for i in self.outputs_of(BEGIN):
             g.edge('BEGIN', str(i))
         for ix in self.topologically_sorted_indexes:
             g.node(str(ix), label=get_name(self[ix]))
             for iy in self.outputs_of(ix):
                 g.edge(str(ix), str(iy))
         self._graphviz = g
         return self._graphviz
Ejemplo n.º 2
0
 def graphviz(self):
     try:
         return self._graphviz
     except AttributeError:
         g = Digraph()
         g.attr(rankdir='LR')
         g.node('BEGIN', shape='point')
         for i in self.outputs_of(BEGIN):
             g.edge('BEGIN', str(i))
         for ix in self.topologically_sorted_indexes:
             g.node(str(ix), label=get_name(self[ix]))
             for iy in self.outputs_of(ix):
                 g.edge(str(ix), str(iy))
         self._graphviz = g
         return self._graphviz
Ejemplo n.º 3
0
 def finalgraph(self, filename=None):
     finaldb = Database(self.prac.mln)
     for step in self.inference_steps:
         for db in step.output_dbs:
             for atom, truth in list(db.evidence.items()):
                 if truth == 0: continue
                 _, predname, args = self.prac.mln.logic.parseLiteral(atom)
                 if predname in self.prac.roles.union(
                     ['has_sense', 'action_core', 'achieved_by']):
                     finaldb << atom
                 #         finaldb.write(sys.stdout, color=True)
     g = Digraph(format='svg', engine='dot')
     g.attr('node', shape='box', style='filled')
     for res in finaldb.query('action_core(?w, ?a) ^ has_sense(?w, ?s)'):
         actioncore = res['?a']
         sense = res['?s']
         predname = 'action_core'
         g.node(actioncore, fillcolor='#bee280')
         g.node(sense)
         g.edge(actioncore, sense, label='is_a')
         roles = self.prac.actioncores[actioncore].roles
         for role in roles:
             for res in db.query('{}(?w, {}) ^ has_sense(?w, ?s)'.format(
                     role, actioncore)):
                 sense = res['?s']
                 g.node(sense)
                 g.edge(actioncore, sense, label=role)
     for res in finaldb.query('achieved_by(?a1, ?a2)'):
         a1 = res['?a1']
         a2 = res['?a2']
         g.node(a1, fillcolor='#bee280')
         g.node(a2, fillcolor='#bee280')
         g.edge(a1, a2, label='achieved_by')
         actioncore = a2
         roles = self.prac.actionroles[actioncore].roles
         for role in roles:
             for res in db.query('{}(?w, {}) ^ has_sense(?w, ?s)'.format(
                     role, actioncore)):
                 sense = res['?s']
                 g.node(sense)
                 g.edge(actioncore, sense, label=role)
     return render_gv(g, filename)