# esda.silhouettes.silhouette_alist

esda.silhouettes.silhouette_alist(data, labels, alist, indices=None, metric=<function euclidean_distances>)

  Compute the silhouette for each edge in an adjacency graph. Given the alist containing focal id, neighbor id, and label_focal, and label_neighbor, this computes:

  \[d(i,label_neighbor) - d(i,label_focal) / (max(d(i,label_neighbor), d(i,label_focal)))\]
  Parameters:
    data(N,P) `array` `to` cluster `on` or `DataFrame` `indexed` `on` `the` `same` `values` `as`

      that in alist.focal/alist.neighbor

    labels: (N,) array containing classifications, indexed on the same values

      as that in alist.focal/alist.neighbor

    alist: adjacency list containing columns focal & neighbor,

      describing one edge of the graph.

    indices: (N,) array containing the “name” for observations in

      alist to be linked to data. indices should be: 1. aligned with data by iteration order 2. include all values in the alist.focal set. if alist.focal and alist.neighbor are strings, then indices should be a list/array of strings aligned with the rows of data. if not provided and labels is a series/dataframe, then its index will be used.

    metric `callable()`, array,

      a function that takes an argument (data) and returns the all-pairs distances/dissimilarity between observations.

  Returns:
    `pandas.DataFrame`, `copy` of `the` `adjacency` `list` alist, `with` `an` `additional`
    `column` `called` silhouette `that` `contains` `the` pseudo-silhouette `values`
    `expressing` `the` `relative` `dissimilarity` `between` `neighboring` observations.