sig
  type graph =
      [ `Bgcolor of Graphviz.color
      | `BgcolorWithTransparency of Graphviz.color_with_transparency
      | `Center of bool
      | `Comment of string
      | `Concentrate of bool
      | `Fontcolor of Graphviz.color
      | `Fontname of string
      | `Fontpath of string
      | `Fontsize of int
      | `HtmlLabel of string
      | `Label of string
      | `Layers of string list
      | `Margin of float
      | `Mclimit of float
      | `Nodesep of float
      | `Nslimit of int
      | `Nslimit1 of int
      | `OrderingOut
      | `Orientation of [ `Landscape | `Portrait ]
      | `Page of float * float
      | `Pagedir of [ `LeftToRight | `TopToBottom ]
      | `Quantum of float
      | `Rankdir of [ `LeftToRight | `TopToBottom ]
      | `Ranksep of float
      | `Ratio of [ `Auto | `Compress | `Fill | `Float of float ]
      | `Samplepoints of int
      | `Size of float * float
      | `Url of string ]
  type vertex =
      [ `Color of Graphviz.color
      | `ColorWithTransparency of Graphviz.color_with_transparency
      | `Comment of string
      | `Distortion of float
      | `Fillcolor of Graphviz.color
      | `FillcolorWithTransparency of Graphviz.color_with_transparency
      | `Fixedsize of bool
      | `Fontcolor of Graphviz.color
      | `Fontname of string
      | `Fontsize of int
      | `Height of float
      | `HtmlLabel of string
      | `Label of string
      | `Layer of string
      | `Orientation of float
      | `Penwidth of float
      | `Peripheries of int
      | `Regular of bool
      | `Shape of
          [ `Assembly
          | `Box
          | `Box3d
          | `Cds
          | `Circle
          | `Component
          | `Diamond
          | `Doublecircle
          | `Doubleoctagon
          | `Egg
          | `Ellipse
          | `Fivepoverhang
          | `Folder
          | `House
          | `Insulator
          | `Invhouse
          | `Invtrapezium
          | `Invtriangle
          | `Larrow
          | `Lpromoter
          | `Mcircle
          | `Mdiamond
          | `Msquare
          | `Note
          | `Noverhang
          | `Oval
          | `Parallelogram
          | `Plaintext
          | `Polygon of int * float
          | `Primersite
          | `Promoter
          | `Proteasesite
          | `Proteinstab
          | `Rarrow
          | `Record
          | `Restrictionsite
          | `Ribosite
          | `Rnastab
          | `Rpromoter
          | `Signature
          | `Star
          | `Tab
          | `Terminator
          | `Threepoverhang
          | `Trapezium
          | `Triangle
          | `Tripleoctagon
          | `Underline
          | `Utr ]
      | `Style of
          [ `Bold | `Dashed | `Dotted | `Filled | `Invis | `Rounded | `Solid ]
      | `Url of string
      | `Width of float
      | `Z of float ]
  type edge =
      [ `Arrowhead of Graphviz.arrow_style
      | `Arrowsize of float
      | `Arrowtail of Graphviz.arrow_style
      | `Color of Graphviz.color
      | `ColorWithTransparency of Graphviz.color_with_transparency
      | `Comment of string
      | `Constraint of bool
      | `Decorate of bool
      | `Dir of [ `Back | `Both | `Forward | `None ]
      | `Fontcolor of Graphviz.color
      | `Fontname of string
      | `Fontsize of int
      | `Headlabel of string
      | `Headport of [ `E | `N | `NE | `NW | `S | `SE | `SW | `W ]
      | `Headurl of string
      | `HtmlLabel of string
      | `Label of string
      | `Labelangle of float
      | `Labeldistance of float
      | `Labelfloat of bool
      | `Labelfontcolor of Graphviz.color
      | `Labelfontname of string
      | `Labelfontsize of int
      | `Layer of string
      | `Minlen of int
      | `Penwidth of float
      | `Samehead of string
      | `Sametail of string
      | `Style of [ `Bold | `Dashed | `Dotted | `Invis | `Solid ]
      | `Taillabel of string
      | `Tailport of [ `E | `N | `NE | `NW | `S | `SE | `SW | `W ]
      | `Tailurl of string
      | `Weight of int ]
  type subgraph = {
    sg_name : string;
    sg_attributes : Graphviz.DotAttributes.vertex list;
    sg_parent : string option;
  }
end