2024-09-02 10:32:45
浏览数 (2)
作者,Evil Genius
最近好几位学员、粉丝问我债务还清了么,十分感谢啊,还的差不多了,大约还有不到10万的缺口,债务已经很轻了。其实纯债务已经还清了,但是期间父母急火攻心,生了大病,工作也没了,借了很多钱,再加上我当时被开除了,断了收入,差点没挺过来,因为太过困难,也做了一些出格的事,期间也发生了很多恶心的事情,比如被网暴、举报、前几天账号的文章还被举报,希望大家共勉吧。
经过这些事啊,希望大家可以明白两点,1、珍惜身边愿意帮助自己的人,锦上添花容易,雪中送炭很难,可能大多数人没经历过低谷,甚至是万念俱灰的时候,体会不到这句话的含义;2、除了亲人之外,无论发生任何的困难,不要做任何的妥协,不要低头,别人也不会因为你做妥协和低头(当然也可能是我人品太差 ^_^)。
好了,经过分析之后,我们拿到了空转基础分析的结果,降维聚类,接下来就是对空间数据的注释。
空间注释有两种,一种是空间区域注释,如下图:
另外一种就是直接联合进行细胞注释:
通常我们选择后者,即直接联合注释,无论是高精度HD、visium,还是国产华大、百迈客,都需要这么做,联合注释也有两种,一种打分,比如MIA,另外一种解卷积,比如高分必备cell2location,还有结合图像识别的SpatialScope、CellTrek等,这些课上都讲过了,代码也都发下去了,我们来补充一下纯打分的方式。
代码语言:javascript
复制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)
怎么样,很简单吧,得到类似解卷积的Cell X Barcode矩阵。
这是个示例,大家做一点修改,运用到自己的课题就可以了。
得到注释结果之后,就是识别空间域,就是分子聚类和细胞聚类,这部分是可是的一个重点,代码大家已有,我知道很多人有盗版,不过既然选择了盗版,也请好好学习吧。
生活很好,有你更好