docs: def read_redo_file(self, redo_file):
          """
          Read previous interpretation from a redo file
          and update gui with the new interpretation
          """
          self.GUI_log.write(
              "-I- reading redo file and processing new temperature bounds")
          self.redo_specimens = {}
          # first delete all previous interpretation
          for sp in list(self.Data.keys()):
              del self.Data[sp]['pars']
              self.Data[sp]['pars'] = {}
              self.Data[sp]['pars']['lab_dc_field'] = self.Data[sp]['lab_dc_field']
              self.Data[sp]['pars']['er_specimen_name'] = self.Data[sp]['er_specimen_name']
              self.Data[sp]['pars']['er_sample_name'] = self.Data[sp]['er_sample_name']
              # print sp
              # print self.Data[sp]['pars']
          self.Data_samples = {}
          self.Data_sites = {}
  
          fin = open(redo_file, 'r')
          lines = fin.readlines()
          fin.close()
          for Line in lines:
              line = Line.strip('\n').split()
              specimen = line[0]
              tmin_kelvin = float(line[1])
              tmax_kelvin = float(line[2])
              if specimen not in list(self.redo_specimens.keys()):
                  self.redo_specimens[specimen] = {}
              self.redo_specimens[specimen]['t_min'] = float(tmin_kelvin)
              self.redo_specimens[specimen]['t_max'] = float(tmax_kelvin)
              if specimen in list(self.Data.keys()):
                  if tmin_kelvin not in self.Data[specimen]['t_Arai'] or tmax_kelvin not in self.Data[specimen]['t_Arai']:
                      self.GUI_log.write(
                          "-W- WARNING: can't fit temperature bounds in the redo file to the actual measurement. specimen %s\n" % specimen)
                  else:
                      self.Data[specimen]['pars'] = thellier_gui_lib.get_PI_parameters(
                          self.Data, self.acceptance_criteria, self.preferences, specimen, float(tmin_kelvin), float(tmax_kelvin), self.GUI_log, THERMAL, MICROWAVE)
                      try:
                          self.Data[specimen]['pars'] = thellier_gui_lib.get_PI_parameters(
                              self.Data, self.acceptance_criteria, self.preferences, specimen, float(tmin_kelvin), float(tmax_kelvin), self.GUI_log, THERMAL, MICROWAVE)
                          self.Data[specimen]['pars']['saved'] = True
                          # write intrepretation into sample data
                          sample = self.Data_hierarchy['specimens'][specimen]
                          if sample not in list(self.Data_samples.keys()):
                              self.Data_samples[sample] = {}
                          if specimen not in list(self.Data_samples[sample].keys()):
                              self.Data_samples[sample][specimen] = {}
                          self.Data_samples[sample][specimen]['B'] = self.Data[specimen]['pars']['specimen_int_uT']
                          site = thellier_gui_lib.get_site_from_hierarchy(
                              sample, self.Data_hierarchy)
                          if site not in list(self.Data_sites.keys()):
                              self.Data_sites[site] = {}
                          if specimen not in list(self.Data_sites[site].keys()):
                              self.Data_sites[site][specimen] = {}
                          self.Data_sites[site][specimen]['B'] = self.Data[specimen]['pars']['specimen_int_uT']
  
                      except:
                          print("-E- ERROR 1")
                          self.GUI_log.write(
                              "-E- ERROR. Can't calculate PI paremeters for specimen %s using redo file. Check!\n" % (specimen))
              else:
                  self.GUI_log.write(
                      "-W- WARNING: Can't find specimen %s from redo file in measurement file!\n" % specimen)
                  print(
                      "-W- WARNING: Can't find specimen %s from redo file in measurement file!\n" % specimen)
          if not fin.closed:
              fin.close()
          self.pars = self.Data[self.s]['pars']
          self.clear_boxes()
          self.draw_figure(self.s)
          self.update_GUI_with_new_interpretation()