def check_node(graph, node, good_list, bad_list=[]):
    """ returns two boolean values specifying if node or any of it's
    components are in the good list or in the bad list.

    params
    -----
    graph: (networkx graph object)
       a directed graph of node interactions
    node: (int or tuple)
       the name of the node to be checked
    good_list: (list)
       list of bids that are worms.
    bad_list: (list)
       list of bids that are not worms.
    """
    nodes = [node]
    if type(node) == tuple:
        nodes = graph.node[node]['components']
    # these values are true if any components in good or bad lists
    has_good = (len([n for n in nodes if n in good_list]) > 0)
    has_bad = (len([n for n in nodes if n in bad_list]) > 0)
    return has_good, has_bad