


library(reticulate)
library(Seurat)
library(scalop)
library(ggplot2)
library(data.table)
library(stringr)
library(readr)
library(Matrix)
# generate normalized exp matrices
sample_mat <- readRDS(test.rds)
m <- as.matrix(sample_mat)###原始矩阵信息
m <- m[-grep("^MT-|^RPL|^RPS", rownames(m)), ]
if(min(colSums(m)) == 0){m <- m[, colSums(m) != 0]}
scaling_factor <- 1000000/colSums(m)
m_CPM <- sweep(m, MARGIN = 2, STATS = scaling_factor, FUN = "*")
m_loged <- log2(1 + (m_CPM/10))
# removing genes with zero variance across all cells
var_filter <- apply(m_loged, 1, var)
m_proc <- m_loged[var_filter != 0, ]
# filtering out lowly expressed genes
exp_genes <- rownames(m_proc)[(rowMeans(m_proc) > 0.4)]
m_proc <- m_proc[exp_genes, ]
# output to a list of gene expression profiles (GEP)
per_sample_mat[[i]] <- m_proc
names(per_sample_mat)[i] <- sample_ls[[i]]
rm(m,m_loged, var_filter, exp_genes, m_proc)
###generate a list with the filtered exp matrix
scrna <- readRDS("单细胞示例数据的rds")
signatures <- scalop::sigScores(m_proc, 单细胞细胞类型特征的基因list, expr.center = TRUE, conserved.genes = 0.5)
###获取每种细胞类型的分数
spot_scores <- data.frame(spot_names = rownames(signatures))
spot_scores$Neuron <- signatures$Neuron
spot_scores$Vasc<- signatures$Vasc
spot_scores$MES.Hyp <- signatures$MES.Hyp
spot_scores$Mac <- signatures$Mac
spot_scores$Oligo <- signatures$Oligo
spot_scores$MES <- signatures$MES
spot_scores$Prolif.Metab <- signatures$Prolif.Metab
spot_scores$MES.Ast <- signatures$MES.Ast
spot_scores$Reactive.Ast <- signatures$Reactive.Ast
spot_scores$NPC <- signatures$NPC
spot_scores$Inflammatory.Mac <- signatures$Inflammatory.Mac
spot_scores$chromatin.reg <- signatures$chromatin.reg
spot_scores$OPC <- signatures$OPC
spot_scores$AC <- signatures$AC
rownames(spot_scores) = colnames(sample_mat)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。