#' Epithelial-Mesenchymal Transition Signature #' #' @description This signature is computed accordingly to the reference paper, #' to have more details explore the function #' \code{\link[signifinder]{availableSignatures}}. #' #' @param dataset Normalized expression values. A data frame or a matrix #' where rows correspond to genes and columns correspond to samples. #' Alternatively, an object of type \linkS4class{SummarizedExperiment}, #' \code{\link[SingleCellExperiment]{SingleCellExperiment}} or #' \code{\link[SpatialExperiment]{SpatialExperiment}} where the normalized #' expression values should be in an assay called 'norm_expr'. #' @param nametype character string saying the type of gene name ID (row names #' in dataset). Either one of "SYMBOL", "ENTREZID" or "ENSEMBL". #' @param inputType character string saying the type of data you are using. #' Either one of "microarray" or "rnaseq". #' @param author character string saying the first author of the signature #' publication. Check it in \code{\link[signifinder]{availableSignatures}}. #' @param ... other arguments passed on to the \code{\link[GSVA]{gsva}} #' function. #' #' @return If dataset is a \linkS4class{SummarizedExperiment} object, then #' scores are added in the \code{\link[SummarizedExperiment]{colData}} section. #' If dataset is a data frame or a matrix, then a #' \linkS4class{SummarizedExperiment} object is created in which scores are #' added in the \code{\link[SummarizedExperiment]{colData}} section. #' #' @importFrom GSVA gsva #' @importFrom stats prcomp #' #' @examples #' data(ovse) #' EMTSign(dataset = ovse, inputType = "rnaseq") #' #' @export EMTSign <- function( dataset, nametype = "SYMBOL", inputType = "microarray", author = "Miow", ...) { .consistencyCheck(nametype, "EMTSign", author) datasetm <- .getMatrix(dataset) if (author == "Miow") { sign_df <- EMT_Miow sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) EL <- sign_df[grep("Epithelial-like", sign_df$class), ] ML <- sign_df[grep("Mesenchymal-like", sign_df$class), ] .percentageOfGenesUsed( "EMTSign", datasetm, EL$SYMBOL, "epithelial", author = author) .percentageOfGenesUsed( "EMTSign", datasetm, ML$SYMBOL, "mesenchymal", author = author) gene_sets <- list( Epithelial = EL$SYMBOL, Mesenchymal = ML$SYMBOL) names(gene_sets) <- paste0("EMT_Miow_", names(gene_sets)) dots <- list(...) kcdftype <- ifelse(inputType == "microarray", "Gaussian", "Poisson") args <- .matchArguments(dots, list( expr = datasetm, gset.idx.list = gene_sets, method = "ssgsea", kcdf = kcdftype, ssgsea.norm = FALSE, verbose = FALSE)) gsva_matrix <- do.call(gsva, args) return(.returnAsInput( userdata = dataset, result = gsva_matrix, SignName = "", datasetm)) } else { if (author == "Mak") { sign_df <- EMT_Mak sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) Sign_E <- sign_df$SYMBOL[sign_df$class == "E"] Sign_M <- sign_df$SYMBOL[sign_df$class == "M"] .percentageOfGenesUsed( "EMTSign", datasetm, Sign_E, "epithelial", author = author) .percentageOfGenesUsed( "EMTSign", datasetm, Sign_M, "mesenchymal", author = author) columnNA <- .managena(datasetm, genes = sign_df$SYMBOL) score <- colMeans( datasetm[intersect(Sign_M, row.names(datasetm)), ]) - colMeans( datasetm[intersect(Sign_E, row.names(datasetm)), ]) score[columnNA > 0.9] <- NA } else if (author == "Cheng") { sign_df <- EMT_Cheng sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) .percentageOfGenesUsed( "EMTSign", datasetm, sign_df$SYMBOL, author = author) datasetm_n <- datasetm[ intersect(row.names(datasetm), sign_df$SYMBOL), ] datasetm_n <- if (inputType == "rnaseq") { log2(datasetm_n + 1) } else { datasetm_n } columnNA <- .managena(datasetm = datasetm_n, genes = sign_df$SYMBOL) score <- prcomp(t(datasetm_n))$x[, 1] score[columnNA > 0.9] <- NA } return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("EMT_", author), datasetm)) } } #' Pyroptosis Signature #' #' @inherit EMTSign description #' @inheritParams EMTSign #' @param hgReference character string saying the human reference genome. #' Either one of "hg19" or "hg38". #' #' @inherit EMTSign return #' #' @importFrom SummarizedExperiment assays #' #' @examples #' data(ovse) #' pyroptosisSign(dataset = ovse) #' #' @export pyroptosisSign <- function( dataset, nametype = "SYMBOL", inputType = "rnaseq", author = "Ye", hgReference = "hg38") { .consistencyCheck(nametype, "pyroptosisSign", author) sign_df <- get(paste0("Pyroptosis_", author)) sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) if (author == "Ye") { dataset <- .dataTransformation( dataset, datasetm, "FPKM", hgReference, nametype) datasetm_n <- as.matrix(assays(dataset)[["FPKM"]]) datasetm_n <- scale(datasetm_n) } else if (author == "Shao") { if (inputType == "rnaseq") { dataset <- .dataTransformation( dataset, datasetm, "FPKM", hgReference, nametype) datasetm_n <- as.matrix(assays(dataset)[["FPKM"]]) } else { datasetm_n <- datasetm } } else if (author == "Lin") { dataset <- .dataTransformation( dataset, datasetm, "TPM", hgReference, nametype) datasetm_n <- as.matrix(assays(dataset)[["TPM"]]) } else { datasetm_n <- datasetm} score <- .coeffScore(sign_df, datasetm_n, "pyroptosisSign", author = author) return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("Pyroptosis_", author), datasetm)) } #' Ferroptosis Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom SummarizedExperiment assays #' #' @examples #' data(ovse) #' ferroptosisSign(dataset = ovse) #' #' @export ferroptosisSign <- function( dataset, nametype = "SYMBOL", inputType = "rnaseq", author = "Ye", hgReference = "hg38") { .consistencyCheck(nametype, "ferroptosisSign", author) sign_df <- get(paste0("Ferroptosis_", author)) sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) if (author %in% c("Liu", "Ye") & inputType == "rnaseq") { dataset <- .dataTransformation( dataset, datasetm, "FPKM", hgReference, nametype) datasetm_n <- as.matrix(assays(dataset)[["FPKM"]]) datasetm_n <- datasetm_n[rownames(datasetm_n) %in% sign_df$SYMBOL, ] } else { datasetm_n <- datasetm[rownames(datasetm) %in% sign_df$SYMBOL, ] } score <- .coeffScore( sign_df, datasetm_n, "ferroptosisSign", author = author) if (author == "Liang") { score <- exp(score) } return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("Ferroptosis_", author), datasetm)) } #' Lipid Metabolism Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' lipidMetabolismSign(dataset = ovse) #' #' @export lipidMetabolismSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "lipidMetabolismSign") sign_df <- LipidMetabolism_Zheng sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) score <- .coeffScore(sign_df, datasetm, "lipidMetabolismSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "LipidMetabolism_Zheng", datasetm)) } #' Hypoxia Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' hypoxiaSign(dataset = ovse, inputType = "rnaseq") #' #' @export hypoxiaSign <- function( dataset, nametype = "SYMBOL", inputType = "microarray") { .consistencyCheck(nametype, "hypoxiaSign") datasetm <- .getMatrix(dataset) datasetm_n <- if (inputType == "rnaseq") { log2(datasetm + 1) } else { datasetm } score <- .statScore( Hypoxia_Buffa$SYMBOL, datasetm = abs(datasetm_n), nametype = nametype, typeofstat = "median", namesignature = "hypoxiaSign") return(.returnAsInput( userdata = dataset, result = as.vector(scale(score)), SignName = "Hypoxia_Buffa", datasetm)) } #' Immunogenic Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom SummarizedExperiment assays #' #' @examples #' data(ovse) #' immunoScoreSign(dataset = ovse) #' #' @export immunoScoreSign <- function( dataset, nametype = "SYMBOL", author = "Hao", inputType = "rnaseq", hgReference = "hg38") { .consistencyCheck(nametype, "immunoScoreSign", author) datasetm <- .getMatrix(dataset) if (author == "Hao") { sign_df <- ImmunoScore_Hao sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) g <- intersect(row.names(datasetm), sign_df$SYMBOL) .percentageOfGenesUsed( "immunoScoreSign", datasetm, sign_df$SYMBOL, author = author) if (inputType == "rnaseq") { dataset <- .dataTransformation( dataset, datasetm, "FPKM", hgReference, nametype) datasetm_n <- log2(as.matrix(assays(dataset)[["FPKM"]]) + 0.01) datasetm_n <- datasetm_n[g, ] } else { datasetm_n <- datasetm[g, ] } sign_df <- sign_df[sign_df$SYMBOL %in% g, ] columnNA <- .managena(datasetm_n, g) SE <- (sign_df$HR - sign_df$`95CI_L`) / 1.96 k <- (1 - sign_df$HR) / SE score <- unlist(lapply(seq_len(ncol(datasetm_n)), function(p) { sum(k * datasetm_n[, p], na.rm = TRUE) })) score[columnNA > 0.9] <- NA } else if (author == "Roh") { datasetm_n <- log2(datasetm + 1) score <- .statScore( ImmunoScore_Roh$SYMBOL, datasetm = datasetm_n, nametype = nametype, typeofstat = ".meang", namesignature = "immunoScoreSign", author = author) } return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("ImmunoScore_", author), datasetm)) } #' ConsensusOV Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' @param ... optional parameters to be passed to #' \code{\link[consensusOV]{get.subtypes}}. #' #' @inherit EMTSign return #' #' @importFrom consensusOV get.subtypes #' @importFrom AnnotationDbi mapIds #' @importFrom org.Hs.eg.db org.Hs.eg.db #' #' @examples #' data(ovse) #' consensusOVSign(dataset = ovse) #' #' @export consensusOVSign <- function(dataset, nametype = "SYMBOL", ...) { .consistencyCheck(nametype, "consensusOVSign") datasetm <- .getMatrix(dataset) if (nametype != "ENTREZID") { genename <- mapIds( org.Hs.eg.db, keys = row.names(datasetm), column = "ENTREZID", keytype = nametype, multiVals = "first") datasetm_n <- datasetm[!is.na(genename), ] genename <- genename[!is.na(genename)] datasetm_n <- datasetm_n[!duplicated(genename), ] genename <- genename[!duplicated(genename)] } else { genename <- row.names(datasetm) datasetm_n <- datasetm } consensus_subtypes <- get.subtypes( expression.dataset = datasetm_n, entrez.ids = genename, ...) scores <- consensus_subtypes$rf.probs colnames(scores) <- paste0( "ConsensusOV_Chen_", substring(colnames(scores), 1, 3)) return(.returnAsInput( userdata = dataset, result = t(scores), SignName = "", datasetm)) } #' ImmunoPhenoScore Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom stats sd #' @importFrom SummarizedExperiment assays #' #' @examples #' data(ovse) #' IPSSign(dataset = ovse) #' #' @export IPSSign <- function(dataset, nametype = "SYMBOL", hgReference = "hg38") { ## code adapted from https://github.com/icbi-lab/Immunophenogram .consistencyCheck(nametype, "IPSSign") sign_df <- IPS_Charoentong sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) sample_names <- colnames(datasetm) .percentageOfGenesUsed("IPSSign", datasetm, sign_df$SYMBOL) dataset <- .dataTransformation( dataset, datasetm, "TPM", hgReference, nametype) datasetm_n <- log2(as.matrix(assays(dataset)[["TPM"]]) + 1) datasetm_n <- datasetm_n[rownames(datasetm_n) %in% sign_df$SYMBOL, ] IPS <- NULL MHC <- NULL CP <- NULL EC <- NULL SC <- NULL AZ <- NULL for (i in seq_len(length(sample_names))) { GE <- datasetm_n[, i] Z1 <- (datasetm_n[match(sign_df$SYMBOL, row.names(datasetm_n)), i] - mean(GE)) / sd(GE) WEIGHT <- NULL MIG <- NULL k <- 1 for (gen in unique(sign_df$NAME)) { MIG[k] <- mean(Z1[which(sign_df$NAME == gen)], na.rm = TRUE) WEIGHT[k] <- mean(sign_df$WEIGHT[which(sign_df$NAME == gen)]) k <- k + 1} WG <- MIG * WEIGHT MHC[i] <- mean(WG[which( unique(sign_df$NAME) %in% unique( sign_df$NAME[sign_df$class == "MHC"]))], na.rm = TRUE) CP[i] <- mean(WG[which( unique(sign_df$NAME) %in% unique( sign_df$NAME[sign_df$class == "CP"]))], na.rm = TRUE) EC[i] <- mean(WG[which( unique(sign_df$NAME) %in% unique( sign_df$NAME[sign_df$class == "EC"]))], na.rm = TRUE) SC[i] <- mean(WG[which( unique(sign_df$NAME) %in% unique( sign_df$NAME[sign_df$class == "SC"]))], na.rm = TRUE) AZ[i] <- sum(MHC[i], CP[i], EC[i], SC[i]) IPS[i] <- .ipsmap(AZ[i]) } ipsres <- data.frame(IPS, MHC, CP, EC, SC) rownames(ipsres) <- sample_names colnames(ipsres) <- c( "IPS_Charoentong", "IPS_Charoentong_MHC", "IPS_Charoentong_CP", "IPS_Charoentong_EC", "IPS_Charoentong_SC") return(.returnAsInput( userdata = dataset, result = t(ipsres), SignName = "", datasetm)) } #' Core Matrisome Gene signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' matrisomeSign(dataset = ovse) #' #' @export matrisomeSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "matrisomeSign") datasetm <- .getMatrix(dataset) score <- .statScore( Matrisome_Yuzhalin$SYMBOL, datasetm, nametype, "median", "matrisomeSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "Matrisome_Yuzhalin", datasetm)) } #' Mitotic Index #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' mitoticIndexSign(dataset = ovse) #' #' @export mitoticIndexSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "mitoticIndexSign") datasetm <- .getMatrix(dataset) score <- .statScore( MitoticIndex_Yang$SYMBOL, datasetm, nametype, "mean", "mitoticIndexSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "MitoticIndex_Yang", datasetm)) } #' Immune Cytolytic Activity Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom SummarizedExperiment assays #' #' @examples #' data(ovse) #' immuneCytSign(dataset = ovse, inputType = "rnaseq") #' #' @export immuneCytSign <- function( dataset, nametype = "SYMBOL", inputType = "microarray", author = "Rooney", hgReference = "hg38") { .consistencyCheck(nametype, "immuneCytSign", author) datasetm <- .getMatrix(dataset) if (author == "Rooney") { if (inputType == "rnaseq") { dataset <- .dataTransformation( dataset, datasetm, "TPM", hgReference, nametype) datasetm_n <- as.matrix(assays(dataset)[["TPM"]]) + 0.01 } else { datasetm_n <- datasetm } score <- .statScore( ImmuneCyt_Rooney$SYMBOL, datasetm_n, nametype, ".meang", "ImmuneCytSign", author = author) } else if (author == "Davoli") { datasetm_n <- datasetm[ row.names(datasetm) %in% ImmuneCyt_Davoli$SYMBOL, ] datasetm_r <- apply(datasetm_n, 1, rank) datasetm_r <- (datasetm_r - 1) / (nrow(datasetm_r) - 1) score <- .statScore( ImmuneCyt_Davoli$SYMBOL, t(datasetm_r), nametype, ".meang", "ImmuneCytSign", author = author) } return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("ImmuneCyt_", author), datasetm)) } #' IFN-gamma Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' IFNSign(dataset = ovse) #' #' @export IFNSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "IFNSign") datasetm <- .getMatrix(dataset) datasetm_n <- log10(datasetm + 1) score <- .statScore( IFN_Ayers$SYMBOL, datasetm_n, nametype, "mean", "IFNSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "IFN_Ayers", datasetm)) } #' ExpandedImmune Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' expandedImmuneSign(dataset = ovse) #' #' @export expandedImmuneSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "expandedImmuneSign") datasetm <- .getMatrix(dataset) datasetm_n <- log10(datasetm + 1) score <- .statScore( ExpandedImmune_Ayers$SYMBOL, datasetm_n, nametype, "mean", "expandedImmuneSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "ExpandedImmune_Ayers", datasetm)) } #' TinflamSign Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' TinflamSign(dataset = ovse) #' #' @export TinflamSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "TinflamSign") sign_df <- Tinflam_Ayers sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) datasetm_n <- log10(datasetm + 1) housekeeping <- intersect( row.names(datasetm_n), sign_df$SYMBOL[sign_df$class == "Housekeeping"]) genes_pred <- intersect( row.names(datasetm_n), sign_df$SYMBOL[sign_df$class == "TInflam"]) housekeeping_m <- apply(datasetm_n[housekeeping, ], 2, mean) datasetm_n <- sweep(datasetm_n[genes_pred, ], 2, housekeeping_m, FUN = "-") score <- .coeffScore( sign_df[sign_df$SYMBOL %in% genes_pred, ], datasetm_n, "TinflamSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "Tinflam_Ayers", datasetm)) } #' Tertiary Lymphoid Structures (TLS) Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' TLSSign(dataset = ovse) #' #' @export TLSSign <- function(dataset, nametype = "SYMBOL", inputType = "rnaseq") { .consistencyCheck(nametype, "TLSSign") datasetm <- .getMatrix(dataset) datasetm_n <- if (inputType == "rnaseq") { log2(datasetm + 1) } else { datasetm } score <- .statScore( TLS_Cabrita$SYMBOL, datasetm_n, nametype, "mean", "TLSSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "TLS_Cabrita", datasetm)) } #' CD49fHi Basal Stem Cell Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' stemCellCD49fSign(dataset = ovse) #' #' @export stemCellCD49fSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "StemCellCD49fSign") sign_df <- StemCellCD49f_Smith sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) datasetm_n <- log2(datasetm + 1) score <- .coeffScore(sign_df, datasetm_n, "StemCellCD49fSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "StemCellCD49f_Smith", datasetm)) } #' Chromosomal instability Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' CINSign(dataset = ovse, inputType = "rnaseq") #' #' @export CINSign <- function(dataset, nametype = "SYMBOL", inputType = "microarray") { .consistencyCheck(nametype, "CINSign") datasetm <- .getMatrix(dataset) datasetm_n <- if (inputType == "rnaseq") { log2(datasetm + 1) } else { datasetm } datasetm_n <- scale(datasetm_n, center = TRUE, scale = FALSE) score25 <- .statScore( CIN_Carter$SYMBOL[CIN_Carter$class == "CIN25"], datasetm_n, nametype, "sum", "CINSign") score70 <- .statScore( CIN_Carter$SYMBOL, datasetm_n, nametype, "sum", "CINSign") score <- data.frame(score25, score70) colnames(score) <- c("CIN_Carter_25", "CIN_Carter_70") return(.returnAsInput( userdata = dataset, result = t(score), SignName = "", datasetm)) } #' Cell-cycle Signature classifier #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' cellCycleSign(dataset = ovse, inputType = "rnaseq") #' #' @export cellCycleSign <- function( dataset, nametype = "SYMBOL", author = "Lundberg", inputType = "microarray") { .consistencyCheck(nametype, "cellCycleSign", author) datasetm <- .getMatrix(dataset) if (author == "Lundberg") { datasetm_n <- if (inputType == "rnaseq") { log2(datasetm + 1) } else { datasetm } score <- .statScore( CellCycle_Lundberg$SYMBOL, datasetm_n, nametype, "sum", "cellCycleSign", author = author) } else if (author == "Davoli") { datasetm_n <- datasetm[ row.names(datasetm) %in% CellCycle_Davoli$SYMBOL, ] datasetm_r <- apply(datasetm_n, 1, rank) datasetm_r <- (datasetm_r - 1) / (nrow(datasetm_r) - 1) score <- .statScore( CellCycle_Davoli$SYMBOL, t(datasetm_r), nametype, ".meang", "cellCycleSign", author = author) } return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("CellCycle_", author), datasetm)) } #' Chemokine Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom stats prcomp #' #' @examples #' data(ovse) #' chemokineSign(dataset = ovse, inputType = "rnaseq") #' #' @export chemokineSign <- function( dataset, nametype = "SYMBOL", inputType = "microarray") { .consistencyCheck(nametype, "chemokineSign") sign_df <- Chemokines_Messina sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) .percentageOfGenesUsed("ChemokineSign", datasetm, sign_df$SYMBOL) datasetm_n <- datasetm[intersect(row.names(datasetm), sign_df$SYMBOL), ] datasetm_n <- if (inputType == "rnaseq") { log2(datasetm_n + 1) } else { datasetm_n } columnNA <- .managena(datasetm_n, sign_df$SYMBOL) score <- prcomp(t(datasetm_n), center = TRUE, scale = TRUE)$x[, 1] score[columnNA > 0.9] <- NA return(.returnAsInput( userdata = dataset, result = score, SignName = "Chemokines_Messina", datasetm)) } #' Adult Stem Cell Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' ASCSign(dataset = ovse) #' #' @export ASCSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "ASCSign") sign_df <- ASC_Smith sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) .percentageOfGenesUsed("ASCSign", datasetm, sign_df$SYMBOL) datasetm_n <- log2(datasetm[row.names(datasetm) %in% sign_df$SYMBOL, ] + 1) columnNA <- .managena(datasetm_n, sign_df$SYMBOL) score <- rowSums( scale(t(datasetm_n), center = TRUE, scale = TRUE), na.rm = TRUE) score[columnNA > 0.9] <- NA return(.returnAsInput( userdata = dataset, result = score, SignName = "ASC_Smith", datasetm)) } #' passON Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' @param ... other arguments passed on to the \code{\link[GSVA]{gsva}} #' function. #' #' @inherit EMTSign return #' #' @importFrom GSVA gsva #' @importFrom SummarizedExperiment assays #' @importFrom stats weighted.mean #' #' @examples #' data(ovse) #' PassONSign(dataset = ovse) #' #' @export PassONSign <- function( dataset, nametype = "SYMBOL", hgReference = "hg38", ...) { .consistencyCheck(nametype, "PassONSign") datasetm <- .getMatrix(dataset) dataset <- .dataTransformation( dataset, datasetm, "TPM", hgReference, nametype) datasetm_n <- as.matrix(assays(dataset)[["TPM"]]) sign_df <- PassON_Du sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) sign_df <- sign_df[sign_df$SYMBOL %in% rownames(datasetm_n), ] sign_list <- split(sign_df$SYMBOL, sign_df$class) .percentageOfGenesUsed("PassONSign", datasetm_n, sign_df$SYMBOL) dots <- list(...) args <- .matchArguments(dots, list( expr = datasetm_n, gset.idx.list = sign_list, method = "ssgsea", kcdf = "Poisson", ssgsea.norm = TRUE, verbose = FALSE)) gsva_matrix <- do.call(gsva, args) gsva_mean <- vapply(seq_len(ncol(gsva_matrix)), function(x) { weighted.mean(gsva_matrix[, x], lengths(sign_list))}, double(1)) return(.returnAsInput( userdata = dataset, result = gsva_mean, SignName = "PassON_Du", datasetm)) } #' IPRES Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' @param ... other arguments passed on to the \code{\link[GSVA]{gsva}} #' function. #' #' @inherit EMTSign return #' #' @importFrom GSVA gsva #' @importFrom SummarizedExperiment assays #' #' @examples #' data(ovse) #' IPRESSign(dataset = ovse) #' #' @export IPRESSign <- function( dataset, nametype = "SYMBOL", hgReference = "hg38", ...) { .consistencyCheck(nametype, "IPRESSign") datasetm <- .getMatrix(dataset) dataset <- .dataTransformation( dataset, datasetm, "CPM", hgReference, nametype) datasetm_n <- log2(as.matrix(assays(dataset)[["CPM"]])) sign_df <- IPRES_Hugo sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) sign_df <- sign_df[sign_df$SYMBOL %in% rownames(datasetm_n), ] sign_list <- split(sign_df$SYMBOL, sign_df$class) .percentageOfGenesUsed("IPRESSign", datasetm_n, sign_df$SYMBOL) dots <- list(...) args <- .matchArguments(dots, list( expr = datasetm_n, gset.idx.list = sign_list, method = "ssgsea", kcdf = "Gaussian", ssgsea.norm = TRUE, verbose = FALSE)) gsva_matrix <- do.call(gsva, args) score <- rowMeans(vapply(as.data.frame(t(gsva_matrix)), scale, double(ncol(gsva_matrix)))) return(.returnAsInput( userdata = dataset, result = score, SignName = "IPRES_Hugo", datasetm)) } #' CIS (carcinoma-in situ) Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom matrixStats rowMedians #' #' @examples #' data(ovse) #' CISSign(dataset = ovse) #' #' @export CISSign <- function(dataset, nametype = "SYMBOL") { ## code instruction from an e-mail by Jaegil Kim: ## 'We first compute "log2(fold change) = log2(expression) - log2(median ## expression across samples)" for each gene and define the signature ## score as "mean of log2(fold change) across CIS-up genes - mean of ## log2(fold change) across CIS-down genes".' .consistencyCheck(nametype, "CISSign") sign_df <- CIS_Robertson sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) sign_up <- sign_df[grep("up", sign_df$class), ] sign_down <- sign_df[grep("down", sign_df$class), ] .percentageOfGenesUsed("CISSign", datasetm, sign_up$SYMBOL, "up") .percentageOfGenesUsed("CISSign", datasetm, sign_down$SYMBOL, "down") datasetm_n <- datasetm[intersect(row.names(datasetm), sign_df$SYMBOL), ] datasetm_n <- log2(datasetm_n + 1) - log2(rowMedians(datasetm_n) + 1) score_up <- colMeans( datasetm_n[intersect(row.names(datasetm_n), sign_up$SYMBOL), ]) score_down <- colMeans( datasetm_n[intersect(row.names(datasetm_n), sign_down$SYMBOL), ]) score <- score_up - score_down return(.returnAsInput( userdata = dataset, result = score, SignName = "CIS_Robertson", datasetm)) } #' Glycolysis Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' glycolysisSign(dataset = ovse) #' #' @export glycolysisSign <- function(dataset, nametype = "SYMBOL", author = "Zhang") { .consistencyCheck(nametype, "glycolysisSign", author) sign_df <- get(paste0("Glycolysis_", author)) sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) datasetm_n <- log2(datasetm + 1) score <- .coeffScore(sign_df, datasetm_n, "glycolysisSign", author = author) return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("Glycolysis_", author), datasetm)) } #' Autophagy Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom SummarizedExperiment assays #' #' @examples #' data(ovse) #' autophagySign(dataset = ovse) #' #' @export autophagySign <- function( dataset, nametype = "SYMBOL", author = "Xu", hgReference = "hg38") { .consistencyCheck(nametype, "autophagySign", author) sign_df <- get(paste0("Autophagy_", author)) sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) if (author == "ChenM") { dataset <- .dataTransformation( dataset, datasetm, "FPKM", hgReference, nametype) datasetm_n <- as.matrix(assays(dataset)[["FPKM"]]) OSscore <- .coeffScore( sign_df[sign_df$class == "OS", ], datasetm_n, "autophagySign", "OS", author = author) DFSscore <- .coeffScore( sign_df[sign_df$class == "DFS", ], datasetm_n, "autophagySign", "DFS", author = author) score <- data.frame(OSscore, DFSscore) colnames(score) <- c("Autophagy_ChenM_OS", "Autophagy_ChenM_DFS") return(.returnAsInput( userdata = dataset, result = t(score), SignName = "", datasetm)) } else { score <- .coeffScore( sign_df, datasetm, "autophagySign", author = author) return(.returnAsInput( userdata = dataset, result = score, SignName = paste0("Autophagy_", author), datasetm)) } } #' Extracellular Matrix Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' @param ... other arguments passed on to the \code{\link[GSVA]{gsva}} #' function. #' #' @inherit EMTSign return #' #' @importFrom GSVA gsva #' #' @examples #' data(ovse) #' ECMSign(dataset = ovse) #' #' @export ECMSign <- function(dataset, nametype = "SYMBOL", ...) { .consistencyCheck(nametype, "ECMSign") sign_df <- ECM_Chakravarthy sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) sign_up <- sign_df[grep("ECMup", sign_df$class), ] sign_down <- sign_df[grep("ECMdown", sign_df$class), ] .percentageOfGenesUsed("ECMSign", datasetm, sign_up$SYMBOL, "up") .percentageOfGenesUsed("ECMSign", datasetm, sign_down$SYMBOL, "down") gene_sets <- list( ECM_Chakravarthy_up = sign_up$SYMBOL, ECM_Chakravarthy_down = sign_down$SYMBOL) dots <- list(...) args <- .matchArguments(dots, list( expr = datasetm, gset.idx.list = gene_sets, method = "ssgsea", kcdf = "Poisson", ssgsea.norm = FALSE, verbose = FALSE)) gsva_count <- do.call(gsva, args) return(.returnAsInput( userdata = dataset, result = gsva_count, SignName = "", datasetm)) } #' Homologous Recombination Deficiency Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @importFrom matrixStats rowMedians #' @importFrom stats t.test #' #' @examples #' data(ovse) #' HRDSSign(dataset = ovse) #' #' @export HRDSSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "HRDSSign") sign_df <- HRDS_Lu sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) datasetm_n <- datasetm - rowMedians(datasetm) .percentageOfGenesUsed("HRDSSign", datasetm, sign_df$SYMBOL) HRDS_P <- datasetm_n[intersect( row.names(datasetm_n), sign_df[sign_df$coeff == 1, ]$SYMBOL), ] HRDS_N <- datasetm_n[intersect( row.names(datasetm_n), sign_df[sign_df$coeff == -1, ]$SYMBOL), ] score <- unlist(lapply(seq_len(ncol(datasetm_n)), function(x) { tmp <- t.test(HRDS_P[, x], HRDS_N[, x], alternative = "two.sided") tmp[["statistic"]] })) return(.returnAsInput( userdata = dataset, result = score, SignName = "HRDS_Lu", datasetm)) } #' Adult Intestinal Stem Cell Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' ISCSign(dataset = ovse, inputType = "rnaseq") #' #' @export ISCSign <- function(dataset, nametype = "SYMBOL", inputType = "microarray") { .consistencyCheck(nametype, "ISCSign") sign_df <- ISC_MerlosSuarez sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) sign_list <- split(sign_df$SYMBOL, sign_df$class) datasetm <- .getMatrix(dataset) datasetm_n <- if (inputType == "rnaseq") { log2(datasetm + 1) } else { datasetm } datasetm_n <- datasetm_n - rowMeans(datasetm_n) .percentageOfGenesUsed( "ISCSign", datasetm_n, sign_list$`ISCEphB2`, "ISCEphB2") .percentageOfGenesUsed( "ISCSign", datasetm_n, sign_list$`LateTA`, "LateTA") .percentageOfGenesUsed( "ISCSign", datasetm_n, sign_list$`ISCLgr5`, "ISCLgr5") .percentageOfGenesUsed( "ISCSign", datasetm_n, sign_list$`Prolif`, "Prolif") scores <- vapply(sign_list, function(x) { colMeans(datasetm_n[intersect( x, row.names(datasetm_n - colMeans(datasetm_n))), ]) }, double(ncol(datasetm_n))) colnames(scores) <- paste0("ISC_MerlosSuarez_", colnames(scores)) return(.returnAsInput( userdata = dataset, result = t(scores), SignName = "", datasetm)) } #' VEGF Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' VEGFSign(dataset = ovse) #' #' @export VEGFSign <- function(dataset, nametype = "SYMBOL") { .consistencyCheck(nametype, "VEGFSign") datasetm <- .getMatrix(dataset) datasetm_n <- log2(datasetm + 1) score <- .statScore( VEGF_Hu$SYMBOL, datasetm_n, nametype, "mean", "VEGFSign") return(.returnAsInput( userdata = dataset, result = score, SignName = "VEGF_Hu", datasetm)) } #' DNA Repair Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' DNArepSign(dataset = ovse, inputType = "rnaseq") #' #' @export DNArepSign <- function( dataset, nametype = "SYMBOL", inputType = "microarray") { .consistencyCheck(nametype, "DNArepSign") sign_df <- DNArep_Kang sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) datasetm <- .getMatrix(dataset) .percentageOfGenesUsed("DNArepSign", datasetm, sign_df$SYMBOL) datasetm_n <- if (inputType == "rnaseq") { log2(datasetm + 1) } else { datasetm } datasetm_n <- datasetm_n[row.names(datasetm_n) %in% sign_df$SYMBOL, ] datasetm_n <- scale(t(datasetm_n), center = TRUE, scale = FALSE) medianexp <- apply(datasetm_n, 2, median) genes_h <- intersect( colnames(datasetm_n), sign_df[sign_df$class == "high", ]$SYMBOL) genes_l <- intersect( colnames(datasetm_n), sign_df[sign_df$class == "low", ]$SYMBOL) score <- rowSums(datasetm_n[, genes_h] > medianexp[genes_h]) + rowSums(datasetm_n[, genes_l] < medianexp[genes_l]) return(.returnAsInput( userdata = dataset, result = score, SignName = "DNArep_Kang", datasetm)) } #' IPSOV Signature #' #' @inherit EMTSign description #' @inheritParams pyroptosisSign #' @param ... other arguments passed on to the \code{\link[GSVA]{gsva}} #' function. #' #' @inherit EMTSign return #' #' @examples #' data(ovse) #' IPSOVSign(dataset = ovse) #' #' @export IPSOVSign <- function( dataset, nametype = "SYMBOL", inputType = "microarray", ...) { .consistencyCheck(nametype, "IPSOVSign") datasetm <- .getMatrix(dataset) datasetm_n <- if (inputType == "rnaseq") { log2(datasetm + 1) } else { datasetm } datasetm_n <- scale(datasetm, center = TRUE, scale = TRUE) sign_df <- IPSOV_Shen sign_df$SYMBOL <- .geneIDtrans(nametype, sign_df$SYMBOL) sign_df <- sign_df[sign_df$SYMBOL %in% rownames(datasetm),] sign_list <- split(sign_df$SYMBOL, sign_df$class) .percentageOfGenesUsed("IPSOVSign", datasetm, sign_df$SYMBOL) dots <- list(...) args <- .matchArguments(dots, list( expr = datasetm_n, gset.idx.list = sign_list, method = "ssgsea", kcdf = "Gaussian", ssgsea.norm = FALSE, verbose = FALSE)) gsva_matrix <- do.call(gsva, args) sign_class <- unique(sign_df[,2:3]) sign_class <- sign_class[sign_class$class %in% row.names(gsva_matrix), ] columnNA <- .managena(datasetm = gsva_matrix, genes = sign_class$class) score <- colSums( gsva_matrix[sign_class$class, ] * sign_class$coeff, na.rm = TRUE) score[columnNA > 0.9] <- NA return(.returnAsInput( userdata = dataset, result = score, SignName = "IPSOV_Shen", datasetm)) return(dataset) }