docstr: Returns a structured description of the model, including (where relevant)
  the schema of the training data, description of the training data,
  training statistics, and model hyperparameters.
  
  Returns
  -------
  sections : list (of list of tuples)
      A list of summary sections.
        Each section is a list.
          Each item in a section list is a tuple of the form:
            ('<label>','<field>')
  section_titles: list
      A list of section titles.
        The order matches that of the 'sections' object.
docstr_tok: ["Returns","a","structured","description","of","the","model",",","including","(","where","relevant",")","the","schema","of","the","training","data",",","description","of","the","training","data",",","training","statistics",",","and","model","hyperparameters",".","Returns","--","--","--","-","sections",":","list","(","of","list","of","tuples",")","A","list","of","summary","sections",".","Each","section","is","a","list",".","Each","item","in","a","section","list","is","a","tuple","of","the","form",":","(","'","<","label",">","'",",","'","<","field",">","'",")","section_titles",":","list","A","list","of","section","titles",".","The","order","matches","that","of","the","'sections","'","object","."]
code: def _get_summary_struct(self):
      """
      Returns a structured description of the model, including (where relevant)
      the schema of the training data, description of the training data,
      training statistics, and model hyperparameters.
  
      Returns
      -------
      sections : list (of list of tuples)
          A list of summary sections.
            Each section is a list.
              Each item in a section list is a tuple of the form:
                ('<label>','<field>')
      section_titles: list
          A list of section titles.
            The order matches that of the 'sections' object.
      """
      g = self.graph
  
      section_titles = ["Graph"]
  
      graph_summary = [
          (k, _precomputed_field(v))
          for k, v in six.iteritems(g.summary())
      ]
  
      sections = [graph_summary]
  
      # collect other sections
      results = [
          (k, _precomputed_field(v))
          for k, v in six.iteritems(self._result_fields())
      ]
      methods = [
          (k, _precomputed_field(v))
          for k, v in six.iteritems(self._method_fields())
      ]
      settings = [
          (k, v) for k, v in six.iteritems(self._setting_fields())
      ]
      metrics = [
          (k, v) for k, v in six.iteritems(self._metric_fields())
      ]
  
      optional_sections = [
          ("Results", results),
          ("Settings", settings),
          ("Metrics", metrics),
          ("Methods", methods),
      ]
  
      # if section is not empty, append to summary structure
      for title, section in optional_sections:
          if len(section) > 0:
              section_titles.append(title)
              sections.append(section)
  
      return (sections, section_titles)
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import turicreate
  from turicreate.toolkits._model import CustomModel
  from prettytable import PrettyTable
  from turicreate.toolkits._internal_utils import _precomputed_field, _toolkit_repr_print
  import six
label_desc: Use image node_id 5 for calling the GraphAnalyticsModel obj's underlying member method code with example usage: obj._get_summary_struct() and returns: sections,  section_titles