docs: def init_UI(self):
          """
          Set display variables (font, resolution of GUI, sizer proportions)
          then builds the Side bar panel, Top bar panel, and Plots scrolleing
          panel which are then placed placed together in a sizer and fit to
          the GUI wx.Frame
          """
  # --------------------------------------------------------------------------
      # Setup ScrolledPanel Ctrls---------------------------------------------
  # --------------------------------------------------------------------------
  
      # ----------------------------------------------------------------------
          #  set ctrl size and style variables
      # ----------------------------------------------------------------------
          dw, dh = wx.DisplaySize()
          r1 = dw/1210.
          r2 = dw/640.
  
          self.GUI_RESOLUTION = min(r1, r2, 1)
          top_bar_2v_space = 5
          top_bar_h_space = 10
          spec_button_space = 10
          side_bar_v_space = 10
  
      # ----------------------------------------------------------------------
          #  set font size and style
      # ----------------------------------------------------------------------
  
          FONT_WEIGHT = 1
          if sys.platform.startswith('win'):
              FONT_WEIGHT = -1
          font1 = wx.Font(9+FONT_WEIGHT, wx.SWISS, wx.NORMAL,
                          wx.NORMAL, False, self.font_type)
          font2 = wx.Font(12+FONT_WEIGHT, wx.SWISS, wx.NORMAL,
                          wx.NORMAL, False, self.font_type)
          font = wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT)
          font.SetPointSize(10+FONT_WEIGHT)
  
  # --------------------------------------------------------------------------
      # Setup ScrolledPanel Ctrls---------------------------------------------
  # --------------------------------------------------------------------------
  
      # ----------------------------------------------------------------------
          # Create Figures and FigCanvas objects.
      # ----------------------------------------------------------------------
  
          self.fig1 = Figure((5.*self.GUI_RESOLUTION, 5. *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.canvas1 = FigCanvas(self.scrolled_panel, -1, self.fig1)
          self.toolbar1 = NavigationToolbar(self.canvas1)
          self.toolbar1.Hide()
          self.zijderveld_setting = "Zoom"
          self.toolbar1.zoom()
          self.canvas1.Bind(wx.EVT_RIGHT_DOWN, self.right_click_zijderveld)
          self.canvas1.Bind(wx.EVT_MIDDLE_DOWN, self.home_zijderveld)
          self.canvas1.Bind(wx.EVT_LEFT_DCLICK, self.on_zijd_select)
          self.canvas1.Bind(wx.EVT_RIGHT_DCLICK, self.on_zijd_mark)
          self.canvas1.Bind(wx.EVT_MOTION, self.on_change_zijd_mouse_cursor)
          self.canvas1.SetHelpText(dgh.zij_help)
  
          self.fig2 = Figure((2.5*self.GUI_RESOLUTION, 2.5 *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.specimen_eqarea = self.fig2.add_subplot(111)
          draw_net(self.specimen_eqarea)
          self.canvas2 = FigCanvas(self.scrolled_panel, -1, self.fig2)
          self.toolbar2 = NavigationToolbar(self.canvas2)
          self.toolbar2.Hide()
          self.toolbar2.zoom()
          self.specimen_EA_setting = "Zoom"
          self.canvas2.Bind(wx.EVT_LEFT_DCLICK,
                            self.on_equalarea_specimen_select)
          self.canvas2.Bind(wx.EVT_RIGHT_DOWN,
                            self.right_click_specimen_equalarea)
          self.canvas2.Bind(wx.EVT_MOTION, self.on_change_specimen_mouse_cursor)
          self.canvas2.Bind(wx.EVT_MIDDLE_DOWN, self.home_specimen_equalarea)
          self.canvas2.SetHelpText(dgh.spec_eqarea_help)
          self.specimen_EA_xdata = []
          self.specimen_EA_ydata = []
  
          self.fig3 = Figure((2.5*self.GUI_RESOLUTION, 2.5 *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.mplot = self.fig3.add_axes(
              [0.2, 0.15, 0.7, 0.7], frameon=True, facecolor='None')
          self.canvas3 = FigCanvas(self.scrolled_panel, -1, self.fig3)
          self.toolbar3 = NavigationToolbar(self.canvas3)
          self.toolbar3.Hide()
          self.toolbar3.zoom()
          self.MM0_setting = "Zoom"
          self.canvas3.Bind(wx.EVT_RIGHT_DOWN, self.right_click_MM0)
          self.canvas3.Bind(wx.EVT_MIDDLE_DOWN, self.home_MM0)
          self.canvas3.SetHelpText(dgh.MM0_help)
  
          self.fig4 = Figure((2.5*self.GUI_RESOLUTION, 2.5 *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.canvas4 = FigCanvas(self.scrolled_panel, -1, self.fig4)
          self.toolbar4 = NavigationToolbar(self.canvas4)
          self.toolbar4.Hide()
          self.toolbar4.zoom()
          self.high_EA_setting = "Zoom"
          self.canvas4.Bind(wx.EVT_LEFT_DCLICK, self.on_equalarea_high_select)
          self.canvas4.Bind(wx.EVT_RIGHT_DOWN, self.right_click_high_equalarea)
          self.canvas4.Bind(wx.EVT_MOTION, self.on_change_high_mouse_cursor)
          self.canvas4.Bind(wx.EVT_MIDDLE_DOWN, self.home_high_equalarea)
          self.canvas4.SetHelpText(dgh.high_level_eqarea_help)
          self.old_pos = None
          self.high_EA_xdata = []
          self.high_EA_ydata = []
          self.high_level_eqarea = self.fig4.add_subplot(111)
          draw_net(self.high_level_eqarea)
  
      # ----------------------------------------------------------------------
          # High level Stats Sizer and Switch Stats Button
      # ----------------------------------------------------------------------
  
          self.stats_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "mean statistics"), wx.VERTICAL)
  
          for parameter in ['mean_type', 'dec', 'inc', 'alpha95', 'K', 'R', 'n_lines', 'n_planes']:
              COMMAND = "self.%s_window=wx.TextCtrl(self.scrolled_panel,style=wx.TE_CENTER|wx.TE_READONLY,size=(50*self.GUI_RESOLUTION,25))" % parameter
              exec(COMMAND)
              COMMAND = "self.%s_window.SetBackgroundColour(wx.WHITE)" % parameter
              exec(COMMAND)
              COMMAND = "self.%s_window.SetFont(font2)" % parameter
              exec(COMMAND)
              COMMAND = "self.%s_outer_window = wx.GridSizer(1,2,5*self.GUI_RESOLUTION,15*self.GUI_RESOLUTION)" % parameter
              exec(COMMAND)
              COMMAND = """self.%s_outer_window.AddMany([
                      (wx.StaticText(self.scrolled_panel,label='%s',style=wx.TE_CENTER),1,wx.EXPAND),
                      (self.%s_window, 1, wx.EXPAND)])""" % (parameter, parameter, parameter)
              exec(COMMAND)
              COMMAND = "self.stats_sizer.Add(self.%s_outer_window, 1, wx.ALIGN_LEFT|wx.EXPAND)" % parameter
              exec(COMMAND)
  
          self.switch_stats_button = wx.SpinButton(
              self.scrolled_panel, id=wx.ID_ANY, style=wx.SP_HORIZONTAL | wx.SP_ARROW_KEYS | wx.SP_WRAP, name="change stats")
          self.Bind(wx.EVT_SPIN, self.on_select_stats_button,
                    self.switch_stats_button)
          self.switch_stats_button.SetHelpText(dgh.switch_stats_btn_help)
  
  # --------------------------------------------------------------------------
      #  Side Bar Options and Logger-----------------------------------------
  # --------------------------------------------------------------------------
  
      # ----------------------------------------------------------------------
          # Create text_box for presenting the measurements
      # ----------------------------------------------------------------------
  
          self.logger = wx.ListCtrl(self.side_panel, id=wx.ID_ANY, size=(
              100*self.GUI_RESOLUTION, 100*self.GUI_RESOLUTION), style=wx.LC_REPORT)
          self.logger.SetFont(font1)
          self.logger.InsertColumn(0, 'i', width=25*self.GUI_RESOLUTION)
          self.logger.InsertColumn(1, 'Step', width=25*self.GUI_RESOLUTION)
          self.logger.InsertColumn(2, 'Tr', width=35*self.GUI_RESOLUTION)
          self.logger.InsertColumn(3, 'Dec', width=35*self.GUI_RESOLUTION)
          self.logger.InsertColumn(4, 'Inc', width=35*self.GUI_RESOLUTION)
          self.logger.InsertColumn(5, 'M', width=45*self.GUI_RESOLUTION)
          self.logger.InsertColumn(6, 'csd', width=45*self.GUI_RESOLUTION)
          self.Bind(wx.EVT_LIST_ITEM_ACTIVATED,
                    self.on_click_listctrl, self.logger)
          self.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK,
                    self.on_right_click_listctrl, self.logger)
          self.Bind(wx.EVT_LIST_ITEM_SELECTED,
                    self.on_select_measurement, self.logger)
          self.logger.SetHelpText(dgh.logger_help)
  
      # ----------------------------------------------------------------------
          #  select specimen box
      # ----------------------------------------------------------------------
  
          # Combo-box with a list of specimen
          self.specimens_box = wx.ComboBox(self.side_panel, id=wx.ID_ANY, value=self.s, size=(
              200*self.GUI_RESOLUTION, 25), choices=self.specimens, style=wx.CB_DROPDOWN | wx.TE_PROCESS_ENTER, name="specimen")
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_specimen, self.specimens_box)
          self.Bind(wx.EVT_TEXT_ENTER, self.on_enter_specimen,
                    self.specimens_box)
          self.specimens_box.SetHelpText(dgh.specimens_box_help)
  
          # buttons to move forward and backwards from specimens
          self.nextbutton = wx.Button(
              self.side_panel, id=wx.ID_ANY, label='next', size=(100*self.GUI_RESOLUTION, 25))
          self.Bind(wx.EVT_BUTTON, self.on_next_button, self.nextbutton)
          self.nextbutton.SetFont(font2)
          self.nextbutton.SetHelpText(dgh.nextbutton_help)
  
          self.prevbutton = wx.Button(
              self.side_panel, id=wx.ID_ANY, label='previous', size=(100*self.GUI_RESOLUTION, 25))
          self.prevbutton.SetFont(font2)
          self.Bind(wx.EVT_BUTTON, self.on_prev_button, self.prevbutton)
          self.prevbutton.SetHelpText(dgh.prevbutton_help)
  
      # ----------------------------------------------------------------------
          #  select coordinate box
      # ----------------------------------------------------------------------
  
          self.COORDINATE_SYSTEM, self.coordinate_list = self.get_coordinate_system()
          self.coordinates_box = wx.ComboBox(self.side_panel, id=wx.ID_ANY, size=(
              200*self.GUI_RESOLUTION, 25), choices=self.coordinate_list, value=self.COORDINATE_SYSTEM, style=wx.CB_DROPDOWN | wx.TE_READONLY, name="coordinates")
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_coordinates,
                    self.coordinates_box)
          self.coordinates_box.SetHelpText(dgh.coordinates_box_help)
  
      # ----------------------------------------------------------------------
          #  Orthogonal Zijderveld Options box
      # ----------------------------------------------------------------------
  
          self.orthogonal_box = wx.ComboBox(self.side_panel, id=wx.ID_ANY, value='X=East', size=(
              200*self.GUI_RESOLUTION, 25), choices=['X=NRM dec', 'X=East', 'X=North'], style=wx.CB_DROPDOWN | wx.TE_READONLY, name="orthogonal_plot")
          # remove 'X=best fit line dec' as option given that is isn't implemented for multiple components
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_orthogonal_box,
                    self.orthogonal_box)
          self.orthogonal_box.SetHelpText(dgh.orthogonal_box_help)
  
  # --------------------------------------------------------------------------
      #  Top Bar Options ----------------------------------------------------
  # --------------------------------------------------------------------------
  
      # ----------------------------------------------------------------------
          #  select bounds box
      # ----------------------------------------------------------------------
  
          self.T_list = []
  
          self.tmin_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(
              50*self.GUI_RESOLUTION, 25), choices=self.T_list, style=wx.CB_DROPDOWN | wx.TE_READONLY)
          self.Bind(wx.EVT_COMBOBOX, self.get_new_PCA_parameters, self.tmin_box)
          self.tmin_box.SetHelpText(dgh.tmin_box_help)
  
          self.tmax_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(
              50*self.GUI_RESOLUTION, 25), choices=self.T_list, style=wx.CB_DROPDOWN | wx.TE_READONLY)
          self.Bind(wx.EVT_COMBOBOX, self.get_new_PCA_parameters, self.tmax_box)
          self.tmax_box.SetHelpText(dgh.tmax_box_help)
  
      # ----------------------------------------------------------------------
          #  Specimens interpretations Management box
      # ----------------------------------------------------------------------
  
          list_fits = []
  
          self.fit_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(
              50*self.GUI_RESOLUTION, 25), choices=list_fits, style=wx.TE_PROCESS_ENTER)
          self.Bind(wx.EVT_COMBOBOX, self.on_select_fit, self.fit_box)
          self.Bind(wx.EVT_TEXT_ENTER, self.on_enter_fit_name, self.fit_box)
          self.fit_box.SetHelpText(dgh.fit_box_help)
  
          self.add_fit_button = wx.Button(
              self.panel, id=wx.ID_ANY, label='add fit', size=(50*self.GUI_RESOLUTION, 25))
          self.add_fit_button.SetFont(font2)
          self.Bind(wx.EVT_BUTTON, self.on_btn_add_fit, self.add_fit_button)
          self.add_fit_button.SetHelpText(dgh.add_fit_button_help)
  
          # save/delete interpretation buttons
          self.save_fit_button = wx.Button(self.panel, id=wx.ID_ANY, label='save', size=(
              50*self.GUI_RESOLUTION, 25))  # ,style=wx.BU_EXACTFIT)#, size=(175, 28))
          self.save_fit_button.SetFont(font2)
          self.save_fit_button.SetHelpText(dgh.save_fit_btn_help)
  
          self.delete_fit_button = wx.Button(self.panel, id=wx.ID_ANY, label='delete fit', size=(
              50*self.GUI_RESOLUTION, 25))  # ,style=wx.BU_EXACTFIT)#, size=(175, 28))
          self.delete_fit_button.SetFont(font2)
          self.delete_fit_button.SetHelpText(dgh.delete_fit_btn_help)
  
          self.Bind(wx.EVT_BUTTON, self.on_save_interpretation_button,
                    self.save_fit_button)
          self.Bind(wx.EVT_BUTTON, self.on_btn_delete_fit,
                    self.delete_fit_button)
  
          # auto-save interpretation buttons
          self.auto_save = wx.CheckBox(self.panel, wx.ID_ANY, 'auto-save')
          if self.preferences['auto_save']:
              self.auto_save.SetValue(True)
  
          self.auto_save_info = wx.Button(self.panel, wx.ID_ANY, "?")
          self.Bind(wx.EVT_BUTTON, self.on_btn_info_click, self.auto_save_info)
  
      # ----------------------------------------------------------------------
          # Interpretation Type and Display window
      # ----------------------------------------------------------------------
  
          self.PCA_type_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(50*self.GUI_RESOLUTION, 25), value='line', choices=[
                                          'line', 'line-anchored', 'line-with-origin', 'plane', 'Fisher'], style=wx.CB_DROPDOWN | wx.TE_READONLY, name="coordinates")
          self.Bind(wx.EVT_COMBOBOX,
                    self.on_select_specimen_mean_type_box, self.PCA_type_box)
          self.PCA_type_box.SetHelpText(dgh.PCA_type_help)
  
          self.plane_display_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(50*self.GUI_RESOLUTION, 25), value='whole plane', choices=[
                                               'whole plane', 'u. hemisphere', 'l. hemisphere', 'poles', 'bfv', 'wp + bfv'], style=wx.CB_DROPDOWN | wx.TE_READONLY, name="PlaneType")
          self.Bind(wx.EVT_COMBOBOX, self.on_select_plane_display_box,
                    self.plane_display_box)
          self.plane_display_box.SetHelpText(dgh.plane_display_help)
  
      # ----------------------------------------------------------------------
          # Interpretation Statistics StaticSizer
      # ----------------------------------------------------------------------
  
          box_sizer_specimen_stat = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "Interpretation Direction and Statistics"), wx.HORIZONTAL)
  
          for parameter in ['dec', 'inc', 'n', 'mad', 'dang', 'alpha95']:
              COMMAND = "self.s%s_window=wx.TextCtrl(self.panel,style=wx.TE_CENTER|wx.TE_READONLY,size=(25*self.GUI_RESOLUTION,25))" % parameter
              exec(COMMAND)
              COMMAND = "self.s%s_window.SetBackgroundColour(wx.WHITE)" % parameter
              exec(COMMAND)
              COMMAND = "self.s%s_window.SetFont(font2)" % parameter
              exec(COMMAND)
  
          specimen_stat_window = wx.GridSizer(2, 6, 0, 5)
          specimen_stat_window.AddMany([(wx.StaticText(self.panel, label="dec", style=wx.TE_CENTER), 1, wx.EXPAND | wx.TOP, 2*top_bar_2v_space),
                                        (wx.StaticText(self.panel, label="inc", style=wx.TE_CENTER),
                                         1, wx.EXPAND | wx.TOP, 2*top_bar_2v_space),
                                        (wx.StaticText(self.panel, label="n", style=wx.TE_CENTER),
                                         1, wx.EXPAND | wx.TOP, 2*top_bar_2v_space),
                                        (wx.StaticText(self.panel, label="mad", style=wx.TE_CENTER),
                                         1, wx.EXPAND | wx.TOP, 2*top_bar_2v_space),
                                        (wx.StaticText(self.panel, label="dang", style=wx.TE_CENTER),
                                         1, wx.TE_CENTER | wx.EXPAND | wx.TOP, 2*top_bar_2v_space),
                                        (wx.StaticText(self.panel, label="a95", style=wx.TE_CENTER),
                                         1, wx.TE_CENTER | wx.EXPAND | wx.TOP, 2*top_bar_2v_space),
                                        (self.sdec_window, 1, wx.EXPAND),
                                        (self.sinc_window, 1, wx.EXPAND),
                                        (self.sn_window, 1, wx.EXPAND),
                                        (self.smad_window, 1, wx.EXPAND),
                                        (self.sdang_window, 1, wx.EXPAND),
                                        (self.salpha95_window, 1, wx.EXPAND)])
          box_sizer_specimen_stat.Add(
              specimen_stat_window, 1, wx.ALIGN_LEFT | wx.EXPAND)
  
      # ----------------------------------------------------------------------
          # High level mean window
      # ----------------------------------------------------------------------
  
          self.level_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(50*self.GUI_RESOLUTION, 25), value='site',  choices=[
                                       'sample', 'site', 'location', 'study'], style=wx.CB_DROPDOWN | wx.TE_READONLY, name="high_level")
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_high_level, self.level_box)
          self.level_box.SetHelpText(dgh.level_box_help)
  
          self.level_names = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(
              50*self.GUI_RESOLUTION, 25), value=self.site, choices=self.sites, style=wx.CB_DROPDOWN | wx.TE_READONLY, name="high_level_names")
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_level_name, self.level_names)
          self.level_names.SetHelpText(dgh.level_names_help)
  
      # ----------------------------------------------------------------------
          # mean types box
      # ----------------------------------------------------------------------
  
          self.mean_type_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(50*self.GUI_RESOLUTION, 25), value='None', choices=[
                                           'Fisher', 'Fisher by polarity', 'None'], style=wx.CB_DROPDOWN | wx.TE_READONLY, name="high_type")
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_mean_type_box,
                    self.mean_type_box)
          self.mean_type_box.SetHelpText(dgh.mean_type_help)
  
          self.mean_fit_box = wx.ComboBox(self.panel, id=wx.ID_ANY, size=(50*self.GUI_RESOLUTION, 25), value='None', choices=[
                                          'None', 'All'] + list_fits, style=wx.CB_DROPDOWN | wx.TE_READONLY, name="high_type")
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_mean_fit_box,
                    self.mean_fit_box)
          self.mean_fit_box.SetHelpText(dgh.mean_fit_help)
          self.mean_fit = 'None'
  
      # ----------------------------------------------------------------------
          # Warnings TextCtrl
      # ----------------------------------------------------------------------
          warning_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "Current Data Warnings"), wx.VERTICAL)
  
          self.warning_box = wx.TextCtrl(self.panel, id=wx.ID_ANY, size=(50*self.GUI_RESOLUTION, 50 + 2*top_bar_2v_space),
                                         value="No Problems", style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL, name="warning_box")
          self.warning_box.SetHelpText(dgh.warning_help)
  
          warning_sizer.Add(self.warning_box, 1, wx.TOP | wx.EXPAND)
  
      # ----------------------------------------------------------------------
          # Design the panel
      # ----------------------------------------------------------------------
  
          # Top Bar-----------------------------------------------------------
          top_bar_sizer = wx.BoxSizer(wx.HORIZONTAL)
  
          bounds_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "Bounds"), wx.VERTICAL)
          bounds_sizer.AddMany([(self.tmin_box, 1, wx.ALIGN_TOP | wx.EXPAND | wx.BOTTOM, top_bar_2v_space),
                                (self.tmax_box, 1, wx.ALIGN_BOTTOM | wx.EXPAND | wx.TOP, top_bar_2v_space)])
          top_bar_sizer.Add(bounds_sizer, 1, wx.ALIGN_LEFT)
  
          fit_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "Interpretation Options"), wx.VERTICAL)
          fit_grid = wx.GridSizer(2, 3, top_bar_h_space, 2*top_bar_2v_space)
          fit_grid.AddMany([(self.add_fit_button, 1, wx.ALIGN_TOP | wx.ALIGN_LEFT | wx.EXPAND),
                            (self.save_fit_button, 1, wx.ALIGN_TOP |
                             wx.ALIGN_LEFT | wx.EXPAND),
                            (self.auto_save, 1, wx.ALIGN_CENTER),
                            (self.fit_box, 1, wx.ALIGN_BOTTOM |
                             wx.ALIGN_LEFT | wx.EXPAND),
                            (self.delete_fit_button, 1, wx.ALIGN_BOTTOM | wx.ALIGN_LEFT | wx.EXPAND),
                            (self.auto_save_info, 1, wx.ALIGN_CENTER)])
          fit_sizer.Add(fit_grid, 1, wx.EXPAND)
          top_bar_sizer.Add(fit_sizer, 2, wx.ALIGN_LEFT |
                            wx.LEFT, top_bar_h_space)
  
          fit_type_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "Interpretation Type"), wx.VERTICAL)
          fit_type_sizer.AddMany([(self.PCA_type_box, 1, wx.ALIGN_TOP | wx.EXPAND | wx.BOTTOM, top_bar_2v_space),
                                  (self.plane_display_box, 1, wx.ALIGN_BOTTOM | wx.EXPAND | wx.TOP, top_bar_2v_space)])
          top_bar_sizer.Add(fit_type_sizer, 1, wx.ALIGN_LEFT |
                            wx.LEFT, top_bar_h_space)
  
          top_bar_sizer.Add(box_sizer_specimen_stat, 3,
                            wx.ALIGN_LEFT | wx.LEFT, top_bar_h_space)
  
          level_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "Display Level"), wx.VERTICAL)
          level_sizer.AddMany([(self.level_box, 1, wx.ALIGN_TOP | wx.EXPAND | wx.BOTTOM, top_bar_2v_space),
                               (self.level_names, 1, wx.ALIGN_BOTTOM | wx.EXPAND | wx.TOP, top_bar_2v_space)])
          top_bar_sizer.Add(level_sizer, 1, wx.ALIGN_LEFT |
                            wx.LEFT, top_bar_h_space)
  
          mean_options_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.panel, wx.ID_ANY, "Mean Options"), wx.VERTICAL)
          mean_options_sizer.AddMany([(self.mean_type_box, 1, wx.ALIGN_TOP | wx.EXPAND | wx.BOTTOM, top_bar_2v_space),
                                      (self.mean_fit_box, 1, wx.ALIGN_BOTTOM | wx.EXPAND | wx.TOP, top_bar_2v_space)])
          top_bar_sizer.Add(mean_options_sizer, 1,
                            wx.ALIGN_LEFT | wx.LEFT, top_bar_h_space)
  
          top_bar_sizer.Add(warning_sizer, 2, wx.ALIGN_LEFT |
                            wx.LEFT, top_bar_h_space)
  
          # Side Bar------------------------------------------------------------
          side_bar_sizer = wx.BoxSizer(wx.VERTICAL)
  
          spec_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.side_panel, wx.ID_ANY, "Specimen"), wx.VERTICAL)
          spec_buttons_sizer = wx.GridSizer(1, 2, 0, spec_button_space)
          spec_buttons_sizer.AddMany([(self.prevbutton, 1, wx.ALIGN_LEFT | wx.EXPAND),
                                      (self.nextbutton, 1, wx.ALIGN_RIGHT | wx.EXPAND)])
          spec_sizer.AddMany([(self.specimens_box, 1, wx.ALIGN_TOP | wx.EXPAND | wx.BOTTOM, side_bar_v_space/2),
                              (spec_buttons_sizer, 1, wx.ALIGN_BOTTOM | wx.EXPAND | wx.TOP, side_bar_v_space/2)])
          side_bar_sizer.Add(spec_sizer, .5, wx.ALIGN_TOP | wx.EXPAND)
          side_bar_sizer.Add(wx.StaticLine(self.side_panel), .5,
                             wx.ALL | wx.EXPAND, side_bar_v_space)
  
          coordinate_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.side_panel, wx.ID_ANY, "Coordinate System"), wx.VERTICAL)
          coordinate_sizer.Add(self.coordinates_box, .5, wx.EXPAND)
          side_bar_sizer.Add(coordinate_sizer, .5, wx.ALIGN_TOP | wx.EXPAND)
          side_bar_sizer.Add(wx.StaticLine(self.side_panel), .5,
                             wx.ALL | wx.EXPAND, side_bar_v_space)
  
          zijderveld_option_sizer = wx.StaticBoxSizer(wx.StaticBox(
              self.side_panel, wx.ID_ANY, "Zijderveld Plot Options"), wx.VERTICAL)
          zijderveld_option_sizer.Add(self.orthogonal_box, 1, wx.EXPAND)
          side_bar_sizer.Add(zijderveld_option_sizer, .5,
                             wx.ALIGN_TOP | wx.EXPAND)
  
          side_bar_sizer.Add(self.logger, proportion=1,
                             flag=wx.ALIGN_TOP | wx.TOP | wx.EXPAND, border=8)
  
          # Mean Stats and button Sizer-----------------------------------------
          stats_and_button_sizer = wx.BoxSizer(wx.HORIZONTAL)
          stats_and_button_sizer.AddMany([(self.stats_sizer, 1, wx.ALIGN_LEFT | wx.EXPAND),
                                          (self.switch_stats_button, .3, wx.ALIGN_RIGHT | wx.EXPAND)])
  
          # EQ area MM0 and stats sizer-----------------------------------------
          eqarea_MM0_stats_sizer = wx.GridSizer(2, 2, 0, 0)
          eqarea_MM0_stats_sizer.AddMany([(self.canvas2, 1, wx.ALIGN_LEFT | wx.EXPAND),
                                          (self.canvas4, 1, wx.ALIGN_RIGHT | wx.EXPAND),
                                          (self.canvas3, 1, wx.ALIGN_LEFT | wx.EXPAND),
                                          (stats_and_button_sizer, 1, wx.ALIGN_RIGHT | wx.EXPAND)])
  
          # Plots and Stats Sizer-----------------------------------------------
          full_plots_sizer = wx.BoxSizer(wx.HORIZONTAL)
          full_plots_sizer.Add(self.canvas1, 1, wx.ALIGN_LEFT | wx.EXPAND)
          full_plots_sizer.Add(eqarea_MM0_stats_sizer, 1.5,
                               wx.ALIGN_RIGHT | wx.EXPAND)
  
          self.panel.SetSizerAndFit(top_bar_sizer)
          self.side_panel.SetSizerAndFit(side_bar_sizer)
          self.scrolled_panel.SetSizer(full_plots_sizer)
  
          # Outer Sizer---------------------------------------------------------
          add_side_bar_sizer = wx.BoxSizer(wx.HORIZONTAL)
          add_side_bar_sizer.Add(self.side_panel, 1, wx.ALIGN_LEFT | wx.EXPAND)
          add_side_bar_sizer.Add(self.scrolled_panel, 5,
                                 wx.ALIGN_RIGHT | wx.EXPAND)
  
          outersizer = wx.BoxSizer(wx.VERTICAL)
          outersizer.Add(self.panel, .2, wx.ALIGN_TOP | wx.EXPAND)
          outersizer.Add(add_side_bar_sizer, 1, wx.ALIGN_BOTTOM | wx.EXPAND)
  
          self.SetSizer(outersizer)
          outersizer.Fit(self)
  
          self.GUI_SIZE = self.GetSize()