def get_remote_intermediate_genes(subjects, cluster):
    """
    Get all genes that are not part of the cluster from the list of subjects

    Args:
        subjects (List): list of cblaster Subject objects
        cluster (Cluster): cblaster Cluster object

    Returns:
        List of all the genes that are in subjects and not in the cluster
    """
    cluster_genes = set([s.name for s in cluster.subjects])
    intermediate_genes = []
    for subject in subjects:
        if subject.name not in cluster_genes:
            intermediate_genes.append(subject)
    return intermediate_genes