#' BseqSC
#'
#' @param scdata single data with genes in rows and cells in columns.
#' @param bulkdata A matrix with genes in rows and samples in columns.
#' @param label The cell type label of single data.
#' @import Seurat
#' @importFrom Biobase ExpressionSet
#' @importFrom dplyr top_n group_by
#' @importFrom vctrs data_frame
#' @importFrom bseqsc bseqsc_basis bseqsc_proportions
#' @return A data frame of Mixed cellular fractions.
#' @export
#'
#'
#' @examples
#' # Bulk <- Bulk_GSE60424
#' # SC <- SC_GSE60424
#' # Label <- Label_GSE60424$Label
#' # res <- Bseqsc(bulkdata = Bulk,
#' # scdata = SC,
#' # label = Label)
Bseqsc <- function(scdata, bulkdata,label) {
rownames(scdata) <- gsub("_","-",rownames(scdata))
rownames(bulkdata) <- gsub("_","-",rownames(bulkdata))
gene <- intersect(rownames(scdata),rownames(bulkdata))
scdata <- scdata[gene,]
bulkdata <- bulkdata[gene,]
scRNA <- Seurat::CreateSeuratObject(counts = scdata, project = "SC")
scRNA <- Seurat::NormalizeData(scRNA, verbose = FALSE)
scRNA <- Seurat::FindVariableFeatures(scRNA, selection.method = "vst",nfeatures = 2000)
all.genes <- rownames(scRNA)
scRNA <- Seurat::ScaleData(scRNA, features = all.genes)
factor_label <- as.factor(label)
names(factor_label) <- colnames(scdata)
scRNA@active.ident <- factor_label
sc.eset <- BisqueRNA::SeuratToExpressionSet(scRNA,
delimiter="tao",
position=1,
version="v3")
bulk.eset <- Biobase::ExpressionSet(assayData = as.matrix(bulkdata))
markers <- Seurat::FindAllMarkers(scRNA,
only.pos = TRUE,
min.pct = 0.25,
test.use = "LR",
logfc.threshold = 0.25)
FC_Marker10 <- dplyr::top_n(dplyr::group_by(markers,cluster),n = 10, wt = avg_log2FC)
BIS_markers <- vctrs::data_frame("gene"=FC_Marker10$gene,
"cluster"=FC_Marker10$cluster,
"avg_logFC"=FC_Marker10$avg_log2FC)
markersc <- split((BIS_markers[,1]),BIS_markers[,2])
bseqsc_signature <- bseqsc::bseqsc_basis(sc.eset,
markersc,
clusters = 'cellType',
samples = 'SubjectName',
ct.scale = TRUE)
bseqsc_res <- bseqsc::bseqsc_proportions(bulk.eset,
bseqsc_signature,
verbose = TRUE)
res_Bseqsc <- t(bseqsc_res[["coefficients"]])
return(res_Bseqsc)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.