docs: def compute_membership_strengths(knn_indices, knn_dists, sigmas, rhos):
      """Construct the membership strength data for the 1-skeleton of each local
      fuzzy simplicial set -- this is formed as a sparse matrix where each row is
      a local fuzzy simplicial set, with a membership strength for the
      1-simplex to each other data point.
  
      Parameters
      ----------
      knn_indices: array of shape (n_samples, n_neighbors)
          The indices on the ``n_neighbors`` closest points in the dataset.
  
      knn_dists: array of shape (n_samples, n_neighbors)
          The distances to the ``n_neighbors`` closest points in the dataset.
  
      sigmas: array of shape(n_samples)
          The normalization factor derived from the metric tensor approximation.
  
      rhos: array of shape(n_samples)
          The local connectivity adjustment.
  
      Returns
      -------
      rows: array of shape (n_samples * n_neighbors)
          Row data for the resulting sparse matrix (coo format)
  
      cols: array of shape (n_samples * n_neighbors)
          Column data for the resulting sparse matrix (coo format)
  
      vals: array of shape (n_samples * n_neighbors)
          Entries for the resulting sparse matrix (coo format)
      """
      n_samples = knn_indices.shape[0]
      n_neighbors = knn_indices.shape[1]
  
      rows = np.zeros((n_samples * n_neighbors), dtype=np.int64)
      cols = np.zeros((n_samples * n_neighbors), dtype=np.int64)
      vals = np.zeros((n_samples * n_neighbors), dtype=np.float64)
  
      for i in range(n_samples):
          for j in range(n_neighbors):
              if knn_indices[i, j] == -1:
                  continue  # We didn't get the full knn for i
              if knn_indices[i, j] == i:
                  val = 0.0
              elif knn_dists[i, j] - rhos[i] <= 0.0:
                  val = 1.0
              else:
                  val = np.exp(-((knn_dists[i, j] - rhos[i]) / (sigmas[i])))
  
              rows[i * n_neighbors + j] = i
              cols[i * n_neighbors + j] = knn_indices[i, j]
              vals[i * n_neighbors + j] = val
  
      return rows, cols, vals