docs: def estimate_map(interface, state, label, inp):
      """Find the cluster `i` that is closest to the datapoint `e`."""
      out = interface.output(0)
      centers = {}
      for row in inp:
          row = row.strip().split(state["delimiter"])
          if len(row) > 1:
              x = [(0 if row[i] in state["missing_vals"] else float(row[i])) for i in state["X_indices"]]
              cluster = min((state['dist'](c, x), i) for i, c in state['centers'])[1]
              vertex = state['create'](x, 1.0)
              centers[cluster] = vertex if cluster not in centers else state["update"](centers[cluster], vertex)
  
      for cluster, values in centers.iteritems():
          out.add(cluster, values)