def METHOD_NAME(analysis_id, user):
    """Returns the graph information of the analysis
    Parameters
    ----------
    analysis_id : int
        The analysis id
    user : qiita_db.user.User
        The user performing the request
    Returns
    -------
    dict with the graph information
    Raises
    ------
    ValueError
        If there is more than one workflow in a single analysis
    """
    analysis = Analysis(analysis_id)
    # Check if the user actually has access to the analysis
    check_analysis_access(user, analysis)
    # A user has full access to the analysis if it is one of its private
    # analyses, the analysis has been shared with the user or the user is a
    # superuser or admin
    full_access = (analysis in (user.private_analyses | user.shared_analyses)
                   or user.level in {'superuser', 'admin'})
    nodes = []
    edges = []
    artifacts_being_deleted = []
    wf_id = None
    # Loop through all the initial artifacts of the analysis
    for a in analysis.artifacts:
        if a.processing_parameters is None:
            g = a.descendants_with_jobs
            nodes, edges, a_wf_id = get_network_nodes_edges(
                g, full_access, nodes=nodes, edges=edges)
            # nodes returns [node_type, node_name, element_id]; here we
            # are looking for the node_type == artifact, and check by
            # the element/artifact_id if it's being deleted
            for a in nodes:
                if (a[0] == 'artifact' and
                        Artifact(a[2]).being_deleted_by is not None):
                    artifacts_being_deleted.append(a[2])
            if wf_id is None:
                wf_id = a_wf_id
            elif a_wf_id is not None and wf_id != a_wf_id:
                # This should never happen, but worth having a useful message
                raise ValueError('More than one workflow in a single analysis')
    return {'edges': edges, 'nodes': nodes, 'workflow': wf_id,
            'artifacts_being_deleted': artifacts_being_deleted}