                     ("elapsed", 90, None),
                     ("batch", 50, None),
                     ("iterations", 90, None),
                     ("rate", 60, "EGs/sec"))
          self.tree["columns"] = [column[0] for column in columns]
  
          for column in columns:
              text = column[2] if column[2] else column[0].title()
              logger.debug("Adding heading: '%s'", text)
              self.tree.heading(column[0], text=text)
 
</s> remove             self.tree.heading(column[0], text=text)
            self.tree.column(column[0], width=column[1], anchor=tk.E, minwidth=40)
        self.tree.column("#0", width=40)
        self.tree.heading("#0", text="Graphs")
 </s> add             self._tree.heading(column[0], text=text)
            self._tree.column(column[0], width=column[1], anchor=tk.E, minwidth=40)
        self._tree.column("#0", width=40)
        self._tree.heading("#0", text="Graphs") </s> remove         self.tree.configure(yscrollcommand=self.scrollbar.set)
        self.tree.tag_configure("total", background="black", foreground="white")
        self.tree.pack(side=tk.TOP, fill=tk.X)
        self.tree.bind("<ButtonRelease-1>", self.select_item)
        Tooltip(self.tree, text=helptext, wraplength=200)
        return self.tree_columns()

    def tree_columns(self):
        """ Add the columns to the totals tree-view """
 </s> add         self._tree.configure(yscrollcommand=self._scrollbar.set)
        self._tree.tag_configure("total", background="black", foreground="white")
        self._tree.bind("<ButtonRelease-1>", self._select_item)
        Tooltip(self._tree, text=helptext, wraplength=200)
        return self._tree_columns()

    def _tree_columns(self):
        """ Add the columns to the totals tree-view.

        Returns
        -------
        list
            The list of tree-view columns
        """ </s> remove         """ Insert the data into the totals tree-view """
 </s> add         """ Insert the summary data into the statistics tree-view.

        Parameters
        ----------
        sessions_summary: list
            List of session summary dicts for populating into the tree-view
        """ </s> remove             values = [item[column] for column in self.columns]
 </s> add             values = [item[column] for column in self._columns] </s> remove             if self.check_valid_data(values):
 </s> add             if self._check_valid_data(values):
        self._tree["columns"] = [column[0] for column in columns]
                     ("elapsed", 90, None),
                     ("batch", 50, None),
                     ("iterations", 90, None),
                     ("rate", 60, "EGs/sec"))
        self._tree["columns"] = [column[0] for column in columns]
  
          for column in columns:
              text = column[2] if column[2] else column[0].title()
              logger.debug("Adding heading: '%s'", text)
              self.tree.heading(column[0], text=text)
keep keep keep keep replace keep keep keep keep keep
 GUI - Stats optimization (#1067)

* Faster stat loading + caching

* Compress data in cache

* Optimize some calculations

* Vectorize smoothing

* stats.Calculations optimized

* Load latest training data from live iterator

* Add options to training graph 
lib/gui/display_analysis.py