docs: def _keplerian_to_keplerian_mean(cls, coord, center):
          """Conversion from Keplerian to Keplerian Mean
  
          The difference is the use of Mean anomaly instead of True anomaly
          """
  
          a, e, i, Ω, ω, ν = coord
          if e < 1:
              # Elliptic case
              cos_E = (e + cos(ν)) / (1 + e * cos(ν))
              sin_E = (sin(ν) * sqrt(1 - e ** 2)) / (1 + e * cos(ν))
              E = arctan2(sin_E, cos_E) % (2 * np.pi)
              M = E - e * sin(E)  # Mean anomaly
          else:
              # Hyperbolic case
              H = arccosh((e + cos(ν)) / (1 + e * cos(ν)))
              M = e * sinh(H) - H
  
          return np.array([a, e, i, Ω, ω, M], dtype=float)