code: def make_graph_pygraphviz(self, recs, nodecolor,
                                edgecolor, dpi,
                                draw_parents=True, draw_children=True):
          
          import pygraphviz as pgv
  
          grph = pgv.AGraph(name="GO tree")
  
          edgeset = set()
          for rec in recs:
              if draw_parents:
                  edgeset.update(rec.get_all_parent_edges())
              if draw_children:
                  edgeset.update(rec.get_all_child_edges())
  
          edgeset = [(self.label_wrap(a), self.label_wrap(b))
                     for (a, b) in edgeset]
  
          # add nodes explicitly via add_node
          # adding nodes implicitly via add_edge misses nodes
          # without at least one edge
          for rec in recs:
              grph.add_node(self.label_wrap(rec.item_id))
  
          for src, target in edgeset:
              # default layout in graphviz is top->bottom, so we invert
              # the direction and plot using dir="back"
              grph.add_edge(target, src)
  
          grph.graph_attr.update(dpi="%d" % dpi)
          grph.node_attr.update(shape="box", style="rounded,filled",
                                fillcolor="beige", color=nodecolor)
          grph.edge_attr.update(shape="normal", color=edgecolor,
                                dir="back", label="is_a")
          # highlight the query terms
          for rec in recs:
              try:
                  node = grph.get_node(self.label_wrap(rec.item_id))
                  node.attr.update(fillcolor="plum")
              except:
                  continue
  
          return grph
docs: Draw AMIGO style network, lineage containing one query record.