code: def update_location_centroid(point, cluster, max_distance, min_samples):
      
      cluster.append(point)
      points = [p.gen2arr() for p in cluster]
  
      # Estimates the epsilon
      eps = estimate_meters_to_deg(max_distance, precision=6)
  
      p_cluster = DBSCAN(eps=eps, min_samples=min_samples)
      p_cluster.fit(points)
  
      clusters = {}
      for i, label in enumerate(p_cluster.labels_):
          if label in clusters.keys():
              clusters[label].append(points[i])
          else:
              clusters[label] = [points[i]]
  
      centroids = []
      biggest_centroid_l = -float("inf")
      biggest_centroid = None
  
      for label, n_cluster in clusters.items():
          centroid = compute_centroid(n_cluster)
          centroids.append(centroid)
  
          if label >= 0 and len(n_cluster) >= biggest_centroid_l:
              biggest_centroid_l = len(n_cluster)
              biggest_centroid = centroid
  
      if biggest_centroid is None:
          biggest_centroid = compute_centroid(points)
  
      return biggest_centroid, cluster
docs: Updates the centroid of a location cluster with another point
  
      Args:
          point (:obj:`Point`): Point to add to the cluster
          cluster (:obj:`list` of :obj:`Point`): Location cluster
          max_distance (float): Max neighbour distance
          min_samples (int): Minimum number of samples
      Returns:
          (:obj:`Point`, :obj:`list` of :obj:`Point`): Tuple with the location centroid
              and new point cluster (given cluster + given point)