docs: def put(self,specimen,coordinate_system,new_pars):
          """
          Given a coordinate system and a new parameters dictionary that follows pmagpy
          convention given by the pmag.py/domean function it alters this fit's bounds and
          parameters such that it matches the new data.
          @param: specimen -> None if fit is for a site or a sample or a valid specimen from self.GUI
          @param: coordinate_system -> the coordinate system to alter
          @param: new_pars -> the new paramters to change your fit to
          @alters: tmin, tmax, pars, geopars, tiltpars, PCA_type
          """
  
          if specimen != None:
              if type(new_pars)==dict:
                  if 'er_specimen_name' not in list(new_pars.keys()): new_pars['er_specimen_name'] = specimen
                  if 'specimen_comp_name' not in list(new_pars.keys()): new_pars['specimen_comp_name'] = self.name
              if type(new_pars) != dict or 'measurement_step_min' not in list(new_pars.keys()) or 'measurement_step_max' not in list(new_pars.keys()) or 'calculation_type' not in list(new_pars.keys()):
                  print("-E- invalid parameters cannot assign to fit %s for specimen %s - was given:\n%s"%(self.name,specimen,str(new_pars)))
                  return self.get(coordinate_system)
  
              self.tmin = new_pars['measurement_step_min']
              self.tmax = new_pars['measurement_step_max']
              self.PCA_type = new_pars['calculation_type']
  
              if self.GUI!=None:
                  steps = self.GUI.Data[specimen]['zijdblock_steps']
                  tl = [self.tmin,self.tmax]
                  for i,t in enumerate(tl):
                      if str(t) in steps: tl[i] = str(t)
                      elif str(int(t)) in steps: tl[i] = str(int(t))
                      elif "%.1fmT"%t in steps: tl[i] = "%.1fmT"%t
                      elif "%.0fC"%t in steps: tl[i] = "%.0fC"%t
                      else:
                          print("-E- Step " + str(tl[i]) + " does not exsist (func: Fit.put)")
                          tl[i] = str(t)
                  self.tmin,self.tmax = tl
              elif meas_data != None:
                  steps = meas_data[specimen]['zijdblock_steps']
                  tl = [self.tmin,self.tmax]
                  for i,t in enumerate(tl):
                      if str(t) in steps: tl[i] = str(t)
                      elif str(int(t)) in steps: tl[i] = str(int(t))
                      elif "%.1fmT"%t in steps: tl[i] = "%.1fmT"%t
                      elif "%.0fC"%t in steps: tl[i] = "%.0fC"%t
                      else:
                          print("-E- Step " + str(tl[i]) + " does not exsist (func: Fit.put)")
                          tl[i] = str(t)
                  self.tmin,self.tmax = tl
              else: self.tmin,self.tmax = list(map(str, tl))
  
          if coordinate_system == 'DA-DIR' or coordinate_system == 'specimen':
              self.pars = new_pars
          elif coordinate_system == 'DA-DIR-GEO' or coordinate_system == 'geographic':
              self.geopars = new_pars
          elif coordinate_system == 'DA-DIR-TILT' or coordinate_system == 'tilt-corrected':
              self.tiltpars = new_pars
          else:
              print('-E- no such coordinate system could not assign those parameters to fit')