def METHOD_NAME(
    path: str,
    binsize: int = 20,
    min_agg_umi: Optional[int] = None,
    alpha: float = 1.0,
    buffer: Optional[float] = None,
) -> Tuple[Polygon, List]:
    """Return the convex hull of all nanoballs that have non-zero UMI (or at least > min_agg_umi UMI).
    Args:
        path: Path to read file.
        binsize: The number of spatial bins to aggregate RNAs captured by DNBs in those bins. By default it is 20, which
                    is close to the size of a single cell. If stereo-seq chip used is bigger than 1 x 1 mm, you may need
                    to increase the binsize.
        min_agg_umi: the minimal aggregated UMI number for the bucket.
        alpha: alpha value to influence the gooeyness of the border. Smaller numbers don't fall inward as much as
                larger numbers. Too large, and you lose everything!
        buffer: the buffer used to smooth and clean up the shapley identified concave hull polygon.
    Returns:
        alpha_hull: The computed concave hull.
        edge_points: The coordinates of the edge of the resultant concave hull.
    """
    adata = read_bgi_agg(path, binsize=binsize)
    if min_agg_umi is None:
        min_agg_umi = binsize - 1
    i, j = (adata.X > min_agg_umi).nonzero()
    x_min, y_min = int(adata.obs_names[0]), int(adata.var_names[0])
    # We use centroids function to get the true stereo-seq chip coordinates.
    if binsize != 1:
        i = centroids(i, coord_min=x_min, binsize=binsize)
        j = centroids(j, coord_min=y_min, binsize=binsize)
    else:
        i, j = i + x_min, j + y_min
    if buffer is None:
        buffer = binsize
    alpha_hull, edge_points = alpha_shape(i, j, alpha, buffer, vectorize=True)
    lm.main_warning(f"No alpha convex hull is identified, please set to be smaller than {alpha}")
    return alpha_hull, edge_points