docs: def Main_Frame(self):
          """
          Build main frame od panel: buttons, etc.
          choose the first specimen and display data
          """
  
          #--------------------------------------------------------------------
          # initialize first specimen in list as current specimen
          #--------------------------------------------------------------------
  
          try:
              self.s = self.specimens[0]
          except:
              self.s = ""
              print("No specimens during UI build")
  
          #--------------------------------------------------------------------
          # create main panel in the right size
          #--------------------------------------------------------------------
  
          dw, dh = wx.DisplaySize()
          w, h = self.GetSize()
          r1 = dw / 1250.
          r2 = dw / 750.
  
          GUI_RESOLUTION = min(r1, r2, 1.3)
          if 'gui_resolution' in list(self.preferences.keys()):
              if float(self.preferences['gui_resolution']) != 1:
                  self.GUI_RESOLUTION = float(
                      self.preferences['gui_resolution']) / 100
              else:
                  self.GUI_RESOLUTION = min(r1, r2, 1.3)
          else:
              self.GUI_RESOLUTION = min(r1, r2, 1.3)
  
          #--------------------------------------------------------------------
          # adjust font size
          #--------------------------------------------------------------------
  
          self.font_type = "Arial"
          if sys.platform.startswith("linux"):
              self.font_type = "Liberation Serif"
  
          if self.GUI_RESOLUTION >= 1.1 and self.GUI_RESOLUTION <= 1.3:
              font2 = wx.Font(13, wx.SWISS, wx.NORMAL,
                              wx.NORMAL, False, self.font_type)
          elif self.GUI_RESOLUTION <= 0.9 and self.GUI_RESOLUTION < 1.0:
              font2 = wx.Font(11, wx.SWISS, wx.NORMAL,
                              wx.NORMAL, False, self.font_type)
          elif self.GUI_RESOLUTION <= 0.9:
              font2 = wx.Font(10, wx.SWISS, wx.NORMAL,
                              wx.NORMAL, False, self.font_type)
          else:
              font2 = wx.Font(12, wx.SWISS, wx.NORMAL,
                              wx.NORMAL, False, self.font_type)
          print("    self.GUI_RESOLUTION", self.GUI_RESOLUTION)
  
          h_space = 4
          v_space = 4
  
          # set font size and style
          #font1 = wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False, u'Comic Sans MS')
          FONT_RATIO = self.GUI_RESOLUTION + (self.GUI_RESOLUTION - 1) * 5
          font1 = wx.Font(9 + FONT_RATIO, wx.SWISS, wx.NORMAL,
                          wx.NORMAL, False, self.font_type)
          # GUI headers
  
          font3 = wx.Font(11 + FONT_RATIO, wx.SWISS, wx.NORMAL,
                          wx.NORMAL, False, self.font_type)
          font = wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT)
          font.SetPointSize(10 + FONT_RATIO)
  
          #--------------------------------------------------------------------
          # Create Figures and FigCanvas objects.
          #--------------------------------------------------------------------
  
          self.fig1 = Figure((5. * self.GUI_RESOLUTION, 5. *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.canvas1 = FigCanvas(self.plot_panel, wx.ID_ANY, self.fig1)
          self.fig1.text(0.01, 0.98, "Arai plot", {
                         'family': self.font_type, 'fontsize': 10, 'style': 'normal', 'va': 'center', 'ha': 'left'})
          self.toolbar1 = NavigationToolbar(self.canvas1)
          self.toolbar1.Hide()
          self.fig1_setting = "Zoom"
          self.toolbar1.zoom()
          self.canvas1.Bind(wx.EVT_RIGHT_DOWN, self.on_right_click_fig)
          self.canvas1.Bind(wx.EVT_MIDDLE_DOWN, self.on_home_fig)
  
          self.fig2 = Figure((2.5 * self.GUI_RESOLUTION, 2.5 *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.canvas2 = FigCanvas(self.plot_panel, wx.ID_ANY, self.fig2)
          self.fig2.text(0.02, 0.96, "Zijderveld", {
                         'family': self.font_type, 'fontsize': 10, 'style': 'normal', 'va': 'center', 'ha': 'left'})
          self.toolbar2 = NavigationToolbar(self.canvas2)
          self.toolbar2.Hide()
          self.fig2_setting = "Zoom"
          self.toolbar2.zoom()
          self.canvas2.Bind(wx.EVT_RIGHT_DOWN, self.on_right_click_fig)
          self.canvas2.Bind(wx.EVT_MIDDLE_DOWN, self.on_home_fig)
  
          self.fig3 = Figure((2.5 * self.GUI_RESOLUTION, 2.5 *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.canvas3 = FigCanvas(self.plot_panel, wx.ID_ANY, self.fig3)
          #self.fig3.text(0.02,0.96,"Equal area",{'family':self.font_type, 'fontsize':10*self.GUI_RESOLUTION, 'style':'normal','va':'center', 'ha':'left' })
          self.toolbar3 = NavigationToolbar(self.canvas3)
          self.toolbar3.Hide()
          self.fig3_setting = "Zoom"
          self.toolbar3.zoom()
          self.canvas3.Bind(wx.EVT_RIGHT_DOWN, self.on_right_click_fig)
          self.canvas3.Bind(wx.EVT_MIDDLE_DOWN, self.on_home_fig)
  
          self.fig4 = Figure((2.5 * self.GUI_RESOLUTION, 2.5 *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.canvas4 = FigCanvas(self.plot_panel, wx.ID_ANY, self.fig4)
          if self.acceptance_criteria['average_by_sample_or_site']['value'] == 'site':
              TEXT = "Site data"
          else:
              TEXT = "Sample data"
          self.fig4.text(0.02, 0.96, TEXT, {
                         'family': self.font_type, 'fontsize': 10, 'style': 'normal', 'va': 'center', 'ha': 'left'})
          self.toolbar4 = NavigationToolbar(self.canvas4)
          self.toolbar4.Hide()
          self.fig4_setting = "Zoom"
          self.toolbar4.zoom()
          self.canvas4.Bind(wx.EVT_RIGHT_DOWN, self.on_right_click_fig)
          self.canvas4.Bind(wx.EVT_MIDDLE_DOWN, self.on_home_fig)
  
          self.fig5 = Figure((2.5 * self.GUI_RESOLUTION, 2.5 *
                              self.GUI_RESOLUTION), dpi=self.dpi)
          self.canvas5 = FigCanvas(self.plot_panel, wx.ID_ANY, self.fig5)
          #self.fig5.text(0.02,0.96,"M/M0",{'family':self.font_type, 'fontsize':10, 'style':'normal','va':'center', 'ha':'left' })
          self.toolbar5 = NavigationToolbar(self.canvas5)
          self.toolbar5.Hide()
          self.fig5_setting = "Zoom"
          self.toolbar5.zoom()
          self.canvas5.Bind(wx.EVT_RIGHT_DOWN, self.on_right_click_fig)
          self.canvas5.Bind(wx.EVT_MIDDLE_DOWN, self.on_home_fig)
  
          # make axes of the figures
          self.araiplot = self.fig1.add_axes([0.1, 0.1, 0.8, 0.8])
          self.zijplot = self.fig2.add_subplot(111)
          self.eqplot = self.fig3.add_subplot(111)
          self.sampleplot = self.fig4.add_axes(
              [0.2, 0.3, 0.7, 0.6], frameon=True, facecolor='None')
          self.mplot = self.fig5.add_axes(
              [0.2, 0.15, 0.7, 0.7], frameon=True, facecolor='None')
  
          #--------------------------------------------------------------------
          # text box displaying measurement data
          #--------------------------------------------------------------------
  
          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=45 * self.GUI_RESOLUTION)
          self.logger.InsertColumn(1, 'Step', width=45 * self.GUI_RESOLUTION)
          self.logger.InsertColumn(2, 'Tr', width=65 * self.GUI_RESOLUTION)
          self.logger.InsertColumn(3, 'Dec', width=65 * self.GUI_RESOLUTION)
          self.logger.InsertColumn(4, 'Inc', width=65 * self.GUI_RESOLUTION)
          self.logger.InsertColumn(5, 'M', width=75 * 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)
  
          #--------------------------------------------------------------------
          # select a specimen box
          #--------------------------------------------------------------------
  
          # Combo-box with a list of specimen
          self.specimens_box = wx.ComboBox(self.top_panel, wx.ID_ANY, self.s, (250 * self.GUI_RESOLUTION, 25),
                                           wx.DefaultSize, self.specimens, wx.CB_DROPDOWN | wx.TE_PROCESS_ENTER, name="specimen")
          self.specimens_box.SetFont(font2)
          self.Bind(wx.EVT_COMBOBOX, self.onSelect_specimen, self.specimens_box)
          self.Bind(wx.EVT_TEXT_ENTER, self.onSelect_specimen,
                    self.specimens_box)
  
          # buttons to move forward and backwards from specimens
          nextbutton = wx.Button(self.top_panel, id=wx.ID_ANY, label='next', size=(
              75 * self.GUI_RESOLUTION, 25))  # ,style=wx.BU_EXACTFIT)#, size=(175, 28))
          self.Bind(wx.EVT_BUTTON, self.on_next_button, nextbutton)
          nextbutton.SetFont(font2)
  
          prevbutton = wx.Button(self.top_panel, id=wx.ID_ANY, label='previous', size=(
              75 * self.GUI_RESOLUTION, 25))  # ,style=wx.BU_EXACTFIT)#, size=(175, 28))
          prevbutton.SetFont(font2)
          self.Bind(wx.EVT_BUTTON, self.on_prev_button, prevbutton)
  
          #--------------------------------------------------------------------
          # select temperature bounds
          #--------------------------------------------------------------------
  
          try:
              if self.Data[self.s]['T_or_MW'] == "T":
                  self.temperatures = np.array(
                      self.Data[self.s]['t_Arai']) - 273.
                  self.T_list = ["%.0f" % T for T in self.temperatures]
              elif self.Data[self.s]['T_or_MW'] == "MW":
                  self.temperatures = np.array(self.Data[self.s]['t_Arai'])
                  self.T_list = ["%.0f" % T for T in self.temperatures]
          except (ValueError, TypeError, KeyError) as e:
              self.T_list = []
  
          self.tmin_box = wx.ComboBox(self.top_panel, wx.ID_ANY, size=(
              100 * self.GUI_RESOLUTION, 25), choices=self.T_list, style=wx.CB_DROPDOWN | wx.TE_READONLY)
          self.Bind(wx.EVT_COMBOBOX, self.get_new_T_PI_parameters, self.tmin_box)
  
          self.tmax_box = wx.ComboBox(self.top_panel, -1, size=(100 * self.GUI_RESOLUTION, 25),
                                      choices=self.T_list, style=wx.CB_DROPDOWN | wx.TE_READONLY)
          self.Bind(wx.EVT_COMBOBOX, self.get_new_T_PI_parameters, self.tmax_box)
  
          #--------------------------------------------------------------------
          # save/delete buttons
          #--------------------------------------------------------------------
  
          # save/delete interpretation buttons
          self.save_interpretation_button = wx.Button(self.top_panel, id=-1, label='save', size=(
              75 * self.GUI_RESOLUTION, 25))  # ,style=wx.BU_EXACTFIT)#, size=(175, 28))
          self.save_interpretation_button.SetFont(font2)
          self.delete_interpretation_button = wx.Button(self.top_panel, id=-1, label='delete', size=(
              75 * self.GUI_RESOLUTION, 25))  # ,style=wx.BU_EXACTFIT)#, size=(175, 28))
          self.delete_interpretation_button.SetFont(font2)
          self.Bind(wx.EVT_BUTTON, self.on_save_interpretation_button,
                    self.save_interpretation_button)
          self.Bind(wx.EVT_BUTTON, self.on_delete_interpretation_button,
                    self.delete_interpretation_button)
  
          self.auto_save = wx.CheckBox(self.top_panel, wx.ID_ANY, 'auto-save')
          self.auto_save_info = wx.Button(self.top_panel, wx.ID_ANY, "?")
          self.Bind(wx.EVT_BUTTON, self.on_info_click, self.auto_save_info)
          #self.auto_save_text = wx.StaticText(self.top_panel, wx.ID_ANY, label="(saves with 'next')")
  
  
          #--------------------------------------------------------------------
          # specimen interpretation and statistics window (Blab; Banc, Dec, Inc, correction factors etc.)
          #--------------------------------------------------------------------
  
          self.Blab_window = wx.TextCtrl(
              self.top_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
          self.Banc_window = wx.TextCtrl(
              self.top_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
          self.Aniso_factor_window = wx.TextCtrl(
              self.top_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
          self.NLT_factor_window = wx.TextCtrl(
              self.top_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
          self.CR_factor_window = wx.TextCtrl(
              self.top_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
          self.declination_window = wx.TextCtrl(
              self.top_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
          self.inclination_window = wx.TextCtrl(
              self.top_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
  
          for stat in ['Blab', 'Banc', 'Aniso_factor', 'NLT_factor', 'CR_factor', 'declination', 'inclination']:
              exec("self.%s_window.SetBackgroundColour(wx.WHITE)" % stat)
  
          self.Blab_label = wx.StaticText(
              self.top_panel, label="\nB_lab", style=wx.ALIGN_CENTRE)
          self.Blab_label.SetFont(font2)
          self.Banc_label = wx.StaticText(
              self.top_panel, label="\nB_anc", style=wx.ALIGN_CENTRE)
          self.Banc_label.SetFont(font2)
          self.aniso_corr_label = wx.StaticText(
              self.top_panel, label="Aniso\ncorr", style=wx.ALIGN_CENTRE)
          self.aniso_corr_label.SetFont(font2)
          self.nlt_corr_label = wx.StaticText(
              self.top_panel, label="NLT\ncorr", style=wx.ALIGN_CENTRE)
          self.nlt_corr_label.SetFont(font2)
          self.cr_corr_label = wx.StaticText(
              self.top_panel, label="CR\ncorr", style=wx.ALIGN_CENTRE)
          self.cr_corr_label.SetFont(font2)
          self.dec_label = wx.StaticText(
              self.top_panel, label="\nDec", style=wx.ALIGN_CENTRE)
          self.dec_label.SetFont(font2)
          self.inc_label = wx.StaticText(
              self.top_panel, label="\nInc", style=wx.ALIGN_CENTRE)
          self.inc_label.SetFont(font2)
  
          # handle Specimen Results Sizer
          sizer_specimen_results = wx.StaticBoxSizer(wx.StaticBox(
              self.top_panel, wx.ID_ANY, "specimen results"), wx.HORIZONTAL)
          specimen_stat_window = wx.GridSizer(2, 7, h_space, v_space)
          specimen_stat_window.AddMany([(self.Blab_label, 1, wx.ALIGN_BOTTOM),
                                        ((self.Banc_label), 1, wx.ALIGN_BOTTOM),
                                        ((self.aniso_corr_label), 1, wx.ALIGN_BOTTOM),
                                        ((self.nlt_corr_label), 1, wx.ALIGN_BOTTOM),
                                        ((self.cr_corr_label), 1, wx.ALIGN_BOTTOM),
                                        ((self.dec_label), 1,
                                         wx.TE_CENTER | wx.ALIGN_BOTTOM),
                                        ((self.inc_label), 1, wx.ALIGN_BOTTOM),
                                        (self.Blab_window, 1, wx.EXPAND),
                                        (self.Banc_window, 1, wx.EXPAND),
                                        (self.Aniso_factor_window, 1, wx.EXPAND),
                                        (self.NLT_factor_window, 1, wx.EXPAND),
                                        (self.CR_factor_window, 1, wx.EXPAND),
                                        (self.declination_window, 1, wx.EXPAND),
                                        (self.inclination_window, 1, wx.EXPAND)])
          sizer_specimen_results.Add(
              specimen_stat_window, 1, wx.EXPAND | wx.ALIGN_LEFT, 0)
  
          #--------------------------------------------------------------------
          # Sample interpretation window
          #--------------------------------------------------------------------
  
          for key in ["sample_int_n", "sample_int_uT", "sample_int_sigma", "sample_int_sigma_perc"]:
              command = "self.%s_window=wx.TextCtrl(self.top_panel,style=wx.TE_CENTER|wx.TE_READONLY,size=(50*self.GUI_RESOLUTION,25))" % key
              exec(command)
              exec("self.%s_window.SetBackgroundColour(wx.WHITE)" % key)
  
          sample_mean_label = wx.StaticText(
              self.top_panel, label="\nmean", style=wx.TE_CENTER)
          sample_mean_label.SetFont(font2)
          sample_N_label = wx.StaticText(
              self.top_panel, label="\nN ", style=wx.TE_CENTER)
          sample_N_label.SetFont(font2)
          sample_std_label = wx.StaticText(
              self.top_panel, label="\nstd uT", style=wx.TE_CENTER)
          sample_std_label.SetFont(font2)
          sample_std_per_label = wx.StaticText(
              self.top_panel, label="\nstd %", style=wx.TE_CENTER)
          sample_std_per_label.SetFont(font2)
  
          # handle samples/sites results sizers
          sizer_sample_results = wx.StaticBoxSizer(wx.StaticBox(
              self.top_panel, wx.ID_ANY, "sample/site results"), wx.HORIZONTAL)
          sample_stat_window = wx.GridSizer(2, 4, h_space, v_space)
          sample_stat_window.AddMany([(sample_mean_label, 1, wx.ALIGN_BOTTOM),
                                      (sample_N_label, 1, wx.ALIGN_BOTTOM),
                                      (sample_std_label, 1, wx.ALIGN_BOTTOM),
                                      (sample_std_per_label, 1, wx.ALIGN_BOTTOM),
                                      (self.sample_int_uT_window, 1, wx.EXPAND),
                                      (self.sample_int_n_window, 1, wx.EXPAND),
                                      (self.sample_int_sigma_window, 1, wx.EXPAND),
                                      (self.sample_int_sigma_perc_window, 1, wx.EXPAND)])
          sizer_sample_results.Add(
              sample_stat_window, 1, wx.EXPAND | wx.ALIGN_LEFT, 0)
  
          #--------------------------------------------------------------------
  
          label_0 = wx.StaticText(
              self.bottom_panel, label="                    ", style=wx.ALIGN_CENTER, size=(180, 25))
          label_1 = wx.StaticText(
              self.bottom_panel, label="Acceptance criteria:", style=wx.ALIGN_CENTER, size=(180, 25))
          label_2 = wx.StaticText(
              self.bottom_panel, label="Specimen statistics:", style=wx.ALIGN_CENTER, size=(180, 25))
  
          for statistic in self.preferences['show_statistics_on_gui']:
              self.stat_windows[statistic] = wx.TextCtrl(
                  self.bottom_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
              self.stat_windows[statistic].SetBackgroundColour(wx.WHITE)
              self.stat_windows[statistic].SetFont(font2)
              self.threshold_windows[statistic] = wx.TextCtrl(
                  self.bottom_panel, style=wx.TE_CENTER | wx.TE_READONLY, size=(50 * self.GUI_RESOLUTION, 25))
              self.threshold_windows[statistic].SetFont(font2)
              self.threshold_windows[statistic].SetBackgroundColour(wx.WHITE)
              label = statistic.replace("specimen_", "").replace("int_", "")
              self.stat_labels[statistic] = wx.StaticText(
                  self.bottom_panel, label=label, style=wx.ALIGN_CENTRE_HORIZONTAL | wx.ALIGN_BOTTOM)
              self.stat_labels[statistic].SetFont(font2)
  
          #-------------------------------------------------------------------
          # Design the panels
          #-------------------------------------------------------------------
  
          # Plots Panel--------------------------------------------------------
          sizer_grid_plots = wx.GridSizer(2, 2, 0, 0)
          sizer_grid_plots.AddMany([(self.canvas2, 1, wx.EXPAND),
                                    (self.canvas4, 1, wx.EXPAND),
                                    (self.canvas3, 1, wx.EXPAND),
                                    (self.canvas5, 1, wx.EXPAND)])
  
          sizer_plots_outer = wx.BoxSizer(wx.HORIZONTAL)
          sizer_plots_outer.Add(self.canvas1, 1, wx.EXPAND)
          sizer_plots_outer.Add(sizer_grid_plots, 1, wx.EXPAND)
  
          # Top Bar Sizer-------------------------------------------------------
          #-------------Specimens Sizer----------------------------------------
          sizer_prev_next_btns = wx.BoxSizer(wx.HORIZONTAL)
          sizer_prev_next_btns.Add(prevbutton, 1, wx.EXPAND | wx.RIGHT, h_space)
          sizer_prev_next_btns.Add(nextbutton, 1, wx.EXPAND | wx.LEFT, h_space)
  
          sizer_select_specimen = wx.StaticBoxSizer(wx.StaticBox(
              self.top_panel, wx.ID_ANY, "specimen"), wx.VERTICAL)
          sizer_select_specimen.Add(
              self.specimens_box, 1, wx.EXPAND | wx.BOTTOM, v_space)
          sizer_select_specimen.Add(
              sizer_prev_next_btns, 1, wx.EXPAND | wx.TOP, v_space)
  
          #-------------Bounds Sizer----------------------------------------
          sizer_grid_bounds_btns = wx.GridSizer(2, 3, 2 * h_space, 2 * v_space)
          sizer_grid_bounds_btns.AddMany([(self.tmin_box, 1, wx.EXPAND),
                                          (self.save_interpretation_button,
                                           1, wx.EXPAND), (self.auto_save, 1, wx.EXPAND),
                                          (self.tmax_box, 1, wx.EXPAND),
                                          (self.delete_interpretation_button, 1, wx.EXPAND),
                                          (self.auto_save_info, 1, wx.EXPAND)])
  
  
          if self.s in list(self.Data.keys()) and self.Data[self.s]['T_or_MW'] == "T":
              sizer_select_temp = wx.StaticBoxSizer(wx.StaticBox(
                  self.top_panel, wx.ID_ANY, "temperatures"), wx.HORIZONTAL)
          else:
              sizer_select_temp = wx.StaticBoxSizer(wx.StaticBox(
                  self.top_panel, wx.ID_ANY, "MW power"), wx.HORIZONTAL)
          sizer_select_temp.Add(sizer_grid_bounds_btns, 1, wx.EXPAND)
  
          #-------------Top Bar Outer Sizer------------------------------------
          sizer_top_bar = wx.BoxSizer(wx.HORIZONTAL)
          sizer_top_bar.AddMany([(sizer_select_specimen, 1, wx.EXPAND | wx.ALIGN_LEFT | wx.RIGHT, 2 * h_space),
                                 (sizer_select_temp, 1, wx.EXPAND |
                                  wx.ALIGN_LEFT | wx.RIGHT, 2 * h_space),
                                 (sizer_specimen_results, 2, wx.EXPAND |
                                  wx.ALIGN_LEFT | wx.RIGHT, 2 * h_space),
                                 (sizer_sample_results, 1, wx.EXPAND | wx.ALIGN_LEFT | wx.RIGHT, 0)])
  
          # Bottom Bar Sizer----------------------------------------------------
          #----------------Criteria Labels Sizer-------------------------------
          sizer_criteria_labels = wx.BoxSizer(wx.HORIZONTAL)
          sizer_criteria_labels.Add(label_0, 3, wx.EXPAND | wx.LEFT, 2 * h_space)
          sizer_criteria_boxes = wx.BoxSizer(wx.HORIZONTAL)
          sizer_criteria_boxes.Add(label_1, 3, wx.EXPAND | wx.LEFT, 2 * h_space)
          sizer_stats_boxes = wx.BoxSizer(wx.HORIZONTAL)
          sizer_stats_boxes.Add(label_2, 3, wx.EXPAND | wx.LEFT, 2 * h_space)
          for statistic in self.preferences['show_statistics_on_gui']:
              sizer_criteria_labels.Add(
                  self.stat_labels[statistic], 1, wx.ALIGN_BOTTOM, 0)
  
          #----------------Acceptance Criteria Boxes---------------------------
              sizer_criteria_boxes.Add(
                  self.threshold_windows[statistic], 1, wx.EXPAND | wx.LEFT, h_space)
  
          #----------------Specimen Statistics Boxes---------------------------
              sizer_stats_boxes.Add(
                  self.stat_windows[statistic], 1, wx.EXPAND | wx.LEFT, h_space)
  
          #----------------Bottom Outer Sizer----------------------------------
          sizer_bottom_bar = wx.BoxSizer(wx.VERTICAL)
          sizer_bottom_bar.AddMany([(sizer_criteria_labels, 1, wx.EXPAND | wx.ALIGN_BOTTOM | wx.BOTTOM, v_space),
                                    (sizer_criteria_boxes, 1, wx.EXPAND |
                                     wx.BOTTOM | wx.ALIGN_TOP, v_space),
                                    (sizer_stats_boxes, 1, wx.EXPAND | wx.ALIGN_TOP)])
  
          # Logger Sizer--------------------------------------------------------
          sizer_logger = wx.BoxSizer(wx.HORIZONTAL)
          sizer_logger.Add(self.logger, 1, wx.EXPAND)
  
          # Set Panel Sizers----------------------------------------------------
          self.plot_panel.SetSizer(sizer_plots_outer)
          self.side_panel.SetSizerAndFit(sizer_logger)
          self.top_panel.SetSizerAndFit(sizer_top_bar)
          self.bottom_panel.SetSizerAndFit(sizer_bottom_bar)
  
          # Outer Sizer for Frame-----------------------------------------------
          sizer_logger_plots = wx.BoxSizer(wx.HORIZONTAL)
          sizer_logger_plots.Add(self.side_panel, 1, wx.EXPAND | wx.ALIGN_LEFT)
          sizer_logger_plots.Add(self.plot_panel, 3, wx.EXPAND | wx.ALIGN_LEFT)
  
          sizer_outer = wx.BoxSizer(wx.VERTICAL)
          sizer_outer.AddMany([(self.top_panel, 1, wx.EXPAND | wx.ALIGN_TOP | wx.BOTTOM, v_space / 2),
                               (sizer_logger_plots, 4, wx.EXPAND |
                                wx.ALIGN_TOP | wx.BOTTOM, v_space / 2),
                               (self.bottom_panel, 1, wx.EXPAND | wx.ALIGN_TOP)])
  
          self.SetSizer(sizer_outer)
          sizer_outer.Fit(self)
          self.Layout()