docs: def calculate_mag_calibration(self, mag_samples):
          """Performs magnetometer calibration. Assumes mag_samples contains samples
          in order [+x, -x, +y, -y, +z, -z]. Calculates per-axis scale/offset values"""
  
          max_vals = [mag_samples[0][0], mag_samples[2][1], mag_samples[3][2]]
          min_vals = [mag_samples[1][0], mag_samples[3][1], mag_samples[5][2]]
  
          magbiases = [int((max_vals[i] + min_vals[i]) / 2.0) for i in range(3)]
          magscalings = [(max_vals[i] - min_vals[i]) / 2.0 for i in range(3)]
          avg_rads = sum(magscalings) / 3.0
          magscalings = [avg_rads / magscalings[i] for i in range(3)]
  
          data = self.calibration_data[self.current_imuid]
  
          data[self.MAGX_OFFSET] = str(int(magbiases[0]))
          data[self.MAGY_OFFSET] = str(int(magbiases[1]))
          data[self.MAGZ_OFFSET] = str(int(magbiases[2]))
          
          data[self.MAGX_SCALE] = str(magscalings[0])
          data[self.MAGY_SCALE] = str(magscalings[1])
          data[self.MAGZ_SCALE] = str(magscalings[2])
  
          data[self.MAG_TIMESTAMP] = datetime.now().isoformat()
  
          self.write_calibration_data()
          self.update_data_display(self.calibration_data[self.current_imuid])
          self.calibration_state = self.CAL_NONE