code: def estimate_robust_vmm(
      k, precision, null_class, x, ninit=10, bias=None, maxiter=100
  ):
      """Return the best von_mises mixture after severla initialization
  
      Parameters
      ----------
      k: int, number of classes
      precision: float, priori precision parameter
      null class: bool, optional,
                  should a null class be included or not
      x: array of shape(n,3)
         input data, should be on the unit sphere
      ninit: int, optional,
             number of iterations
      bias: array of shape(n), optional
            prior probability of being in a non-null class
      maxiter: int, optional,
               maximum number of iterations after each initialization
      """
      score = -np.inf
      for i in range(ninit):
          aux = VonMisesMixture(k, precision, null_class=null_class)
          ll = aux.estimate(x, bias=bias)
          if ll > score:
              best_model = aux
              score = ll
      return best_model
  
imports: from warnings import warn
  import numpy
label_desc: Use image node_id 1 for calling a global function with example usage: estimate_robust_vmm(k, precision, null_class, x, ninit, bias, maxiter) and returns: best_model