曾老板在小红书上看到一个有意思的帖子发给了我,里面提到了一个单细胞数据的分析结果:「肝脏的单细胞分群注释的时候发现其中一个亚群8和t细胞在一起但不表达cd3和常见的maker,博主进行了求助问可能是什么类型的细胞!」这种问题的探索感觉是最有意思的了,下面就找个肝脏的数据来看看。

小红书上的那位博主的数据结果图:确实看起来很诡异,右下角是一个评论区让其绘制的几个基因的umap特征图,基因为 “PRKCH”,”DPYD”,”KLF12″,”MAML2″,”ARHGAP15″,但是这几个基因我查了一下没有什么特别的地方,看着就像是从博主提供的差异表格中摘取来的。

note:原贴大家可以使用这篇微信文章的标题去小红书搜就能搜到了。

找一个肝癌单细胞数据

探索上面的问题得有米啊,我这就自己去找了一个数据,搜到了一篇肝癌数据库类似的文献,2025年发表在Journal of Genetics and Genomics的文献《uniLIVER: a human liver cell atlas for data-driven cellular state mapping》,作者收集了来自5个公开数据集和一个内部数据集的79个正常人类肝脏样本,以及来自12个数据集的439个异常或疾病样本。构建了一个综合的、数据驱动的人类肝脏细胞图谱uniLIVER。

可以下载整合好的数据:http:///database/uniliver

左边可以下载买个文献单独的h5ad文件,右边可以下载整合好的数据h5ad文件。

我这里选择了其中的数据:https://www.ncbi.nlm./geo/query/acc.cgi?acc=GSE189903

数据包含:seven liver cancer patients (four hepatocellular carcinoma, HCC and three intrahepatic cholangiocarcinoma, iCCA)

GSE189903_Info.txt.gz 558.5 Kb (ftp)(http) TXT         # 数据注释信息
GSE189903_RAW.tar 935.9 Mb (http)(custom) TAR (of H5) # H5文件,含有背景barcode
GSE189903_barcodes.tsv.gz 461.0 Kb (ftp)(http) TSV     # 三个标准文件
GSE189903_genes.tsv.gz 194.7 Kb (ftp)(http) TSV
GSE189903_matrix.mtx.gz 372.8 Mb (ftp)(http)

采样如下:

a:不同区域组织取样示意图

b:不同样本颜色的恶性细胞tnse图,c图不同取样区域上色

d:不同样本的层次聚类图:同一个病人的样本会聚在一起

e:代表性MRI影像图

分析看看

首先将数据去读进来:

###
### Create: Jianming Zeng
### Update Log: 2024-12-09   by juan zhang ([email protected])
### 
rm(list=ls())
options(stringsAsFactors = F)
library(ggsci)
library(dplyr) 
library(future)
library(Seurat)
library(clustree)
library(cowplot)
library(data.table)
library(ggplot2)
library(patchwork)
library(stringr)
library(qs)
library(Matrix)

# 创建目录
getwd()
gse <- "GSE189903"
dir.create(gse)

# 方式一:标准文件夹
###### step1: 导入数据 ######   
counts <- Read10X("GSE189903/GSE189903/", gene.column = 2)
dim(counts)
counts[1:5,1:5]
meta <- read.table("GSE189903/GSE189903_Info.txt.gz",header = T,sep = "t")
head(meta)
rownames(meta) <- meta$Cell
肝脏单细胞注释:8亚群和t细胞在一起但不表达cd3和常见的maker可能是什么细胞?
identical(rownames(meta),colnames(counts))

sce.all <- CreateSeuratObject(counts, min.cells = 3, meta.data = meta)
sce.all
head([email protected])
table(sce.all$Type)
library(qs)
qsave(sce.all, file="GSE189903/sce.all.qs")

数据带有做好的注释,但是这里的注释还有点奇怪,「有一堆数据注释成了:unclassified,是不是上面的同样的那群啊!」

预处理并降维聚类分群注释

简单QC一下并降为聚类分群,这里我没有惊醒harmony,因为作者的数据单纯merge在一起的分群结果就挺好:

library(harmony)
library(qs)
library(Seurat)
library(clustree)
###### step3: harmony整合多个单细胞样品 ######
dir.create("2-harmony")
getwd()

# 读取数据
sce.all.filt <- qread("1-QC/sce.all.filt.qs")

# 默认 ScaleData 没有添加"nCount_RNA", "nFeature_RNA"
sce.all.filt
print(dim(sce.all.filt))
head([email protected])

# 走标准流程
sce.all.filt <- NormalizeData(sce.all.filt, normalization.method = "LogNormalize",scale.factor = 1e4) 
sce.all.filt <- FindVariableFeatures(sce.all.filt, nfeatures = 2000)
sce.all.filt <- ScaleData(sce.all.filt)
sce.all.filt <- RunPCA(sce.all.filt, features = VariableFeatures(object = sce.all.filt))

# 降维聚类,UMAP降维
sce.all.filt <- FindNeighbors(sce.all.filt, dims = 1:20)
sce.all.filt <- FindClusters(sce.all.filt, resolution = 0.5)
head(Idents(sce.all.filt), 5)
str([email protected])
head(sce.all.filt$RNA_snn_res.0.5)
head(sce.all.filt$seurat_clusters)

sce.all.filt <- RunUMAP(sce.all.filt,  dims = 1:20, reduction = "pca")
p <- DimPlot(sce.all.filt, reduction = "umap",label=T,group.by = "Sample"
p
ggsave(filename='2-harmony/umap-by-orig.ident-before-harmony.png',plot = p, width = 6,height = 5.5)

不同样本上色umap图:

看看各种marker情况:

特征基因图: