def create_dict_node_enode(set_proj_nodes, neighbors_dict, H, node, dict_node_enode, dict_enode_node):
    """
    A function to create useful dictionaries to represent connections between nodes that are in the embedding and
    nodes that are not in the embedding.
    :param set_proj_nodes: Set of the nodes that are in the embedding
    :param neighbors_dict: Dictionary of all nodes and neighbors (both incoming and outgoing)
    :param H:  H is the undirected version of our graph
    :param node: Current node
    :param dict_node_enode: explained below
    :param dict_enode_node: explained below
    :return: 1. dict_node_enode: key == nodes not in embedding, value == set of outdoing nodes in embedding (i.e
                    there is a directed edge (i,j) when i is the key node and j is in the embedding)
             2. dict_enode_node: key == nodes not in embedding, value == set of incoming nodes in embedding (i.e
                    there is a directed edge (j,i) when i is the key node and j is in the embedding)
    """
    set2 = neighbors_dict[node].intersection(set_proj_nodes)
    set_all = set(H[node]).intersection(set_proj_nodes)
    set_in = set_all - set2
    if len(set2) > 0:
        dict_node_enode.update({node: set2})
    if len(set_in) > 0:
        dict_enode_node.update({node: set_in})
    return dict_node_enode, dict_enode_node