def umap_kwargs(n_dims,
                n_epochs=None,
                learning_rate=1.0,
                n_neighbors=15,
                min_dist=0.1,
                spread=1.0,
                metric='euclidean',
                verbose=False):
    """Argument options for UMAP.

    Args:
        n_dims (int): Number of dimensions to reduce the data down to.
        n_epochs (int): Number of epochs to fit for.
        learning_rate (float): Learning rate.
        n_neighbors (int): Size of local neighbourhoods. Large values make for more global manifolds, while smaller values capture more local relations.
        min_dist (float): Minimum distance between embedded points. Smaller values result in more clusters. Should scale with 'spread'.
        spread (float): Effective scale of embedded points. Determines how clumped embedded points are. Should scale with 'min_dist'.
        metric (str): Metric that computes the distance. See https://github.com/lmcinnes/umap documentation for possible metrics.
        verbose (bool): Whether to print information.

    Returns:
        dict: Dictionary of kwargs for UMAP.
    """

    return {
        "n_components": n_dims,
        "n_epochs": n_epochs,
        "learning_rate": learning_rate,
        "n_neighbors": n_neighbors,
        "min_dist": min_dist,
        "spread": spread,
        "metric": metric,
        "verbose": verbose
    }