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.

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.
        """

        model_fields = [
            ("Method", 'method'),
            ("Number of distance components", 'num_distance_components'),
            ("Number of examples", 'num_examples'),
            ("Number of feature columns", 'num_features'),
            ("Number of unpacked features", 'num_unpacked_features'),
            ("Total training time (seconds)", 'training_time')]

        ball_tree_fields = [
            ("Tree depth", 'tree_depth'),
            ("Leaf size", 'leaf_size')]

        lsh_fields = [
            ("Number of hash tables", 'num_tables'),
            ("Number of projections per table", 'num_projections_per_table')]

        sections = [model_fields]
        section_titles = ['Attributes']

        if (self.method == 'ball_tree'):
            sections.append(ball_tree_fields)
            section_titles.append('Ball Tree Attributes')

        if (self.method == 'lsh'):
            sections.append(lsh_fields)
            section_titles.append('LSH Attributes')

        return (sections, section_titles)