docs: def update_data(self):
          """Updates the displayed data in the GUI for the current IMU, applying
          current calibration if it is available. """
          if self.sk8 is not None:
              imu = self.spinIMU.value()
              data = self.sk8.get_imu(imu)
              if self.current_imuid in self.calibration_data:
                  calib_data = self.calibration_data[self.current_imuid]
              else:
                  calib_data = {}
                  self.calibration_data[self.current_imuid] = calib_data
  
              if calib_data is not None and self.ACC_TIMESTAMP in calib_data:
                  self.dataAccX.setText(str(int((data.acc[0] * float(calib_data[self.ACCX_SCALE])) - float(calib_data[self.ACCX_OFFSET]))))
                  self.dataAccY.setText(str(int((data.acc[1] * float(calib_data[self.ACCY_SCALE])) - float(calib_data[self.ACCY_OFFSET]))))
                  self.dataAccZ.setText(str(int((data.acc[2] * float(calib_data[self.ACCZ_SCALE])) - float(calib_data[self.ACCZ_OFFSET]))))
              else:
                  self.dataAccX.setText(str(data.acc[0]))
                  self.dataAccY.setText(str(data.acc[1]))
                  self.dataAccZ.setText(str(data.acc[2]))
  
              if calib_data is not None and self.GYRO_TIMESTAMP in calib_data:
                  self.dataGyroX.setText(str(data.gyro[0] - int(calib_data[self.GYROX_OFFSET])))
                  self.dataGyroY.setText(str(data.gyro[1] - int(calib_data[self.GYROY_OFFSET])))
                  self.dataGyroZ.setText(str(data.gyro[2] - int(calib_data[self.GYROZ_OFFSET])))
              else:
                  self.dataGyroX.setText(str(data.gyro[0]))
                  self.dataGyroY.setText(str(data.gyro[1]))
                  self.dataGyroZ.setText(str(data.gyro[2]))
  
              if calib_data is not None and self.MAG_TIMESTAMP in calib_data:
                  self.dataAccX.setText(str(int((data.mag[0] * float(calib_data[self.MAGX_SCALE])) - float(calib_data[self.MAGX_OFFSET]))))
                  self.dataAccY.setText(str(int((data.mag[1] * float(calib_data[self.MAGY_SCALE])) - float(calib_data[self.MAGY_OFFSET]))))
                  self.dataAccZ.setText(str(int((data.mag[2] * float(calib_data[self.MAGZ_SCALE])) - float(calib_data[self.MAGZ_OFFSET]))))
              else:
                  self.dataMagX.setText(str(data.mag[0]))
                  self.dataMagY.setText(str(data.mag[1]))
                  self.dataMagZ.setText(str(data.mag[2]))