Consensus clustering and functional interpretation of gene-expression data