code: def calibrate(self):
          
          now = time.time()
          dom_ids = self.A.keys()
          print(
              "Calibrating AHRS from median A and H for {} DOMs.".format(
                  len(dom_ids)
              )
          )
          calibrations = {}
          for dom_id in dom_ids:
              print("Calibrating DOM ID {}".format(dom_id))
              clb_upi = self.db.doms.via_dom_id(dom_id).clb_upi
              ahrs_calib = get_latest_ahrs_calibration(clb_upi)
              if ahrs_calib is None:
                  log.warning("AHRS calibration missing for '{}'".format(dom_id))
                  continue
              du, floor, _ = self.detector.doms[dom_id]
              A = np.median(self.A[dom_id], axis=0)
              H = np.median(self.H[dom_id], axis=0)
  
              cyaw, cpitch, croll = fit_ahrs(A, H, *ahrs_calib)
              calibrations[dom_id] = (now, du, floor, cyaw, cpitch, croll)
          self.A = defaultdict(list)
          self.H = defaultdict(list)
          return calibrations
docs: Calculate yaw, pitch and roll from the median of A and H.
  
          After successful calibration, the `self.A` and `self.H` are reset.
          DOMs with missing AHRS pre-calibration data are skipped.
  
          Returns
          -------
          dict: key=dom_id, value=tuple: (timestamp, du, floor, yaw, pitch, roll)