class_docstr: Summary representation of a graph.
  
  The summary representation includes a header line and the list of
  edges. The header line consists of C{IGRAPH}, followed by a
  four-character long code, the number of vertices, the number of
  edges, two dashes (C{--}) and the name of the graph (i.e.
  the contents of the C{name} attribute, if any). For instance,
  a header line may look like this::
  
      IGRAPH U--- 4 5 --
  
  The four-character code describes some basic properties of the
  graph. The first character is C{U} if the graph is undirected,
  C{D} if it is directed. The second letter is C{N} if the graph
  has a vertex attribute called C{name}, or a dash otherwise. The
  third letter is C{W} if the graph is weighted (i.e. it has an
  edge attribute called C{weight}), or a dash otherwise. The
  fourth letter is C{B} if the graph has a vertex attribute called
  C{type}; this is usually used for bipartite graphs.
  
  Edges may be presented as an ordinary edge list or an adjacency
  list. By default, this depends on the number of edges; however,
  you can control it with the appropriate constructor arguments.
docstr: Infers the preferred alignment for the given vertex and edge attributes
  in the tables by peeking into the attribute values of the first 100 vertices
  or edges. Numeric attributes will be aligned right, everything else will be
  aligned left.
docstr_tok: ["Infers","the","preferred","alignment","for","the","given","vertex","and","edge","attributes","in","the","tables","by","peeking","into","the","attribute","values","of","the","first","100","vertices","or","edges",".","Numeric","attributes","will","be","aligned","right",",","everything","else","will","be","aligned","left","."]
code: def _infer_column_alignment(self, vertex_attrs=None, edge_attrs=None):
      """Infers the preferred alignment for the given vertex and edge attributes
      in the tables by peeking into the attribute values of the first 100 vertices
      or edges. Numeric attributes will be aligned right, everything else will be
      aligned left."""
      values = []
      if vertex_attrs is not None:
          vs = self._graph.vs[:100]
          values.extend(vs[attr] for attr in vertex_attrs)
      if edge_attrs is not None:
          es = self._graph.es[:100]
          values.extend(es[attr] for attr in edge_attrs)
  
      result = []
      for vs in values:
          is_numeric = True
          try:
              [float(x) for x in vs]
          except ValueError:
              is_numeric = False
          if is_numeric:
              result.append("r")
          else:
              result.append("l")
  
      return result
  
imports: import sys
  from igraph.statistics import median
  from itertools import islice
  from math import ceil
  from texttable import Texttable
  from textwrap import TextWrapper
label_desc: Use image node_id 9 for calling the GraphSummary obj's underlying member method code with example usage: obj._infer_column_alignment(vertex_attrs, edge_attrs) and returns: result