def METHOD_NAME(adata):
    """Perform geometric normalization on CITEseq data.
    Add description of why geometric normalization
    parameters
    ----------
    adata: :class:`~anndata.AnnData`
        The annotated data matrix.
    returns
    -------
    AnnData
        updates adata.X to contain the geometrically normalized values.
    Example
    -------
    NEED TO IMPLEMENT AN EXAMPLE
    """
    X = adata.X
    X = np.nan_to_num(X)
    # if the matrix is sparse make to array
    if type(X) == csr_matrix:
        X = X.todense()
    # need to add a catch for newly encountered datatype
    elif type(X) == SparseCSRView:
        X = X.todense()
    # ensure that X is an array otherwise this will cause type issue with multiplicative replacement function
    X = np.array(X)
    # replacement of zero values with very small numbers without changing the overall sums
    X = multiplicative_replacement(X)
    # centre log ratio transformation
    X = clr(X)
    adata.X = X
    return None  # adata object is automatically updated