docs: def to_distance(matrix, alpha=1):
      """Compute distance matrix from contact data by applying a negative power
      law (alpha) to its nonzero pixels, then interpolating on the zeroes using a
      shortest-path algorithm.
      """
      matrix = np.array(matrix)
      try:
          import scipy.sparse
      except ImportError as e:
          print("Scipy not found.")
          print(str(e))
          raise
  
      if callable(alpha):
          distance_function = alpha
      else:
          try:
              a = np.float64(alpha)
  
              def distance_function(x):
                  return 1 / (x ** (1 / a))
          except TypeError:
              print("Alpha parameter must be callable or an array-like")
              raise
  
      if hasattr(matrix, 'getformat'):
          distances = scipy.sparse.coo_matrix(matrix)
          distances.data = distance_function(distances.data)
      else:
          distances = np.zeros(matrix.shape)
          distances[matrix != 0] = distance_function(1 / matrix[matrix != 0])
  
      return scipy.sparse.csgraph.floyd_warshall(distances, directed=False)